Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- rb_set_parent(rb_node*, rb_node*):
- push rbp
- mov rbp, rsp
- mov QWORD PTR [rbp-8], rdi
- mov QWORD PTR [rbp-16], rsi
- mov rax, QWORD PTR [rbp-8]
- mov rax, QWORD PTR [rax]
- and eax, 1
- mov rdx, rax
- mov rax, QWORD PTR [rbp-16]
- or rdx, rax
- mov rax, QWORD PTR [rbp-8]
- mov QWORD PTR [rax], rdx
- pop rbp
- ret
- rb_set_parent_color(rb_node*, rb_node*, int):
- push rbp
- mov rbp, rsp
- mov QWORD PTR [rbp-8], rdi
- mov QWORD PTR [rbp-16], rsi
- mov DWORD PTR [rbp-20], edx
- mov eax, DWORD PTR [rbp-20]
- movsx rdx, eax
- mov rax, QWORD PTR [rbp-16]
- or rdx, rax
- mov rax, QWORD PTR [rbp-8]
- mov QWORD PTR [rax], rdx
- pop rbp
- ret
- __rb_change_child(rb_node*, rb_node*, rb_node*, rb_root*):
- push rbp
- mov rbp, rsp
- mov QWORD PTR [rbp-8], rdi
- mov QWORD PTR [rbp-16], rsi
- mov QWORD PTR [rbp-24], rdx
- mov QWORD PTR [rbp-32], rcx
- cmp QWORD PTR [rbp-24], 0
- je .L4
- mov rax, QWORD PTR [rbp-24]
- mov rax, QWORD PTR [rax+16]
- cmp rax, QWORD PTR [rbp-8]
- jne .L5
- mov rax, QWORD PTR [rbp-24]
- mov rdx, QWORD PTR [rbp-16]
- mov QWORD PTR [rax+16], rdx
- jmp .L3
- .L5:
- mov rax, QWORD PTR [rbp-24]
- mov rdx, QWORD PTR [rbp-16]
- mov QWORD PTR [rax+8], rdx
- jmp .L3
- .L4:
- mov rax, QWORD PTR [rbp-32]
- mov rdx, QWORD PTR [rbp-16]
- mov QWORD PTR [rax], rdx
- .L3:
- pop rbp
- ret
- rb_set_black(rb_node*):
- push rbp
- mov rbp, rsp
- mov QWORD PTR [rbp-8], rdi
- mov rax, QWORD PTR [rbp-8]
- mov rax, QWORD PTR [rax]
- or rax, 1
- mov rdx, rax
- mov rax, QWORD PTR [rbp-8]
- mov QWORD PTR [rax], rdx
- pop rbp
- ret
- rb_red_parent(rb_node*):
- push rbp
- mov rbp, rsp
- mov QWORD PTR [rbp-8], rdi
- mov rax, QWORD PTR [rbp-8]
- mov rax, QWORD PTR [rax]
- pop rbp
- ret
- __rb_rotate_set_parents(rb_node*, rb_node*, rb_root*, int):
- push rbp
- mov rbp, rsp
- sub rsp, 48
- mov QWORD PTR [rbp-24], rdi
- mov QWORD PTR [rbp-32], rsi
- mov QWORD PTR [rbp-40], rdx
- mov DWORD PTR [rbp-44], ecx
- mov rax, QWORD PTR [rbp-24]
- mov rax, QWORD PTR [rax]
- and rax, -4
- mov QWORD PTR [rbp-8], rax
- mov rax, QWORD PTR [rbp-24]
- mov rdx, QWORD PTR [rax]
- mov rax, QWORD PTR [rbp-32]
- mov QWORD PTR [rax], rdx
- mov edx, DWORD PTR [rbp-44]
- mov rcx, QWORD PTR [rbp-32]
- mov rax, QWORD PTR [rbp-24]
- mov rsi, rcx
- mov rdi, rax
- call rb_set_parent_color(rb_node*, rb_node*, int)
- mov rcx, QWORD PTR [rbp-40]
- mov rdx, QWORD PTR [rbp-8]
- mov rsi, QWORD PTR [rbp-32]
- mov rax, QWORD PTR [rbp-24]
- mov rdi, rax
- call __rb_change_child(rb_node*, rb_node*, rb_node*, rb_root*)
- leave
- ret
- __rb_erase_color(rb_node*, rb_root*, void (*)(rb_node*, rb_node*)):
- push rbp
- mov rbp, rsp
- sub rsp, 96
- mov QWORD PTR [rbp-72], rdi
- mov QWORD PTR [rbp-80], rsi
- mov QWORD PTR [rbp-88], rdx
- mov rax, QWORD PTR [rbp-72]
- mov QWORD PTR [rbp-56], rax
- mov rax, QWORD PTR [rbp-80]
- mov QWORD PTR [rbp-48], rax
- mov rax, QWORD PTR [rbp-88]
- mov QWORD PTR [rbp-40], rax
- mov QWORD PTR [rbp-32], 0
- .L32:
- mov rax, QWORD PTR [rbp-56]
- mov rax, QWORD PTR [rax+8]
- mov QWORD PTR [rbp-24], rax
- mov rax, QWORD PTR [rbp-24]
- cmp rax, QWORD PTR [rbp-32]
- je .L13
- mov rax, QWORD PTR [rbp-24]
- mov rax, QWORD PTR [rax]
- and eax, 1
- test rax, rax
- jne .L14
- mov rax, QWORD PTR [rbp-24]
- mov rax, QWORD PTR [rax+16]
- mov QWORD PTR [rbp-16], rax
- mov rax, QWORD PTR [rbp-56]
- mov rdx, QWORD PTR [rbp-16]
- mov QWORD PTR [rax+8], rdx
- mov rax, QWORD PTR [rbp-24]
- mov rdx, QWORD PTR [rbp-56]
- mov QWORD PTR [rax+16], rdx
- mov rcx, QWORD PTR [rbp-56]
- mov rax, QWORD PTR [rbp-16]
- mov edx, 1
- mov rsi, rcx
- mov rdi, rax
- call rb_set_parent_color(rb_node*, rb_node*, int)
- mov rdx, QWORD PTR [rbp-48]
- mov rsi, QWORD PTR [rbp-24]
- mov rax, QWORD PTR [rbp-56]
- mov ecx, 0
- mov rdi, rax
- call __rb_rotate_set_parents(rb_node*, rb_node*, rb_root*, int)
- mov rcx, QWORD PTR [rbp-24]
- mov rdx, QWORD PTR [rbp-56]
- mov rax, QWORD PTR [rbp-40]
- mov rsi, rcx
- mov rdi, rdx
- call rax
- mov rax, QWORD PTR [rbp-16]
- mov QWORD PTR [rbp-24], rax
- .L14:
- mov rax, QWORD PTR [rbp-24]
- mov rax, QWORD PTR [rax+8]
- mov QWORD PTR [rbp-16], rax
- cmp QWORD PTR [rbp-16], 0
- je .L15
- mov rax, QWORD PTR [rbp-16]
- mov rax, QWORD PTR [rax]
- and eax, 1
- test rax, rax
- je .L16
- .L15:
- mov rax, QWORD PTR [rbp-24]
- mov rax, QWORD PTR [rax+16]
- mov QWORD PTR [rbp-8], rax
- cmp QWORD PTR [rbp-8], 0
- je .L17
- mov rax, QWORD PTR [rbp-8]
- mov rax, QWORD PTR [rax]
- and eax, 1
- test rax, rax
- je .L18
- .L17:
- mov rcx, QWORD PTR [rbp-56]
- mov rax, QWORD PTR [rbp-24]
- mov edx, 0
- mov rsi, rcx
- mov rdi, rax
- call rb_set_parent_color(rb_node*, rb_node*, int)
- mov rax, QWORD PTR [rbp-56]
- mov rax, QWORD PTR [rax]
- and eax, 1
- test rax, rax
- jne .L19
- mov rax, QWORD PTR [rbp-56]
- mov rdi, rax
- call rb_set_black(rb_node*)
- jmp .L12
- .L19:
- mov rax, QWORD PTR [rbp-56]
- mov QWORD PTR [rbp-32], rax
- mov rax, QWORD PTR [rbp-32]
- mov rax, QWORD PTR [rax]
- and rax, -4
- mov QWORD PTR [rbp-56], rax
- cmp QWORD PTR [rbp-56], 0
- jne .L32
- jmp .L12
- .L18:
- mov rax, QWORD PTR [rbp-8]
- mov rax, QWORD PTR [rax+8]
- mov QWORD PTR [rbp-16], rax
- mov rax, QWORD PTR [rbp-24]
- mov rdx, QWORD PTR [rbp-16]
- mov QWORD PTR [rax+16], rdx
- mov rax, QWORD PTR [rbp-8]
- mov rdx, QWORD PTR [rbp-24]
- mov QWORD PTR [rax+8], rdx
- mov rax, QWORD PTR [rbp-56]
- mov rdx, QWORD PTR [rbp-8]
- mov QWORD PTR [rax+8], rdx
- cmp QWORD PTR [rbp-16], 0
- je .L22
- mov rcx, QWORD PTR [rbp-24]
- mov rax, QWORD PTR [rbp-16]
- mov edx, 1
- mov rsi, rcx
- mov rdi, rax
- call rb_set_parent_color(rb_node*, rb_node*, int)
- .L22:
- mov rcx, QWORD PTR [rbp-8]
- mov rdx, QWORD PTR [rbp-24]
- mov rax, QWORD PTR [rbp-40]
- mov rsi, rcx
- mov rdi, rdx
- call rax
- mov rax, QWORD PTR [rbp-24]
- mov QWORD PTR [rbp-16], rax
- mov rax, QWORD PTR [rbp-8]
- mov QWORD PTR [rbp-24], rax
- .L16:
- mov rax, QWORD PTR [rbp-24]
- mov rax, QWORD PTR [rax+16]
- mov QWORD PTR [rbp-8], rax
- mov rax, QWORD PTR [rbp-56]
- mov rdx, QWORD PTR [rbp-8]
- mov QWORD PTR [rax+8], rdx
- mov rax, QWORD PTR [rbp-24]
- mov rdx, QWORD PTR [rbp-56]
- mov QWORD PTR [rax+16], rdx
- mov rcx, QWORD PTR [rbp-24]
- mov rax, QWORD PTR [rbp-16]
- mov edx, 1
- mov rsi, rcx
- mov rdi, rax
- call rb_set_parent_color(rb_node*, rb_node*, int)
- cmp QWORD PTR [rbp-8], 0
- je .L23
- mov rdx, QWORD PTR [rbp-56]
- mov rax, QWORD PTR [rbp-8]
- mov rsi, rdx
- mov rdi, rax
- call rb_set_parent(rb_node*, rb_node*)
- .L23:
- mov rdx, QWORD PTR [rbp-48]
- mov rsi, QWORD PTR [rbp-24]
- mov rax, QWORD PTR [rbp-56]
- mov ecx, 1
- mov rdi, rax
- call __rb_rotate_set_parents(rb_node*, rb_node*, rb_root*, int)
- mov rcx, QWORD PTR [rbp-24]
- mov rdx, QWORD PTR [rbp-56]
- mov rax, QWORD PTR [rbp-40]
- mov rsi, rcx
- mov rdi, rdx
- call rax
- jmp .L12
- .L13:
- mov rax, QWORD PTR [rbp-56]
- mov rax, QWORD PTR [rax+16]
- mov QWORD PTR [rbp-24], rax
- mov rax, QWORD PTR [rbp-24]
- mov rax, QWORD PTR [rax]
- and eax, 1
- test rax, rax
- jne .L24
- mov rax, QWORD PTR [rbp-24]
- mov rax, QWORD PTR [rax+8]
- mov QWORD PTR [rbp-16], rax
- mov rax, QWORD PTR [rbp-56]
- mov rdx, QWORD PTR [rbp-16]
- mov QWORD PTR [rax+16], rdx
- mov rax, QWORD PTR [rbp-24]
- mov rdx, QWORD PTR [rbp-56]
- mov QWORD PTR [rax+8], rdx
- mov rcx, QWORD PTR [rbp-56]
- mov rax, QWORD PTR [rbp-16]
- mov edx, 1
- mov rsi, rcx
- mov rdi, rax
- call rb_set_parent_color(rb_node*, rb_node*, int)
- mov rdx, QWORD PTR [rbp-48]
- mov rsi, QWORD PTR [rbp-24]
- mov rax, QWORD PTR [rbp-56]
- mov ecx, 0
- mov rdi, rax
- call __rb_rotate_set_parents(rb_node*, rb_node*, rb_root*, int)
- mov rcx, QWORD PTR [rbp-24]
- mov rdx, QWORD PTR [rbp-56]
- mov rax, QWORD PTR [rbp-40]
- mov rsi, rcx
- mov rdi, rdx
- call rax
- mov rax, QWORD PTR [rbp-16]
- mov QWORD PTR [rbp-24], rax
- .L24:
- mov rax, QWORD PTR [rbp-24]
- mov rax, QWORD PTR [rax+16]
- mov QWORD PTR [rbp-16], rax
- cmp QWORD PTR [rbp-16], 0
- je .L25
- mov rax, QWORD PTR [rbp-16]
- mov rax, QWORD PTR [rax]
- and eax, 1
- test rax, rax
- je .L26
- .L25:
- mov rax, QWORD PTR [rbp-24]
- mov rax, QWORD PTR [rax+8]
- mov QWORD PTR [rbp-8], rax
- cmp QWORD PTR [rbp-8], 0
- je .L27
- mov rax, QWORD PTR [rbp-8]
- mov rax, QWORD PTR [rax]
- and eax, 1
- test rax, rax
- je .L28
- .L27:
- mov rcx, QWORD PTR [rbp-56]
- mov rax, QWORD PTR [rbp-24]
- mov edx, 0
- mov rsi, rcx
- mov rdi, rax
- call rb_set_parent_color(rb_node*, rb_node*, int)
- mov rax, QWORD PTR [rbp-56]
- mov rax, QWORD PTR [rax]
- and eax, 1
- test rax, rax
- jne .L29
- mov rax, QWORD PTR [rbp-56]
- mov rdi, rax
- call rb_set_black(rb_node*)
- jmp .L12
- .L29:
- mov rax, QWORD PTR [rbp-56]
- mov QWORD PTR [rbp-32], rax
- mov rax, QWORD PTR [rbp-32]
- mov rax, QWORD PTR [rax]
- and rax, -4
- mov QWORD PTR [rbp-56], rax
- cmp QWORD PTR [rbp-56], 0
- jne .L32
- jmp .L12
- .L28:
- mov rax, QWORD PTR [rbp-8]
- mov rax, QWORD PTR [rax+16]
- mov QWORD PTR [rbp-16], rax
- mov rax, QWORD PTR [rbp-24]
- mov rdx, QWORD PTR [rbp-16]
- mov QWORD PTR [rax+8], rdx
- mov rax, QWORD PTR [rbp-8]
- mov rdx, QWORD PTR [rbp-24]
- mov QWORD PTR [rax+16], rdx
- mov rax, QWORD PTR [rbp-56]
- mov rdx, QWORD PTR [rbp-8]
- mov QWORD PTR [rax+16], rdx
- cmp QWORD PTR [rbp-16], 0
- je .L30
- mov rcx, QWORD PTR [rbp-24]
- mov rax, QWORD PTR [rbp-16]
- mov edx, 1
- mov rsi, rcx
- mov rdi, rax
- call rb_set_parent_color(rb_node*, rb_node*, int)
- .L30:
- mov rcx, QWORD PTR [rbp-8]
- mov rdx, QWORD PTR [rbp-24]
- mov rax, QWORD PTR [rbp-40]
- mov rsi, rcx
- mov rdi, rdx
- call rax
- mov rax, QWORD PTR [rbp-24]
- mov QWORD PTR [rbp-16], rax
- mov rax, QWORD PTR [rbp-8]
- mov QWORD PTR [rbp-24], rax
- .L26:
- mov rax, QWORD PTR [rbp-24]
- mov rax, QWORD PTR [rax+8]
- mov QWORD PTR [rbp-8], rax
- mov rax, QWORD PTR [rbp-56]
- mov rdx, QWORD PTR [rbp-8]
- mov QWORD PTR [rax+16], rdx
- mov rax, QWORD PTR [rbp-24]
- mov rdx, QWORD PTR [rbp-56]
- mov QWORD PTR [rax+8], rdx
- mov rcx, QWORD PTR [rbp-24]
- mov rax, QWORD PTR [rbp-16]
- mov edx, 1
- mov rsi, rcx
- mov rdi, rax
- call rb_set_parent_color(rb_node*, rb_node*, int)
- cmp QWORD PTR [rbp-8], 0
- je .L31
- mov rdx, QWORD PTR [rbp-56]
- mov rax, QWORD PTR [rbp-8]
- mov rsi, rdx
- mov rdi, rax
- call rb_set_parent(rb_node*, rb_node*)
- .L31:
- mov rdx, QWORD PTR [rbp-48]
- mov rsi, QWORD PTR [rbp-24]
- mov rax, QWORD PTR [rbp-56]
- mov ecx, 1
- mov rdi, rax
- call __rb_rotate_set_parents(rb_node*, rb_node*, rb_root*, int)
- mov rcx, QWORD PTR [rbp-24]
- mov rdx, QWORD PTR [rbp-56]
- mov rax, QWORD PTR [rbp-40]
- mov rsi, rcx
- mov rdi, rdx
- call rax
- .L12:
- leave
- ret
- dummy_propagate(rb_node*, rb_node*):
- push rbp
- mov rbp, rsp
- mov QWORD PTR [rbp-8], rdi
- mov QWORD PTR [rbp-16], rsi
- pop rbp
- ret
- dummy_copy(rb_node*, rb_node*):
- push rbp
- mov rbp, rsp
- mov QWORD PTR [rbp-8], rdi
- mov QWORD PTR [rbp-16], rsi
- pop rbp
- ret
- dummy_rotate(rb_node*, rb_node*):
- push rbp
- mov rbp, rsp
- mov QWORD PTR [rbp-8], rdi
- mov QWORD PTR [rbp-16], rsi
- pop rbp
- ret
- rb_insert_color(rb_node*, rb_root*):
- push rbp
- mov rbp, rsp
- sub rsp, 64
- mov QWORD PTR [rbp-56], rdi
- mov QWORD PTR [rbp-64], rsi
- mov rax, QWORD PTR [rbp-56]
- mov QWORD PTR [rbp-48], rax
- mov rax, QWORD PTR [rbp-64]
- mov QWORD PTR [rbp-40], rax
- mov QWORD PTR [rbp-32], OFFSET FLAT:dummy_rotate(rb_node*, rb_node*)
- mov rax, QWORD PTR [rbp-48]
- mov rdi, rax
- call rb_red_parent(rb_node*)
- mov QWORD PTR [rbp-24], rax
- .L49:
- cmp QWORD PTR [rbp-24], 0
- jne .L37
- mov rax, QWORD PTR [rbp-48]
- mov edx, 1
- mov esi, 0
- mov rdi, rax
- call rb_set_parent_color(rb_node*, rb_node*, int)
- jmp .L36
- .L37:
- mov rax, QWORD PTR [rbp-24]
- mov rax, QWORD PTR [rax]
- and eax, 1
- test rax, rax
- jne .L36
- mov rax, QWORD PTR [rbp-24]
- mov rdi, rax
- call rb_red_parent(rb_node*)
- mov QWORD PTR [rbp-16], rax
- mov rax, QWORD PTR [rbp-16]
- mov rax, QWORD PTR [rax+8]
- mov QWORD PTR [rbp-8], rax
- mov rax, QWORD PTR [rbp-24]
- cmp rax, QWORD PTR [rbp-8]
- je .L39
- cmp QWORD PTR [rbp-8], 0
- je .L40
- mov rax, QWORD PTR [rbp-8]
- mov rax, QWORD PTR [rax]
- and eax, 1
- test rax, rax
- jne .L40
- mov rcx, QWORD PTR [rbp-16]
- mov rax, QWORD PTR [rbp-8]
- mov edx, 1
- mov rsi, rcx
- mov rdi, rax
- call rb_set_parent_color(rb_node*, rb_node*, int)
- mov rcx, QWORD PTR [rbp-16]
- mov rax, QWORD PTR [rbp-24]
- mov edx, 1
- mov rsi, rcx
- mov rdi, rax
- call rb_set_parent_color(rb_node*, rb_node*, int)
- mov rax, QWORD PTR [rbp-16]
- mov QWORD PTR [rbp-48], rax
- mov rax, QWORD PTR [rbp-48]
- mov rax, QWORD PTR [rax]
- and rax, -4
- mov QWORD PTR [rbp-24], rax
- mov rcx, QWORD PTR [rbp-24]
- mov rax, QWORD PTR [rbp-48]
- mov edx, 0
- mov rsi, rcx
- mov rdi, rax
- call rb_set_parent_color(rb_node*, rb_node*, int)
- jmp .L49
- .L40:
- mov rax, QWORD PTR [rbp-24]
- mov rax, QWORD PTR [rax+8]
- mov QWORD PTR [rbp-8], rax
- mov rax, QWORD PTR [rbp-48]
- cmp rax, QWORD PTR [rbp-8]
- jne .L42
- mov rax, QWORD PTR [rbp-48]
- mov rax, QWORD PTR [rax+16]
- mov QWORD PTR [rbp-8], rax
- mov rax, QWORD PTR [rbp-24]
- mov rdx, QWORD PTR [rbp-8]
- mov QWORD PTR [rax+8], rdx
- mov rax, QWORD PTR [rbp-48]
- mov rdx, QWORD PTR [rbp-24]
- mov QWORD PTR [rax+16], rdx
- cmp QWORD PTR [rbp-8], 0
- je .L43
- mov rcx, QWORD PTR [rbp-24]
- mov rax, QWORD PTR [rbp-8]
- mov edx, 1
- mov rsi, rcx
- mov rdi, rax
- call rb_set_parent_color(rb_node*, rb_node*, int)
- .L43:
- mov rcx, QWORD PTR [rbp-48]
- mov rax, QWORD PTR [rbp-24]
- mov edx, 0
- mov rsi, rcx
- mov rdi, rax
- call rb_set_parent_color(rb_node*, rb_node*, int)
- mov rcx, QWORD PTR [rbp-48]
- mov rdx, QWORD PTR [rbp-24]
- mov rax, QWORD PTR [rbp-32]
- mov rsi, rcx
- mov rdi, rdx
- call rax
- mov rax, QWORD PTR [rbp-48]
- mov QWORD PTR [rbp-24], rax
- mov rax, QWORD PTR [rbp-48]
- mov rax, QWORD PTR [rax+8]
- mov QWORD PTR [rbp-8], rax
- .L42:
- mov rax, QWORD PTR [rbp-16]
- mov rdx, QWORD PTR [rbp-8]
- mov QWORD PTR [rax+16], rdx
- mov rax, QWORD PTR [rbp-24]
- mov rdx, QWORD PTR [rbp-16]
- mov QWORD PTR [rax+8], rdx
- cmp QWORD PTR [rbp-8], 0
- je .L44
- mov rcx, QWORD PTR [rbp-16]
- mov rax, QWORD PTR [rbp-8]
- mov edx, 1
- mov rsi, rcx
- mov rdi, rax
- call rb_set_parent_color(rb_node*, rb_node*, int)
- .L44:
- mov rdx, QWORD PTR [rbp-40]
- mov rsi, QWORD PTR [rbp-24]
- mov rax, QWORD PTR [rbp-16]
- mov ecx, 0
- mov rdi, rax
- call __rb_rotate_set_parents(rb_node*, rb_node*, rb_root*, int)
- mov rcx, QWORD PTR [rbp-24]
- mov rdx, QWORD PTR [rbp-16]
- mov rax, QWORD PTR [rbp-32]
- mov rsi, rcx
- mov rdi, rdx
- call rax
- jmp .L36
- .L39:
- mov rax, QWORD PTR [rbp-16]
- mov rax, QWORD PTR [rax+16]
- mov QWORD PTR [rbp-8], rax
- cmp QWORD PTR [rbp-8], 0
- je .L45
- mov rax, QWORD PTR [rbp-8]
- mov rax, QWORD PTR [rax]
- and eax, 1
- test rax, rax
- jne .L45
- mov rcx, QWORD PTR [rbp-16]
- mov rax, QWORD PTR [rbp-8]
- mov edx, 1
- mov rsi, rcx
- mov rdi, rax
- call rb_set_parent_color(rb_node*, rb_node*, int)
- mov rcx, QWORD PTR [rbp-16]
- mov rax, QWORD PTR [rbp-24]
- mov edx, 1
- mov rsi, rcx
- mov rdi, rax
- call rb_set_parent_color(rb_node*, rb_node*, int)
- mov rax, QWORD PTR [rbp-16]
- mov QWORD PTR [rbp-48], rax
- mov rax, QWORD PTR [rbp-48]
- mov rax, QWORD PTR [rax]
- and rax, -4
- mov QWORD PTR [rbp-24], rax
- mov rcx, QWORD PTR [rbp-24]
- mov rax, QWORD PTR [rbp-48]
- mov edx, 0
- mov rsi, rcx
- mov rdi, rax
- call rb_set_parent_color(rb_node*, rb_node*, int)
- jmp .L49
- .L45:
- mov rax, QWORD PTR [rbp-24]
- mov rax, QWORD PTR [rax+16]
- mov QWORD PTR [rbp-8], rax
- mov rax, QWORD PTR [rbp-48]
- cmp rax, QWORD PTR [rbp-8]
- jne .L46
- mov rax, QWORD PTR [rbp-48]
- mov rax, QWORD PTR [rax+8]
- mov QWORD PTR [rbp-8], rax
- mov rax, QWORD PTR [rbp-24]
- mov rdx, QWORD PTR [rbp-8]
- mov QWORD PTR [rax+16], rdx
- mov rax, QWORD PTR [rbp-48]
- mov rdx, QWORD PTR [rbp-24]
- mov QWORD PTR [rax+8], rdx
- cmp QWORD PTR [rbp-8], 0
- je .L47
- mov rcx, QWORD PTR [rbp-24]
- mov rax, QWORD PTR [rbp-8]
- mov edx, 1
- mov rsi, rcx
- mov rdi, rax
- call rb_set_parent_color(rb_node*, rb_node*, int)
- .L47:
- mov rcx, QWORD PTR [rbp-48]
- mov rax, QWORD PTR [rbp-24]
- mov edx, 0
- mov rsi, rcx
- mov rdi, rax
- call rb_set_parent_color(rb_node*, rb_node*, int)
- mov rcx, QWORD PTR [rbp-48]
- mov rdx, QWORD PTR [rbp-24]
- mov rax, QWORD PTR [rbp-32]
- mov rsi, rcx
- mov rdi, rdx
- call rax
- mov rax, QWORD PTR [rbp-48]
- mov QWORD PTR [rbp-24], rax
- mov rax, QWORD PTR [rbp-48]
- mov rax, QWORD PTR [rax+16]
- mov QWORD PTR [rbp-8], rax
- .L46:
- mov rax, QWORD PTR [rbp-16]
- mov rdx, QWORD PTR [rbp-8]
- mov QWORD PTR [rax+8], rdx
- mov rax, QWORD PTR [rbp-24]
- mov rdx, QWORD PTR [rbp-16]
- mov QWORD PTR [rax+16], rdx
- cmp QWORD PTR [rbp-8], 0
- je .L48
- mov rcx, QWORD PTR [rbp-16]
- mov rax, QWORD PTR [rbp-8]
- mov edx, 1
- mov rsi, rcx
- mov rdi, rax
- call rb_set_parent_color(rb_node*, rb_node*, int)
- .L48:
- mov rdx, QWORD PTR [rbp-40]
- mov rsi, QWORD PTR [rbp-24]
- mov rax, QWORD PTR [rbp-16]
- mov ecx, 0
- mov rdi, rax
- call __rb_rotate_set_parents(rb_node*, rb_node*, rb_root*, int)
- mov rcx, QWORD PTR [rbp-24]
- mov rdx, QWORD PTR [rbp-16]
- mov rax, QWORD PTR [rbp-32]
- mov rsi, rcx
- mov rdi, rdx
- call rax
- .L36:
- leave
- ret
- rb_erase(rb_node*, rb_root*):
- push rbp
- mov rbp, rsp
- sub rsp, 176
- mov QWORD PTR [rbp-168], rdi
- mov QWORD PTR [rbp-176], rsi
- mov rax, QWORD PTR [rbp-168]
- mov QWORD PTR [rbp-144], rax
- mov rax, QWORD PTR [rbp-176]
- mov QWORD PTR [rbp-136], rax
- mov QWORD PTR [rbp-128], OFFSET FLAT:dummy_callbacks
- mov rax, QWORD PTR [rbp-144]
- mov rax, QWORD PTR [rax+8]
- mov QWORD PTR [rbp-120], rax
- mov rax, QWORD PTR [rbp-144]
- mov rax, QWORD PTR [rax+16]
- mov QWORD PTR [rbp-112], rax
- cmp QWORD PTR [rbp-112], 0
- jne .L51
- mov rax, QWORD PTR [rbp-144]
- mov rax, QWORD PTR [rax]
- mov QWORD PTR [rbp-104], rax
- mov rax, QWORD PTR [rbp-104]
- and rax, -4
- mov QWORD PTR [rbp-96], rax
- mov rcx, QWORD PTR [rbp-136]
- mov rdx, QWORD PTR [rbp-96]
- mov rsi, QWORD PTR [rbp-120]
- mov rax, QWORD PTR [rbp-144]
- mov rdi, rax
- call __rb_change_child(rb_node*, rb_node*, rb_node*, rb_root*)
- cmp QWORD PTR [rbp-120], 0
- je .L52
- mov rax, QWORD PTR [rbp-120]
- mov rdx, QWORD PTR [rbp-104]
- mov QWORD PTR [rax], rdx
- mov QWORD PTR [rbp-88], 0
- jmp .L53
- .L52:
- mov rax, QWORD PTR [rbp-104]
- and eax, 1
- test rax, rax
- je .L54
- mov rax, QWORD PTR [rbp-96]
- jmp .L55
- .L54:
- mov eax, 0
- .L55:
- mov QWORD PTR [rbp-88], rax
- .L53:
- mov rax, QWORD PTR [rbp-96]
- mov QWORD PTR [rbp-112], rax
- jmp .L56
- .L51:
- cmp QWORD PTR [rbp-120], 0
- jne .L57
- mov rax, QWORD PTR [rbp-144]
- mov rax, QWORD PTR [rax]
- mov QWORD PTR [rbp-104], rax
- mov rax, QWORD PTR [rbp-112]
- mov rdx, QWORD PTR [rbp-104]
- mov QWORD PTR [rax], rdx
- mov rax, QWORD PTR [rbp-104]
- and rax, -4
- mov QWORD PTR [rbp-96], rax
- mov rcx, QWORD PTR [rbp-136]
- mov rdx, QWORD PTR [rbp-96]
- mov rsi, QWORD PTR [rbp-112]
- mov rax, QWORD PTR [rbp-144]
- mov rdi, rax
- call __rb_change_child(rb_node*, rb_node*, rb_node*, rb_root*)
- mov QWORD PTR [rbp-88], 0
- mov rax, QWORD PTR [rbp-96]
- mov QWORD PTR [rbp-112], rax
- jmp .L56
- .L57:
- mov rax, QWORD PTR [rbp-120]
- mov QWORD PTR [rbp-80], rax
- mov rax, QWORD PTR [rbp-120]
- mov rax, QWORD PTR [rax+16]
- mov QWORD PTR [rbp-112], rax
- cmp QWORD PTR [rbp-112], 0
- jne .L58
- mov rax, QWORD PTR [rbp-80]
- mov QWORD PTR [rbp-96], rax
- mov rax, QWORD PTR [rbp-80]
- mov rax, QWORD PTR [rax+8]
- mov QWORD PTR [rbp-72], rax
- mov rax, QWORD PTR [rbp-128]
- mov rax, QWORD PTR [rax+8]
- mov rcx, QWORD PTR [rbp-80]
- mov rdx, QWORD PTR [rbp-144]
- mov rsi, rcx
- mov rdi, rdx
- call rax
- jmp .L59
- .L58:
- mov rax, QWORD PTR [rbp-80]
- mov QWORD PTR [rbp-96], rax
- mov rax, QWORD PTR [rbp-112]
- mov QWORD PTR [rbp-80], rax
- mov rax, QWORD PTR [rbp-112]
- mov rax, QWORD PTR [rax+16]
- mov QWORD PTR [rbp-112], rax
- cmp QWORD PTR [rbp-112], 0
- jne .L58
- mov rax, QWORD PTR [rbp-80]
- mov rax, QWORD PTR [rax+8]
- mov QWORD PTR [rbp-72], rax
- mov rax, QWORD PTR [rbp-96]
- mov rdx, QWORD PTR [rbp-72]
- mov QWORD PTR [rax+16], rdx
- mov rax, QWORD PTR [rbp-80]
- mov rdx, QWORD PTR [rbp-120]
- mov QWORD PTR [rax+8], rdx
- mov rdx, QWORD PTR [rbp-80]
- mov rax, QWORD PTR [rbp-120]
- mov rsi, rdx
- mov rdi, rax
- call rb_set_parent(rb_node*, rb_node*)
- mov rax, QWORD PTR [rbp-128]
- mov rax, QWORD PTR [rax+8]
- mov rcx, QWORD PTR [rbp-80]
- mov rdx, QWORD PTR [rbp-144]
- mov rsi, rcx
- mov rdi, rdx
- call rax
- mov rax, QWORD PTR [rbp-128]
- mov rax, QWORD PTR [rax]
- mov rcx, QWORD PTR [rbp-80]
- mov rdx, QWORD PTR [rbp-96]
- mov rsi, rcx
- mov rdi, rdx
- call rax
- .L59:
- mov rax, QWORD PTR [rbp-144]
- mov rax, QWORD PTR [rax+16]
- mov QWORD PTR [rbp-112], rax
- mov rax, QWORD PTR [rbp-80]
- mov rdx, QWORD PTR [rbp-112]
- mov QWORD PTR [rax+16], rdx
- mov rdx, QWORD PTR [rbp-80]
- mov rax, QWORD PTR [rbp-112]
- mov rsi, rdx
- mov rdi, rax
- call rb_set_parent(rb_node*, rb_node*)
- mov rax, QWORD PTR [rbp-144]
- mov rax, QWORD PTR [rax]
- mov QWORD PTR [rbp-104], rax
- mov rax, QWORD PTR [rbp-104]
- and rax, -4
- mov QWORD PTR [rbp-112], rax
- mov rcx, QWORD PTR [rbp-136]
- mov rdx, QWORD PTR [rbp-112]
- mov rsi, QWORD PTR [rbp-80]
- mov rax, QWORD PTR [rbp-144]
- mov rdi, rax
- call __rb_change_child(rb_node*, rb_node*, rb_node*, rb_root*)
- cmp QWORD PTR [rbp-72], 0
- je .L60
- mov rax, QWORD PTR [rbp-80]
- mov rdx, QWORD PTR [rbp-104]
- mov QWORD PTR [rax], rdx
- mov rcx, QWORD PTR [rbp-96]
- mov rax, QWORD PTR [rbp-72]
- mov edx, 1
- mov rsi, rcx
- mov rdi, rax
- call rb_set_parent_color(rb_node*, rb_node*, int)
- mov QWORD PTR [rbp-88], 0
- jmp .L61
- .L60:
- mov rax, QWORD PTR [rbp-80]
- mov rax, QWORD PTR [rax]
- mov QWORD PTR [rbp-64], rax
- mov rax, QWORD PTR [rbp-80]
- mov rdx, QWORD PTR [rbp-104]
- mov QWORD PTR [rax], rdx
- mov rax, QWORD PTR [rbp-64]
- and eax, 1
- test rax, rax
- je .L62
- mov rax, QWORD PTR [rbp-96]
- jmp .L63
- .L62:
- mov eax, 0
- .L63:
- mov QWORD PTR [rbp-88], rax
- .L61:
- mov rax, QWORD PTR [rbp-80]
- mov QWORD PTR [rbp-112], rax
- .L56:
- mov rax, QWORD PTR [rbp-128]
- mov rax, QWORD PTR [rax]
- mov rdx, QWORD PTR [rbp-112]
- mov esi, 0
- mov rdi, rdx
- call rax
- mov rax, QWORD PTR [rbp-88]
- mov QWORD PTR [rbp-152], rax
- cmp QWORD PTR [rbp-152], 0
- je .L50
- mov rax, QWORD PTR [rbp-152]
- mov QWORD PTR [rbp-56], rax
- mov rax, QWORD PTR [rbp-176]
- mov QWORD PTR [rbp-48], rax
- mov QWORD PTR [rbp-40], OFFSET FLAT:dummy_rotate(rb_node*, rb_node*)
- mov QWORD PTR [rbp-32], 0
- .L85:
- mov rax, QWORD PTR [rbp-56]
- mov rax, QWORD PTR [rax+8]
- mov QWORD PTR [rbp-24], rax
- mov rax, QWORD PTR [rbp-24]
- cmp rax, QWORD PTR [rbp-32]
- je .L66
- mov rax, QWORD PTR [rbp-24]
- mov rax, QWORD PTR [rax]
- and eax, 1
- test rax, rax
- jne .L67
- mov rax, QWORD PTR [rbp-24]
- mov rax, QWORD PTR [rax+16]
- mov QWORD PTR [rbp-16], rax
- mov rax, QWORD PTR [rbp-56]
- mov rdx, QWORD PTR [rbp-16]
- mov QWORD PTR [rax+8], rdx
- mov rax, QWORD PTR [rbp-24]
- mov rdx, QWORD PTR [rbp-56]
- mov QWORD PTR [rax+16], rdx
- mov rcx, QWORD PTR [rbp-56]
- mov rax, QWORD PTR [rbp-16]
- mov edx, 1
- mov rsi, rcx
- mov rdi, rax
- call rb_set_parent_color(rb_node*, rb_node*, int)
- mov rdx, QWORD PTR [rbp-48]
- mov rsi, QWORD PTR [rbp-24]
- mov rax, QWORD PTR [rbp-56]
- mov ecx, 0
- mov rdi, rax
- call __rb_rotate_set_parents(rb_node*, rb_node*, rb_root*, int)
- mov rcx, QWORD PTR [rbp-24]
- mov rdx, QWORD PTR [rbp-56]
- mov rax, QWORD PTR [rbp-40]
- mov rsi, rcx
- mov rdi, rdx
- call rax
- mov rax, QWORD PTR [rbp-16]
- mov QWORD PTR [rbp-24], rax
- .L67:
- mov rax, QWORD PTR [rbp-24]
- mov rax, QWORD PTR [rax+8]
- mov QWORD PTR [rbp-16], rax
- cmp QWORD PTR [rbp-16], 0
- je .L68
- mov rax, QWORD PTR [rbp-16]
- mov rax, QWORD PTR [rax]
- and eax, 1
- test rax, rax
- je .L69
- .L68:
- mov rax, QWORD PTR [rbp-24]
- mov rax, QWORD PTR [rax+16]
- mov QWORD PTR [rbp-8], rax
- cmp QWORD PTR [rbp-8], 0
- je .L70
- mov rax, QWORD PTR [rbp-8]
- mov rax, QWORD PTR [rax]
- and eax, 1
- test rax, rax
- je .L71
- .L70:
- mov rcx, QWORD PTR [rbp-56]
- mov rax, QWORD PTR [rbp-24]
- mov edx, 0
- mov rsi, rcx
- mov rdi, rax
- call rb_set_parent_color(rb_node*, rb_node*, int)
- mov rax, QWORD PTR [rbp-56]
- mov rax, QWORD PTR [rax]
- and eax, 1
- test rax, rax
- jne .L72
- mov rax, QWORD PTR [rbp-56]
- mov rdi, rax
- call rb_set_black(rb_node*)
- jmp .L50
- .L72:
- mov rax, QWORD PTR [rbp-56]
- mov QWORD PTR [rbp-32], rax
- mov rax, QWORD PTR [rbp-32]
- mov rax, QWORD PTR [rax]
- and rax, -4
- mov QWORD PTR [rbp-56], rax
- cmp QWORD PTR [rbp-56], 0
- jne .L85
- jmp .L50
- .L71:
- mov rax, QWORD PTR [rbp-8]
- mov rax, QWORD PTR [rax+8]
- mov QWORD PTR [rbp-16], rax
- mov rax, QWORD PTR [rbp-24]
- mov rdx, QWORD PTR [rbp-16]
- mov QWORD PTR [rax+16], rdx
- mov rax, QWORD PTR [rbp-8]
- mov rdx, QWORD PTR [rbp-24]
- mov QWORD PTR [rax+8], rdx
- mov rax, QWORD PTR [rbp-56]
- mov rdx, QWORD PTR [rbp-8]
- mov QWORD PTR [rax+8], rdx
- cmp QWORD PTR [rbp-16], 0
- je .L75
- mov rcx, QWORD PTR [rbp-24]
- mov rax, QWORD PTR [rbp-16]
- mov edx, 1
- mov rsi, rcx
- mov rdi, rax
- call rb_set_parent_color(rb_node*, rb_node*, int)
- .L75:
- mov rcx, QWORD PTR [rbp-8]
- mov rdx, QWORD PTR [rbp-24]
- mov rax, QWORD PTR [rbp-40]
- mov rsi, rcx
- mov rdi, rdx
- call rax
- mov rax, QWORD PTR [rbp-24]
- mov QWORD PTR [rbp-16], rax
- mov rax, QWORD PTR [rbp-8]
- mov QWORD PTR [rbp-24], rax
- .L69:
- mov rax, QWORD PTR [rbp-24]
- mov rax, QWORD PTR [rax+16]
- mov QWORD PTR [rbp-8], rax
- mov rax, QWORD PTR [rbp-56]
- mov rdx, QWORD PTR [rbp-8]
- mov QWORD PTR [rax+8], rdx
- mov rax, QWORD PTR [rbp-24]
- mov rdx, QWORD PTR [rbp-56]
- mov QWORD PTR [rax+16], rdx
- mov rcx, QWORD PTR [rbp-24]
- mov rax, QWORD PTR [rbp-16]
- mov edx, 1
- mov rsi, rcx
- mov rdi, rax
- call rb_set_parent_color(rb_node*, rb_node*, int)
- cmp QWORD PTR [rbp-8], 0
- je .L76
- mov rdx, QWORD PTR [rbp-56]
- mov rax, QWORD PTR [rbp-8]
- mov rsi, rdx
- mov rdi, rax
- call rb_set_parent(rb_node*, rb_node*)
- .L76:
- mov rdx, QWORD PTR [rbp-48]
- mov rsi, QWORD PTR [rbp-24]
- mov rax, QWORD PTR [rbp-56]
- mov ecx, 1
- mov rdi, rax
- call __rb_rotate_set_parents(rb_node*, rb_node*, rb_root*, int)
- mov rcx, QWORD PTR [rbp-24]
- mov rdx, QWORD PTR [rbp-56]
- mov rax, QWORD PTR [rbp-40]
- mov rsi, rcx
- mov rdi, rdx
- call rax
- jmp .L50
- .L66:
- mov rax, QWORD PTR [rbp-56]
- mov rax, QWORD PTR [rax+16]
- mov QWORD PTR [rbp-24], rax
- mov rax, QWORD PTR [rbp-24]
- mov rax, QWORD PTR [rax]
- and eax, 1
- test rax, rax
- jne .L77
- mov rax, QWORD PTR [rbp-24]
- mov rax, QWORD PTR [rax+8]
- mov QWORD PTR [rbp-16], rax
- mov rax, QWORD PTR [rbp-56]
- mov rdx, QWORD PTR [rbp-16]
- mov QWORD PTR [rax+16], rdx
- mov rax, QWORD PTR [rbp-24]
- mov rdx, QWORD PTR [rbp-56]
- mov QWORD PTR [rax+8], rdx
- mov rcx, QWORD PTR [rbp-56]
- mov rax, QWORD PTR [rbp-16]
- mov edx, 1
- mov rsi, rcx
- mov rdi, rax
- call rb_set_parent_color(rb_node*, rb_node*, int)
- mov rdx, QWORD PTR [rbp-48]
- mov rsi, QWORD PTR [rbp-24]
- mov rax, QWORD PTR [rbp-56]
- mov ecx, 0
- mov rdi, rax
- call __rb_rotate_set_parents(rb_node*, rb_node*, rb_root*, int)
- mov rcx, QWORD PTR [rbp-24]
- mov rdx, QWORD PTR [rbp-56]
- mov rax, QWORD PTR [rbp-40]
- mov rsi, rcx
- mov rdi, rdx
- call rax
- mov rax, QWORD PTR [rbp-16]
- mov QWORD PTR [rbp-24], rax
- .L77:
- mov rax, QWORD PTR [rbp-24]
- mov rax, QWORD PTR [rax+16]
- mov QWORD PTR [rbp-16], rax
- cmp QWORD PTR [rbp-16], 0
- je .L78
- mov rax, QWORD PTR [rbp-16]
- mov rax, QWORD PTR [rax]
- and eax, 1
- test rax, rax
- je .L79
- .L78:
- mov rax, QWORD PTR [rbp-24]
- mov rax, QWORD PTR [rax+8]
- mov QWORD PTR [rbp-8], rax
- cmp QWORD PTR [rbp-8], 0
- je .L80
- mov rax, QWORD PTR [rbp-8]
- mov rax, QWORD PTR [rax]
- and eax, 1
- test rax, rax
- je .L81
- .L80:
- mov rcx, QWORD PTR [rbp-56]
- mov rax, QWORD PTR [rbp-24]
- mov edx, 0
- mov rsi, rcx
- mov rdi, rax
- call rb_set_parent_color(rb_node*, rb_node*, int)
- mov rax, QWORD PTR [rbp-56]
- mov rax, QWORD PTR [rax]
- and eax, 1
- test rax, rax
- jne .L82
- mov rax, QWORD PTR [rbp-56]
- mov rdi, rax
- call rb_set_black(rb_node*)
- jmp .L50
- .L82:
- mov rax, QWORD PTR [rbp-56]
- mov QWORD PTR [rbp-32], rax
- mov rax, QWORD PTR [rbp-32]
- mov rax, QWORD PTR [rax]
- and rax, -4
- mov QWORD PTR [rbp-56], rax
- cmp QWORD PTR [rbp-56], 0
- jne .L85
- jmp .L50
- .L81:
- mov rax, QWORD PTR [rbp-8]
- mov rax, QWORD PTR [rax+16]
- mov QWORD PTR [rbp-16], rax
- mov rax, QWORD PTR [rbp-24]
- mov rdx, QWORD PTR [rbp-16]
- mov QWORD PTR [rax+8], rdx
- mov rax, QWORD PTR [rbp-8]
- mov rdx, QWORD PTR [rbp-24]
- mov QWORD PTR [rax+16], rdx
- mov rax, QWORD PTR [rbp-56]
- mov rdx, QWORD PTR [rbp-8]
- mov QWORD PTR [rax+16], rdx
- cmp QWORD PTR [rbp-16], 0
- je .L83
- mov rcx, QWORD PTR [rbp-24]
- mov rax, QWORD PTR [rbp-16]
- mov edx, 1
- mov rsi, rcx
- mov rdi, rax
- call rb_set_parent_color(rb_node*, rb_node*, int)
- .L83:
- mov rcx, QWORD PTR [rbp-8]
- mov rdx, QWORD PTR [rbp-24]
- mov rax, QWORD PTR [rbp-40]
- mov rsi, rcx
- mov rdi, rdx
- call rax
- mov rax, QWORD PTR [rbp-24]
- mov QWORD PTR [rbp-16], rax
- mov rax, QWORD PTR [rbp-8]
- mov QWORD PTR [rbp-24], rax
- .L79:
- mov rax, QWORD PTR [rbp-24]
- mov rax, QWORD PTR [rax+8]
- mov QWORD PTR [rbp-8], rax
- mov rax, QWORD PTR [rbp-56]
- mov rdx, QWORD PTR [rbp-8]
- mov QWORD PTR [rax+16], rdx
- mov rax, QWORD PTR [rbp-24]
- mov rdx, QWORD PTR [rbp-56]
- mov QWORD PTR [rax+8], rdx
- mov rcx, QWORD PTR [rbp-24]
- mov rax, QWORD PTR [rbp-16]
- mov edx, 1
- mov rsi, rcx
- mov rdi, rax
- call rb_set_parent_color(rb_node*, rb_node*, int)
- cmp QWORD PTR [rbp-8], 0
- je .L84
- mov rdx, QWORD PTR [rbp-56]
- mov rax, QWORD PTR [rbp-8]
- mov rsi, rdx
- mov rdi, rax
- call rb_set_parent(rb_node*, rb_node*)
- .L84:
- mov rdx, QWORD PTR [rbp-48]
- mov rsi, QWORD PTR [rbp-24]
- mov rax, QWORD PTR [rbp-56]
- mov ecx, 1
- mov rdi, rax
- call __rb_rotate_set_parents(rb_node*, rb_node*, rb_root*, int)
- mov rcx, QWORD PTR [rbp-24]
- mov rdx, QWORD PTR [rbp-56]
- mov rax, QWORD PTR [rbp-40]
- mov rsi, rcx
- mov rdi, rdx
- call rax
- .L50:
- leave
- ret
- __rb_insert_augmented(rb_node*, rb_root*, void (*)(rb_node*, rb_node*)):
- push rbp
- mov rbp, rsp
- sub rsp, 80
- mov QWORD PTR [rbp-56], rdi
- mov QWORD PTR [rbp-64], rsi
- mov QWORD PTR [rbp-72], rdx
- mov rax, QWORD PTR [rbp-56]
- mov QWORD PTR [rbp-48], rax
- mov rax, QWORD PTR [rbp-64]
- mov QWORD PTR [rbp-40], rax
- mov rax, QWORD PTR [rbp-72]
- mov QWORD PTR [rbp-32], rax
- mov rax, QWORD PTR [rbp-48]
- mov rdi, rax
- call rb_red_parent(rb_node*)
- mov QWORD PTR [rbp-24], rax
- .L99:
- cmp QWORD PTR [rbp-24], 0
- jne .L87
- mov rax, QWORD PTR [rbp-48]
- mov edx, 1
- mov esi, 0
- mov rdi, rax
- call rb_set_parent_color(rb_node*, rb_node*, int)
- jmp .L86
- .L87:
- mov rax, QWORD PTR [rbp-24]
- mov rax, QWORD PTR [rax]
- and eax, 1
- test rax, rax
- jne .L86
- mov rax, QWORD PTR [rbp-24]
- mov rdi, rax
- call rb_red_parent(rb_node*)
- mov QWORD PTR [rbp-16], rax
- mov rax, QWORD PTR [rbp-16]
- mov rax, QWORD PTR [rax+8]
- mov QWORD PTR [rbp-8], rax
- mov rax, QWORD PTR [rbp-24]
- cmp rax, QWORD PTR [rbp-8]
- je .L89
- cmp QWORD PTR [rbp-8], 0
- je .L90
- mov rax, QWORD PTR [rbp-8]
- mov rax, QWORD PTR [rax]
- and eax, 1
- test rax, rax
- jne .L90
- mov rcx, QWORD PTR [rbp-16]
- mov rax, QWORD PTR [rbp-8]
- mov edx, 1
- mov rsi, rcx
- mov rdi, rax
- call rb_set_parent_color(rb_node*, rb_node*, int)
- mov rcx, QWORD PTR [rbp-16]
- mov rax, QWORD PTR [rbp-24]
- mov edx, 1
- mov rsi, rcx
- mov rdi, rax
- call rb_set_parent_color(rb_node*, rb_node*, int)
- mov rax, QWORD PTR [rbp-16]
- mov QWORD PTR [rbp-48], rax
- mov rax, QWORD PTR [rbp-48]
- mov rax, QWORD PTR [rax]
- and rax, -4
- mov QWORD PTR [rbp-24], rax
- mov rcx, QWORD PTR [rbp-24]
- mov rax, QWORD PTR [rbp-48]
- mov edx, 0
- mov rsi, rcx
- mov rdi, rax
- call rb_set_parent_color(rb_node*, rb_node*, int)
- jmp .L99
- .L90:
- mov rax, QWORD PTR [rbp-24]
- mov rax, QWORD PTR [rax+8]
- mov QWORD PTR [rbp-8], rax
- mov rax, QWORD PTR [rbp-48]
- cmp rax, QWORD PTR [rbp-8]
- jne .L92
- mov rax, QWORD PTR [rbp-48]
- mov rax, QWORD PTR [rax+16]
- mov QWORD PTR [rbp-8], rax
- mov rax, QWORD PTR [rbp-24]
- mov rdx, QWORD PTR [rbp-8]
- mov QWORD PTR [rax+8], rdx
- mov rax, QWORD PTR [rbp-48]
- mov rdx, QWORD PTR [rbp-24]
- mov QWORD PTR [rax+16], rdx
- cmp QWORD PTR [rbp-8], 0
- je .L93
- mov rcx, QWORD PTR [rbp-24]
- mov rax, QWORD PTR [rbp-8]
- mov edx, 1
- mov rsi, rcx
- mov rdi, rax
- call rb_set_parent_color(rb_node*, rb_node*, int)
- .L93:
- mov rcx, QWORD PTR [rbp-48]
- mov rax, QWORD PTR [rbp-24]
- mov edx, 0
- mov rsi, rcx
- mov rdi, rax
- call rb_set_parent_color(rb_node*, rb_node*, int)
- mov rcx, QWORD PTR [rbp-48]
- mov rdx, QWORD PTR [rbp-24]
- mov rax, QWORD PTR [rbp-32]
- mov rsi, rcx
- mov rdi, rdx
- call rax
- mov rax, QWORD PTR [rbp-48]
- mov QWORD PTR [rbp-24], rax
- mov rax, QWORD PTR [rbp-48]
- mov rax, QWORD PTR [rax+8]
- mov QWORD PTR [rbp-8], rax
- .L92:
- mov rax, QWORD PTR [rbp-16]
- mov rdx, QWORD PTR [rbp-8]
- mov QWORD PTR [rax+16], rdx
- mov rax, QWORD PTR [rbp-24]
- mov rdx, QWORD PTR [rbp-16]
- mov QWORD PTR [rax+8], rdx
- cmp QWORD PTR [rbp-8], 0
- je .L94
- mov rcx, QWORD PTR [rbp-16]
- mov rax, QWORD PTR [rbp-8]
- mov edx, 1
- mov rsi, rcx
- mov rdi, rax
- call rb_set_parent_color(rb_node*, rb_node*, int)
- .L94:
- mov rdx, QWORD PTR [rbp-40]
- mov rsi, QWORD PTR [rbp-24]
- mov rax, QWORD PTR [rbp-16]
- mov ecx, 0
- mov rdi, rax
- call __rb_rotate_set_parents(rb_node*, rb_node*, rb_root*, int)
- mov rcx, QWORD PTR [rbp-24]
- mov rdx, QWORD PTR [rbp-16]
- mov rax, QWORD PTR [rbp-32]
- mov rsi, rcx
- mov rdi, rdx
- call rax
- jmp .L86
- .L89:
- mov rax, QWORD PTR [rbp-16]
- mov rax, QWORD PTR [rax+16]
- mov QWORD PTR [rbp-8], rax
- cmp QWORD PTR [rbp-8], 0
- je .L95
- mov rax, QWORD PTR [rbp-8]
- mov rax, QWORD PTR [rax]
- and eax, 1
- test rax, rax
- jne .L95
- mov rcx, QWORD PTR [rbp-16]
- mov rax, QWORD PTR [rbp-8]
- mov edx, 1
- mov rsi, rcx
- mov rdi, rax
- call rb_set_parent_color(rb_node*, rb_node*, int)
- mov rcx, QWORD PTR [rbp-16]
- mov rax, QWORD PTR [rbp-24]
- mov edx, 1
- mov rsi, rcx
- mov rdi, rax
- call rb_set_parent_color(rb_node*, rb_node*, int)
- mov rax, QWORD PTR [rbp-16]
- mov QWORD PTR [rbp-48], rax
- mov rax, QWORD PTR [rbp-48]
- mov rax, QWORD PTR [rax]
- and rax, -4
- mov QWORD PTR [rbp-24], rax
- mov rcx, QWORD PTR [rbp-24]
- mov rax, QWORD PTR [rbp-48]
- mov edx, 0
- mov rsi, rcx
- mov rdi, rax
- call rb_set_parent_color(rb_node*, rb_node*, int)
- jmp .L99
- .L95:
- mov rax, QWORD PTR [rbp-24]
- mov rax, QWORD PTR [rax+16]
- mov QWORD PTR [rbp-8], rax
- mov rax, QWORD PTR [rbp-48]
- cmp rax, QWORD PTR [rbp-8]
- jne .L96
- mov rax, QWORD PTR [rbp-48]
- mov rax, QWORD PTR [rax+8]
- mov QWORD PTR [rbp-8], rax
- mov rax, QWORD PTR [rbp-24]
- mov rdx, QWORD PTR [rbp-8]
- mov QWORD PTR [rax+16], rdx
- mov rax, QWORD PTR [rbp-48]
- mov rdx, QWORD PTR [rbp-24]
- mov QWORD PTR [rax+8], rdx
- cmp QWORD PTR [rbp-8], 0
- je .L97
- mov rcx, QWORD PTR [rbp-24]
- mov rax, QWORD PTR [rbp-8]
- mov edx, 1
- mov rsi, rcx
- mov rdi, rax
- call rb_set_parent_color(rb_node*, rb_node*, int)
- .L97:
- mov rcx, QWORD PTR [rbp-48]
- mov rax, QWORD PTR [rbp-24]
- mov edx, 0
- mov rsi, rcx
- mov rdi, rax
- call rb_set_parent_color(rb_node*, rb_node*, int)
- mov rcx, QWORD PTR [rbp-48]
- mov rdx, QWORD PTR [rbp-24]
- mov rax, QWORD PTR [rbp-32]
- mov rsi, rcx
- mov rdi, rdx
- call rax
- mov rax, QWORD PTR [rbp-48]
- mov QWORD PTR [rbp-24], rax
- mov rax, QWORD PTR [rbp-48]
- mov rax, QWORD PTR [rax+16]
- mov QWORD PTR [rbp-8], rax
- .L96:
- mov rax, QWORD PTR [rbp-16]
- mov rdx, QWORD PTR [rbp-8]
- mov QWORD PTR [rax+8], rdx
- mov rax, QWORD PTR [rbp-24]
- mov rdx, QWORD PTR [rbp-16]
- mov QWORD PTR [rax+16], rdx
- cmp QWORD PTR [rbp-8], 0
- je .L98
- mov rcx, QWORD PTR [rbp-16]
- mov rax, QWORD PTR [rbp-8]
- mov edx, 1
- mov rsi, rcx
- mov rdi, rax
- call rb_set_parent_color(rb_node*, rb_node*, int)
- .L98:
- mov rdx, QWORD PTR [rbp-40]
- mov rsi, QWORD PTR [rbp-24]
- mov rax, QWORD PTR [rbp-16]
- mov ecx, 0
- mov rdi, rax
- call __rb_rotate_set_parents(rb_node*, rb_node*, rb_root*, int)
- mov rcx, QWORD PTR [rbp-24]
- mov rdx, QWORD PTR [rbp-16]
- mov rax, QWORD PTR [rbp-32]
- mov rsi, rcx
- mov rdi, rdx
- call rax
- .L86:
- leave
- ret
- rb_first(rb_root const*):
- push rbp
- mov rbp, rsp
- mov QWORD PTR [rbp-24], rdi
- mov rax, QWORD PTR [rbp-24]
- mov rax, QWORD PTR [rax]
- mov QWORD PTR [rbp-8], rax
- cmp QWORD PTR [rbp-8], 0
- jne .L101
- mov eax, 0
- jmp .L102
- .L101:
- jmp .L103
- .L104:
- mov rax, QWORD PTR [rbp-8]
- mov rax, QWORD PTR [rax+16]
- mov QWORD PTR [rbp-8], rax
- .L103:
- mov rax, QWORD PTR [rbp-8]
- mov rax, QWORD PTR [rax+16]
- test rax, rax
- jne .L104
- mov rax, QWORD PTR [rbp-8]
- .L102:
- pop rbp
- ret
- rb_last(rb_root const*):
- push rbp
- mov rbp, rsp
- mov QWORD PTR [rbp-24], rdi
- mov rax, QWORD PTR [rbp-24]
- mov rax, QWORD PTR [rax]
- mov QWORD PTR [rbp-8], rax
- cmp QWORD PTR [rbp-8], 0
- jne .L106
- mov eax, 0
- jmp .L107
- .L106:
- jmp .L108
- .L109:
- mov rax, QWORD PTR [rbp-8]
- mov rax, QWORD PTR [rax+8]
- mov QWORD PTR [rbp-8], rax
- .L108:
- mov rax, QWORD PTR [rbp-8]
- mov rax, QWORD PTR [rax+8]
- test rax, rax
- jne .L109
- mov rax, QWORD PTR [rbp-8]
- .L107:
- pop rbp
- ret
- rb_next(rb_node const*):
- push rbp
- mov rbp, rsp
- mov QWORD PTR [rbp-24], rdi
- mov rax, QWORD PTR [rbp-24]
- mov rdx, QWORD PTR [rax]
- mov rax, QWORD PTR [rbp-24]
- cmp rdx, rax
- jne .L111
- mov eax, 0
- jmp .L112
- .L111:
- mov rax, QWORD PTR [rbp-24]
- mov rax, QWORD PTR [rax+8]
- test rax, rax
- je .L113
- mov rax, QWORD PTR [rbp-24]
- mov rax, QWORD PTR [rax+8]
- mov QWORD PTR [rbp-24], rax
- jmp .L114
- .L115:
- mov rax, QWORD PTR [rbp-24]
- mov rax, QWORD PTR [rax+16]
- mov QWORD PTR [rbp-24], rax
- .L114:
- mov rax, QWORD PTR [rbp-24]
- mov rax, QWORD PTR [rax+16]
- test rax, rax
- jne .L115
- mov rax, QWORD PTR [rbp-24]
- jmp .L112
- .L113:
- jmp .L116
- .L119:
- mov rax, QWORD PTR [rbp-8]
- mov QWORD PTR [rbp-24], rax
- .L116:
- mov rax, QWORD PTR [rbp-24]
- mov rax, QWORD PTR [rax]
- and rax, -4
- mov QWORD PTR [rbp-8], rax
- cmp QWORD PTR [rbp-8], 0
- je .L117
- mov rax, QWORD PTR [rbp-8]
- mov rax, QWORD PTR [rax+8]
- cmp rax, QWORD PTR [rbp-24]
- jne .L117
- mov eax, 1
- jmp .L118
- .L117:
- mov eax, 0
- .L118:
- test al, al
- jne .L119
- mov rax, QWORD PTR [rbp-8]
- .L112:
- pop rbp
- ret
- rb_prev(rb_node const*):
- push rbp
- mov rbp, rsp
- mov QWORD PTR [rbp-24], rdi
- mov rax, QWORD PTR [rbp-24]
- mov rdx, QWORD PTR [rax]
- mov rax, QWORD PTR [rbp-24]
- cmp rdx, rax
- jne .L121
- mov eax, 0
- jmp .L122
- .L121:
- mov rax, QWORD PTR [rbp-24]
- mov rax, QWORD PTR [rax+16]
- test rax, rax
- je .L123
- mov rax, QWORD PTR [rbp-24]
- mov rax, QWORD PTR [rax+16]
- mov QWORD PTR [rbp-24], rax
- jmp .L124
- .L125:
- mov rax, QWORD PTR [rbp-24]
- mov rax, QWORD PTR [rax+8]
- mov QWORD PTR [rbp-24], rax
- .L124:
- mov rax, QWORD PTR [rbp-24]
- mov rax, QWORD PTR [rax+8]
- test rax, rax
- jne .L125
- mov rax, QWORD PTR [rbp-24]
- jmp .L122
- .L123:
- jmp .L126
- .L129:
- mov rax, QWORD PTR [rbp-8]
- mov QWORD PTR [rbp-24], rax
- .L126:
- mov rax, QWORD PTR [rbp-24]
- mov rax, QWORD PTR [rax]
- and rax, -4
- mov QWORD PTR [rbp-8], rax
- cmp QWORD PTR [rbp-8], 0
- je .L127
- mov rax, QWORD PTR [rbp-8]
- mov rax, QWORD PTR [rax+16]
- cmp rax, QWORD PTR [rbp-24]
- jne .L127
- mov eax, 1
- jmp .L128
- .L127:
- mov eax, 0
- .L128:
- test al, al
- jne .L129
- mov rax, QWORD PTR [rbp-8]
- .L122:
- pop rbp
- ret
- rb_replace_node(rb_node*, rb_node*, rb_root*):
- push rbp
- mov rbp, rsp
- sub rsp, 40
- mov QWORD PTR [rbp-24], rdi
- mov QWORD PTR [rbp-32], rsi
- mov QWORD PTR [rbp-40], rdx
- mov rax, QWORD PTR [rbp-24]
- mov rax, QWORD PTR [rax]
- and rax, -4
- mov QWORD PTR [rbp-8], rax
- mov rcx, QWORD PTR [rbp-40]
- mov rdx, QWORD PTR [rbp-8]
- mov rsi, QWORD PTR [rbp-32]
- mov rax, QWORD PTR [rbp-24]
- mov rdi, rax
- call __rb_change_child(rb_node*, rb_node*, rb_node*, rb_root*)
- mov rax, QWORD PTR [rbp-24]
- mov rax, QWORD PTR [rax+16]
- test rax, rax
- je .L131
- mov rax, QWORD PTR [rbp-24]
- mov rax, QWORD PTR [rax+16]
- mov rdx, QWORD PTR [rbp-32]
- mov rsi, rdx
- mov rdi, rax
- call rb_set_parent(rb_node*, rb_node*)
- .L131:
- mov rax, QWORD PTR [rbp-24]
- mov rax, QWORD PTR [rax+8]
- test rax, rax
- je .L132
- mov rax, QWORD PTR [rbp-24]
- mov rax, QWORD PTR [rax+8]
- mov rdx, QWORD PTR [rbp-32]
- mov rsi, rdx
- mov rdi, rax
- call rb_set_parent(rb_node*, rb_node*)
- .L132:
- mov rax, QWORD PTR [rbp-32]
- mov rdx, QWORD PTR [rbp-24]
- mov rcx, QWORD PTR [rdx]
- mov QWORD PTR [rax], rcx
- mov rcx, QWORD PTR [rdx+8]
- mov QWORD PTR [rax+8], rcx
- mov rdx, QWORD PTR [rdx+16]
- mov QWORD PTR [rax+16], rdx
- leave
- ret
- rb_left_deepest_node(rb_node const*):
- push rbp
- mov rbp, rsp
- mov QWORD PTR [rbp-8], rdi
- .L138:
- mov rax, QWORD PTR [rbp-8]
- mov rax, QWORD PTR [rax+16]
- test rax, rax
- je .L134
- mov rax, QWORD PTR [rbp-8]
- mov rax, QWORD PTR [rax+16]
- mov QWORD PTR [rbp-8], rax
- jmp .L135
- .L134:
- mov rax, QWORD PTR [rbp-8]
- mov rax, QWORD PTR [rax+8]
- test rax, rax
- je .L136
- mov rax, QWORD PTR [rbp-8]
- mov rax, QWORD PTR [rax+8]
- mov QWORD PTR [rbp-8], rax
- jmp .L135
- .L136:
- mov rax, QWORD PTR [rbp-8]
- jmp .L139
- .L135:
- jmp .L138
- .L139:
- pop rbp
- ret
- rb_next_postorder(rb_node const*):
- push rbp
- mov rbp, rsp
- sub rsp, 24
- mov QWORD PTR [rbp-24], rdi
- cmp QWORD PTR [rbp-24], 0
- jne .L141
- mov eax, 0
- jmp .L142
- .L141:
- mov rax, QWORD PTR [rbp-24]
- mov rax, QWORD PTR [rax]
- and rax, -4
- mov QWORD PTR [rbp-8], rax
- cmp QWORD PTR [rbp-8], 0
- je .L143
- mov rax, QWORD PTR [rbp-8]
- mov rax, QWORD PTR [rax+16]
- cmp rax, QWORD PTR [rbp-24]
- jne .L143
- mov rax, QWORD PTR [rbp-8]
- mov rax, QWORD PTR [rax+8]
- test rax, rax
- je .L143
- mov rax, QWORD PTR [rbp-8]
- mov rax, QWORD PTR [rax+8]
- mov rdi, rax
- call rb_left_deepest_node(rb_node const*)
- jmp .L142
- .L143:
- mov rax, QWORD PTR [rbp-8]
- .L142:
- leave
- ret
- rb_first_postorder(rb_root const*):
- push rbp
- mov rbp, rsp
- sub rsp, 8
- mov QWORD PTR [rbp-8], rdi
- mov rax, QWORD PTR [rbp-8]
- mov rax, QWORD PTR [rax]
- test rax, rax
- jne .L145
- mov eax, 0
- jmp .L146
- .L145:
- mov rax, QWORD PTR [rbp-8]
- mov rax, QWORD PTR [rax]
- mov rdi, rax
- call rb_left_deepest_node(rb_node const*)
- .L146:
- leave
- ret
- dummy_callbacks:
- .quad dummy_propagate(rb_node*, rb_node*)
- .quad dummy_copy(rb_node*, rb_node*)
- .quad dummy_rotate(rb_node*, rb_node*)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement