Advertisement
Guest User

Untitled

a guest
Jun 26th, 2016
405
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. rb_set_parent(rb_node*, rb_node*):
  2.         push    rbp
  3.         mov     rbp, rsp
  4.         mov     QWORD PTR [rbp-8], rdi
  5.         mov     QWORD PTR [rbp-16], rsi
  6.         mov     rax, QWORD PTR [rbp-8]
  7.         mov     rax, QWORD PTR [rax]
  8.         and     eax, 1
  9.         mov     rdx, rax
  10.         mov     rax, QWORD PTR [rbp-16]
  11.         or      rdx, rax
  12.         mov     rax, QWORD PTR [rbp-8]
  13.         mov     QWORD PTR [rax], rdx
  14.         pop     rbp
  15.         ret
  16. rb_set_parent_color(rb_node*, rb_node*, int):
  17.         push    rbp
  18.         mov     rbp, rsp
  19.         mov     QWORD PTR [rbp-8], rdi
  20.         mov     QWORD PTR [rbp-16], rsi
  21.         mov     DWORD PTR [rbp-20], edx
  22.         mov     eax, DWORD PTR [rbp-20]
  23.         movsx   rdx, eax
  24.         mov     rax, QWORD PTR [rbp-16]
  25.         or      rdx, rax
  26.         mov     rax, QWORD PTR [rbp-8]
  27.         mov     QWORD PTR [rax], rdx
  28.         pop     rbp
  29.         ret
  30. __rb_change_child(rb_node*, rb_node*, rb_node*, rb_root*):
  31.         push    rbp
  32.         mov     rbp, rsp
  33.         mov     QWORD PTR [rbp-8], rdi
  34.         mov     QWORD PTR [rbp-16], rsi
  35.         mov     QWORD PTR [rbp-24], rdx
  36.         mov     QWORD PTR [rbp-32], rcx
  37.         cmp     QWORD PTR [rbp-24], 0
  38.         je      .L4
  39.         mov     rax, QWORD PTR [rbp-24]
  40.         mov     rax, QWORD PTR [rax+16]
  41.         cmp     rax, QWORD PTR [rbp-8]
  42.         jne     .L5
  43.         mov     rax, QWORD PTR [rbp-24]
  44.         mov     rdx, QWORD PTR [rbp-16]
  45.         mov     QWORD PTR [rax+16], rdx
  46.         jmp     .L3
  47. .L5:
  48.         mov     rax, QWORD PTR [rbp-24]
  49.         mov     rdx, QWORD PTR [rbp-16]
  50.         mov     QWORD PTR [rax+8], rdx
  51.         jmp     .L3
  52. .L4:
  53.         mov     rax, QWORD PTR [rbp-32]
  54.         mov     rdx, QWORD PTR [rbp-16]
  55.         mov     QWORD PTR [rax], rdx
  56. .L3:
  57.         pop     rbp
  58.         ret
  59. rb_set_black(rb_node*):
  60.         push    rbp
  61.         mov     rbp, rsp
  62.         mov     QWORD PTR [rbp-8], rdi
  63.         mov     rax, QWORD PTR [rbp-8]
  64.         mov     rax, QWORD PTR [rax]
  65.         or      rax, 1
  66.         mov     rdx, rax
  67.         mov     rax, QWORD PTR [rbp-8]
  68.         mov     QWORD PTR [rax], rdx
  69.         pop     rbp
  70.         ret
  71. rb_red_parent(rb_node*):
  72.         push    rbp
  73.         mov     rbp, rsp
  74.         mov     QWORD PTR [rbp-8], rdi
  75.         mov     rax, QWORD PTR [rbp-8]
  76.         mov     rax, QWORD PTR [rax]
  77.         pop     rbp
  78.         ret
  79. __rb_rotate_set_parents(rb_node*, rb_node*, rb_root*, int):
  80.         push    rbp
  81.         mov     rbp, rsp
  82.         sub     rsp, 48
  83.         mov     QWORD PTR [rbp-24], rdi
  84.         mov     QWORD PTR [rbp-32], rsi
  85.         mov     QWORD PTR [rbp-40], rdx
  86.         mov     DWORD PTR [rbp-44], ecx
  87.         mov     rax, QWORD PTR [rbp-24]
  88.         mov     rax, QWORD PTR [rax]
  89.         and     rax, -4
  90.         mov     QWORD PTR [rbp-8], rax
  91.         mov     rax, QWORD PTR [rbp-24]
  92.         mov     rdx, QWORD PTR [rax]
  93.         mov     rax, QWORD PTR [rbp-32]
  94.         mov     QWORD PTR [rax], rdx
  95.         mov     edx, DWORD PTR [rbp-44]
  96.         mov     rcx, QWORD PTR [rbp-32]
  97.         mov     rax, QWORD PTR [rbp-24]
  98.         mov     rsi, rcx
  99.         mov     rdi, rax
  100.         call    rb_set_parent_color(rb_node*, rb_node*, int)
  101.         mov     rcx, QWORD PTR [rbp-40]
  102.         mov     rdx, QWORD PTR [rbp-8]
  103.         mov     rsi, QWORD PTR [rbp-32]
  104.         mov     rax, QWORD PTR [rbp-24]
  105.         mov     rdi, rax
  106.         call    __rb_change_child(rb_node*, rb_node*, rb_node*, rb_root*)
  107.         leave
  108.         ret
  109. __rb_erase_color(rb_node*, rb_root*, void (*)(rb_node*, rb_node*)):
  110.         push    rbp
  111.         mov     rbp, rsp
  112.         sub     rsp, 96
  113.         mov     QWORD PTR [rbp-72], rdi
  114.         mov     QWORD PTR [rbp-80], rsi
  115.         mov     QWORD PTR [rbp-88], rdx
  116.         mov     rax, QWORD PTR [rbp-72]
  117.         mov     QWORD PTR [rbp-56], rax
  118.         mov     rax, QWORD PTR [rbp-80]
  119.         mov     QWORD PTR [rbp-48], rax
  120.         mov     rax, QWORD PTR [rbp-88]
  121.         mov     QWORD PTR [rbp-40], rax
  122.         mov     QWORD PTR [rbp-32], 0
  123. .L32:
  124.         mov     rax, QWORD PTR [rbp-56]
  125.         mov     rax, QWORD PTR [rax+8]
  126.         mov     QWORD PTR [rbp-24], rax
  127.         mov     rax, QWORD PTR [rbp-24]
  128.         cmp     rax, QWORD PTR [rbp-32]
  129.         je      .L13
  130.         mov     rax, QWORD PTR [rbp-24]
  131.         mov     rax, QWORD PTR [rax]
  132.         and     eax, 1
  133.         test    rax, rax
  134.         jne     .L14
  135.         mov     rax, QWORD PTR [rbp-24]
  136.         mov     rax, QWORD PTR [rax+16]
  137.         mov     QWORD PTR [rbp-16], rax
  138.         mov     rax, QWORD PTR [rbp-56]
  139.         mov     rdx, QWORD PTR [rbp-16]
  140.         mov     QWORD PTR [rax+8], rdx
  141.         mov     rax, QWORD PTR [rbp-24]
  142.         mov     rdx, QWORD PTR [rbp-56]
  143.         mov     QWORD PTR [rax+16], rdx
  144.         mov     rcx, QWORD PTR [rbp-56]
  145.         mov     rax, QWORD PTR [rbp-16]
  146.         mov     edx, 1
  147.         mov     rsi, rcx
  148.         mov     rdi, rax
  149.         call    rb_set_parent_color(rb_node*, rb_node*, int)
  150.         mov     rdx, QWORD PTR [rbp-48]
  151.         mov     rsi, QWORD PTR [rbp-24]
  152.         mov     rax, QWORD PTR [rbp-56]
  153.         mov     ecx, 0
  154.         mov     rdi, rax
  155.         call    __rb_rotate_set_parents(rb_node*, rb_node*, rb_root*, int)
  156.         mov     rcx, QWORD PTR [rbp-24]
  157.         mov     rdx, QWORD PTR [rbp-56]
  158.         mov     rax, QWORD PTR [rbp-40]
  159.         mov     rsi, rcx
  160.         mov     rdi, rdx
  161.         call    rax
  162.         mov     rax, QWORD PTR [rbp-16]
  163.         mov     QWORD PTR [rbp-24], rax
  164. .L14:
  165.         mov     rax, QWORD PTR [rbp-24]
  166.         mov     rax, QWORD PTR [rax+8]
  167.         mov     QWORD PTR [rbp-16], rax
  168.         cmp     QWORD PTR [rbp-16], 0
  169.         je      .L15
  170.         mov     rax, QWORD PTR [rbp-16]
  171.         mov     rax, QWORD PTR [rax]
  172.         and     eax, 1
  173.         test    rax, rax
  174.         je      .L16
  175. .L15:
  176.         mov     rax, QWORD PTR [rbp-24]
  177.         mov     rax, QWORD PTR [rax+16]
  178.         mov     QWORD PTR [rbp-8], rax
  179.         cmp     QWORD PTR [rbp-8], 0
  180.         je      .L17
  181.         mov     rax, QWORD PTR [rbp-8]
  182.         mov     rax, QWORD PTR [rax]
  183.         and     eax, 1
  184.         test    rax, rax
  185.         je      .L18
  186. .L17:
  187.         mov     rcx, QWORD PTR [rbp-56]
  188.         mov     rax, QWORD PTR [rbp-24]
  189.         mov     edx, 0
  190.         mov     rsi, rcx
  191.         mov     rdi, rax
  192.         call    rb_set_parent_color(rb_node*, rb_node*, int)
  193.         mov     rax, QWORD PTR [rbp-56]
  194.         mov     rax, QWORD PTR [rax]
  195.         and     eax, 1
  196.         test    rax, rax
  197.         jne     .L19
  198.         mov     rax, QWORD PTR [rbp-56]
  199.         mov     rdi, rax
  200.         call    rb_set_black(rb_node*)
  201.         jmp     .L12
  202. .L19:
  203.         mov     rax, QWORD PTR [rbp-56]
  204.         mov     QWORD PTR [rbp-32], rax
  205.         mov     rax, QWORD PTR [rbp-32]
  206.         mov     rax, QWORD PTR [rax]
  207.         and     rax, -4
  208.         mov     QWORD PTR [rbp-56], rax
  209.         cmp     QWORD PTR [rbp-56], 0
  210.         jne     .L32
  211.         jmp     .L12
  212. .L18:
  213.         mov     rax, QWORD PTR [rbp-8]
  214.         mov     rax, QWORD PTR [rax+8]
  215.         mov     QWORD PTR [rbp-16], rax
  216.         mov     rax, QWORD PTR [rbp-24]
  217.         mov     rdx, QWORD PTR [rbp-16]
  218.         mov     QWORD PTR [rax+16], rdx
  219.         mov     rax, QWORD PTR [rbp-8]
  220.         mov     rdx, QWORD PTR [rbp-24]
  221.         mov     QWORD PTR [rax+8], rdx
  222.         mov     rax, QWORD PTR [rbp-56]
  223.         mov     rdx, QWORD PTR [rbp-8]
  224.         mov     QWORD PTR [rax+8], rdx
  225.         cmp     QWORD PTR [rbp-16], 0
  226.         je      .L22
  227.         mov     rcx, QWORD PTR [rbp-24]
  228.         mov     rax, QWORD PTR [rbp-16]
  229.         mov     edx, 1
  230.         mov     rsi, rcx
  231.         mov     rdi, rax
  232.         call    rb_set_parent_color(rb_node*, rb_node*, int)
  233. .L22:
  234.         mov     rcx, QWORD PTR [rbp-8]
  235.         mov     rdx, QWORD PTR [rbp-24]
  236.         mov     rax, QWORD PTR [rbp-40]
  237.         mov     rsi, rcx
  238.         mov     rdi, rdx
  239.         call    rax
  240.         mov     rax, QWORD PTR [rbp-24]
  241.         mov     QWORD PTR [rbp-16], rax
  242.         mov     rax, QWORD PTR [rbp-8]
  243.         mov     QWORD PTR [rbp-24], rax
  244. .L16:
  245.         mov     rax, QWORD PTR [rbp-24]
  246.         mov     rax, QWORD PTR [rax+16]
  247.         mov     QWORD PTR [rbp-8], rax
  248.         mov     rax, QWORD PTR [rbp-56]
  249.         mov     rdx, QWORD PTR [rbp-8]
  250.         mov     QWORD PTR [rax+8], rdx
  251.         mov     rax, QWORD PTR [rbp-24]
  252.         mov     rdx, QWORD PTR [rbp-56]
  253.         mov     QWORD PTR [rax+16], rdx
  254.         mov     rcx, QWORD PTR [rbp-24]
  255.         mov     rax, QWORD PTR [rbp-16]
  256.         mov     edx, 1
  257.         mov     rsi, rcx
  258.         mov     rdi, rax
  259.         call    rb_set_parent_color(rb_node*, rb_node*, int)
  260.         cmp     QWORD PTR [rbp-8], 0
  261.         je      .L23
  262.         mov     rdx, QWORD PTR [rbp-56]
  263.         mov     rax, QWORD PTR [rbp-8]
  264.         mov     rsi, rdx
  265.         mov     rdi, rax
  266.         call    rb_set_parent(rb_node*, rb_node*)
  267. .L23:
  268.         mov     rdx, QWORD PTR [rbp-48]
  269.         mov     rsi, QWORD PTR [rbp-24]
  270.         mov     rax, QWORD PTR [rbp-56]
  271.         mov     ecx, 1
  272.         mov     rdi, rax
  273.         call    __rb_rotate_set_parents(rb_node*, rb_node*, rb_root*, int)
  274.         mov     rcx, QWORD PTR [rbp-24]
  275.         mov     rdx, QWORD PTR [rbp-56]
  276.         mov     rax, QWORD PTR [rbp-40]
  277.         mov     rsi, rcx
  278.         mov     rdi, rdx
  279.         call    rax
  280.         jmp     .L12
  281. .L13:
  282.         mov     rax, QWORD PTR [rbp-56]
  283.         mov     rax, QWORD PTR [rax+16]
  284.         mov     QWORD PTR [rbp-24], rax
  285.         mov     rax, QWORD PTR [rbp-24]
  286.         mov     rax, QWORD PTR [rax]
  287.         and     eax, 1
  288.         test    rax, rax
  289.         jne     .L24
  290.         mov     rax, QWORD PTR [rbp-24]
  291.         mov     rax, QWORD PTR [rax+8]
  292.         mov     QWORD PTR [rbp-16], rax
  293.         mov     rax, QWORD PTR [rbp-56]
  294.         mov     rdx, QWORD PTR [rbp-16]
  295.         mov     QWORD PTR [rax+16], rdx
  296.         mov     rax, QWORD PTR [rbp-24]
  297.         mov     rdx, QWORD PTR [rbp-56]
  298.         mov     QWORD PTR [rax+8], rdx
  299.         mov     rcx, QWORD PTR [rbp-56]
  300.         mov     rax, QWORD PTR [rbp-16]
  301.         mov     edx, 1
  302.         mov     rsi, rcx
  303.         mov     rdi, rax
  304.         call    rb_set_parent_color(rb_node*, rb_node*, int)
  305.         mov     rdx, QWORD PTR [rbp-48]
  306.         mov     rsi, QWORD PTR [rbp-24]
  307.         mov     rax, QWORD PTR [rbp-56]
  308.         mov     ecx, 0
  309.         mov     rdi, rax
  310.         call    __rb_rotate_set_parents(rb_node*, rb_node*, rb_root*, int)
  311.         mov     rcx, QWORD PTR [rbp-24]
  312.         mov     rdx, QWORD PTR [rbp-56]
  313.         mov     rax, QWORD PTR [rbp-40]
  314.         mov     rsi, rcx
  315.         mov     rdi, rdx
  316.         call    rax
  317.         mov     rax, QWORD PTR [rbp-16]
  318.         mov     QWORD PTR [rbp-24], rax
  319. .L24:
  320.         mov     rax, QWORD PTR [rbp-24]
  321.         mov     rax, QWORD PTR [rax+16]
  322.         mov     QWORD PTR [rbp-16], rax
  323.         cmp     QWORD PTR [rbp-16], 0
  324.         je      .L25
  325.         mov     rax, QWORD PTR [rbp-16]
  326.         mov     rax, QWORD PTR [rax]
  327.         and     eax, 1
  328.         test    rax, rax
  329.         je      .L26
  330. .L25:
  331.         mov     rax, QWORD PTR [rbp-24]
  332.         mov     rax, QWORD PTR [rax+8]
  333.         mov     QWORD PTR [rbp-8], rax
  334.         cmp     QWORD PTR [rbp-8], 0
  335.         je      .L27
  336.         mov     rax, QWORD PTR [rbp-8]
  337.         mov     rax, QWORD PTR [rax]
  338.         and     eax, 1
  339.         test    rax, rax
  340.         je      .L28
  341. .L27:
  342.         mov     rcx, QWORD PTR [rbp-56]
  343.         mov     rax, QWORD PTR [rbp-24]
  344.         mov     edx, 0
  345.         mov     rsi, rcx
  346.         mov     rdi, rax
  347.         call    rb_set_parent_color(rb_node*, rb_node*, int)
  348.         mov     rax, QWORD PTR [rbp-56]
  349.         mov     rax, QWORD PTR [rax]
  350.         and     eax, 1
  351.         test    rax, rax
  352.         jne     .L29
  353.         mov     rax, QWORD PTR [rbp-56]
  354.         mov     rdi, rax
  355.         call    rb_set_black(rb_node*)
  356.         jmp     .L12
  357. .L29:
  358.         mov     rax, QWORD PTR [rbp-56]
  359.         mov     QWORD PTR [rbp-32], rax
  360.         mov     rax, QWORD PTR [rbp-32]
  361.         mov     rax, QWORD PTR [rax]
  362.         and     rax, -4
  363.         mov     QWORD PTR [rbp-56], rax
  364.         cmp     QWORD PTR [rbp-56], 0
  365.         jne     .L32
  366.         jmp     .L12
  367. .L28:
  368.         mov     rax, QWORD PTR [rbp-8]
  369.         mov     rax, QWORD PTR [rax+16]
  370.         mov     QWORD PTR [rbp-16], rax
  371.         mov     rax, QWORD PTR [rbp-24]
  372.         mov     rdx, QWORD PTR [rbp-16]
  373.         mov     QWORD PTR [rax+8], rdx
  374.         mov     rax, QWORD PTR [rbp-8]
  375.         mov     rdx, QWORD PTR [rbp-24]
  376.         mov     QWORD PTR [rax+16], rdx
  377.         mov     rax, QWORD PTR [rbp-56]
  378.         mov     rdx, QWORD PTR [rbp-8]
  379.         mov     QWORD PTR [rax+16], rdx
  380.         cmp     QWORD PTR [rbp-16], 0
  381.         je      .L30
  382.         mov     rcx, QWORD PTR [rbp-24]
  383.         mov     rax, QWORD PTR [rbp-16]
  384.         mov     edx, 1
  385.         mov     rsi, rcx
  386.         mov     rdi, rax
  387.         call    rb_set_parent_color(rb_node*, rb_node*, int)
  388. .L30:
  389.         mov     rcx, QWORD PTR [rbp-8]
  390.         mov     rdx, QWORD PTR [rbp-24]
  391.         mov     rax, QWORD PTR [rbp-40]
  392.         mov     rsi, rcx
  393.         mov     rdi, rdx
  394.         call    rax
  395.         mov     rax, QWORD PTR [rbp-24]
  396.         mov     QWORD PTR [rbp-16], rax
  397.         mov     rax, QWORD PTR [rbp-8]
  398.         mov     QWORD PTR [rbp-24], rax
  399. .L26:
  400.         mov     rax, QWORD PTR [rbp-24]
  401.         mov     rax, QWORD PTR [rax+8]
  402.         mov     QWORD PTR [rbp-8], rax
  403.         mov     rax, QWORD PTR [rbp-56]
  404.         mov     rdx, QWORD PTR [rbp-8]
  405.         mov     QWORD PTR [rax+16], rdx
  406.         mov     rax, QWORD PTR [rbp-24]
  407.         mov     rdx, QWORD PTR [rbp-56]
  408.         mov     QWORD PTR [rax+8], rdx
  409.         mov     rcx, QWORD PTR [rbp-24]
  410.         mov     rax, QWORD PTR [rbp-16]
  411.         mov     edx, 1
  412.         mov     rsi, rcx
  413.         mov     rdi, rax
  414.         call    rb_set_parent_color(rb_node*, rb_node*, int)
  415.         cmp     QWORD PTR [rbp-8], 0
  416.         je      .L31
  417.         mov     rdx, QWORD PTR [rbp-56]
  418.         mov     rax, QWORD PTR [rbp-8]
  419.         mov     rsi, rdx
  420.         mov     rdi, rax
  421.         call    rb_set_parent(rb_node*, rb_node*)
  422. .L31:
  423.         mov     rdx, QWORD PTR [rbp-48]
  424.         mov     rsi, QWORD PTR [rbp-24]
  425.         mov     rax, QWORD PTR [rbp-56]
  426.         mov     ecx, 1
  427.         mov     rdi, rax
  428.         call    __rb_rotate_set_parents(rb_node*, rb_node*, rb_root*, int)
  429.         mov     rcx, QWORD PTR [rbp-24]
  430.         mov     rdx, QWORD PTR [rbp-56]
  431.         mov     rax, QWORD PTR [rbp-40]
  432.         mov     rsi, rcx
  433.         mov     rdi, rdx
  434.         call    rax
  435. .L12:
  436.         leave
  437.         ret
  438. dummy_propagate(rb_node*, rb_node*):
  439.         push    rbp
  440.         mov     rbp, rsp
  441.         mov     QWORD PTR [rbp-8], rdi
  442.         mov     QWORD PTR [rbp-16], rsi
  443.         pop     rbp
  444.         ret
  445. dummy_copy(rb_node*, rb_node*):
  446.         push    rbp
  447.         mov     rbp, rsp
  448.         mov     QWORD PTR [rbp-8], rdi
  449.         mov     QWORD PTR [rbp-16], rsi
  450.         pop     rbp
  451.         ret
  452. dummy_rotate(rb_node*, rb_node*):
  453.         push    rbp
  454.         mov     rbp, rsp
  455.         mov     QWORD PTR [rbp-8], rdi
  456.         mov     QWORD PTR [rbp-16], rsi
  457.         pop     rbp
  458.         ret
  459. rb_insert_color(rb_node*, rb_root*):
  460.         push    rbp
  461.         mov     rbp, rsp
  462.         sub     rsp, 64
  463.         mov     QWORD PTR [rbp-56], rdi
  464.         mov     QWORD PTR [rbp-64], rsi
  465.         mov     rax, QWORD PTR [rbp-56]
  466.         mov     QWORD PTR [rbp-48], rax
  467.         mov     rax, QWORD PTR [rbp-64]
  468.         mov     QWORD PTR [rbp-40], rax
  469.         mov     QWORD PTR [rbp-32], OFFSET FLAT:dummy_rotate(rb_node*, rb_node*)
  470.         mov     rax, QWORD PTR [rbp-48]
  471.         mov     rdi, rax
  472.         call    rb_red_parent(rb_node*)
  473.         mov     QWORD PTR [rbp-24], rax
  474. .L49:
  475.         cmp     QWORD PTR [rbp-24], 0
  476.         jne     .L37
  477.         mov     rax, QWORD PTR [rbp-48]
  478.         mov     edx, 1
  479.         mov     esi, 0
  480.         mov     rdi, rax
  481.         call    rb_set_parent_color(rb_node*, rb_node*, int)
  482.         jmp     .L36
  483. .L37:
  484.         mov     rax, QWORD PTR [rbp-24]
  485.         mov     rax, QWORD PTR [rax]
  486.         and     eax, 1
  487.         test    rax, rax
  488.         jne     .L36
  489.         mov     rax, QWORD PTR [rbp-24]
  490.         mov     rdi, rax
  491.         call    rb_red_parent(rb_node*)
  492.         mov     QWORD PTR [rbp-16], rax
  493.         mov     rax, QWORD PTR [rbp-16]
  494.         mov     rax, QWORD PTR [rax+8]
  495.         mov     QWORD PTR [rbp-8], rax
  496.         mov     rax, QWORD PTR [rbp-24]
  497.         cmp     rax, QWORD PTR [rbp-8]
  498.         je      .L39
  499.         cmp     QWORD PTR [rbp-8], 0
  500.         je      .L40
  501.         mov     rax, QWORD PTR [rbp-8]
  502.         mov     rax, QWORD PTR [rax]
  503.         and     eax, 1
  504.         test    rax, rax
  505.         jne     .L40
  506.         mov     rcx, QWORD PTR [rbp-16]
  507.         mov     rax, QWORD PTR [rbp-8]
  508.         mov     edx, 1
  509.         mov     rsi, rcx
  510.         mov     rdi, rax
  511.         call    rb_set_parent_color(rb_node*, rb_node*, int)
  512.         mov     rcx, QWORD PTR [rbp-16]
  513.         mov     rax, QWORD PTR [rbp-24]
  514.         mov     edx, 1
  515.         mov     rsi, rcx
  516.         mov     rdi, rax
  517.         call    rb_set_parent_color(rb_node*, rb_node*, int)
  518.         mov     rax, QWORD PTR [rbp-16]
  519.         mov     QWORD PTR [rbp-48], rax
  520.         mov     rax, QWORD PTR [rbp-48]
  521.         mov     rax, QWORD PTR [rax]
  522.         and     rax, -4
  523.         mov     QWORD PTR [rbp-24], rax
  524.         mov     rcx, QWORD PTR [rbp-24]
  525.         mov     rax, QWORD PTR [rbp-48]
  526.         mov     edx, 0
  527.         mov     rsi, rcx
  528.         mov     rdi, rax
  529.         call    rb_set_parent_color(rb_node*, rb_node*, int)
  530.         jmp     .L49
  531. .L40:
  532.         mov     rax, QWORD PTR [rbp-24]
  533.         mov     rax, QWORD PTR [rax+8]
  534.         mov     QWORD PTR [rbp-8], rax
  535.         mov     rax, QWORD PTR [rbp-48]
  536.         cmp     rax, QWORD PTR [rbp-8]
  537.         jne     .L42
  538.         mov     rax, QWORD PTR [rbp-48]
  539.         mov     rax, QWORD PTR [rax+16]
  540.         mov     QWORD PTR [rbp-8], rax
  541.         mov     rax, QWORD PTR [rbp-24]
  542.         mov     rdx, QWORD PTR [rbp-8]
  543.         mov     QWORD PTR [rax+8], rdx
  544.         mov     rax, QWORD PTR [rbp-48]
  545.         mov     rdx, QWORD PTR [rbp-24]
  546.         mov     QWORD PTR [rax+16], rdx
  547.         cmp     QWORD PTR [rbp-8], 0
  548.         je      .L43
  549.         mov     rcx, QWORD PTR [rbp-24]
  550.         mov     rax, QWORD PTR [rbp-8]
  551.         mov     edx, 1
  552.         mov     rsi, rcx
  553.         mov     rdi, rax
  554.         call    rb_set_parent_color(rb_node*, rb_node*, int)
  555. .L43:
  556.         mov     rcx, QWORD PTR [rbp-48]
  557.         mov     rax, QWORD PTR [rbp-24]
  558.         mov     edx, 0
  559.         mov     rsi, rcx
  560.         mov     rdi, rax
  561.         call    rb_set_parent_color(rb_node*, rb_node*, int)
  562.         mov     rcx, QWORD PTR [rbp-48]
  563.         mov     rdx, QWORD PTR [rbp-24]
  564.         mov     rax, QWORD PTR [rbp-32]
  565.         mov     rsi, rcx
  566.         mov     rdi, rdx
  567.         call    rax
  568.         mov     rax, QWORD PTR [rbp-48]
  569.         mov     QWORD PTR [rbp-24], rax
  570.         mov     rax, QWORD PTR [rbp-48]
  571.         mov     rax, QWORD PTR [rax+8]
  572.         mov     QWORD PTR [rbp-8], rax
  573. .L42:
  574.         mov     rax, QWORD PTR [rbp-16]
  575.         mov     rdx, QWORD PTR [rbp-8]
  576.         mov     QWORD PTR [rax+16], rdx
  577.         mov     rax, QWORD PTR [rbp-24]
  578.         mov     rdx, QWORD PTR [rbp-16]
  579.         mov     QWORD PTR [rax+8], rdx
  580.         cmp     QWORD PTR [rbp-8], 0
  581.         je      .L44
  582.         mov     rcx, QWORD PTR [rbp-16]
  583.         mov     rax, QWORD PTR [rbp-8]
  584.         mov     edx, 1
  585.         mov     rsi, rcx
  586.         mov     rdi, rax
  587.         call    rb_set_parent_color(rb_node*, rb_node*, int)
  588. .L44:
  589.         mov     rdx, QWORD PTR [rbp-40]
  590.         mov     rsi, QWORD PTR [rbp-24]
  591.         mov     rax, QWORD PTR [rbp-16]
  592.         mov     ecx, 0
  593.         mov     rdi, rax
  594.         call    __rb_rotate_set_parents(rb_node*, rb_node*, rb_root*, int)
  595.         mov     rcx, QWORD PTR [rbp-24]
  596.         mov     rdx, QWORD PTR [rbp-16]
  597.         mov     rax, QWORD PTR [rbp-32]
  598.         mov     rsi, rcx
  599.         mov     rdi, rdx
  600.         call    rax
  601.         jmp     .L36
  602. .L39:
  603.         mov     rax, QWORD PTR [rbp-16]
  604.         mov     rax, QWORD PTR [rax+16]
  605.         mov     QWORD PTR [rbp-8], rax
  606.         cmp     QWORD PTR [rbp-8], 0
  607.         je      .L45
  608.         mov     rax, QWORD PTR [rbp-8]
  609.         mov     rax, QWORD PTR [rax]
  610.         and     eax, 1
  611.         test    rax, rax
  612.         jne     .L45
  613.         mov     rcx, QWORD PTR [rbp-16]
  614.         mov     rax, QWORD PTR [rbp-8]
  615.         mov     edx, 1
  616.         mov     rsi, rcx
  617.         mov     rdi, rax
  618.         call    rb_set_parent_color(rb_node*, rb_node*, int)
  619.         mov     rcx, QWORD PTR [rbp-16]
  620.         mov     rax, QWORD PTR [rbp-24]
  621.         mov     edx, 1
  622.         mov     rsi, rcx
  623.         mov     rdi, rax
  624.         call    rb_set_parent_color(rb_node*, rb_node*, int)
  625.         mov     rax, QWORD PTR [rbp-16]
  626.         mov     QWORD PTR [rbp-48], rax
  627.         mov     rax, QWORD PTR [rbp-48]
  628.         mov     rax, QWORD PTR [rax]
  629.         and     rax, -4
  630.         mov     QWORD PTR [rbp-24], rax
  631.         mov     rcx, QWORD PTR [rbp-24]
  632.         mov     rax, QWORD PTR [rbp-48]
  633.         mov     edx, 0
  634.         mov     rsi, rcx
  635.         mov     rdi, rax
  636.         call    rb_set_parent_color(rb_node*, rb_node*, int)
  637.         jmp     .L49
  638. .L45:
  639.         mov     rax, QWORD PTR [rbp-24]
  640.         mov     rax, QWORD PTR [rax+16]
  641.         mov     QWORD PTR [rbp-8], rax
  642.         mov     rax, QWORD PTR [rbp-48]
  643.         cmp     rax, QWORD PTR [rbp-8]
  644.         jne     .L46
  645.         mov     rax, QWORD PTR [rbp-48]
  646.         mov     rax, QWORD PTR [rax+8]
  647.         mov     QWORD PTR [rbp-8], rax
  648.         mov     rax, QWORD PTR [rbp-24]
  649.         mov     rdx, QWORD PTR [rbp-8]
  650.         mov     QWORD PTR [rax+16], rdx
  651.         mov     rax, QWORD PTR [rbp-48]
  652.         mov     rdx, QWORD PTR [rbp-24]
  653.         mov     QWORD PTR [rax+8], rdx
  654.         cmp     QWORD PTR [rbp-8], 0
  655.         je      .L47
  656.         mov     rcx, QWORD PTR [rbp-24]
  657.         mov     rax, QWORD PTR [rbp-8]
  658.         mov     edx, 1
  659.         mov     rsi, rcx
  660.         mov     rdi, rax
  661.         call    rb_set_parent_color(rb_node*, rb_node*, int)
  662. .L47:
  663.         mov     rcx, QWORD PTR [rbp-48]
  664.         mov     rax, QWORD PTR [rbp-24]
  665.         mov     edx, 0
  666.         mov     rsi, rcx
  667.         mov     rdi, rax
  668.         call    rb_set_parent_color(rb_node*, rb_node*, int)
  669.         mov     rcx, QWORD PTR [rbp-48]
  670.         mov     rdx, QWORD PTR [rbp-24]
  671.         mov     rax, QWORD PTR [rbp-32]
  672.         mov     rsi, rcx
  673.         mov     rdi, rdx
  674.         call    rax
  675.         mov     rax, QWORD PTR [rbp-48]
  676.         mov     QWORD PTR [rbp-24], rax
  677.         mov     rax, QWORD PTR [rbp-48]
  678.         mov     rax, QWORD PTR [rax+16]
  679.         mov     QWORD PTR [rbp-8], rax
  680. .L46:
  681.         mov     rax, QWORD PTR [rbp-16]
  682.         mov     rdx, QWORD PTR [rbp-8]
  683.         mov     QWORD PTR [rax+8], rdx
  684.         mov     rax, QWORD PTR [rbp-24]
  685.         mov     rdx, QWORD PTR [rbp-16]
  686.         mov     QWORD PTR [rax+16], rdx
  687.         cmp     QWORD PTR [rbp-8], 0
  688.         je      .L48
  689.         mov     rcx, QWORD PTR [rbp-16]
  690.         mov     rax, QWORD PTR [rbp-8]
  691.         mov     edx, 1
  692.         mov     rsi, rcx
  693.         mov     rdi, rax
  694.         call    rb_set_parent_color(rb_node*, rb_node*, int)
  695. .L48:
  696.         mov     rdx, QWORD PTR [rbp-40]
  697.         mov     rsi, QWORD PTR [rbp-24]
  698.         mov     rax, QWORD PTR [rbp-16]
  699.         mov     ecx, 0
  700.         mov     rdi, rax
  701.         call    __rb_rotate_set_parents(rb_node*, rb_node*, rb_root*, int)
  702.         mov     rcx, QWORD PTR [rbp-24]
  703.         mov     rdx, QWORD PTR [rbp-16]
  704.         mov     rax, QWORD PTR [rbp-32]
  705.         mov     rsi, rcx
  706.         mov     rdi, rdx
  707.         call    rax
  708. .L36:
  709.         leave
  710.         ret
  711. rb_erase(rb_node*, rb_root*):
  712.         push    rbp
  713.         mov     rbp, rsp
  714.         sub     rsp, 176
  715.         mov     QWORD PTR [rbp-168], rdi
  716.         mov     QWORD PTR [rbp-176], rsi
  717.         mov     rax, QWORD PTR [rbp-168]
  718.         mov     QWORD PTR [rbp-144], rax
  719.         mov     rax, QWORD PTR [rbp-176]
  720.         mov     QWORD PTR [rbp-136], rax
  721.         mov     QWORD PTR [rbp-128], OFFSET FLAT:dummy_callbacks
  722.         mov     rax, QWORD PTR [rbp-144]
  723.         mov     rax, QWORD PTR [rax+8]
  724.         mov     QWORD PTR [rbp-120], rax
  725.         mov     rax, QWORD PTR [rbp-144]
  726.         mov     rax, QWORD PTR [rax+16]
  727.         mov     QWORD PTR [rbp-112], rax
  728.         cmp     QWORD PTR [rbp-112], 0
  729.         jne     .L51
  730.         mov     rax, QWORD PTR [rbp-144]
  731.         mov     rax, QWORD PTR [rax]
  732.         mov     QWORD PTR [rbp-104], rax
  733.         mov     rax, QWORD PTR [rbp-104]
  734.         and     rax, -4
  735.         mov     QWORD PTR [rbp-96], rax
  736.         mov     rcx, QWORD PTR [rbp-136]
  737.         mov     rdx, QWORD PTR [rbp-96]
  738.         mov     rsi, QWORD PTR [rbp-120]
  739.         mov     rax, QWORD PTR [rbp-144]
  740.         mov     rdi, rax
  741.         call    __rb_change_child(rb_node*, rb_node*, rb_node*, rb_root*)
  742.         cmp     QWORD PTR [rbp-120], 0
  743.         je      .L52
  744.         mov     rax, QWORD PTR [rbp-120]
  745.         mov     rdx, QWORD PTR [rbp-104]
  746.         mov     QWORD PTR [rax], rdx
  747.         mov     QWORD PTR [rbp-88], 0
  748.         jmp     .L53
  749. .L52:
  750.         mov     rax, QWORD PTR [rbp-104]
  751.         and     eax, 1
  752.         test    rax, rax
  753.         je      .L54
  754.         mov     rax, QWORD PTR [rbp-96]
  755.         jmp     .L55
  756. .L54:
  757.         mov     eax, 0
  758. .L55:
  759.         mov     QWORD PTR [rbp-88], rax
  760. .L53:
  761.         mov     rax, QWORD PTR [rbp-96]
  762.         mov     QWORD PTR [rbp-112], rax
  763.         jmp     .L56
  764. .L51:
  765.         cmp     QWORD PTR [rbp-120], 0
  766.         jne     .L57
  767.         mov     rax, QWORD PTR [rbp-144]
  768.         mov     rax, QWORD PTR [rax]
  769.         mov     QWORD PTR [rbp-104], rax
  770.         mov     rax, QWORD PTR [rbp-112]
  771.         mov     rdx, QWORD PTR [rbp-104]
  772.         mov     QWORD PTR [rax], rdx
  773.         mov     rax, QWORD PTR [rbp-104]
  774.         and     rax, -4
  775.         mov     QWORD PTR [rbp-96], rax
  776.         mov     rcx, QWORD PTR [rbp-136]
  777.         mov     rdx, QWORD PTR [rbp-96]
  778.         mov     rsi, QWORD PTR [rbp-112]
  779.         mov     rax, QWORD PTR [rbp-144]
  780.         mov     rdi, rax
  781.         call    __rb_change_child(rb_node*, rb_node*, rb_node*, rb_root*)
  782.         mov     QWORD PTR [rbp-88], 0
  783.         mov     rax, QWORD PTR [rbp-96]
  784.         mov     QWORD PTR [rbp-112], rax
  785.         jmp     .L56
  786. .L57:
  787.         mov     rax, QWORD PTR [rbp-120]
  788.         mov     QWORD PTR [rbp-80], rax
  789.         mov     rax, QWORD PTR [rbp-120]
  790.         mov     rax, QWORD PTR [rax+16]
  791.         mov     QWORD PTR [rbp-112], rax
  792.         cmp     QWORD PTR [rbp-112], 0
  793.         jne     .L58
  794.         mov     rax, QWORD PTR [rbp-80]
  795.         mov     QWORD PTR [rbp-96], rax
  796.         mov     rax, QWORD PTR [rbp-80]
  797.         mov     rax, QWORD PTR [rax+8]
  798.         mov     QWORD PTR [rbp-72], rax
  799.         mov     rax, QWORD PTR [rbp-128]
  800.         mov     rax, QWORD PTR [rax+8]
  801.         mov     rcx, QWORD PTR [rbp-80]
  802.         mov     rdx, QWORD PTR [rbp-144]
  803.         mov     rsi, rcx
  804.         mov     rdi, rdx
  805.         call    rax
  806.         jmp     .L59
  807. .L58:
  808.         mov     rax, QWORD PTR [rbp-80]
  809.         mov     QWORD PTR [rbp-96], rax
  810.         mov     rax, QWORD PTR [rbp-112]
  811.         mov     QWORD PTR [rbp-80], rax
  812.         mov     rax, QWORD PTR [rbp-112]
  813.         mov     rax, QWORD PTR [rax+16]
  814.         mov     QWORD PTR [rbp-112], rax
  815.         cmp     QWORD PTR [rbp-112], 0
  816.         jne     .L58
  817.         mov     rax, QWORD PTR [rbp-80]
  818.         mov     rax, QWORD PTR [rax+8]
  819.         mov     QWORD PTR [rbp-72], rax
  820.         mov     rax, QWORD PTR [rbp-96]
  821.         mov     rdx, QWORD PTR [rbp-72]
  822.         mov     QWORD PTR [rax+16], rdx
  823.         mov     rax, QWORD PTR [rbp-80]
  824.         mov     rdx, QWORD PTR [rbp-120]
  825.         mov     QWORD PTR [rax+8], rdx
  826.         mov     rdx, QWORD PTR [rbp-80]
  827.         mov     rax, QWORD PTR [rbp-120]
  828.         mov     rsi, rdx
  829.         mov     rdi, rax
  830.         call    rb_set_parent(rb_node*, rb_node*)
  831.         mov     rax, QWORD PTR [rbp-128]
  832.         mov     rax, QWORD PTR [rax+8]
  833.         mov     rcx, QWORD PTR [rbp-80]
  834.         mov     rdx, QWORD PTR [rbp-144]
  835.         mov     rsi, rcx
  836.         mov     rdi, rdx
  837.         call    rax
  838.         mov     rax, QWORD PTR [rbp-128]
  839.         mov     rax, QWORD PTR [rax]
  840.         mov     rcx, QWORD PTR [rbp-80]
  841.         mov     rdx, QWORD PTR [rbp-96]
  842.         mov     rsi, rcx
  843.         mov     rdi, rdx
  844.         call    rax
  845. .L59:
  846.         mov     rax, QWORD PTR [rbp-144]
  847.         mov     rax, QWORD PTR [rax+16]
  848.         mov     QWORD PTR [rbp-112], rax
  849.         mov     rax, QWORD PTR [rbp-80]
  850.         mov     rdx, QWORD PTR [rbp-112]
  851.         mov     QWORD PTR [rax+16], rdx
  852.         mov     rdx, QWORD PTR [rbp-80]
  853.         mov     rax, QWORD PTR [rbp-112]
  854.         mov     rsi, rdx
  855.         mov     rdi, rax
  856.         call    rb_set_parent(rb_node*, rb_node*)
  857.         mov     rax, QWORD PTR [rbp-144]
  858.         mov     rax, QWORD PTR [rax]
  859.         mov     QWORD PTR [rbp-104], rax
  860.         mov     rax, QWORD PTR [rbp-104]
  861.         and     rax, -4
  862.         mov     QWORD PTR [rbp-112], rax
  863.         mov     rcx, QWORD PTR [rbp-136]
  864.         mov     rdx, QWORD PTR [rbp-112]
  865.         mov     rsi, QWORD PTR [rbp-80]
  866.         mov     rax, QWORD PTR [rbp-144]
  867.         mov     rdi, rax
  868.         call    __rb_change_child(rb_node*, rb_node*, rb_node*, rb_root*)
  869.         cmp     QWORD PTR [rbp-72], 0
  870.         je      .L60
  871.         mov     rax, QWORD PTR [rbp-80]
  872.         mov     rdx, QWORD PTR [rbp-104]
  873.         mov     QWORD PTR [rax], rdx
  874.         mov     rcx, QWORD PTR [rbp-96]
  875.         mov     rax, QWORD PTR [rbp-72]
  876.         mov     edx, 1
  877.         mov     rsi, rcx
  878.         mov     rdi, rax
  879.         call    rb_set_parent_color(rb_node*, rb_node*, int)
  880.         mov     QWORD PTR [rbp-88], 0
  881.         jmp     .L61
  882. .L60:
  883.         mov     rax, QWORD PTR [rbp-80]
  884.         mov     rax, QWORD PTR [rax]
  885.         mov     QWORD PTR [rbp-64], rax
  886.         mov     rax, QWORD PTR [rbp-80]
  887.         mov     rdx, QWORD PTR [rbp-104]
  888.         mov     QWORD PTR [rax], rdx
  889.         mov     rax, QWORD PTR [rbp-64]
  890.         and     eax, 1
  891.         test    rax, rax
  892.         je      .L62
  893.         mov     rax, QWORD PTR [rbp-96]
  894.         jmp     .L63
  895. .L62:
  896.         mov     eax, 0
  897. .L63:
  898.         mov     QWORD PTR [rbp-88], rax
  899. .L61:
  900.         mov     rax, QWORD PTR [rbp-80]
  901.         mov     QWORD PTR [rbp-112], rax
  902. .L56:
  903.         mov     rax, QWORD PTR [rbp-128]
  904.         mov     rax, QWORD PTR [rax]
  905.         mov     rdx, QWORD PTR [rbp-112]
  906.         mov     esi, 0
  907.         mov     rdi, rdx
  908.         call    rax
  909.         mov     rax, QWORD PTR [rbp-88]
  910.         mov     QWORD PTR [rbp-152], rax
  911.         cmp     QWORD PTR [rbp-152], 0
  912.         je      .L50
  913.         mov     rax, QWORD PTR [rbp-152]
  914.         mov     QWORD PTR [rbp-56], rax
  915.         mov     rax, QWORD PTR [rbp-176]
  916.         mov     QWORD PTR [rbp-48], rax
  917.         mov     QWORD PTR [rbp-40], OFFSET FLAT:dummy_rotate(rb_node*, rb_node*)
  918.         mov     QWORD PTR [rbp-32], 0
  919. .L85:
  920.         mov     rax, QWORD PTR [rbp-56]
  921.         mov     rax, QWORD PTR [rax+8]
  922.         mov     QWORD PTR [rbp-24], rax
  923.         mov     rax, QWORD PTR [rbp-24]
  924.         cmp     rax, QWORD PTR [rbp-32]
  925.         je      .L66
  926.         mov     rax, QWORD PTR [rbp-24]
  927.         mov     rax, QWORD PTR [rax]
  928.         and     eax, 1
  929.         test    rax, rax
  930.         jne     .L67
  931.         mov     rax, QWORD PTR [rbp-24]
  932.         mov     rax, QWORD PTR [rax+16]
  933.         mov     QWORD PTR [rbp-16], rax
  934.         mov     rax, QWORD PTR [rbp-56]
  935.         mov     rdx, QWORD PTR [rbp-16]
  936.         mov     QWORD PTR [rax+8], rdx
  937.         mov     rax, QWORD PTR [rbp-24]
  938.         mov     rdx, QWORD PTR [rbp-56]
  939.         mov     QWORD PTR [rax+16], rdx
  940.         mov     rcx, QWORD PTR [rbp-56]
  941.         mov     rax, QWORD PTR [rbp-16]
  942.         mov     edx, 1
  943.         mov     rsi, rcx
  944.         mov     rdi, rax
  945.         call    rb_set_parent_color(rb_node*, rb_node*, int)
  946.         mov     rdx, QWORD PTR [rbp-48]
  947.         mov     rsi, QWORD PTR [rbp-24]
  948.         mov     rax, QWORD PTR [rbp-56]
  949.         mov     ecx, 0
  950.         mov     rdi, rax
  951.         call    __rb_rotate_set_parents(rb_node*, rb_node*, rb_root*, int)
  952.         mov     rcx, QWORD PTR [rbp-24]
  953.         mov     rdx, QWORD PTR [rbp-56]
  954.         mov     rax, QWORD PTR [rbp-40]
  955.         mov     rsi, rcx
  956.         mov     rdi, rdx
  957.         call    rax
  958.         mov     rax, QWORD PTR [rbp-16]
  959.         mov     QWORD PTR [rbp-24], rax
  960. .L67:
  961.         mov     rax, QWORD PTR [rbp-24]
  962.         mov     rax, QWORD PTR [rax+8]
  963.         mov     QWORD PTR [rbp-16], rax
  964.         cmp     QWORD PTR [rbp-16], 0
  965.         je      .L68
  966.         mov     rax, QWORD PTR [rbp-16]
  967.         mov     rax, QWORD PTR [rax]
  968.         and     eax, 1
  969.         test    rax, rax
  970.         je      .L69
  971. .L68:
  972.         mov     rax, QWORD PTR [rbp-24]
  973.         mov     rax, QWORD PTR [rax+16]
  974.         mov     QWORD PTR [rbp-8], rax
  975.         cmp     QWORD PTR [rbp-8], 0
  976.         je      .L70
  977.         mov     rax, QWORD PTR [rbp-8]
  978.         mov     rax, QWORD PTR [rax]
  979.         and     eax, 1
  980.         test    rax, rax
  981.         je      .L71
  982. .L70:
  983.         mov     rcx, QWORD PTR [rbp-56]
  984.         mov     rax, QWORD PTR [rbp-24]
  985.         mov     edx, 0
  986.         mov     rsi, rcx
  987.         mov     rdi, rax
  988.         call    rb_set_parent_color(rb_node*, rb_node*, int)
  989.         mov     rax, QWORD PTR [rbp-56]
  990.         mov     rax, QWORD PTR [rax]
  991.         and     eax, 1
  992.         test    rax, rax
  993.         jne     .L72
  994.         mov     rax, QWORD PTR [rbp-56]
  995.         mov     rdi, rax
  996.         call    rb_set_black(rb_node*)
  997.         jmp     .L50
  998. .L72:
  999.         mov     rax, QWORD PTR [rbp-56]
  1000.         mov     QWORD PTR [rbp-32], rax
  1001.         mov     rax, QWORD PTR [rbp-32]
  1002.         mov     rax, QWORD PTR [rax]
  1003.         and     rax, -4
  1004.         mov     QWORD PTR [rbp-56], rax
  1005.         cmp     QWORD PTR [rbp-56], 0
  1006.         jne     .L85
  1007.         jmp     .L50
  1008. .L71:
  1009.         mov     rax, QWORD PTR [rbp-8]
  1010.         mov     rax, QWORD PTR [rax+8]
  1011.         mov     QWORD PTR [rbp-16], rax
  1012.         mov     rax, QWORD PTR [rbp-24]
  1013.         mov     rdx, QWORD PTR [rbp-16]
  1014.         mov     QWORD PTR [rax+16], rdx
  1015.         mov     rax, QWORD PTR [rbp-8]
  1016.         mov     rdx, QWORD PTR [rbp-24]
  1017.         mov     QWORD PTR [rax+8], rdx
  1018.         mov     rax, QWORD PTR [rbp-56]
  1019.         mov     rdx, QWORD PTR [rbp-8]
  1020.         mov     QWORD PTR [rax+8], rdx
  1021.         cmp     QWORD PTR [rbp-16], 0
  1022.         je      .L75
  1023.         mov     rcx, QWORD PTR [rbp-24]
  1024.         mov     rax, QWORD PTR [rbp-16]
  1025.         mov     edx, 1
  1026.         mov     rsi, rcx
  1027.         mov     rdi, rax
  1028.         call    rb_set_parent_color(rb_node*, rb_node*, int)
  1029. .L75:
  1030.         mov     rcx, QWORD PTR [rbp-8]
  1031.         mov     rdx, QWORD PTR [rbp-24]
  1032.         mov     rax, QWORD PTR [rbp-40]
  1033.         mov     rsi, rcx
  1034.         mov     rdi, rdx
  1035.         call    rax
  1036.         mov     rax, QWORD PTR [rbp-24]
  1037.         mov     QWORD PTR [rbp-16], rax
  1038.         mov     rax, QWORD PTR [rbp-8]
  1039.         mov     QWORD PTR [rbp-24], rax
  1040. .L69:
  1041.         mov     rax, QWORD PTR [rbp-24]
  1042.         mov     rax, QWORD PTR [rax+16]
  1043.         mov     QWORD PTR [rbp-8], rax
  1044.         mov     rax, QWORD PTR [rbp-56]
  1045.         mov     rdx, QWORD PTR [rbp-8]
  1046.         mov     QWORD PTR [rax+8], rdx
  1047.         mov     rax, QWORD PTR [rbp-24]
  1048.         mov     rdx, QWORD PTR [rbp-56]
  1049.         mov     QWORD PTR [rax+16], rdx
  1050.         mov     rcx, QWORD PTR [rbp-24]
  1051.         mov     rax, QWORD PTR [rbp-16]
  1052.         mov     edx, 1
  1053.         mov     rsi, rcx
  1054.         mov     rdi, rax
  1055.         call    rb_set_parent_color(rb_node*, rb_node*, int)
  1056.         cmp     QWORD PTR [rbp-8], 0
  1057.         je      .L76
  1058.         mov     rdx, QWORD PTR [rbp-56]
  1059.         mov     rax, QWORD PTR [rbp-8]
  1060.         mov     rsi, rdx
  1061.         mov     rdi, rax
  1062.         call    rb_set_parent(rb_node*, rb_node*)
  1063. .L76:
  1064.         mov     rdx, QWORD PTR [rbp-48]
  1065.         mov     rsi, QWORD PTR [rbp-24]
  1066.         mov     rax, QWORD PTR [rbp-56]
  1067.         mov     ecx, 1
  1068.         mov     rdi, rax
  1069.         call    __rb_rotate_set_parents(rb_node*, rb_node*, rb_root*, int)
  1070.         mov     rcx, QWORD PTR [rbp-24]
  1071.         mov     rdx, QWORD PTR [rbp-56]
  1072.         mov     rax, QWORD PTR [rbp-40]
  1073.         mov     rsi, rcx
  1074.         mov     rdi, rdx
  1075.         call    rax
  1076.         jmp     .L50
  1077. .L66:
  1078.         mov     rax, QWORD PTR [rbp-56]
  1079.         mov     rax, QWORD PTR [rax+16]
  1080.         mov     QWORD PTR [rbp-24], rax
  1081.         mov     rax, QWORD PTR [rbp-24]
  1082.         mov     rax, QWORD PTR [rax]
  1083.         and     eax, 1
  1084.         test    rax, rax
  1085.         jne     .L77
  1086.         mov     rax, QWORD PTR [rbp-24]
  1087.         mov     rax, QWORD PTR [rax+8]
  1088.         mov     QWORD PTR [rbp-16], rax
  1089.         mov     rax, QWORD PTR [rbp-56]
  1090.         mov     rdx, QWORD PTR [rbp-16]
  1091.         mov     QWORD PTR [rax+16], rdx
  1092.         mov     rax, QWORD PTR [rbp-24]
  1093.         mov     rdx, QWORD PTR [rbp-56]
  1094.         mov     QWORD PTR [rax+8], rdx
  1095.         mov     rcx, QWORD PTR [rbp-56]
  1096.         mov     rax, QWORD PTR [rbp-16]
  1097.         mov     edx, 1
  1098.         mov     rsi, rcx
  1099.         mov     rdi, rax
  1100.         call    rb_set_parent_color(rb_node*, rb_node*, int)
  1101.         mov     rdx, QWORD PTR [rbp-48]
  1102.         mov     rsi, QWORD PTR [rbp-24]
  1103.         mov     rax, QWORD PTR [rbp-56]
  1104.         mov     ecx, 0
  1105.         mov     rdi, rax
  1106.         call    __rb_rotate_set_parents(rb_node*, rb_node*, rb_root*, int)
  1107.         mov     rcx, QWORD PTR [rbp-24]
  1108.         mov     rdx, QWORD PTR [rbp-56]
  1109.         mov     rax, QWORD PTR [rbp-40]
  1110.         mov     rsi, rcx
  1111.         mov     rdi, rdx
  1112.         call    rax
  1113.         mov     rax, QWORD PTR [rbp-16]
  1114.         mov     QWORD PTR [rbp-24], rax
  1115. .L77:
  1116.         mov     rax, QWORD PTR [rbp-24]
  1117.         mov     rax, QWORD PTR [rax+16]
  1118.         mov     QWORD PTR [rbp-16], rax
  1119.         cmp     QWORD PTR [rbp-16], 0
  1120.         je      .L78
  1121.         mov     rax, QWORD PTR [rbp-16]
  1122.         mov     rax, QWORD PTR [rax]
  1123.         and     eax, 1
  1124.         test    rax, rax
  1125.         je      .L79
  1126. .L78:
  1127.         mov     rax, QWORD PTR [rbp-24]
  1128.         mov     rax, QWORD PTR [rax+8]
  1129.         mov     QWORD PTR [rbp-8], rax
  1130.         cmp     QWORD PTR [rbp-8], 0
  1131.         je      .L80
  1132.         mov     rax, QWORD PTR [rbp-8]
  1133.         mov     rax, QWORD PTR [rax]
  1134.         and     eax, 1
  1135.         test    rax, rax
  1136.         je      .L81
  1137. .L80:
  1138.         mov     rcx, QWORD PTR [rbp-56]
  1139.         mov     rax, QWORD PTR [rbp-24]
  1140.         mov     edx, 0
  1141.         mov     rsi, rcx
  1142.         mov     rdi, rax
  1143.         call    rb_set_parent_color(rb_node*, rb_node*, int)
  1144.         mov     rax, QWORD PTR [rbp-56]
  1145.         mov     rax, QWORD PTR [rax]
  1146.         and     eax, 1
  1147.         test    rax, rax
  1148.         jne     .L82
  1149.         mov     rax, QWORD PTR [rbp-56]
  1150.         mov     rdi, rax
  1151.         call    rb_set_black(rb_node*)
  1152.         jmp     .L50
  1153. .L82:
  1154.         mov     rax, QWORD PTR [rbp-56]
  1155.         mov     QWORD PTR [rbp-32], rax
  1156.         mov     rax, QWORD PTR [rbp-32]
  1157.         mov     rax, QWORD PTR [rax]
  1158.         and     rax, -4
  1159.         mov     QWORD PTR [rbp-56], rax
  1160.         cmp     QWORD PTR [rbp-56], 0
  1161.         jne     .L85
  1162.         jmp     .L50
  1163. .L81:
  1164.         mov     rax, QWORD PTR [rbp-8]
  1165.         mov     rax, QWORD PTR [rax+16]
  1166.         mov     QWORD PTR [rbp-16], rax
  1167.         mov     rax, QWORD PTR [rbp-24]
  1168.         mov     rdx, QWORD PTR [rbp-16]
  1169.         mov     QWORD PTR [rax+8], rdx
  1170.         mov     rax, QWORD PTR [rbp-8]
  1171.         mov     rdx, QWORD PTR [rbp-24]
  1172.         mov     QWORD PTR [rax+16], rdx
  1173.         mov     rax, QWORD PTR [rbp-56]
  1174.         mov     rdx, QWORD PTR [rbp-8]
  1175.         mov     QWORD PTR [rax+16], rdx
  1176.         cmp     QWORD PTR [rbp-16], 0
  1177.         je      .L83
  1178.         mov     rcx, QWORD PTR [rbp-24]
  1179.         mov     rax, QWORD PTR [rbp-16]
  1180.         mov     edx, 1
  1181.         mov     rsi, rcx
  1182.         mov     rdi, rax
  1183.         call    rb_set_parent_color(rb_node*, rb_node*, int)
  1184. .L83:
  1185.         mov     rcx, QWORD PTR [rbp-8]
  1186.         mov     rdx, QWORD PTR [rbp-24]
  1187.         mov     rax, QWORD PTR [rbp-40]
  1188.         mov     rsi, rcx
  1189.         mov     rdi, rdx
  1190.         call    rax
  1191.         mov     rax, QWORD PTR [rbp-24]
  1192.         mov     QWORD PTR [rbp-16], rax
  1193.         mov     rax, QWORD PTR [rbp-8]
  1194.         mov     QWORD PTR [rbp-24], rax
  1195. .L79:
  1196.         mov     rax, QWORD PTR [rbp-24]
  1197.         mov     rax, QWORD PTR [rax+8]
  1198.         mov     QWORD PTR [rbp-8], rax
  1199.         mov     rax, QWORD PTR [rbp-56]
  1200.         mov     rdx, QWORD PTR [rbp-8]
  1201.         mov     QWORD PTR [rax+16], rdx
  1202.         mov     rax, QWORD PTR [rbp-24]
  1203.         mov     rdx, QWORD PTR [rbp-56]
  1204.         mov     QWORD PTR [rax+8], rdx
  1205.         mov     rcx, QWORD PTR [rbp-24]
  1206.         mov     rax, QWORD PTR [rbp-16]
  1207.         mov     edx, 1
  1208.         mov     rsi, rcx
  1209.         mov     rdi, rax
  1210.         call    rb_set_parent_color(rb_node*, rb_node*, int)
  1211.         cmp     QWORD PTR [rbp-8], 0
  1212.         je      .L84
  1213.         mov     rdx, QWORD PTR [rbp-56]
  1214.         mov     rax, QWORD PTR [rbp-8]
  1215.         mov     rsi, rdx
  1216.         mov     rdi, rax
  1217.         call    rb_set_parent(rb_node*, rb_node*)
  1218. .L84:
  1219.         mov     rdx, QWORD PTR [rbp-48]
  1220.         mov     rsi, QWORD PTR [rbp-24]
  1221.         mov     rax, QWORD PTR [rbp-56]
  1222.         mov     ecx, 1
  1223.         mov     rdi, rax
  1224.         call    __rb_rotate_set_parents(rb_node*, rb_node*, rb_root*, int)
  1225.         mov     rcx, QWORD PTR [rbp-24]
  1226.         mov     rdx, QWORD PTR [rbp-56]
  1227.         mov     rax, QWORD PTR [rbp-40]
  1228.         mov     rsi, rcx
  1229.         mov     rdi, rdx
  1230.         call    rax
  1231. .L50:
  1232.         leave
  1233.         ret
  1234. __rb_insert_augmented(rb_node*, rb_root*, void (*)(rb_node*, rb_node*)):
  1235.         push    rbp
  1236.         mov     rbp, rsp
  1237.         sub     rsp, 80
  1238.         mov     QWORD PTR [rbp-56], rdi
  1239.         mov     QWORD PTR [rbp-64], rsi
  1240.         mov     QWORD PTR [rbp-72], rdx
  1241.         mov     rax, QWORD PTR [rbp-56]
  1242.         mov     QWORD PTR [rbp-48], rax
  1243.         mov     rax, QWORD PTR [rbp-64]
  1244.         mov     QWORD PTR [rbp-40], rax
  1245.         mov     rax, QWORD PTR [rbp-72]
  1246.         mov     QWORD PTR [rbp-32], rax
  1247.         mov     rax, QWORD PTR [rbp-48]
  1248.         mov     rdi, rax
  1249.         call    rb_red_parent(rb_node*)
  1250.         mov     QWORD PTR [rbp-24], rax
  1251. .L99:
  1252.         cmp     QWORD PTR [rbp-24], 0
  1253.         jne     .L87
  1254.         mov     rax, QWORD PTR [rbp-48]
  1255.         mov     edx, 1
  1256.         mov     esi, 0
  1257.         mov     rdi, rax
  1258.         call    rb_set_parent_color(rb_node*, rb_node*, int)
  1259.         jmp     .L86
  1260. .L87:
  1261.         mov     rax, QWORD PTR [rbp-24]
  1262.         mov     rax, QWORD PTR [rax]
  1263.         and     eax, 1
  1264.         test    rax, rax
  1265.         jne     .L86
  1266.         mov     rax, QWORD PTR [rbp-24]
  1267.         mov     rdi, rax
  1268.         call    rb_red_parent(rb_node*)
  1269.         mov     QWORD PTR [rbp-16], rax
  1270.         mov     rax, QWORD PTR [rbp-16]
  1271.         mov     rax, QWORD PTR [rax+8]
  1272.         mov     QWORD PTR [rbp-8], rax
  1273.         mov     rax, QWORD PTR [rbp-24]
  1274.         cmp     rax, QWORD PTR [rbp-8]
  1275.         je      .L89
  1276.         cmp     QWORD PTR [rbp-8], 0
  1277.         je      .L90
  1278.         mov     rax, QWORD PTR [rbp-8]
  1279.         mov     rax, QWORD PTR [rax]
  1280.         and     eax, 1
  1281.         test    rax, rax
  1282.         jne     .L90
  1283.         mov     rcx, QWORD PTR [rbp-16]
  1284.         mov     rax, QWORD PTR [rbp-8]
  1285.         mov     edx, 1
  1286.         mov     rsi, rcx
  1287.         mov     rdi, rax
  1288.         call    rb_set_parent_color(rb_node*, rb_node*, int)
  1289.         mov     rcx, QWORD PTR [rbp-16]
  1290.         mov     rax, QWORD PTR [rbp-24]
  1291.         mov     edx, 1
  1292.         mov     rsi, rcx
  1293.         mov     rdi, rax
  1294.         call    rb_set_parent_color(rb_node*, rb_node*, int)
  1295.         mov     rax, QWORD PTR [rbp-16]
  1296.         mov     QWORD PTR [rbp-48], rax
  1297.         mov     rax, QWORD PTR [rbp-48]
  1298.         mov     rax, QWORD PTR [rax]
  1299.         and     rax, -4
  1300.         mov     QWORD PTR [rbp-24], rax
  1301.         mov     rcx, QWORD PTR [rbp-24]
  1302.         mov     rax, QWORD PTR [rbp-48]
  1303.         mov     edx, 0
  1304.         mov     rsi, rcx
  1305.         mov     rdi, rax
  1306.         call    rb_set_parent_color(rb_node*, rb_node*, int)
  1307.         jmp     .L99
  1308. .L90:
  1309.         mov     rax, QWORD PTR [rbp-24]
  1310.         mov     rax, QWORD PTR [rax+8]
  1311.         mov     QWORD PTR [rbp-8], rax
  1312.         mov     rax, QWORD PTR [rbp-48]
  1313.         cmp     rax, QWORD PTR [rbp-8]
  1314.         jne     .L92
  1315.         mov     rax, QWORD PTR [rbp-48]
  1316.         mov     rax, QWORD PTR [rax+16]
  1317.         mov     QWORD PTR [rbp-8], rax
  1318.         mov     rax, QWORD PTR [rbp-24]
  1319.         mov     rdx, QWORD PTR [rbp-8]
  1320.         mov     QWORD PTR [rax+8], rdx
  1321.         mov     rax, QWORD PTR [rbp-48]
  1322.         mov     rdx, QWORD PTR [rbp-24]
  1323.         mov     QWORD PTR [rax+16], rdx
  1324.         cmp     QWORD PTR [rbp-8], 0
  1325.         je      .L93
  1326.         mov     rcx, QWORD PTR [rbp-24]
  1327.         mov     rax, QWORD PTR [rbp-8]
  1328.         mov     edx, 1
  1329.         mov     rsi, rcx
  1330.         mov     rdi, rax
  1331.         call    rb_set_parent_color(rb_node*, rb_node*, int)
  1332. .L93:
  1333.         mov     rcx, QWORD PTR [rbp-48]
  1334.         mov     rax, QWORD PTR [rbp-24]
  1335.         mov     edx, 0
  1336.         mov     rsi, rcx
  1337.         mov     rdi, rax
  1338.         call    rb_set_parent_color(rb_node*, rb_node*, int)
  1339.         mov     rcx, QWORD PTR [rbp-48]
  1340.         mov     rdx, QWORD PTR [rbp-24]
  1341.         mov     rax, QWORD PTR [rbp-32]
  1342.         mov     rsi, rcx
  1343.         mov     rdi, rdx
  1344.         call    rax
  1345.         mov     rax, QWORD PTR [rbp-48]
  1346.         mov     QWORD PTR [rbp-24], rax
  1347.         mov     rax, QWORD PTR [rbp-48]
  1348.         mov     rax, QWORD PTR [rax+8]
  1349.         mov     QWORD PTR [rbp-8], rax
  1350. .L92:
  1351.         mov     rax, QWORD PTR [rbp-16]
  1352.         mov     rdx, QWORD PTR [rbp-8]
  1353.         mov     QWORD PTR [rax+16], rdx
  1354.         mov     rax, QWORD PTR [rbp-24]
  1355.         mov     rdx, QWORD PTR [rbp-16]
  1356.         mov     QWORD PTR [rax+8], rdx
  1357.         cmp     QWORD PTR [rbp-8], 0
  1358.         je      .L94
  1359.         mov     rcx, QWORD PTR [rbp-16]
  1360.         mov     rax, QWORD PTR [rbp-8]
  1361.         mov     edx, 1
  1362.         mov     rsi, rcx
  1363.         mov     rdi, rax
  1364.         call    rb_set_parent_color(rb_node*, rb_node*, int)
  1365. .L94:
  1366.         mov     rdx, QWORD PTR [rbp-40]
  1367.         mov     rsi, QWORD PTR [rbp-24]
  1368.         mov     rax, QWORD PTR [rbp-16]
  1369.         mov     ecx, 0
  1370.         mov     rdi, rax
  1371.         call    __rb_rotate_set_parents(rb_node*, rb_node*, rb_root*, int)
  1372.         mov     rcx, QWORD PTR [rbp-24]
  1373.         mov     rdx, QWORD PTR [rbp-16]
  1374.         mov     rax, QWORD PTR [rbp-32]
  1375.         mov     rsi, rcx
  1376.         mov     rdi, rdx
  1377.         call    rax
  1378.         jmp     .L86
  1379. .L89:
  1380.         mov     rax, QWORD PTR [rbp-16]
  1381.         mov     rax, QWORD PTR [rax+16]
  1382.         mov     QWORD PTR [rbp-8], rax
  1383.         cmp     QWORD PTR [rbp-8], 0
  1384.         je      .L95
  1385.         mov     rax, QWORD PTR [rbp-8]
  1386.         mov     rax, QWORD PTR [rax]
  1387.         and     eax, 1
  1388.         test    rax, rax
  1389.         jne     .L95
  1390.         mov     rcx, QWORD PTR [rbp-16]
  1391.         mov     rax, QWORD PTR [rbp-8]
  1392.         mov     edx, 1
  1393.         mov     rsi, rcx
  1394.         mov     rdi, rax
  1395.         call    rb_set_parent_color(rb_node*, rb_node*, int)
  1396.         mov     rcx, QWORD PTR [rbp-16]
  1397.         mov     rax, QWORD PTR [rbp-24]
  1398.         mov     edx, 1
  1399.         mov     rsi, rcx
  1400.         mov     rdi, rax
  1401.         call    rb_set_parent_color(rb_node*, rb_node*, int)
  1402.         mov     rax, QWORD PTR [rbp-16]
  1403.         mov     QWORD PTR [rbp-48], rax
  1404.         mov     rax, QWORD PTR [rbp-48]
  1405.         mov     rax, QWORD PTR [rax]
  1406.         and     rax, -4
  1407.         mov     QWORD PTR [rbp-24], rax
  1408.         mov     rcx, QWORD PTR [rbp-24]
  1409.         mov     rax, QWORD PTR [rbp-48]
  1410.         mov     edx, 0
  1411.         mov     rsi, rcx
  1412.         mov     rdi, rax
  1413.         call    rb_set_parent_color(rb_node*, rb_node*, int)
  1414.         jmp     .L99
  1415. .L95:
  1416.         mov     rax, QWORD PTR [rbp-24]
  1417.         mov     rax, QWORD PTR [rax+16]
  1418.         mov     QWORD PTR [rbp-8], rax
  1419.         mov     rax, QWORD PTR [rbp-48]
  1420.         cmp     rax, QWORD PTR [rbp-8]
  1421.         jne     .L96
  1422.         mov     rax, QWORD PTR [rbp-48]
  1423.         mov     rax, QWORD PTR [rax+8]
  1424.         mov     QWORD PTR [rbp-8], rax
  1425.         mov     rax, QWORD PTR [rbp-24]
  1426.         mov     rdx, QWORD PTR [rbp-8]
  1427.         mov     QWORD PTR [rax+16], rdx
  1428.         mov     rax, QWORD PTR [rbp-48]
  1429.         mov     rdx, QWORD PTR [rbp-24]
  1430.         mov     QWORD PTR [rax+8], rdx
  1431.         cmp     QWORD PTR [rbp-8], 0
  1432.         je      .L97
  1433.         mov     rcx, QWORD PTR [rbp-24]
  1434.         mov     rax, QWORD PTR [rbp-8]
  1435.         mov     edx, 1
  1436.         mov     rsi, rcx
  1437.         mov     rdi, rax
  1438.         call    rb_set_parent_color(rb_node*, rb_node*, int)
  1439. .L97:
  1440.         mov     rcx, QWORD PTR [rbp-48]
  1441.         mov     rax, QWORD PTR [rbp-24]
  1442.         mov     edx, 0
  1443.         mov     rsi, rcx
  1444.         mov     rdi, rax
  1445.         call    rb_set_parent_color(rb_node*, rb_node*, int)
  1446.         mov     rcx, QWORD PTR [rbp-48]
  1447.         mov     rdx, QWORD PTR [rbp-24]
  1448.         mov     rax, QWORD PTR [rbp-32]
  1449.         mov     rsi, rcx
  1450.         mov     rdi, rdx
  1451.         call    rax
  1452.         mov     rax, QWORD PTR [rbp-48]
  1453.         mov     QWORD PTR [rbp-24], rax
  1454.         mov     rax, QWORD PTR [rbp-48]
  1455.         mov     rax, QWORD PTR [rax+16]
  1456.         mov     QWORD PTR [rbp-8], rax
  1457. .L96:
  1458.         mov     rax, QWORD PTR [rbp-16]
  1459.         mov     rdx, QWORD PTR [rbp-8]
  1460.         mov     QWORD PTR [rax+8], rdx
  1461.         mov     rax, QWORD PTR [rbp-24]
  1462.         mov     rdx, QWORD PTR [rbp-16]
  1463.         mov     QWORD PTR [rax+16], rdx
  1464.         cmp     QWORD PTR [rbp-8], 0
  1465.         je      .L98
  1466.         mov     rcx, QWORD PTR [rbp-16]
  1467.         mov     rax, QWORD PTR [rbp-8]
  1468.         mov     edx, 1
  1469.         mov     rsi, rcx
  1470.         mov     rdi, rax
  1471.         call    rb_set_parent_color(rb_node*, rb_node*, int)
  1472. .L98:
  1473.         mov     rdx, QWORD PTR [rbp-40]
  1474.         mov     rsi, QWORD PTR [rbp-24]
  1475.         mov     rax, QWORD PTR [rbp-16]
  1476.         mov     ecx, 0
  1477.         mov     rdi, rax
  1478.         call    __rb_rotate_set_parents(rb_node*, rb_node*, rb_root*, int)
  1479.         mov     rcx, QWORD PTR [rbp-24]
  1480.         mov     rdx, QWORD PTR [rbp-16]
  1481.         mov     rax, QWORD PTR [rbp-32]
  1482.         mov     rsi, rcx
  1483.         mov     rdi, rdx
  1484.         call    rax
  1485. .L86:
  1486.         leave
  1487.         ret
  1488. rb_first(rb_root const*):
  1489.         push    rbp
  1490.         mov     rbp, rsp
  1491.         mov     QWORD PTR [rbp-24], rdi
  1492.         mov     rax, QWORD PTR [rbp-24]
  1493.         mov     rax, QWORD PTR [rax]
  1494.         mov     QWORD PTR [rbp-8], rax
  1495.         cmp     QWORD PTR [rbp-8], 0
  1496.         jne     .L101
  1497.         mov     eax, 0
  1498.         jmp     .L102
  1499. .L101:
  1500.         jmp     .L103
  1501. .L104:
  1502.         mov     rax, QWORD PTR [rbp-8]
  1503.         mov     rax, QWORD PTR [rax+16]
  1504.         mov     QWORD PTR [rbp-8], rax
  1505. .L103:
  1506.         mov     rax, QWORD PTR [rbp-8]
  1507.         mov     rax, QWORD PTR [rax+16]
  1508.         test    rax, rax
  1509.         jne     .L104
  1510.         mov     rax, QWORD PTR [rbp-8]
  1511. .L102:
  1512.         pop     rbp
  1513.         ret
  1514. rb_last(rb_root const*):
  1515.         push    rbp
  1516.         mov     rbp, rsp
  1517.         mov     QWORD PTR [rbp-24], rdi
  1518.         mov     rax, QWORD PTR [rbp-24]
  1519.         mov     rax, QWORD PTR [rax]
  1520.         mov     QWORD PTR [rbp-8], rax
  1521.         cmp     QWORD PTR [rbp-8], 0
  1522.         jne     .L106
  1523.         mov     eax, 0
  1524.         jmp     .L107
  1525. .L106:
  1526.         jmp     .L108
  1527. .L109:
  1528.         mov     rax, QWORD PTR [rbp-8]
  1529.         mov     rax, QWORD PTR [rax+8]
  1530.         mov     QWORD PTR [rbp-8], rax
  1531. .L108:
  1532.         mov     rax, QWORD PTR [rbp-8]
  1533.         mov     rax, QWORD PTR [rax+8]
  1534.         test    rax, rax
  1535.         jne     .L109
  1536.         mov     rax, QWORD PTR [rbp-8]
  1537. .L107:
  1538.         pop     rbp
  1539.         ret
  1540. rb_next(rb_node const*):
  1541.         push    rbp
  1542.         mov     rbp, rsp
  1543.         mov     QWORD PTR [rbp-24], rdi
  1544.         mov     rax, QWORD PTR [rbp-24]
  1545.         mov     rdx, QWORD PTR [rax]
  1546.         mov     rax, QWORD PTR [rbp-24]
  1547.         cmp     rdx, rax
  1548.         jne     .L111
  1549.         mov     eax, 0
  1550.         jmp     .L112
  1551. .L111:
  1552.         mov     rax, QWORD PTR [rbp-24]
  1553.         mov     rax, QWORD PTR [rax+8]
  1554.         test    rax, rax
  1555.         je      .L113
  1556.         mov     rax, QWORD PTR [rbp-24]
  1557.         mov     rax, QWORD PTR [rax+8]
  1558.         mov     QWORD PTR [rbp-24], rax
  1559.         jmp     .L114
  1560. .L115:
  1561.         mov     rax, QWORD PTR [rbp-24]
  1562.         mov     rax, QWORD PTR [rax+16]
  1563.         mov     QWORD PTR [rbp-24], rax
  1564. .L114:
  1565.         mov     rax, QWORD PTR [rbp-24]
  1566.         mov     rax, QWORD PTR [rax+16]
  1567.         test    rax, rax
  1568.         jne     .L115
  1569.         mov     rax, QWORD PTR [rbp-24]
  1570.         jmp     .L112
  1571. .L113:
  1572.         jmp     .L116
  1573. .L119:
  1574.         mov     rax, QWORD PTR [rbp-8]
  1575.         mov     QWORD PTR [rbp-24], rax
  1576. .L116:
  1577.         mov     rax, QWORD PTR [rbp-24]
  1578.         mov     rax, QWORD PTR [rax]
  1579.         and     rax, -4
  1580.         mov     QWORD PTR [rbp-8], rax
  1581.         cmp     QWORD PTR [rbp-8], 0
  1582.         je      .L117
  1583.         mov     rax, QWORD PTR [rbp-8]
  1584.         mov     rax, QWORD PTR [rax+8]
  1585.         cmp     rax, QWORD PTR [rbp-24]
  1586.         jne     .L117
  1587.         mov     eax, 1
  1588.         jmp     .L118
  1589. .L117:
  1590.         mov     eax, 0
  1591. .L118:
  1592.         test    al, al
  1593.         jne     .L119
  1594.         mov     rax, QWORD PTR [rbp-8]
  1595. .L112:
  1596.         pop     rbp
  1597.         ret
  1598. rb_prev(rb_node const*):
  1599.         push    rbp
  1600.         mov     rbp, rsp
  1601.         mov     QWORD PTR [rbp-24], rdi
  1602.         mov     rax, QWORD PTR [rbp-24]
  1603.         mov     rdx, QWORD PTR [rax]
  1604.         mov     rax, QWORD PTR [rbp-24]
  1605.         cmp     rdx, rax
  1606.         jne     .L121
  1607.         mov     eax, 0
  1608.         jmp     .L122
  1609. .L121:
  1610.         mov     rax, QWORD PTR [rbp-24]
  1611.         mov     rax, QWORD PTR [rax+16]
  1612.         test    rax, rax
  1613.         je      .L123
  1614.         mov     rax, QWORD PTR [rbp-24]
  1615.         mov     rax, QWORD PTR [rax+16]
  1616.         mov     QWORD PTR [rbp-24], rax
  1617.         jmp     .L124
  1618. .L125:
  1619.         mov     rax, QWORD PTR [rbp-24]
  1620.         mov     rax, QWORD PTR [rax+8]
  1621.         mov     QWORD PTR [rbp-24], rax
  1622. .L124:
  1623.         mov     rax, QWORD PTR [rbp-24]
  1624.         mov     rax, QWORD PTR [rax+8]
  1625.         test    rax, rax
  1626.         jne     .L125
  1627.         mov     rax, QWORD PTR [rbp-24]
  1628.         jmp     .L122
  1629. .L123:
  1630.         jmp     .L126
  1631. .L129:
  1632.         mov     rax, QWORD PTR [rbp-8]
  1633.         mov     QWORD PTR [rbp-24], rax
  1634. .L126:
  1635.         mov     rax, QWORD PTR [rbp-24]
  1636.         mov     rax, QWORD PTR [rax]
  1637.         and     rax, -4
  1638.         mov     QWORD PTR [rbp-8], rax
  1639.         cmp     QWORD PTR [rbp-8], 0
  1640.         je      .L127
  1641.         mov     rax, QWORD PTR [rbp-8]
  1642.         mov     rax, QWORD PTR [rax+16]
  1643.         cmp     rax, QWORD PTR [rbp-24]
  1644.         jne     .L127
  1645.         mov     eax, 1
  1646.         jmp     .L128
  1647. .L127:
  1648.         mov     eax, 0
  1649. .L128:
  1650.         test    al, al
  1651.         jne     .L129
  1652.         mov     rax, QWORD PTR [rbp-8]
  1653. .L122:
  1654.         pop     rbp
  1655.         ret
  1656. rb_replace_node(rb_node*, rb_node*, rb_root*):
  1657.         push    rbp
  1658.         mov     rbp, rsp
  1659.         sub     rsp, 40
  1660.         mov     QWORD PTR [rbp-24], rdi
  1661.         mov     QWORD PTR [rbp-32], rsi
  1662.         mov     QWORD PTR [rbp-40], rdx
  1663.         mov     rax, QWORD PTR [rbp-24]
  1664.         mov     rax, QWORD PTR [rax]
  1665.         and     rax, -4
  1666.         mov     QWORD PTR [rbp-8], rax
  1667.         mov     rcx, QWORD PTR [rbp-40]
  1668.         mov     rdx, QWORD PTR [rbp-8]
  1669.         mov     rsi, QWORD PTR [rbp-32]
  1670.         mov     rax, QWORD PTR [rbp-24]
  1671.         mov     rdi, rax
  1672.         call    __rb_change_child(rb_node*, rb_node*, rb_node*, rb_root*)
  1673.         mov     rax, QWORD PTR [rbp-24]
  1674.         mov     rax, QWORD PTR [rax+16]
  1675.         test    rax, rax
  1676.         je      .L131
  1677.         mov     rax, QWORD PTR [rbp-24]
  1678.         mov     rax, QWORD PTR [rax+16]
  1679.         mov     rdx, QWORD PTR [rbp-32]
  1680.         mov     rsi, rdx
  1681.         mov     rdi, rax
  1682.         call    rb_set_parent(rb_node*, rb_node*)
  1683. .L131:
  1684.         mov     rax, QWORD PTR [rbp-24]
  1685.         mov     rax, QWORD PTR [rax+8]
  1686.         test    rax, rax
  1687.         je      .L132
  1688.         mov     rax, QWORD PTR [rbp-24]
  1689.         mov     rax, QWORD PTR [rax+8]
  1690.         mov     rdx, QWORD PTR [rbp-32]
  1691.         mov     rsi, rdx
  1692.         mov     rdi, rax
  1693.         call    rb_set_parent(rb_node*, rb_node*)
  1694. .L132:
  1695.         mov     rax, QWORD PTR [rbp-32]
  1696.         mov     rdx, QWORD PTR [rbp-24]
  1697.         mov     rcx, QWORD PTR [rdx]
  1698.         mov     QWORD PTR [rax], rcx
  1699.         mov     rcx, QWORD PTR [rdx+8]
  1700.         mov     QWORD PTR [rax+8], rcx
  1701.         mov     rdx, QWORD PTR [rdx+16]
  1702.         mov     QWORD PTR [rax+16], rdx
  1703.         leave
  1704.         ret
  1705. rb_left_deepest_node(rb_node const*):
  1706.         push    rbp
  1707.         mov     rbp, rsp
  1708.         mov     QWORD PTR [rbp-8], rdi
  1709. .L138:
  1710.         mov     rax, QWORD PTR [rbp-8]
  1711.         mov     rax, QWORD PTR [rax+16]
  1712.         test    rax, rax
  1713.         je      .L134
  1714.         mov     rax, QWORD PTR [rbp-8]
  1715.         mov     rax, QWORD PTR [rax+16]
  1716.         mov     QWORD PTR [rbp-8], rax
  1717.         jmp     .L135
  1718. .L134:
  1719.         mov     rax, QWORD PTR [rbp-8]
  1720.         mov     rax, QWORD PTR [rax+8]
  1721.         test    rax, rax
  1722.         je      .L136
  1723.         mov     rax, QWORD PTR [rbp-8]
  1724.         mov     rax, QWORD PTR [rax+8]
  1725.         mov     QWORD PTR [rbp-8], rax
  1726.         jmp     .L135
  1727. .L136:
  1728.         mov     rax, QWORD PTR [rbp-8]
  1729.         jmp     .L139
  1730. .L135:
  1731.         jmp     .L138
  1732. .L139:
  1733.         pop     rbp
  1734.         ret
  1735. rb_next_postorder(rb_node const*):
  1736.         push    rbp
  1737.         mov     rbp, rsp
  1738.         sub     rsp, 24
  1739.         mov     QWORD PTR [rbp-24], rdi
  1740.         cmp     QWORD PTR [rbp-24], 0
  1741.         jne     .L141
  1742.         mov     eax, 0
  1743.         jmp     .L142
  1744. .L141:
  1745.         mov     rax, QWORD PTR [rbp-24]
  1746.         mov     rax, QWORD PTR [rax]
  1747.         and     rax, -4
  1748.         mov     QWORD PTR [rbp-8], rax
  1749.         cmp     QWORD PTR [rbp-8], 0
  1750.         je      .L143
  1751.         mov     rax, QWORD PTR [rbp-8]
  1752.         mov     rax, QWORD PTR [rax+16]
  1753.         cmp     rax, QWORD PTR [rbp-24]
  1754.         jne     .L143
  1755.         mov     rax, QWORD PTR [rbp-8]
  1756.         mov     rax, QWORD PTR [rax+8]
  1757.         test    rax, rax
  1758.         je      .L143
  1759.         mov     rax, QWORD PTR [rbp-8]
  1760.         mov     rax, QWORD PTR [rax+8]
  1761.         mov     rdi, rax
  1762.         call    rb_left_deepest_node(rb_node const*)
  1763.         jmp     .L142
  1764. .L143:
  1765.         mov     rax, QWORD PTR [rbp-8]
  1766. .L142:
  1767.         leave
  1768.         ret
  1769. rb_first_postorder(rb_root const*):
  1770.         push    rbp
  1771.         mov     rbp, rsp
  1772.         sub     rsp, 8
  1773.         mov     QWORD PTR [rbp-8], rdi
  1774.         mov     rax, QWORD PTR [rbp-8]
  1775.         mov     rax, QWORD PTR [rax]
  1776.         test    rax, rax
  1777.         jne     .L145
  1778.         mov     eax, 0
  1779.         jmp     .L146
  1780. .L145:
  1781.         mov     rax, QWORD PTR [rbp-8]
  1782.         mov     rax, QWORD PTR [rax]
  1783.         mov     rdi, rax
  1784.         call    rb_left_deepest_node(rb_node const*)
  1785. .L146:
  1786.         leave
  1787.         ret
  1788. dummy_callbacks:
  1789.         .quad   dummy_propagate(rb_node*, rb_node*)
  1790.         .quad   dummy_copy(rb_node*, rb_node*)
  1791.         .quad   dummy_rotate(rb_node*, rb_node*)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement