; assembly | /* r2dec pseudo code output */ | /* ball_attributecontainerlist.t/assume @ 0x414950 */ | #include | ; (fcn) method.void_BloombergLP::bslalg::RbTreeUtil::copyTree_BloombergLP::bslstl::TreeNodePool_BloombergLP::ball::Attribute__bsl::allocator_BloombergLP::ball.Attribute______BloombergLP::bslalg::RbTreeAnchor__BloombergLP::bslalg::RbTreeAnchor_const__BloombergL () | uint64_t method_void_BloombergLP::bslalg::RbTreeUtil::copyTree_BloombergLP::bslstl::TreeNodePool_BloombergLP::ball::Attribute_bsl::allocator_BloombergLP::ball_Attribute_BloombergLP::bslalg::RbTreeAnchor_BloombergLP::bslalg::RbTreeAnchor_const_BloombergL (int64_t arg3, int64_t arg2, int64_t arg1) { | int64_t var_8h; | int64_t var_10h; | int64_t var_18h; | int64_t var_20h; | int64_t var_28h; | int64_t var_30h; | rdx = arg3; | rsi = arg2; | rdi = arg1; | /* void BloombergLP::bslalg::RbTreeUtil::copyTree > >(BloombergLP::bslalg::RbTreeAnchor*, BloombergLP::bslalg::RbTreeAnchor const&, BloombergLP::bslstl::TreeNodePool >*) */ 0x00414950 push rbp | 0x00414951 push r15 | 0x00414953 push r14 | 0x00414955 push r13 | 0x00414957 push r12 | 0x00414959 push rbx | 0x0041495a sub rsp, 0x38 | 0x0041495e mov rbx, rdi | rbx = rdi; 0x00414961 mov r14, qword [rsi + 8] | r14 = *((rsi + 8)); 0x00414965 test r14, r14 | | if (r14 == 0) { 0x00414968 je 0x414a77 | goto label_2; | } 0x0041496e mov r15, rdx | r15 = rdx; 0x00414971 mov r13, rsi | r13 = rsi; 0x00414974 lea rsi, [r14 + 0x18] | 0x00414978 mov rdi, rdx | 0x0041497b call 0x413510 | rax = BloombergLP::bslalg::RbTreeNode*BloombergLP::bslstl::TreeNodePool>::emplaceIntoNewNode(BloombergLP::ball::Attributeconst&) (rdx, r14 + 0x18); 0x00414980 mov r12, rax | r12 = rax; 0x00414983 mov dword [rsp + 0x30], 1 | *((rsp + 0x30)) = 1; 0x0041498b mov qword [rsp + 0x28], 0 | *((rsp + 0x28)) = 0; 0x00414994 mov qword [rsp + 0x20], rax | *((rsp + 0x20)) = rax; 0x00414999 lea rax, [rsp + 0x18] | rax = rsp + 0x18; 0x0041499e mov qword [rsp], rax | *(rsp) = rax; 0x004149a2 mov qword [rsp + 8], r15 | *((rsp + 8)) = r15; 0x004149a7 mov rax, qword [r14] | rax = *(r14); 0x004149aa and eax, 1 | eax &= 1; 0x004149ad mov qword [rsp + 0x10], rbx | *((rsp + 0x10)) = rbx; 0x004149b2 or rax, rbx | rax |= rbx; 0x004149b5 mov qword [r12], rax | *(r12) = rax; 0x004149b9 xorps xmm0, xmm0 | __asm ("xorps xmm0, xmm0"); 0x004149bc movups xmmword [r12 + 8], xmm0 | __asm ("movups xmmword [r12 + 8], xmm0"); 0x004149c2 mov rbx, r12 | rbx = r12; 0x004149c5 jmp 0x4149e6 | | while (rbp == 0) { | label_0: 0x004149d0 mov rbp, qword [r14] | rbp = *(r14); 0x004149d3 and rbp, 0xfffffffffffffffe | rbp &= 0xfffffffffffffffe; 0x004149d7 mov rbx, qword [rbx] | rbx = *(rbx); 0x004149da and rbx, 0xfffffffffffffffe | rbx &= 0xfffffffffffffffe; | label_1: 0x004149de mov r14, rbp | r14 = rbp; 0x004149e1 cmp r13, rbp | | if (r13 == rbp) { 0x004149e4 je 0x414a49 | goto label_3; | } 0x004149e6 mov rbp, qword [r14 + 8] | rbp = *((r14 + 8)); 0x004149ea test rbp, rbp | | if (rbp != 0) { 0x004149ed je 0x4149f6 | 0x004149ef cmp qword [rbx + 8], 0 | | if (*((rbx + 8)) == 0) { 0x004149f4 je 0x414a20 | goto label_4; | } | } 0x004149f6 mov rbp, qword [r14 + 0x10] | rbp = *((r14 + 0x10)); 0x004149fa test rbp, rbp | 0x004149fd je 0x4149d0 | | } 0x004149ff cmp qword [rbx + 0x10], 0 | | if (*((rbx + 0x10)) != 0) { 0x00414a04 jne 0x4149d0 | goto label_0; | } 0x00414a06 lea rsi, [rbp + 0x18] | 0x00414a0a mov rdi, r15 | 0x00414a0d call 0x413510 | rax = BloombergLP::bslalg::RbTreeNode*BloombergLP::bslstl::TreeNodePool>::emplaceIntoNewNode(BloombergLP::ball::Attributeconst&) (r15, rbp + 0x18); 0x00414a12 mov qword [rbx + 0x10], rax | *((rbx + 0x10)) = rax; 0x00414a16 jmp 0x414a30 | goto label_5; | label_4: 0x00414a20 lea rsi, [rbp + 0x18] | 0x00414a24 mov rdi, r15 | 0x00414a27 call 0x413510 | rax = BloombergLP::bslalg::RbTreeNode*BloombergLP::bslstl::TreeNodePool>::emplaceIntoNewNode(BloombergLP::ball::Attributeconst&) (r15, rbp + 0x18); 0x00414a2c mov qword [rbx + 8], rax | *((rbx + 8)) = rax; | label_5: 0x00414a30 mov rcx, qword [rbp] | rcx = *(rbp); 0x00414a34 and ecx, 1 | ecx &= 1; 0x00414a37 or rcx, rbx | rcx |= rbx; 0x00414a3a mov qword [rax], rcx | *(rax) = rcx; 0x00414a3d xorps xmm0, xmm0 | __asm ("xorps xmm0, xmm0"); 0x00414a40 movups xmmword [rax + 8], xmm0 | __asm ("movups xmmword [rax + 8], xmm0"); 0x00414a44 mov rbx, rax | rbx = rax; 0x00414a47 jmp 0x4149de | goto label_1; | label_3: 0x00414a49 mov qword [rsp], 0 | *(rsp) = 0; 0x00414a51 mov rdi, r12 | 0x00414a54 call 0x418300 | rax = BloombergLP::bslalg::RbTreeUtil::leftmost(BloombergLP::bslalg::RbTreeNodeconst*) (r12); 0x00414a59 mov ecx, dword [r13 + 0x18] | ecx = *((r13 + 0x18)); 0x00414a5d mov rdx, qword [rsp + 0x10] | rdx = *((rsp + 0x10)); 0x00414a62 mov qword [rdx + 8], r12 | *((rdx + 8)) = r12; 0x00414a66 mov qword [rdx + 0x10], rax | *((rdx + 0x10)) = rax; 0x00414a6a mov dword [rdx + 0x18], ecx | *((rdx + 0x18)) = ecx; 0x00414a6d mov rdi, rsp | 0x00414a70 call 0x414ab0 | BloombergLP::bslalg::RbTreeUtilTreeProctor>>::~RbTreeUtilTreeProctor() (rsp); 0x00414a75 jmp 0x414a8a | goto label_6; | label_2: 0x00414a77 mov qword [rbx + 8], 0 | *((rbx + 8)) = 0; 0x00414a7f mov qword [rbx + 0x10], rbx | *((rbx + 0x10)) = rbx; 0x00414a83 mov dword [rbx + 0x18], 0 | *((rbx + 0x18)) = 0; | label_6: 0x00414a8a add rsp, 0x38 | 0x00414a8e pop rbx | 0x00414a8f pop r12 | 0x00414a91 pop r13 | 0x00414a93 pop r14 | 0x00414a95 pop r15 | 0x00414a97 pop rbp | 0x00414a98 ret | return rax; | }