; assembly | /* r2dec pseudo code output */ | /* balcl_commandline.t/assume @ 0x46a700 */ | #include | ; (fcn) method.BloombergLP::balcl::TypeInfo.setConstraint_bsl::function_bool__BloombergLP::bdlt::Time_const__std::__1::basic_ostream_char__std::__1::char_traits_char______const_ () | int64_t method_BloombergLP::balcl::TypeInfo_setConstraint_bsl::function_bool_BloombergLP::bdlt::Time_const_std::_1::basic_ostream_char_std::_1::char_traits_char_const_ (int64_t arg2, uint32_t arg1) { | rsi = arg2; | rdi = arg1; | /* BloombergLP::balcl::TypeInfo::setConstraint(bsl::function >&)> const&) */ 0x0046a700 push r15 | 0x0046a702 push r14 | 0x0046a704 push r13 | 0x0046a706 push r12 | 0x0046a708 push rbx | 0x0046a709 mov r15, rsi | r15 = rsi; 0x0046a70c mov r13, rdi | r13 = rdi; 0x0046a70f cmp dword [rdi], 9 | | if (*(rdi) == 9) { 0x0046a712 jne 0x46a7f8 | 0x0046a718 mov r12, qword [r13 + 0x20] | r12 = *((r13 + 0x20)); 0x0046a71c mov rax, qword [r12] | rax = *(r12); 0x0046a720 mov esi, 0x60 | esi = 0x60; 0x0046a725 mov rdi, r12 | rdi = r12; 0x0046a728 call qword [rax + 0x10] | rax = uint64_t (*rax + 0x10)() (); 0x0046a72b mov rbx, rax | rbx = rax; 0x0046a72e mov r14, rax | r14 = rax; 0x0046a731 mov rax, qword [r13 + 0x20] | rax = *((r13 + 0x20)); 0x0046a735 mov qword [rbx], 0x4b0cf8 | *(rbx) = vtable.BloombergLP::balcl::_anonymous_namespace_::u::ScalarConstraint_BloombergLP::bdlt::Time__bsl::function_bool__BloombergLP::bdlt::Time_const__std::__1::basic_ostream_char__std::__1::char_traits_char_______9_.0; 0x0046a73c test rax, rax | | if (rax == 0) { 0x0046a73f jne 0x46a752 | 0x0046a741 mov rax, qword [rip + 0x29a4e0] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x0046a748 test rax, rax | | if (rax != 0) { 0x0046a74b jne 0x46a752 | goto label_0; | } 0x0046a74d call 0x47cad0 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); | } | label_0: 0x0046a752 mov qword [r14 + 0x40], rax | *((r14 + 0x40)) = rax; 0x0046a756 xorps xmm0, xmm0 | __asm ("xorps xmm0, xmm0"); 0x0046a759 movups xmmword [r14 + 0x48], xmm0 | __asm ("movups xmmword [r14 + 0x48], xmm0"); 0x0046a75e add rbx, 0x10 | rbx += 0x10; 0x0046a762 mov rdi, rbx | 0x0046a765 mov rsi, r15 | 0x0046a768 call 0x47f970 | BloombergLP::bslstl::Function_Rep::copyInit(BloombergLP::bslstl::Function_Repconst&) (rbx, r15); 0x0046a76d mov r15, qword [r13 + 0x20] | r15 = *((r13 + 0x20)); 0x0046a771 mov r12, r15 | r12 = *((r13 + 0x20)); 0x0046a774 test r15, r15 | | if (r15 == 0) { 0x0046a777 jne 0x46a78d | 0x0046a779 mov r12, qword [rip + 0x29a4a8] | r12 = BloombergLP::bslma::Default::s_defaultAllocator; 0x0046a780 test r12, r12 | | if (r12 != 0) { 0x0046a783 jne 0x46a78d | goto label_1; | } 0x0046a785 call 0x47cad0 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); 0x0046a78a mov r12, rax | r12 = rax; | } | label_1: 0x0046a78d mov rax, qword [r12] | rax = *(r12); 0x0046a791 mov esi, 0x28 | esi = 0x28; 0x0046a796 mov rdi, r12 | rdi = r12; 0x0046a799 call qword [rax + 0x10] | rax = uint64_t (*rax + 0x10)() (); 0x0046a79c mov rbx, rax | rbx = rax; 0x0046a79f movabs rax, 0x100000002 | rax = 0x100000002; 0x0046a7a9 mov qword [rbx + 8], rax | *((rbx + 8)) = rax; 0x0046a7ad mov qword [rbx], 0x4b39c8 | *(rbx) = method.BloombergLP::bslma::SharedPtrRep.SharedPtrRep__; 0x0046a7b4 test r15, r15 | | if (r15 == 0) { 0x0046a7b7 jne 0x46a7cd | 0x0046a7b9 mov rax, qword [rip + 0x29a468] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x0046a7c0 test rax, rax | | if (rax == 0) { 0x0046a7c3 jne 0x46a7ca | 0x0046a7c5 call 0x47cad0 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); | } 0x0046a7ca mov r15, rax | r15 = rax; | } 0x0046a7cd mov qword [rbx + 0x10], r15 | *((rbx + 0x10)) = r15; 0x0046a7d1 mov qword [rbx + 0x18], r14 | *((rbx + 0x18)) = r14; 0x0046a7d5 mov qword [rbx + 0x20], r12 | *((rbx + 0x20)) = r12; 0x0046a7d9 mov qword [r13 + 0x10], r14 | *((r13 + 0x10)) = r14; 0x0046a7dd mov rdi, qword [r13 + 0x18] | rdi = *((r13 + 0x18)); 0x0046a7e1 mov qword [r13 + 0x18], rbx | *((r13 + 0x18)) = rbx; 0x0046a7e5 test rdi, rdi | | if (rdi == 0) { 0x0046a7e8 je 0x46a8cf | goto label_2; | } 0x0046a7ee call 0x47d3f0 | BloombergLP::bslma::SharedPtrRep::releaseRef() (rdi); 0x0046a7f3 jmp 0x46a8cf | | } else { 0x0046a7f8 mov r12, qword [r13 + 0x20] | r12 = *((r13 + 0x20)); 0x0046a7fc mov rax, qword [r12] | rax = *(r12); 0x0046a800 mov esi, 0x60 | esi = 0x60; 0x0046a805 mov rdi, r12 | rdi = r12; 0x0046a808 call qword [rax + 0x10] | rax = uint64_t (*rax + 0x10)() (); 0x0046a80b mov rbx, rax | rbx = rax; 0x0046a80e mov r14, rax | r14 = rax; 0x0046a811 mov rax, qword [r13 + 0x20] | rax = *((r13 + 0x20)); 0x0046a815 mov qword [rbx], 0x4b1460 | *(rbx) = vtable.BloombergLP::balcl::_anonymous_namespace_::u::ArrayConstraint_BloombergLP::bdlt::Time__bsl::function_bool__BloombergLP::bdlt::Time_const__std::__1::basic_ostream_char__std::__1::char_traits_char_______17_.0; 0x0046a81c test rax, rax | | if (rax == 0) { 0x0046a81f jne 0x46a832 | 0x0046a821 mov rax, qword [rip + 0x29a400] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x0046a828 test rax, rax | | if (rax != 0) { 0x0046a82b jne 0x46a832 | goto label_3; | } 0x0046a82d call 0x47cad0 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); | } | label_3: 0x0046a832 mov qword [r14 + 0x40], rax | *((r14 + 0x40)) = rax; 0x0046a836 xorps xmm0, xmm0 | __asm ("xorps xmm0, xmm0"); 0x0046a839 movups xmmword [r14 + 0x48], xmm0 | __asm ("movups xmmword [r14 + 0x48], xmm0"); 0x0046a83e add rbx, 0x10 | rbx += 0x10; 0x0046a842 mov rdi, rbx | 0x0046a845 mov rsi, r15 | 0x0046a848 call 0x47f970 | BloombergLP::bslstl::Function_Rep::copyInit(BloombergLP::bslstl::Function_Repconst&) (rbx, r15); 0x0046a84d mov r15, qword [r13 + 0x20] | r15 = *((r13 + 0x20)); 0x0046a851 mov r12, r15 | r12 = *((r13 + 0x20)); 0x0046a854 test r15, r15 | | if (r15 == 0) { 0x0046a857 jne 0x46a86d | 0x0046a859 mov r12, qword [rip + 0x29a3c8] | r12 = BloombergLP::bslma::Default::s_defaultAllocator; 0x0046a860 test r12, r12 | | if (r12 != 0) { 0x0046a863 jne 0x46a86d | goto label_4; | } 0x0046a865 call 0x47cad0 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); 0x0046a86a mov r12, rax | r12 = rax; | } | label_4: 0x0046a86d mov rax, qword [r12] | rax = *(r12); 0x0046a871 mov esi, 0x28 | esi = 0x28; 0x0046a876 mov rdi, r12 | rdi = r12; 0x0046a879 call qword [rax + 0x10] | rax = uint64_t (*rax + 0x10)() (); 0x0046a87c mov rbx, rax | rbx = rax; 0x0046a87f movabs rax, 0x100000002 | rax = 0x100000002; 0x0046a889 mov qword [rbx + 8], rax | *((rbx + 8)) = rax; 0x0046a88d mov qword [rbx], 0x4b3af0 | *(rbx) = method.BloombergLP::bslma::SharedPtrRep.SharedPtrRep__; 0x0046a894 test r15, r15 | | if (r15 == 0) { 0x0046a897 jne 0x46a8ad | 0x0046a899 mov rax, qword [rip + 0x29a388] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x0046a8a0 test rax, rax | | if (rax == 0) { 0x0046a8a3 jne 0x46a8aa | 0x0046a8a5 call 0x47cad0 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); | } 0x0046a8aa mov r15, rax | r15 = rax; | } 0x0046a8ad mov qword [rbx + 0x10], r15 | *((rbx + 0x10)) = r15; 0x0046a8b1 mov qword [rbx + 0x18], r14 | *((rbx + 0x18)) = r14; 0x0046a8b5 mov qword [rbx + 0x20], r12 | *((rbx + 0x20)) = r12; 0x0046a8b9 mov qword [r13 + 0x10], r14 | *((r13 + 0x10)) = r14; 0x0046a8bd mov rdi, qword [r13 + 0x18] | rdi = *((r13 + 0x18)); 0x0046a8c1 mov qword [r13 + 0x18], rbx | *((r13 + 0x18)) = rbx; 0x0046a8c5 test rdi, rdi | | if (rdi == 0) { 0x0046a8c8 je 0x46a8cf | goto label_2; | } 0x0046a8ca call 0x47d3f0 | BloombergLP::bslma::SharedPtrRep::releaseRef() (rdi); | } | label_2: 0x0046a8cf pop rbx | 0x0046a8d0 pop r12 | 0x0046a8d2 pop r13 | 0x0046a8d4 pop r14 | 0x0046a8d6 pop r15 | 0x0046a8d8 ret | return rax; | }