; assembly | /* r2dec pseudo code output */ | /* balm_collectorrepository.t/assume @ 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 0x424490 | 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, 0x44d332 | 0x0041b2bd mov rdi, rbx | 0x0041b2c0 mov qword [rsp + 0x50], rbp | *((rsp + 0x50)) = rbp; 0x0041b2c5 mov rsi, rbp | 0x0041b2c8 mov rdx, rax | 0x0041b2cb call 0x4285d0 | 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 0x41daf0 | 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 0x41dc60 | 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 0x422d60 | 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 0x424490 | 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, 0x44d332 | 0x0041b385 mov rdi, rbx | 0x0041b388 mov rsi, r15 | 0x0041b38b mov rdx, rax | 0x0041b38e call 0x4285d0 | 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 0x41daf0 | 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 0x41dc60 | 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 0x422d60 | 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 0x41d1b0 | 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 0x41b43b | 0x0041b426 mov rax, qword [rax + 0x28] | rax = *((rax + 0x28)); 0x0041b42a mov rbx, qword [rsp + 0x58] | rbx = *((rsp + 0x58)); 0x0041b42f mov qword [rbx], rax | *(rbx) = rax; 0x0041b432 mov byte [rbx + 8], 0 | *((rbx + 8)) = 0; 0x0041b436 jmp 0x41b6d0 | goto label_1; | } 0x0041b43b xorps xmm0, xmm0 | __asm ("xorps xmm0, xmm0"); 0x0041b43e movaps xmmword [rsp + 0x20], xmm0 | *((rsp + 0x20)) = xmm0; 0x0041b443 mov qword [rsp + 0x30], 0 | *((rsp + 0x30)) = 0; 0x0041b44c mov rax, qword [rip + 0x24f9c5] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x0041b453 test rax, rax | | if (rax == 0) { 0x0041b456 jne 0x41b45d | 0x0041b458 call 0x424490 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); | } 0x0041b45d mov qword [rsp + 0x38], rax | *((rsp + 0x38)) = rax; 0x0041b462 lea rsi, [rsp + 0x20] | 0x0041b467 mov rdi, r12 | 0x0041b46a mov rdx, qword [rsp + 0x50] | 0x0041b46f call 0x41b850 | BloombergLP::balm::MetricRegistry::defaultUserData(bsl::vector>*,char const*)const (r12, rsp + 0x20, *((rsp + 0x50))); 0x0041b474 mov qword [rsp + 0x60], rbx | *((rsp + 0x60)) = rbx; 0x0041b479 mov rbx, qword [r12 + 0x68] | rbx = *((r12 + 0x68)); 0x0041b47e test rbx, rbx | | if (rbx == 0) { 0x0041b481 je 0x41b4c8 | goto label_2; | } 0x0041b483 lea r15, [r12 + 0x60] | r15 = r12 + 0x60; 0x0041b488 mov rbp, r15 | 0x0041b48b nop dword [rax + 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 0x41dea0 | 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 0x41e000 | 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 0x424620 | BloombergLP::bslma::SharedPtrRep::releaseRef() (rdi); | } 0x0041b547 test rbx, rbx | | if (rbx != 0) { 0x0041b54a je 0x41b554 | 0x0041b54c mov rdi, rbx | 0x0041b54f call 0x424620 | BloombergLP::bslma::SharedPtrRep::releaseRef() (rbx); | } | label_3: 0x0041b554 mov rbx, qword [r12 + 0x188] | rbx = *((r12 + 0x188)); 0x0041b55c mov rax, qword [rbx] | rax = *(rbx); 0x0041b55f mov esi, 0x70 | esi = 0x70; 0x0041b564 mov rdi, rbx | rdi = rbx; 0x0041b567 call qword [rax + 0x10] | rax = uint64_t (*rax + 0x10)() (); 0x0041b56a mov r13, rax | r13 = rax; 0x0041b56d mov rcx, qword [rbp + 0x20] | rcx = *((rbp + 0x20)); 0x0041b571 mov rax, qword [r12 + 0x188] | rax = *((r12 + 0x188)); 0x0041b579 mov qword [r13], rcx | *(r13) = rcx; 0x0041b57d mov qword [r13 + 8], r14 | *((r13 + 8)) = r14; 0x0041b581 mov dword [r13 + 0x10], 0 | *((r13 + 0x10)) = 0; 0x0041b589 xorps xmm0, xmm0 | __asm ("xorps xmm0, xmm0"); 0x0041b58c movups xmmword [r13 + 0x18], xmm0 | __asm ("movups xmmword [r13 + 0x18], xmm0"); 0x0041b591 test rax, rax | | if (rax == 0) { 0x0041b594 jne 0x41b5aa | 0x0041b596 mov rax, qword [rip + 0x24f87b] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x0041b59d test rax, rax | | if (rax == 0) { 0x0041b5a0 jne 0x41b5a7 | 0x0041b5a2 call 0x424490 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); | } 0x0041b5a7 xorps xmm0, xmm0 | __asm ("xorps xmm0, xmm0"); | } 0x0041b5aa movups xmmword [r13 + 0x28], xmm0 | __asm ("movups xmmword [r13 + 0x28], xmm0"); 0x0041b5af mov qword [r13 + 0x38], 0 | *((r13 + 0x38)) = 0; 0x0041b5b7 mov qword [r13 + 0x40], rax | *((r13 + 0x40)) = rax; 0x0041b5bb lea rbp, [r13 + 0x48] | rbp = r13 + 0x48; 0x0041b5bf mov rdi, rbp | rdi = rbp; 0x0041b5c2 xor esi, esi | esi = 0; 0x0041b5c4 call 0x403f50 | pthread_mutex_init (); 0x0041b5c9 mov rdx, qword [r12 + 0x188] | 0x0041b5d1 mov qword [rsp], rdx | *(rsp) = rdx; 0x0041b5d5 mov rsi, rsp | 0x0041b5d8 mov rdi, r13 | 0x0041b5db call 0x41e250 | rax = BloombergLP::bslma::SharedPtrOutofplaceRep::makeOutofplaceRep(BloombergLP::balm::MetricDescription*,BloombergLP::bslma::Allocator*const&,BloombergLP::bslma::Allocator*) (r13, rsp, *((r12 + 0x188))); 0x0041b5e0 mov qword [rsp + 0x50], rax | *((rsp + 0x50)) = rax; 0x0041b5e5 mov rax, qword [rsp + 0x20] | rax = *((rsp + 0x20)); 0x0041b5ea cmp qword [rsp + 0x28], rax | | if (*((rsp + 0x28)) == rax) { 0x0041b5ef je 0x41b664 | goto label_4; | } 0x0041b5f1 mov rbx, r13 | rbx = r13; 0x0041b5f4 add rbx, 0x28 | rbx += 0x28; 0x0041b5f8 xor r15d, r15d | r15d = 0; 0x0041b5fb jmp 0x41b625 | | while (rax > r15) { | label_0: 0x0041b600 mov qword [rcx + r15*8], r14 | *((rcx + r15*8)) = r14; 0x0041b604 mov rdi, rbp | rdi = rbp; 0x0041b607 call 0x4045c0 | pthread_mutex_unlock (); 0x0041b60c mov rax, qword [rsp + 0x20] | rax = *((rsp + 0x20)); 0x0041b611 mov rcx, qword [rsp + 0x28] | rcx = *((rsp + 0x28)); 0x0041b616 sub rcx, rax | rcx -= rax; 0x0041b619 sar rcx, 3 | rcx >>= 3; 0x0041b61d mov r15, r12 | r15 = r12; 0x0041b620 cmp rcx, r12 | | if (rcx <= r12) { 0x0041b623 jbe 0x41b664 | goto label_4; | } 0x0041b625 mov r14, qword [rax + r15*8] | r14 = *((rax + r15*8)); 0x0041b629 mov rdi, rbp | rdi = rbp; 0x0041b62c call 0x4044e0 | pthread_mutex_lock (); 0x0041b631 mov rcx, qword [r13 + 0x28] | rcx = *((r13 + 0x28)); 0x0041b635 mov rax, qword [r13 + 0x30] | rax = *((r13 + 0x30)); 0x0041b639 sub rax, rcx | rax -= rcx; 0x0041b63c sar rax, 3 | rax >>= 3; 0x0041b640 lea r12, [r15 + 1] | r12 = r15 + 1; 0x0041b644 cmp rax, r15 | 0x0041b647 ja 0x41b600 | | } 0x0041b649 mov qword [rsp], 0 | *(rsp) = 0; 0x0041b651 mov rdi, rbx | 0x0041b654 mov rsi, r12 | 0x0041b657 mov rdx, rsp | 0x0041b65a call 0x43df00 | bsl::vector>::resize(unsigned long,unsigned longconst&) (rbx, r12, rsp); 0x0041b65f mov rcx, qword [rbx] | rcx = *(rbx); 0x0041b662 jmp 0x41b600 | goto label_0; | label_4: 0x0041b664 movups xmm0, xmmword [rsp + 0x68] | __asm ("movups xmm0, xmmword [rsp + 0x68]"); 0x0041b669 movaps xmmword [rsp], xmm0 | *(rsp) = xmm0; 0x0041b66d mov qword [rsp + 0x10], r13 | *((rsp + 0x10)) = r13; 0x0041b672 mov rbp, qword [rsp + 0x50] | rbp = *((rsp + 0x50)); 0x0041b677 mov qword [rsp + 0x18], rbp | *((rsp + 0x18)) = rbp; 0x0041b67c test rbp, rbp | | if (rbp != 0) { 0x0041b67f je 0x41b686 | 0x0041b681 lock add dword [rbp + 8], 2 | *((rbp + 8)) += 2; | } 0x0041b686 mov rsi, rsp | rsi = rsp; 0x0041b689 mov rdi, qword [rsp + 0x60] | rdi = *((rsp + 0x60)); 0x0041b68e call 0x41e410 | _ZN3bsl3mapINS_4pairIPKcS3_EENS_10shared_ptrIN11BloombergLP4balm17MetricDescriptionEEENS7_14MetricRegistry19CategoryAndNameLessENS_9allocatorINS1_IKS4_S9_EEEEE7emplaceIJNSt3_14pairIS4_S9_EEEEENS1_INS6_6bslstl12TreeIteratorISE_NSL_8TreeNodeISE_EElEEbEEDp (); 0x0041b693 mov rdi, qword [rsp + 0x18] | rdi = *((rsp + 0x18)); 0x0041b698 test rdi, rdi | | if (rdi != 0) { 0x0041b69b je 0x41b6a2 | 0x0041b69d call 0x424620 | BloombergLP::bslma::SharedPtrRep::releaseRef() (rdi); | } 0x0041b6a2 mov rbx, qword [rsp + 0x58] | rbx = *((rsp + 0x58)); 0x0041b6a7 mov qword [rbx], r13 | *(rbx) = r13; 0x0041b6aa mov byte [rbx + 8], 1 | *((rbx + 8)) = 1; 0x0041b6ae test rbp, rbp | | if (rbp != 0) { 0x0041b6b1 je 0x41b6bb | 0x0041b6b3 mov rdi, rbp | 0x0041b6b6 call 0x424620 | BloombergLP::bslma::SharedPtrRep::releaseRef() (rbp); | } 0x0041b6bb mov rsi, qword [rsp + 0x20] | rsi = *((rsp + 0x20)); 0x0041b6c0 test rsi, rsi | | if (rsi != 0) { 0x0041b6c3 je 0x41b6d0 | 0x0041b6c5 mov rdi, qword [rsp + 0x38] | rdi = *((rsp + 0x38)); 0x0041b6ca mov rax, qword [rdi] | rax = *(rdi); 0x0041b6cd call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } | label_1: 0x0041b6d0 mov rax, rbx | rax = rbx; 0x0041b6d3 add rsp, 0x78 | 0x0041b6d7 pop rbx | 0x0041b6d8 pop r12 | 0x0041b6da pop r13 | 0x0041b6dc pop r14 | 0x0041b6de pop r15 | 0x0041b6e0 pop rbp | 0x0041b6e1 ret | return rax; | }