; assembly | /* r2dec pseudo code output */ | /* balm_collectorrepository.t/none @ 0x41b260 */ | #include | ; (fcn) method.BloombergLP::balm::MetricRegistry.insertId_char_const__char_const_ () | int64_t method_BloombergLP::balm::MetricRegistry_insertId_char_const_char_const_ (int64_t arg4, int64_t arg3, int64_t arg2, int64_t arg1) { | int64_t var_8h; | int64_t var_10h; | char * s2; | int64_t var_20h; | uint32_t var_28h; | int64_t var_30h; | uint32_t var_38h; | uint32_t var_40h; | int64_t var_48h; | int64_t var_50h; | int64_t var_58h; | int64_t var_60h; | int64_t var_68h; | int64_t var_70h; | rcx = arg4; | rdx = arg3; | rsi = arg2; | rdi = arg1; | /* BloombergLP::balm::MetricRegistry::insertId(char const*, char const*) */ 0x0041b260 push rbp | 0x0041b261 push r15 | 0x0041b263 push r14 | 0x0041b265 push r13 | 0x0041b267 push r12 | 0x0041b269 push rbx | 0x0041b26a sub rsp, 0x78 | 0x0041b26e mov r15, rcx | r15 = rcx; 0x0041b271 mov rbp, rdx | 0x0041b274 mov r12, rsi | r12 = rsi; 0x0041b277 mov r13, rdi | r13 = rdi; 0x0041b27a mov rax, qword [rip + 0x24fb97] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x0041b281 test rax, rax | | if (rax == 0) { 0x0041b284 jne 0x41b28b | 0x0041b286 call 0x424600 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); | } 0x0041b28b mov qword [rsp + 0x20], 0 | *((rsp + 0x20)) = 0; 0x0041b294 mov qword [rsp + 0x40], 0x17 | *((rsp + 0x40)) = 0x17; 0x0041b29d mov qword [rsp + 0x48], rax | *((rsp + 0x48)) = rax; 0x0041b2a2 mov rdi, rbp | 0x0041b2a5 call 0x403fc0 | rax = strlen (rbp); 0x0041b2aa mov qword [rsp + 0x38], 0 | *((rsp + 0x38)) = 0; 0x0041b2b3 lea rbx, [rsp + 0x20] | rbx = rsp + 0x20; 0x0041b2b8 mov ecx, 0x44d4e0 | 0x0041b2bd mov rdi, rbx | 0x0041b2c0 mov qword [rsp + 0x50], rbp | *((rsp + 0x50)) = rbp; 0x0041b2c5 mov rsi, rbp | 0x0041b2c8 mov rdx, rax | 0x0041b2cb call 0x428760 | bsl::basic_string,bsl::allocator>::privateAppend(char const*,unsigned long,char const*) (rbx, rbp, rax, "string<...>::assign(char*...): string too long"); 0x0041b2d0 lea r14, [r12 + 0x20] | r14 = r12 + 0x20; 0x0041b2d5 mov rdi, rsp | 0x0041b2d8 mov rsi, r14 | 0x0041b2db mov rdx, r12 | 0x0041b2de mov rcx, rbx | rcx = rbx; 0x0041b2e1 call 0x41db00 | rax = BloombergLP::bslalg::RbTreeNode*BloombergLP::bslalg::RbTreeUtil::findUniqueInsertLocation,bsl::allocator>,std::_1::less,bsl::allocator>>>,bsl::basic_string,bsl::allocator>>(int*,BloombergLP::bslalg::RbTreeAnchor*,BloombergLP::bslstl::SetComparator,bsl::allocator>,std::_1::less,bsl::allocator>>>&,bsl::basic_string,bsl::allocator>const&) (rsp, r14, r12); 0x0041b2e6 mov rbp, rax | 0x0041b2e9 cmp dword [rsp], 0 | | if (*(rsp) != 0) { 0x0041b2ed je 0x41b316 | 0x0041b2ef lea rsi, [rsp + 0x20] | 0x0041b2f4 mov rdi, r12 | 0x0041b2f7 call 0x41dc70 | rax = BloombergLP::bslalg::RbTreeNode*BloombergLP::bslstl::TreeNodePool,bsl::allocator>,bsl::allocator,bsl::allocator>>>::emplaceIntoNewNode,bsl::allocator>>(bsl::basic_string,bsl::allocator>&&) (r12, rsp + 0x20); 0x0041b2fc mov rbx, rax | rbx = rax; 0x0041b2ff mov edx, dword [rsp] | 0x0041b302 shr edx, 0x1f | edx >>= 0x1f; 0x0041b305 mov rdi, r14 | 0x0041b308 mov rsi, rbp | 0x0041b30b mov rcx, rax | rcx = rax; 0x0041b30e call 0x422ed0 | BloombergLP::bslalg::RbTreeUtil::insertAt(BloombergLP::bslalg::RbTreeAnchor*,BloombergLP::bslalg::RbTreeNode*,bool,BloombergLP::bslalg::RbTreeNode*) (r14, rbp, *(rsp)); 0x0041b313 mov rbp, rbx | | } 0x0041b316 mov qword [rsp + 0x58], r13 | *((rsp + 0x58)) = r13; 0x0041b31b lea r13, [rbp + 0x18] | r13 = rbp + 0x18; 0x0041b31f cmp qword [rbp + 0x38], 0x17 | | if (*((rbp + 0x38)) != 0x17) { 0x0041b324 je 0x41b32a | 0x0041b326 mov r13, qword [r13] | r13 = *(r13); | } 0x0041b32a cmp qword [rsp + 0x40], 0x17 | | if (*((rsp + 0x40)) != 0x17) { 0x0041b330 je 0x41b342 | 0x0041b332 mov rsi, qword [rsp + 0x20] | rsi = *((rsp + 0x20)); 0x0041b337 mov rdi, qword [rsp + 0x48] | rdi = *((rsp + 0x48)); 0x0041b33c mov rax, qword [rdi] | rax = *(rdi); 0x0041b33f call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x0041b342 mov rax, qword [rip + 0x24facf] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x0041b349 test rax, rax | | if (rax == 0) { 0x0041b34c jne 0x41b353 | 0x0041b34e call 0x424600 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); | } 0x0041b353 mov qword [rsp + 0x20], 0 | *((rsp + 0x20)) = 0; 0x0041b35c mov qword [rsp + 0x40], 0x17 | *((rsp + 0x40)) = 0x17; 0x0041b365 mov qword [rsp + 0x48], rax | *((rsp + 0x48)) = rax; 0x0041b36a mov rdi, r15 | 0x0041b36d call 0x403fc0 | rax = strlen (r15); 0x0041b372 mov qword [rsp + 0x38], 0 | *((rsp + 0x38)) = 0; 0x0041b37b lea rbx, [rsp + 0x20] | rbx = rsp + 0x20; 0x0041b380 mov ecx, 0x44d4e0 | 0x0041b385 mov rdi, rbx | 0x0041b388 mov rsi, r15 | 0x0041b38b mov rdx, rax | 0x0041b38e call 0x428760 | bsl::basic_string,bsl::allocator>::privateAppend(char const*,unsigned long,char const*) (rbx, r15, rax, "string<...>::assign(char*...): string too long"); 0x0041b393 mov rdi, rsp | 0x0041b396 mov rsi, r14 | 0x0041b399 mov rdx, r12 | 0x0041b39c mov rcx, rbx | rcx = rbx; 0x0041b39f call 0x41db00 | rax = BloombergLP::bslalg::RbTreeNode*BloombergLP::bslalg::RbTreeUtil::findUniqueInsertLocation,bsl::allocator>,std::_1::less,bsl::allocator>>>,bsl::basic_string,bsl::allocator>>(int*,BloombergLP::bslalg::RbTreeAnchor*,BloombergLP::bslstl::SetComparator,bsl::allocator>,std::_1::less,bsl::allocator>>>&,bsl::basic_string,bsl::allocator>const&) (rsp, r14, r12); 0x0041b3a4 mov rbp, rax | 0x0041b3a7 cmp dword [rsp], 0 | | if (*(rsp) != 0) { 0x0041b3ab je 0x41b3d4 | 0x0041b3ad lea rsi, [rsp + 0x20] | 0x0041b3b2 mov rdi, r12 | 0x0041b3b5 call 0x41dc70 | rax = BloombergLP::bslalg::RbTreeNode*BloombergLP::bslstl::TreeNodePool,bsl::allocator>,bsl::allocator,bsl::allocator>>>::emplaceIntoNewNode,bsl::allocator>>(bsl::basic_string,bsl::allocator>&&) (r12, rsp + 0x20); 0x0041b3ba mov rbx, rax | rbx = rax; 0x0041b3bd mov edx, dword [rsp] | 0x0041b3c0 shr edx, 0x1f | edx >>= 0x1f; 0x0041b3c3 mov rdi, r14 | 0x0041b3c6 mov rsi, rbp | 0x0041b3c9 mov rcx, rax | rcx = rax; 0x0041b3cc call 0x422ed0 | BloombergLP::bslalg::RbTreeUtil::insertAt(BloombergLP::bslalg::RbTreeAnchor*,BloombergLP::bslalg::RbTreeNode*,bool,BloombergLP::bslalg::RbTreeNode*) (r14, rbp, *(rsp)); 0x0041b3d1 mov rbp, rbx | | } 0x0041b3d4 lea r14, [rbp + 0x18] | r14 = rbp + 0x18; 0x0041b3d8 cmp qword [rbp + 0x38], 0x17 | | if (*((rbp + 0x38)) != 0x17) { 0x0041b3dd je 0x41b3e2 | 0x0041b3df mov r14, qword [r14] | r14 = *(r14); | } 0x0041b3e2 cmp qword [rsp + 0x40], 0x17 | | if (*((rsp + 0x40)) != 0x17) { 0x0041b3e8 je 0x41b3fa | 0x0041b3ea mov rsi, qword [rsp + 0x20] | rsi = *((rsp + 0x20)); 0x0041b3ef mov rdi, qword [rsp + 0x48] | rdi = *((rsp + 0x48)); 0x0041b3f4 mov rax, qword [rdi] | rax = *(rdi); 0x0041b3f7 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x0041b3fa mov qword [rsp + 0x68], r13 | *((rsp + 0x68)) = r13; 0x0041b3ff mov qword [rsp + 0x70], r14 | *((rsp + 0x70)) = r14; 0x0041b404 lea rbx, [r12 + 0x80] | rbx = r12 + 0x80; 0x0041b40c lea rsi, [rsp + 0x68] | rsi = rsp + 0x68; 0x0041b411 mov rdi, rbx | rdi = rbx; 0x0041b414 call 0x41d1c0 | rax = bsl::map,bsl::shared_ptr,BloombergLP::balm::MetricRegistry::CategoryAndNameLess,bsl::allocatorconst,bsl::shared_ptr>>>::find(bsl::pairconst&) (); 0x0041b419 lea rcx, [r12 + 0xa0] | rcx = r12 + 0xa0; 0x0041b421 cmp rax, rcx | | if (rax != rcx) { 0x0041b424 je 0x41b43c | 0x0041b426 mov rax, qword [rax + 0x28] | rax = *((rax + 0x28)); 0x0041b42a mov rbp, qword [rsp + 0x58] | rbp = *((rsp + 0x58)); 0x0041b42f mov qword [rbp], rax | *(rbp) = rax; 0x0041b433 mov byte [rbp + 8], 0 | *((rbp + 8)) = 0; 0x0041b437 jmp 0x41b6e8 | goto label_1; | } 0x0041b43c xorps xmm0, xmm0 | __asm ("xorps xmm0, xmm0"); 0x0041b43f movaps xmmword [rsp + 0x20], xmm0 | *((rsp + 0x20)) = xmm0; 0x0041b444 mov qword [rsp + 0x30], 0 | *((rsp + 0x30)) = 0; 0x0041b44d mov rax, qword [rip + 0x24f9c4] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x0041b454 test rax, rax | | if (rax == 0) { 0x0041b457 jne 0x41b45e | 0x0041b459 call 0x424600 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); | } 0x0041b45e mov qword [rsp + 0x38], rax | *((rsp + 0x38)) = rax; 0x0041b463 lea rsi, [rsp + 0x20] | 0x0041b468 mov rdi, r12 | 0x0041b46b mov rdx, qword [rsp + 0x50] | 0x0041b470 call 0x41b860 | rax = BloombergLP::balm::MetricRegistry::defaultUserData(bsl::vector>*,char const*)const (r12, rsp + 0x20, *((rsp + 0x50))); 0x0041b475 mov qword [rsp + 0x60], rbx | *((rsp + 0x60)) = rbx; 0x0041b47a mov rbx, qword [r12 + 0x68] | rbx = *((r12 + 0x68)); 0x0041b47f test rbx, rbx | | if (rbx == 0) { 0x0041b482 je 0x41b4c8 | goto label_2; | } 0x0041b484 lea r15, [r12 + 0x60] | r15 = r12 + 0x60; 0x0041b489 mov rbp, r15 | 0x0041b48c nop dword [rax] | | do { 0x0041b490 mov rdi, qword [rbx + 0x18] | 0x0041b494 mov rsi, r13 | 0x0041b497 call 0x4042b0 | eax = strcmp (*((rbx + 0x18)), r13); 0x0041b49c test eax, eax | 0x0041b49e cmovns rbp, rbx | __asm ("cmovns rbp, rbx"); 0x0041b4a2 shr eax, 0x1f | eax >>= 0x1f; 0x0041b4a5 mov rbx, qword [rbx + rax*8 + 8] | rbx = *((rbx + rax*8 + 8)); 0x0041b4aa test rbx, rbx | 0x0041b4ad jne 0x41b490 | | } while (rbx != 0); 0x0041b4af cmp rbp, r15 | | if (rbp != r15) { 0x0041b4b2 je 0x41b4c8 | 0x0041b4b4 mov rsi, qword [rbp + 0x18] | 0x0041b4b8 mov rdi, r13 | 0x0041b4bb call 0x4042b0 | eax = strcmp (r13, *((rbp + 0x18))); 0x0041b4c0 test eax, eax | | if (eax >= 0) { 0x0041b4c2 jns 0x41b554 | goto label_3; | } | } | label_2: 0x0041b4c8 mov rdi, qword [r12 + 0x188] | rdi = *((r12 + 0x188)); 0x0041b4d0 mov rax, qword [rdi] | rax = *(rdi); 0x0041b4d3 mov esi, 0x18 | esi = 0x18; 0x0041b4d8 call qword [rax + 0x10] | rax = uint64_t (*rax + 0x10)() (); 0x0041b4db mov rbp, rax | 0x0041b4de movzx eax, byte [r12 + 0xc0] | eax = *((r12 + 0xc0)); 0x0041b4e7 mov qword [rbp], r13 | *(rbp) = r13; 0x0041b4eb mov dword [rbp + 8], eax | *((rbp + 8)) = eax; 0x0041b4ee mov qword [rbp + 0x10], 0 | *((rbp + 0x10)) = 0; 0x0041b4f6 mov rdx, qword [r12 + 0x188] | 0x0041b4fe mov qword [rsp], rdx | *(rsp) = rdx; 0x0041b502 mov rsi, rsp | 0x0041b505 mov rdi, rbp | 0x0041b508 call 0x41deb0 | rax = BloombergLP::bslma::SharedPtrOutofplaceRep::makeOutofplaceRep(BloombergLP::balm::Category*,BloombergLP::bslma::Allocator*const&,BloombergLP::bslma::Allocator*) (rbp, rsp, *((r12 + 0x188))); 0x0041b50d mov rbx, rax | rbx = rax; 0x0041b510 lea rdi, [r12 + 0x40] | rdi = r12 + 0x40; 0x0041b515 mov qword [rsp], r13 | *(rsp) = r13; 0x0041b519 mov qword [rsp + 8], rbp | *((rsp + 8)) = rbp; 0x0041b51e mov qword [rsp + 0x10], rax | *((rsp + 0x10)) = rax; 0x0041b523 test rax, rax | | if (rax != 0) { 0x0041b526 je 0x41b52d | 0x0041b528 lock add dword [rbx + 8], 2 | *((rbx + 8)) += 2; | } 0x0041b52d mov rsi, rsp | 0x0041b530 call 0x41e010 | rax = bsl::pair>,BloombergLP::bslstl::TreeNode>>,long>,bool>bsl::map,BloombergLP::bdlb::CStringLess,bsl::allocator>>>::emplace>>(std::_1::pair>&&) (rdi, rsp); 0x0041b535 mov rbp, rax | 0x0041b538 mov rdi, qword [rsp + 0x10] | rdi = *((rsp + 0x10)); 0x0041b53d test rdi, rdi | | if (rdi != 0) { 0x0041b540 je 0x41b547 | 0x0041b542 call 0x424790 | BloombergLP::bslma::SharedPtrRep::releaseRef() (rdi); | } 0x0041b547 test rbx, rbx | | if (rbx != 0) { 0x0041b54a je 0x41b554 | 0x0041b54c mov rdi, rbx | 0x0041b54f call 0x424790 | BloombergLP::bslma::SharedPtrRep::releaseRef() (rbx); | } | label_3: 0x0041b554 mov r13, qword [r12 + 0x188] | r13 = *((r12 + 0x188)); 0x0041b55c mov rax, qword [r13] | rax = *(r13); 0x0041b560 mov esi, 0x70 | esi = 0x70; 0x0041b565 mov rdi, r13 | rdi = r13; 0x0041b568 call qword [rax + 0x10] | rax = uint64_t (*rax + 0x10)() (); 0x0041b56b mov rbx, rax | rbx = rax; 0x0041b56e mov rcx, qword [rbp + 0x20] | rcx = *((rbp + 0x20)); 0x0041b572 mov rax, qword [r12 + 0x188] | rax = *((r12 + 0x188)); 0x0041b57a mov qword [rbx], rcx | *(rbx) = rcx; 0x0041b57d mov qword [rbx + 8], r14 | *((rbx + 8)) = r14; 0x0041b581 mov dword [rbx + 0x10], 0 | *((rbx + 0x10)) = 0; 0x0041b588 xorps xmm0, xmm0 | __asm ("xorps xmm0, xmm0"); 0x0041b58b movups xmmword [rbx + 0x18], xmm0 | __asm ("movups xmmword [rbx + 0x18], xmm0"); 0x0041b58f test rax, rax | | if (rax == 0) { 0x0041b592 jne 0x41b5a8 | 0x0041b594 mov rax, qword [rip + 0x24f87d] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x0041b59b test rax, rax | | if (rax == 0) { 0x0041b59e jne 0x41b5a5 | 0x0041b5a0 call 0x424600 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); | } 0x0041b5a5 xorps xmm0, xmm0 | __asm ("xorps xmm0, xmm0"); | } 0x0041b5a8 movups xmmword [rbx + 0x28], xmm0 | __asm ("movups xmmword [rbx + 0x28], xmm0"); 0x0041b5ac mov qword [rbx + 0x38], 0 | *((rbx + 0x38)) = 0; 0x0041b5b4 mov qword [rbx + 0x40], rax | *((rbx + 0x40)) = rax; 0x0041b5b8 lea rbp, [rbx + 0x48] | rbp = rbx + 0x48; 0x0041b5bc mov rdi, rbp | rdi = rbp; 0x0041b5bf xor esi, esi | esi = 0; 0x0041b5c1 call 0x403f50 | pthread_mutex_init (); 0x0041b5c6 mov rdx, qword [r12 + 0x188] | 0x0041b5ce mov qword [rsp], rdx | *(rsp) = rdx; 0x0041b5d2 mov rsi, rsp | 0x0041b5d5 mov rdi, rbx | 0x0041b5d8 call 0x41e260 | rax = BloombergLP::bslma::SharedPtrOutofplaceRep::makeOutofplaceRep(BloombergLP::balm::MetricDescription*,BloombergLP::bslma::Allocator*const&,BloombergLP::bslma::Allocator*) (rbx, rsp, *((r12 + 0x188))); 0x0041b5dd mov qword [rsp + 0x50], rax | *((rsp + 0x50)) = rax; 0x0041b5e2 mov rax, qword [rsp + 0x20] | rax = *((rsp + 0x20)); 0x0041b5e7 cmp qword [rsp + 0x28], rax | | if (*((rsp + 0x28)) == rax) { 0x0041b5ec je 0x41b67a | goto label_4; | } 0x0041b5f2 mov r13, rbx | r13 = rbx; 0x0041b5f5 add r13, 0x28 | r13 += 0x28; 0x0041b5f9 mov r15d, 1 | r15d = 1; 0x0041b5ff xor r12d, r12d | r12d = 0; 0x0041b602 jmp 0x41b63e | | while (rax > r12) { | label_0: 0x0041b610 lea eax, [r15 - 1] | eax = r15 - 1; 0x0041b614 cdqe | rax = (int64_t) eax; 0x0041b616 mov qword [rcx + rax*8], r14 | *((rcx + rax*8)) = r14; 0x0041b61a mov rdi, rbp | rdi = rbp; 0x0041b61d call 0x4045c0 | pthread_mutex_unlock (); 0x0041b622 mov r12d, r15d | r12d = r15d; 0x0041b625 mov rax, qword [rsp + 0x20] | rax = *((rsp + 0x20)); 0x0041b62a mov rcx, qword [rsp + 0x28] | rcx = *((rsp + 0x28)); 0x0041b62f sub rcx, rax | rcx -= rax; 0x0041b632 sar rcx, 3 | rcx >>= 3; 0x0041b636 inc r15d | r15d++; 0x0041b639 cmp rcx, r12 | | if (rcx <= r12) { 0x0041b63c jbe 0x41b67a | goto label_4; | } 0x0041b63e mov r14, qword [rax + r12*8] | r14 = *((rax + r12*8)); 0x0041b642 mov rdi, rbp | rdi = rbp; 0x0041b645 call 0x4044e0 | pthread_mutex_lock (); 0x0041b64a mov rcx, qword [rbx + 0x28] | rcx = *((rbx + 0x28)); 0x0041b64e mov rax, qword [rbx + 0x30] | rax = *((rbx + 0x30)); 0x0041b652 sub rax, rcx | rax -= rcx; 0x0041b655 sar rax, 3 | rax >>= 3; 0x0041b659 cmp rax, r12 | 0x0041b65c ja 0x41b610 | | } 0x0041b65e movsxd rsi, r15d | rsi = (int64_t) r15d; 0x0041b661 mov qword [rsp], 0 | *(rsp) = 0; 0x0041b669 mov rdi, r13 | 0x0041b66c mov rdx, rsp | 0x0041b66f call 0x43e090 | bsl::vector>::resize(unsigned long,unsigned longconst&) (r13, rsi, rsp); 0x0041b674 mov rcx, qword [r13] | rcx = *(r13); 0x0041b678 jmp 0x41b610 | goto label_0; | label_4: 0x0041b67a movups xmm0, xmmword [rsp + 0x68] | __asm ("movups xmm0, xmmword [rsp + 0x68]"); 0x0041b67f movaps xmmword [rsp], xmm0 | *(rsp) = xmm0; 0x0041b683 mov qword [rsp + 0x10], rbx | *((rsp + 0x10)) = rbx; 0x0041b688 mov r14, qword [rsp + 0x50] | r14 = *((rsp + 0x50)); 0x0041b68d mov qword [rsp + 0x18], r14 | *((rsp + 0x18)) = r14; 0x0041b692 test r14, r14 | | if (r14 != 0) { 0x0041b695 je 0x41b69d | 0x0041b697 lock add dword [r14 + 8], 2 | *((r14 + 8)) += 2; | } 0x0041b69d mov rsi, rsp | rsi = rsp; 0x0041b6a0 mov rdi, qword [rsp + 0x60] | rdi = *((rsp + 0x60)); 0x0041b6a5 call 0x41e420 | _ZN3bsl3mapINS_4pairIPKcS3_EENS_10shared_ptrIN11BloombergLP4balm17MetricDescriptionEEENS7_14MetricRegistry19CategoryAndNameLessENS_9allocatorINS1_IKS4_S9_EEEEE7emplaceIJNSt3_14pairIS4_S9_EEEEENS1_INS6_6bslstl12TreeIteratorISE_NSL_8TreeNodeISE_EElEEbEEDp (); 0x0041b6aa mov rbp, qword [rsp + 0x58] | rbp = *((rsp + 0x58)); 0x0041b6af mov rdi, qword [rsp + 0x18] | rdi = *((rsp + 0x18)); 0x0041b6b4 test rdi, rdi | | if (rdi != 0) { 0x0041b6b7 je 0x41b6be | 0x0041b6b9 call 0x424790 | BloombergLP::bslma::SharedPtrRep::releaseRef() (rdi); | } 0x0041b6be mov qword [rbp], rbx | *(rbp) = rbx; 0x0041b6c2 mov byte [rbp + 8], 1 | *((rbp + 8)) = 1; 0x0041b6c6 test r14, r14 | | if (r14 != 0) { 0x0041b6c9 je 0x41b6d3 | 0x0041b6cb mov rdi, r14 | 0x0041b6ce call 0x424790 | BloombergLP::bslma::SharedPtrRep::releaseRef() (r14); | } 0x0041b6d3 mov rsi, qword [rsp + 0x20] | rsi = *((rsp + 0x20)); 0x0041b6d8 test rsi, rsi | | if (rsi != 0) { 0x0041b6db je 0x41b6e8 | 0x0041b6dd mov rdi, qword [rsp + 0x38] | rdi = *((rsp + 0x38)); 0x0041b6e2 mov rax, qword [rdi] | rax = *(rdi); 0x0041b6e5 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } | label_1: 0x0041b6e8 mov rax, rbp | rax = rbp; 0x0041b6eb add rsp, 0x78 | 0x0041b6ef pop rbx | 0x0041b6f0 pop r12 | 0x0041b6f2 pop r13 | 0x0041b6f4 pop r14 | 0x0041b6f6 pop r15 | 0x0041b6f8 pop rbp | 0x0041b6f9 ret | return rax; | }