#include <map>
#include <set>
#include <string>
#include <iostream>
#include <stdio.h>
struct map_pair
{
int key;
const char *value;
};
/* structure is not packed */
struct tree_node
{
char color; /* 0:red 1:black */
struct tree_node * left;
struct tree_node * parent;
struct tree_node * right;
};
struct tree_struct
{
int key_compare;
struct tree_node * head;
size_t node_count;
};
void dump_tree_node(struct tree_node * n, bool is_set, bool traverse, bool dump_keys_and_values)
{
printf("ptr=0x%p left=0x%p parent=0x%p right=0x%p color=%d\n",
n, n->left, n->parent, n->right, n->color);
void *point_after_struct = ((char *)n) + sizeof(struct tree_node);
if (dump_keys_and_values) {
if (is_set)
printf("key=%d\n", *(int*)point_after_struct);
else {
struct map_pair *p = (struct map_pair *)point_after_struct;
printf("key=%d value=[%s]\n", p->key, p->value);
}
}
if (traverse == false) {
return;
}
if (n->left)
dump_tree_node(n->left, is_set, traverse, dump_keys_and_values);
if (n->right)
dump_tree_node(n->right, is_set, traverse, dump_keys_and_values);
}
const char * ALOT_OF_TABS="\t\t\t\t\t\t\t\t\t\t\t";
void dump_as_tree(int tabs, struct tree_node * n, bool is_set)
{
void *point_after_struct = ((char *)n) + sizeof(struct tree_node);
if (is_set)
printf("%d\n", *(int*)point_after_struct);
else {
struct map_pair *p = (struct map_pair *)point_after_struct;
printf("%d [%s]\n", p->key, p->value);
}
if (n->left) {
printf("%.*sL-----", tabs, ALOT_OF_TABS);
dump_as_tree(tabs+1, n->left, is_set);
}
if (n->right) {
printf("%.*sR-----", tabs, ALOT_OF_TABS);
dump_as_tree(tabs+1, n->right, is_set);
}
}
void dump_map_and_set(struct tree_struct * m, bool is_set)
{
printf("ptr=0x%p key_compare=0x%x head=0x%p node_count=%d\n", m, m->key_compare, m->head, m->node_count);
dump_tree_node(m->head->parent, is_set, true, true);
printf("As a tree:\n");
printf("root----");
dump_as_tree(1, m->head->parent, is_set);
}
int main()
{
// map
std::map<int, const char *> m;
m[10] = "ten";
m[20] = "twenty";
m[3] = "three";
m[101] = "one hundred one";
m[100] = "one hundred";
m[12] = "twelve";
m[107] = "one hundred seven";
m[0] = "zero";
m[1] = "one";
m[6] = "six";
m[99] = "ninety-nine";
m[5] = "five";
m[11] = "eleven";
m[1001] = "one thousand one";
m[1010] = "one thousand ten";
m[2] = "two";
m[9] = "nine";
printf("dumping m as map:\n");
dump_map_and_set((struct tree_struct *)(void *) &m, false);
std::map<int, const char *>::iterator it1 = m.begin();
printf("m.begin():\n");
dump_tree_node((struct tree_node *)*(void **) &it1, false, false, true);
it1 = m.end();
printf("m.end():\n");
dump_tree_node((struct tree_node *)*(void**) &it1, false, false, false);
// set
std::set<int> s;
s.insert(123);
s.insert(456);
s.insert(11);
s.insert(12);
s.insert(100);
s.insert(1001);
printf("dumping s as set:\n");
dump_map_and_set((struct tree_struct *)(void *) &s, true);
std::set<int>::iterator it2 = s.begin();
printf("s.begin():\n");
dump_tree_node((struct tree_node *) *(void **) &it2, true, false, true);
it2 = s.end();
printf("s.end():\n");
dump_tree_node((struct tree_node *) *(void **) &it2, true, false, false);
}
#if 0
std::map std::set都使用了红黑树(red-black)的算法
#endif
#if 0
/*
* intel
*/
0000000000001309 <_Z14dump_tree_nodeP9tree_nodebbb>:
1309: f3 0f 1e fa endbr64
130d: 55 push %rbp
130e: 48 89 e5 mov %rsp,%rbp
1311: 48 83 ec 30 sub $0x30,%rsp
1315: 48 89 7d e8 mov %rdi,-0x18(%rbp)
1319: 89 c8 mov %ecx,%eax
131b: 89 f1 mov %esi,%ecx
131d: 88 4d e4 mov %cl,-0x1c(%rbp)
1320: 88 55 e0 mov %dl,-0x20(%rbp)
1323: 88 45 dc mov %al,-0x24(%rbp)
1326: 48 8b 45 e8 mov -0x18(%rbp),%rax
132a: 0f b6 00 movzbl (%rax),%eax
132d: 0f be f8 movsbl %al,%edi
1330: 48 8b 45 e8 mov -0x18(%rbp),%rax
1334: 48 8b 70 18 mov 0x18(%rax),%rsi
1338: 48 8b 45 e8 mov -0x18(%rbp),%rax
133c: 48 8b 48 10 mov 0x10(%rax),%rcx
1340: 48 8b 45 e8 mov -0x18(%rbp),%rax
1344: 48 8b 50 08 mov 0x8(%rax),%rdx
1348: 48 8b 45 e8 mov -0x18(%rbp),%rax
134c: 41 89 f9 mov %edi,%r9d
134f: 49 89 f0 mov %rsi,%r8
1352: 48 89 c6 mov %rax,%rsi
1355: 48 8d 3d b4 3c 00 00 lea 0x3cb4(%rip),%rdi # 5010 <_ZStL6ignore+0x6>
135c: b8 00 00 00 00 mov $0x0,%eax
1361: e8 ca fd ff ff callq 1130 <printf@plt>
1366: 48 8b 45 e8 mov -0x18(%rbp),%rax
136a: 48 83 c0 20 add $0x20,%rax
136e: 48 89 45 f0 mov %rax,-0x10(%rbp)
1372: 80 7d dc 00 cmpb $0x0,-0x24(%rbp)
1376: 74 4a je 13c2 <_Z14dump_tree_nodeP9tree_nodebbb+0xb9>
1378: 80 7d e4 00 cmpb $0x0,-0x1c(%rbp)
137c: 74 1b je 1399 <_Z14dump_tree_nodeP9tree_nodebbb+0x90>
137e: 48 8b 45 f0 mov -0x10(%rbp),%rax
1382: 8b 00 mov (%rax),%eax
1384: 89 c6 mov %eax,%esi
1386: 48 8d 3d b7 3c 00 00 lea 0x3cb7(%rip),%rdi # 5044 <_ZStL6ignore+0x3a>
138d: b8 00 00 00 00 mov $0x0,%eax
1392: e8 99 fd ff ff callq 1130 <printf@plt>
1397: eb 29 jmp 13c2 <_Z14dump_tree_nodeP9tree_nodebbb+0xb9>
1399: 48 8b 45 f0 mov -0x10(%rbp),%rax
139d: 48 89 45 f8 mov %rax,-0x8(%rbp)
13a1: 48 8b 45 f8 mov -0x8(%rbp),%rax
13a5: 48 8b 50 08 mov 0x8(%rax),%rdx
13a9: 48 8b 45 f8 mov -0x8(%rbp),%rax
13ad: 8b 00 mov (%rax),%eax
13af: 89 c6 mov %eax,%esi
13b1: 48 8d 3d 94 3c 00 00 lea 0x3c94(%rip),%rdi # 504c <_ZStL6ignore+0x42>
13b8: b8 00 00 00 00 mov $0x0,%eax
13bd: e8 6e fd ff ff callq 1130 <printf@plt>
13c2: 0f b6 45 e0 movzbl -0x20(%rbp),%eax
13c6: 85 c0 test %eax,%eax
13c8: 74 54 je 141e <_Z14dump_tree_nodeP9tree_nodebbb+0x115>
13ca: 48 8b 45 e8 mov -0x18(%rbp),%rax
13ce: 48 8b 40 08 mov 0x8(%rax),%rax
13d2: 48 85 c0 test %rax,%rax
13d5: 74 1c je 13f3 <_Z14dump_tree_nodeP9tree_nodebbb+0xea>
13d7: 0f b6 4d dc movzbl -0x24(%rbp),%ecx
13db: 0f b6 55 e0 movzbl -0x20(%rbp),%edx
13df: 0f b6 75 e4 movzbl -0x1c(%rbp),%esi
13e3: 48 8b 45 e8 mov -0x18(%rbp),%rax
13e7: 48 8b 40 08 mov 0x8(%rax),%rax
13eb: 48 89 c7 mov %rax,%rdi
13ee: e8 16 ff ff ff callq 1309 <_Z14dump_tree_nodeP9tree_nodebbb>
13f3: 48 8b 45 e8 mov -0x18(%rbp),%rax
13f7: 48 8b 40 18 mov 0x18(%rax),%rax
13fb: 48 85 c0 test %rax,%rax
13fe: 74 1f je 141f <_Z14dump_tree_nodeP9tree_nodebbb+0x116>
1400: 0f b6 4d dc movzbl -0x24(%rbp),%ecx
1404: 0f b6 55 e0 movzbl -0x20(%rbp),%edx
1408: 0f b6 75 e4 movzbl -0x1c(%rbp),%esi
140c: 48 8b 45 e8 mov -0x18(%rbp),%rax
1410: 48 8b 40 18 mov 0x18(%rax),%rax
1414: 48 89 c7 mov %rax,%rdi
1417: e8 ed fe ff ff callq 1309 <_Z14dump_tree_nodeP9tree_nodebbb>
141c: eb 01 jmp 141f <_Z14dump_tree_nodeP9tree_nodebbb+0x116>
141e: 90 nop
141f: c9 leaveq
1420: c3 retq
0000000000001421 <_Z12dump_as_treeiP9tree_nodeb>:
1421: f3 0f 1e fa endbr64
1425: 55 push %rbp
1426: 48 89 e5 mov %rsp,%rbp
1429: 48 83 ec 20 sub $0x20,%rsp
142d: 89 7d ec mov %edi,-0x14(%rbp)
1430: 48 89 75 e0 mov %rsi,-0x20(%rbp)
1434: 89 d0 mov %edx,%eax
1436: 88 45 e8 mov %al,-0x18(%rbp)
1439: 48 8b 45 e0 mov -0x20(%rbp),%rax
143d: 48 83 c0 20 add $0x20,%rax
1441: 48 89 45 f0 mov %rax,-0x10(%rbp)
1445: 80 7d e8 00 cmpb $0x0,-0x18(%rbp)
1449: 74 1b je 1466 <_Z12dump_as_treeiP9tree_nodeb+0x45>
144b: 48 8b 45 f0 mov -0x10(%rbp),%rax
144f: 8b 00 mov (%rax),%eax
1451: 89 c6 mov %eax,%esi
1453: 48 8d 3d 11 3c 00 00 lea 0x3c11(%rip),%rdi # 506b <_ZStL6ignore+0x61>
145a: b8 00 00 00 00 mov $0x0,%eax
145f: e8 cc fc ff ff callq 1130 <printf@plt>
1464: eb 29 jmp 148f <_Z12dump_as_treeiP9tree_nodeb+0x6e>
1466: 48 8b 45 f0 mov -0x10(%rbp),%rax
146a: 48 89 45 f8 mov %rax,-0x8(%rbp)
146e: 48 8b 45 f8 mov -0x8(%rbp),%rax
1472: 48 8b 50 08 mov 0x8(%rax),%rdx
1476: 48 8b 45 f8 mov -0x8(%rbp),%rax
147a: 8b 00 mov (%rax),%eax
147c: 89 c6 mov %eax,%esi
147e: 48 8d 3d ea 3b 00 00 lea 0x3bea(%rip),%rdi # 506f <_ZStL6ignore+0x65>
1485: b8 00 00 00 00 mov $0x0,%eax
148a: e8 a1 fc ff ff callq 1130 <printf@plt>
148f: 48 8b 45 e0 mov -0x20(%rbp),%rax
1493: 48 8b 40 08 mov 0x8(%rax),%rax
1497: 48 85 c0 test %rax,%rax
149a: 74 39 je 14d5 <_Z12dump_as_treeiP9tree_nodeb+0xb4>
149c: 48 8b 15 6d 7b 00 00 mov 0x7b6d(%rip),%rdx # 9010 <ALOT_OF_TABS>
14a3: 8b 45 ec mov -0x14(%rbp),%eax
14a6: 89 c6 mov %eax,%esi
14a8: 48 8d 3d c9 3b 00 00 lea 0x3bc9(%rip),%rdi # 5078 <_ZStL6ignore+0x6e>
14af: b8 00 00 00 00 mov $0x0,%eax
14b4: e8 77 fc ff ff callq 1130 <printf@plt>
14b9: 0f b6 55 e8 movzbl -0x18(%rbp),%edx
14bd: 48 8b 45 e0 mov -0x20(%rbp),%rax
14c1: 48 8b 40 08 mov 0x8(%rax),%rax
14c5: 8b 4d ec mov -0x14(%rbp),%ecx
14c8: 83 c1 01 add $0x1,%ecx
14cb: 48 89 c6 mov %rax,%rsi
14ce: 89 cf mov %ecx,%edi
14d0: e8 4c ff ff ff callq 1421 <_Z12dump_as_treeiP9tree_nodeb>
14d5: 48 8b 45 e0 mov -0x20(%rbp),%rax
14d9: 48 8b 40 18 mov 0x18(%rax),%rax
14dd: 48 85 c0 test %rax,%rax
14e0: 74 39 je 151b <_Z12dump_as_treeiP9tree_nodeb+0xfa>
14e2: 48 8b 15 27 7b 00 00 mov 0x7b27(%rip),%rdx # 9010 <ALOT_OF_TABS>
14e9: 8b 45 ec mov -0x14(%rbp),%eax
14ec: 89 c6 mov %eax,%esi
14ee: 48 8d 3d 8e 3b 00 00 lea 0x3b8e(%rip),%rdi # 5083 <_ZStL6ignore+0x79>
14f5: b8 00 00 00 00 mov $0x0,%eax
14fa: e8 31 fc ff ff callq 1130 <printf@plt>
14ff: 0f b6 55 e8 movzbl -0x18(%rbp),%edx
1503: 48 8b 45 e0 mov -0x20(%rbp),%rax
1507: 48 8b 40 18 mov 0x18(%rax),%rax
150b: 8b 4d ec mov -0x14(%rbp),%ecx
150e: 83 c1 01 add $0x1,%ecx
1511: 48 89 c6 mov %rax,%rsi
1514: 89 cf mov %ecx,%edi
1516: e8 06 ff ff ff callq 1421 <_Z12dump_as_treeiP9tree_nodeb>
151b: 90 nop
151c: c9 leaveq
151d: c3 retq
000000000000151e <_Z16dump_map_and_setP11tree_structb>:
151e: f3 0f 1e fa endbr64
1522: 55 push %rbp
1523: 48 89 e5 mov %rsp,%rbp
1526: 48 83 ec 10 sub $0x10,%rsp
152a: 48 89 7d f8 mov %rdi,-0x8(%rbp)
152e: 89 f0 mov %esi,%eax
1530: 88 45 f4 mov %al,-0xc(%rbp)
1533: 48 8b 45 f8 mov -0x8(%rbp),%rax
1537: 48 8b 70 10 mov 0x10(%rax),%rsi
153b: 48 8b 45 f8 mov -0x8(%rbp),%rax
153f: 48 8b 48 08 mov 0x8(%rax),%rcx
1543: 48 8b 45 f8 mov -0x8(%rbp),%rax
1547: 8b 10 mov (%rax),%edx
1549: 48 8b 45 f8 mov -0x8(%rbp),%rax
154d: 49 89 f0 mov %rsi,%r8
1550: 48 89 c6 mov %rax,%rsi
1553: 48 8d 3d 36 3b 00 00 lea 0x3b36(%rip),%rdi # 5090 <_ZStL6ignore+0x86>
155a: b8 00 00 00 00 mov $0x0,%eax
155f: e8 cc fb ff ff callq 1130 <printf@plt>
1564: 0f b6 75 f4 movzbl -0xc(%rbp),%esi
1568: 48 8b 45 f8 mov -0x8(%rbp),%rax
156c: 48 8b 40 08 mov 0x8(%rax),%rax
1570: 48 8b 40 10 mov 0x10(%rax),%rax
1574: b9 01 00 00 00 mov $0x1,%ecx
1579: ba 01 00 00 00 mov $0x1,%edx
157e: 48 89 c7 mov %rax,%rdi
1581: e8 83 fd ff ff callq 1309 <_Z14dump_tree_nodeP9tree_nodebbb>
1586: 48 8d 3d 36 3b 00 00 lea 0x3b36(%rip),%rdi # 50c3 <_ZStL6ignore+0xb9>
158d: e8 5e fc ff ff callq 11f0 <puts@plt>
1592: 48 8d 3d 35 3b 00 00 lea 0x3b35(%rip),%rdi # 50ce <_ZStL6ignore+0xc4>
1599: b8 00 00 00 00 mov $0x0,%eax
159e: e8 8d fb ff ff callq 1130 <printf@plt>
15a3: 0f b6 55 f4 movzbl -0xc(%rbp),%edx
15a7: 48 8b 45 f8 mov -0x8(%rbp),%rax
15ab: 48 8b 40 08 mov 0x8(%rax),%rax
15af: 48 8b 40 10 mov 0x10(%rax),%rax
15b3: 48 89 c6 mov %rax,%rsi
15b6: bf 01 00 00 00 mov $0x1,%edi
15bb: e8 61 fe ff ff callq 1421 <_Z12dump_as_treeiP9tree_nodeb>
15c0: 90 nop
15c1: c9 leaveq
15c2: c3 retq
00000000000015c3 <main>:
15c3: f3 0f 1e fa endbr64
15c7: 55 push %rbp
15c8: 48 89 e5 mov %rsp,%rbp
15cb: 53 push %rbx
15cc: 48 81 ec 88 00 00 00 sub $0x88,%rsp
15d3: 64 48 8b 04 25 28 00 mov %fs:0x28,%rax
15da: 00 00
15dc: 48 89 45 e8 mov %rax,-0x18(%rbp)
15e0: 31 c0 xor %eax,%eax
15e2: 48 8d 45 80 lea -0x80(%rbp),%rax
15e6: 48 89 c7 mov %rax,%rdi
15e9: e8 14 06 00 00 callq 1c02 <_ZNSt3mapIiPKcSt4lessIiESaISt4pairIKiS1_EEEC1Ev>
15ee: c7 45 b0 0a 00 00 00 movl $0xa,-0x50(%rbp)
15f5: 48 8d 55 b0 lea -0x50(%rbp),%rdx
15f9: 48 8d 45 80 lea -0x80(%rbp),%rax
15fd: 48 89 d6 mov %rdx,%rsi
1600: 48 89 c7 mov %rax,%rdi
1603: e8 54 07 00 00 callq 1d5c <_ZNSt3mapIiPKcSt4lessIiESaISt4pairIKiS1_EEEixEOi>
1608: 48 8d 15 c8 3a 00 00 lea 0x3ac8(%rip),%rdx # 50d7 <_ZStL6ignore+0xcd>
160f: 48 89 10 mov %rdx,(%rax)
1612: c7 45 b0 14 00 00 00 movl $0x14,-0x50(%rbp)
1619: 48 8d 55 b0 lea -0x50(%rbp),%rdx
161d: 48 8d 45 80 lea -0x80(%rbp),%rax
1621: 48 89 d6 mov %rdx,%rsi
1624: 48 89 c7 mov %rax,%rdi
1627: e8 30 07 00 00 callq 1d5c <_ZNSt3mapIiPKcSt4lessIiESaISt4pairIKiS1_EEEixEOi>
162c: 48 8d 15 a8 3a 00 00 lea 0x3aa8(%rip),%rdx # 50db <_ZStL6ignore+0xd1>
1633: 48 89 10 mov %rdx,(%rax)
1636: c7 45 b0 03 00 00 00 movl $0x3,-0x50(%rbp)
163d: 48 8d 55 b0 lea -0x50(%rbp),%rdx
1641: 48 8d 45 80 lea -0x80(%rbp),%rax
1645: 48 89 d6 mov %rdx,%rsi
1648: 48 89 c7 mov %rax,%rdi
164b: e8 0c 07 00 00 callq 1d5c <_ZNSt3mapIiPKcSt4lessIiESaISt4pairIKiS1_EEEixEOi>
1650: 48 8d 15 8b 3a 00 00 lea 0x3a8b(%rip),%rdx # 50e2 <_ZStL6ignore+0xd8>
1657: 48 89 10 mov %rdx,(%rax)
165a: c7 45 b0 65 00 00 00 movl $0x65,-0x50(%rbp)
1661: 48 8d 55 b0 lea -0x50(%rbp),%rdx
1665: 48 8d 45 80 lea -0x80(%rbp),%rax
1669: 48 89 d6 mov %rdx,%rsi
166c: 48 89 c7 mov %rax,%rdi
166f: e8 e8 06 00 00 callq 1d5c <_ZNSt3mapIiPKcSt4lessIiESaISt4pairIKiS1_EEEixEOi>
1674: 48 8d 15 6d 3a 00 00 lea 0x3a6d(%rip),%rdx # 50e8 <_ZStL6ignore+0xde>
167b: 48 89 10 mov %rdx,(%rax)
167e: c7 45 b0 64 00 00 00 movl $0x64,-0x50(%rbp)
1685: 48 8d 55 b0 lea -0x50(%rbp),%rdx
1689: 48 8d 45 80 lea -0x80(%rbp),%rax
168d: 48 89 d6 mov %rdx,%rsi
1690: 48 89 c7 mov %rax,%rdi
1693: e8 c4 06 00 00 callq 1d5c <_ZNSt3mapIiPKcSt4lessIiESaISt4pairIKiS1_EEEixEOi>
1698: 48 8d 15 59 3a 00 00 lea 0x3a59(%rip),%rdx # 50f8 <_ZStL6ignore+0xee>
169f: 48 89 10 mov %rdx,(%rax)
16a2: c7 45 b0 0c 00 00 00 movl $0xc,-0x50(%rbp)
16a9: 48 8d 55 b0 lea -0x50(%rbp),%rdx
16ad: 48 8d 45 80 lea -0x80(%rbp),%rax
16b1: 48 89 d6 mov %rdx,%rsi
16b4: 48 89 c7 mov %rax,%rdi
16b7: e8 a0 06 00 00 callq 1d5c <_ZNSt3mapIiPKcSt4lessIiESaISt4pairIKiS1_EEEixEOi>
16bc: 48 8d 15 41 3a 00 00 lea 0x3a41(%rip),%rdx # 5104 <_ZStL6ignore+0xfa>
16c3: 48 89 10 mov %rdx,(%rax)
16c6: c7 45 b0 6b 00 00 00 movl $0x6b,-0x50(%rbp)
16cd: 48 8d 55 b0 lea -0x50(%rbp),%rdx
16d1: 48 8d 45 80 lea -0x80(%rbp),%rax
16d5: 48 89 d6 mov %rdx,%rsi
16d8: 48 89 c7 mov %rax,%rdi
16db: e8 7c 06 00 00 callq 1d5c <_ZNSt3mapIiPKcSt4lessIiESaISt4pairIKiS1_EEEixEOi>
16e0: 48 8d 15 24 3a 00 00 lea 0x3a24(%rip),%rdx # 510b <_ZStL6ignore+0x101>
16e7: 48 89 10 mov %rdx,(%rax)
16ea: c7 45 b0 00 00 00 00 movl $0x0,-0x50(%rbp)
16f1: 48 8d 55 b0 lea -0x50(%rbp),%rdx
16f5: 48 8d 45 80 lea -0x80(%rbp),%rax
16f9: 48 89 d6 mov %rdx,%rsi
16fc: 48 89 c7 mov %rax,%rdi
16ff: e8 58 06 00 00 callq 1d5c <_ZNSt3mapIiPKcSt4lessIiESaISt4pairIKiS1_EEEixEOi>
1704: 48 8d 15 12 3a 00 00 lea 0x3a12(%rip),%rdx # 511d <_ZStL6ignore+0x113>
170b: 48 89 10 mov %rdx,(%rax)
170e: c7 45 b0 01 00 00 00 movl $0x1,-0x50(%rbp)
1715: 48 8d 55 b0 lea -0x50(%rbp),%rdx
1719: 48 8d 45 80 lea -0x80(%rbp),%rax
171d: 48 89 d6 mov %rdx,%rsi
1720: 48 89 c7 mov %rax,%rdi
1723: e8 34 06 00 00 callq 1d5c <_ZNSt3mapIiPKcSt4lessIiESaISt4pairIKiS1_EEEixEOi>
1728: 48 8d 15 f3 39 00 00 lea 0x39f3(%rip),%rdx # 5122 <_ZStL6ignore+0x118>
172f: 48 89 10 mov %rdx,(%rax)
1732: c7 45 b0 06 00 00 00 movl $0x6,-0x50(%rbp)
1739: 48 8d 55 b0 lea -0x50(%rbp),%rdx
173d: 48 8d 45 80 lea -0x80(%rbp),%rax
1741: 48 89 d6 mov %rdx,%rsi
1744: 48 89 c7 mov %rax,%rdi
1747: e8 10 06 00 00 callq 1d5c <_ZNSt3mapIiPKcSt4lessIiESaISt4pairIKiS1_EEEixEOi>
174c: 48 8d 15 d3 39 00 00 lea 0x39d3(%rip),%rdx # 5126 <_ZStL6ignore+0x11c>
1753: 48 89 10 mov %rdx,(%rax)
1756: c7 45 b0 63 00 00 00 movl $0x63,-0x50(%rbp)
175d: 48 8d 55 b0 lea -0x50(%rbp),%rdx
1761: 48 8d 45 80 lea -0x80(%rbp),%rax
1765: 48 89 d6 mov %rdx,%rsi
1768: 48 89 c7 mov %rax,%rdi
176b: e8 ec 05 00 00 callq 1d5c <_ZNSt3mapIiPKcSt4lessIiESaISt4pairIKiS1_EEEixEOi>
1770: 48 8d 15 b3 39 00 00 lea 0x39b3(%rip),%rdx # 512a <_ZStL6ignore+0x120>
1777: 48 89 10 mov %rdx,(%rax)
177a: c7 45 b0 05 00 00 00 movl $0x5,-0x50(%rbp)
1781: 48 8d 55 b0 lea -0x50(%rbp),%rdx
1785: 48 8d 45 80 lea -0x80(%rbp),%rax
1789: 48 89 d6 mov %rdx,%rsi
178c: 48 89 c7 mov %rax,%rdi
178f: e8 c8 05 00 00 callq 1d5c <_ZNSt3mapIiPKcSt4lessIiESaISt4pairIKiS1_EEEixEOi>
1794: 48 8d 15 9b 39 00 00 lea 0x399b(%rip),%rdx # 5136 <_ZStL6ignore+0x12c>
179b: 48 89 10 mov %rdx,(%rax)
179e: c7 45 b0 0b 00 00 00 movl $0xb,-0x50(%rbp)
17a5: 48 8d 55 b0 lea -0x50(%rbp),%rdx
17a9: 48 8d 45 80 lea -0x80(%rbp),%rax
17ad: 48 89 d6 mov %rdx,%rsi
17b0: 48 89 c7 mov %rax,%rdi
17b3: e8 a4 05 00 00 callq 1d5c <_ZNSt3mapIiPKcSt4lessIiESaISt4pairIKiS1_EEEixEOi>
17b8: 48 8d 15 7c 39 00 00 lea 0x397c(%rip),%rdx # 513b <_ZStL6ignore+0x131>
17bf: 48 89 10 mov %rdx,(%rax)
17c2: c7 45 b0 e9 03 00 00 movl $0x3e9,-0x50(%rbp)
17c9: 48 8d 55 b0 lea -0x50(%rbp),%rdx
17cd: 48 8d 45 80 lea -0x80(%rbp),%rax
17d1: 48 89 d6 mov %rdx,%rsi
17d4: 48 89 c7 mov %rax,%rdi
17d7: e8 80 05 00 00 callq 1d5c <_ZNSt3mapIiPKcSt4lessIiESaISt4pairIKiS1_EEEixEOi>
17dc: 48 8d 15 5f 39 00 00 lea 0x395f(%rip),%rdx # 5142 <_ZStL6ignore+0x138>
17e3: 48 89 10 mov %rdx,(%rax)
17e6: c7 45 b0 f2 03 00 00 movl $0x3f2,-0x50(%rbp)
17ed: 48 8d 55 b0 lea -0x50(%rbp),%rdx
17f1: 48 8d 45 80 lea -0x80(%rbp),%rax
17f5: 48 89 d6 mov %rdx,%rsi
17f8: 48 89 c7 mov %rax,%rdi
17fb: e8 5c 05 00 00 callq 1d5c <_ZNSt3mapIiPKcSt4lessIiESaISt4pairIKiS1_EEEixEOi>
1800: 48 8d 15 4c 39 00 00 lea 0x394c(%rip),%rdx # 5153 <_ZStL6ignore+0x149>
1807: 48 89 10 mov %rdx,(%rax)
180a: c7 45 b0 02 00 00 00 movl $0x2,-0x50(%rbp)
1811: 48 8d 55 b0 lea -0x50(%rbp),%rdx
1815: 48 8d 45 80 lea -0x80(%rbp),%rax
1819: 48 89 d6 mov %rdx,%rsi
181c: 48 89 c7 mov %rax,%rdi
181f: e8 38 05 00 00 callq 1d5c <_ZNSt3mapIiPKcSt4lessIiESaISt4pairIKiS1_EEEixEOi>
1824: 48 8d 15 39 39 00 00 lea 0x3939(%rip),%rdx # 5164 <_ZStL6ignore+0x15a>
182b: 48 89 10 mov %rdx,(%rax)
182e: c7 45 b0 09 00 00 00 movl $0x9,-0x50(%rbp)
1835: 48 8d 55 b0 lea -0x50(%rbp),%rdx
1839: 48 8d 45 80 lea -0x80(%rbp),%rax
183d: 48 89 d6 mov %rdx,%rsi
1840: 48 89 c7 mov %rax,%rdi
1843: e8 14 05 00 00 callq 1d5c <_ZNSt3mapIiPKcSt4lessIiESaISt4pairIKiS1_EEEixEOi>
1848: 48 8d 15 19 39 00 00 lea 0x3919(%rip),%rdx # 5168 <_ZStL6ignore+0x15e>
184f: 48 89 10 mov %rdx,(%rax)
1852: 48 8d 3d 14 39 00 00 lea 0x3914(%rip),%rdi # 516d <_ZStL6ignore+0x163>
1859: e8 92 f9 ff ff callq 11f0 <puts@plt>
185e: 48 8d 45 80 lea -0x80(%rbp),%rax
1862: be 00 00 00 00 mov $0x0,%esi
1867: 48 89 c7 mov %rax,%rdi
186a: e8 af fc ff ff callq 151e <_Z16dump_map_and_setP11tree_structb>
186f: 48 8d 45 80 lea -0x80(%rbp),%rax
1873: 48 89 c7 mov %rax,%rdi
1876: e8 0d 06 00 00 callq 1e88 <_ZNSt3mapIiPKcSt4lessIiESaISt4pairIKiS1_EEE5beginEv>
187b: 48 89 85 70 ff ff ff mov %rax,-0x90(%rbp)
1882: 48 8d 3d f6 38 00 00 lea 0x38f6(%rip),%rdi # 517f <_ZStL6ignore+0x175>
1889: e8 62 f9 ff ff callq 11f0 <puts@plt>
188e: 48 8d 85 70 ff ff ff lea -0x90(%rbp),%rax
1895: 48 8b 00 mov (%rax),%rax
1898: b9 01 00 00 00 mov $0x1,%ecx
189d: ba 00 00 00 00 mov $0x0,%edx
18a2: be 00 00 00 00 mov $0x0,%esi
18a7: 48 89 c7 mov %rax,%rdi
18aa: e8 5a fa ff ff callq 1309 <_Z14dump_tree_nodeP9tree_nodebbb>
18af: 48 8d 45 80 lea -0x80(%rbp),%rax
18b3: 48 89 c7 mov %rax,%rdi
18b6: e8 eb 05 00 00 callq 1ea6 <_ZNSt3mapIiPKcSt4lessIiESaISt4pairIKiS1_EEE3endEv>
18bb: 48 89 85 70 ff ff ff mov %rax,-0x90(%rbp)
18c2: 48 8d 3d c1 38 00 00 lea 0x38c1(%rip),%rdi # 518a <_ZStL6ignore+0x180>
18c9: e8 22 f9 ff ff callq 11f0 <puts@plt>
18ce: 48 8d 85 70 ff ff ff lea -0x90(%rbp),%rax
18d5: 48 8b 00 mov (%rax),%rax
18d8: b9 00 00 00 00 mov $0x0,%ecx
18dd: ba 00 00 00 00 mov $0x0,%edx
18e2: be 00 00 00 00 mov $0x0,%esi
18e7: 48 89 c7 mov %rax,%rdi
18ea: e8 1a fa ff ff callq 1309 <_Z14dump_tree_nodeP9tree_nodebbb>
18ef: 48 8d 45 b0 lea -0x50(%rbp),%rax
18f3: 48 89 c7 mov %rax,%rdi
18f6: e8 87 03 00 00 callq 1c82 <_ZNSt3setIiSt4lessIiESaIiEEC1Ev>
18fb: c7 85 78 ff ff ff 7b movl $0x7b,-0x88(%rbp)
1902: 00 00 00
1905: 48 8d 95 78 ff ff ff lea -0x88(%rbp),%rdx
190c: 48 8d 45 b0 lea -0x50(%rbp),%rax
1910: 48 89 d6 mov %rdx,%rsi
1913: 48 89 c7 mov %rax,%rdi
1916: e8 43 06 00 00 callq 1f5e <_ZNSt3setIiSt4lessIiESaIiEE6insertEOi>
191b: c7 85 78 ff ff ff c8 movl $0x1c8,-0x88(%rbp)
1922: 01 00 00
1925: 48 8d 95 78 ff ff ff lea -0x88(%rbp),%rdx
192c: 48 8d 45 b0 lea -0x50(%rbp),%rax
1930: 48 89 d6 mov %rdx,%rsi
1933: 48 89 c7 mov %rax,%rdi
1936: e8 23 06 00 00 callq 1f5e <_ZNSt3setIiSt4lessIiESaIiEE6insertEOi>
193b: c7 85 78 ff ff ff 0b movl $0xb,-0x88(%rbp)
1942: 00 00 00
1945: 48 8d 95 78 ff ff ff lea -0x88(%rbp),%rdx
194c: 48 8d 45 b0 lea -0x50(%rbp),%rax
1950: 48 89 d6 mov %rdx,%rsi
1953: 48 89 c7 mov %rax,%rdi
1956: e8 03 06 00 00 callq 1f5e <_ZNSt3setIiSt4lessIiESaIiEE6insertEOi>
195b: c7 85 78 ff ff ff 0c movl $0xc,-0x88(%rbp)
1962: 00 00 00
1965: 48 8d 95 78 ff ff ff lea -0x88(%rbp),%rdx
196c: 48 8d 45 b0 lea -0x50(%rbp),%rax
1970: 48 89 d6 mov %rdx,%rsi
1973: 48 89 c7 mov %rax,%rdi
1976: e8 e3 05 00 00 callq 1f5e <_ZNSt3setIiSt4lessIiESaIiEE6insertEOi>
197b: c7 85 78 ff ff ff 64 movl $0x64,-0x88(%rbp)
1982: 00 00 00
1985: 48 8d 95 78 ff ff ff lea -0x88(%rbp),%rdx
198c: 48 8d 45 b0 lea -0x50(%rbp),%rax
1990: 48 89 d6 mov %rdx,%rsi
1993: 48 89 c7 mov %rax,%rdi
1996: e8 c3 05 00 00 callq 1f5e <_ZNSt3setIiSt4lessIiESaIiEE6insertEOi>
199b: c7 85 78 ff ff ff e9 movl $0x3e9,-0x88(%rbp)
19a2: 03 00 00
19a5: 48 8d 95 78 ff ff ff lea -0x88(%rbp),%rdx
19ac: 48 8d 45 b0 lea -0x50(%rbp),%rax
19b0: 48 89 d6 mov %rdx,%rsi
19b3: 48 89 c7 mov %rax,%rdi
19b6: e8 a3 05 00 00 callq 1f5e <_ZNSt3setIiSt4lessIiESaIiEE6insertEOi>
19bb: 48 8d 3d d1 37 00 00 lea 0x37d1(%rip),%rdi # 5193 <_ZStL6ignore+0x189>
19c2: e8 29 f8 ff ff callq 11f0 <puts@plt>
19c7: 48 8d 45 b0 lea -0x50(%rbp),%rax
19cb: be 01 00 00 00 mov $0x1,%esi
19d0: 48 89 c7 mov %rax,%rdi
19d3: e8 46 fb ff ff callq 151e <_Z16dump_map_and_setP11tree_structb>
19d8: 48 8d 45 b0 lea -0x50(%rbp),%rax
19dc: 48 89 c7 mov %rax,%rdi
19df: e8 00 06 00 00 callq 1fe4 <_ZNKSt3setIiSt4lessIiESaIiEE5beginEv>
19e4: 48 89 85 78 ff ff ff mov %rax,-0x88(%rbp)
19eb: 48 8d 3d b3 37 00 00 lea 0x37b3(%rip),%rdi # 51a5 <_ZStL6ignore+0x19b>
19f2: e8 f9 f7 ff ff callq 11f0 <puts@plt>
19f7: 48 8d 85 78 ff ff ff lea -0x88(%rbp),%rax
19fe: 48 8b 00 mov (%rax),%rax
1a01: b9 01 00 00 00 mov $0x1,%ecx
1a06: ba 00 00 00 00 mov $0x0,%edx
1a0b: be 01 00 00 00 mov $0x1,%esi
1a10: 48 89 c7 mov %rax,%rdi
1a13: e8 f1 f8 ff ff callq 1309 <_Z14dump_tree_nodeP9tree_nodebbb>
1a18: 48 8d 45 b0 lea -0x50(%rbp),%rax
1a1c: 48 89 c7 mov %rax,%rdi
1a1f: e8 de 05 00 00 callq 2002 <_ZNKSt3setIiSt4lessIiESaIiEE3endEv>
1a24: 48 89 85 78 ff ff ff mov %rax,-0x88(%rbp)
1a2b: 48 8d 3d 7e 37 00 00 lea 0x377e(%rip),%rdi # 51b0 <_ZStL6ignore+0x1a6>
1a32: e8 b9 f7 ff ff callq 11f0 <puts@plt>
1a37: 48 8d 85 78 ff ff ff lea -0x88(%rbp),%rax
1a3e: 48 8b 00 mov (%rax),%rax
1a41: b9 00 00 00 00 mov $0x0,%ecx
1a46: ba 00 00 00 00 mov $0x0,%edx
1a4b: be 01 00 00 00 mov $0x1,%esi
1a50: 48 89 c7 mov %rax,%rdi
1a53: e8 b1 f8 ff ff callq 1309 <_Z14dump_tree_nodeP9tree_nodebbb>
1a58: 48 8d 45 b0 lea -0x50(%rbp),%rax
1a5c: 48 89 c7 mov %rax,%rdi
1a5f: e8 3e 02 00 00 callq 1ca2 <_ZNSt3setIiSt4lessIiESaIiEED1Ev>
1a64: 48 8d 45 80 lea -0x80(%rbp),%rax
1a68: 48 89 c7 mov %rax,%rdi
1a6b: e8 b2 01 00 00 callq 1c22 <_ZNSt3mapIiPKcSt4lessIiESaISt4pairIKiS1_EEED1Ev>
1a70: b8 00 00 00 00 mov $0x0,%eax
1a75: 48 8b 4d e8 mov -0x18(%rbp),%rcx
1a79: 64 48 33 0c 25 28 00 xor %fs:0x28,%rcx
1a80: 00 00
1a82: 74 3a je 1abe <main+0x4fb>
1a84: eb 33 jmp 1ab9 <main+0x4f6>
1a86: f3 0f 1e fa endbr64
1a8a: 48 89 c3 mov %rax,%rbx
1a8d: 48 8d 45 b0 lea -0x50(%rbp),%rax
1a91: 48 89 c7 mov %rax,%rdi
1a94: e8 09 02 00 00 callq 1ca2 <_ZNSt3setIiSt4lessIiESaIiEED1Ev>
1a99: eb 07 jmp 1aa2 <main+0x4df>
1a9b: f3 0f 1e fa endbr64
1a9f: 48 89 c3 mov %rax,%rbx
1aa2: 48 8d 45 80 lea -0x80(%rbp),%rax
1aa6: 48 89 c7 mov %rax,%rdi
1aa9: e8 74 01 00 00 callq 1c22 <_ZNSt3mapIiPKcSt4lessIiESaISt4pairIKiS1_EEED1Ev>
1aae: 48 89 d8 mov %rbx,%rax
1ab1: 48 89 c7 mov %rax,%rdi
1ab4: e8 57 f7 ff ff callq 1210 <_Unwind_Resume@plt>
1ab9: e8 02 f7 ff ff callq 11c0 <__stack_chk_fail@plt>
1abe: 48 81 c4 88 00 00 00 add $0x88,%rsp
1ac5: 5b pop %rbx
1ac6: 5d pop %rbp
1ac7: c3 retq
#endif