; assembly | /* r2dec pseudo code output */ | /* balcl_commandline.t/assume @ 0x469fa0 */ | #include | ; (fcn) method.BloombergLP::balcl::TypeInfo.setConstraint_bsl::function_bool__BloombergLP::bdlt::Datetime_const__std::__1::basic_ostream_char__std::__1::char_traits_char______const_ () | int64_t method_BloombergLP::balcl::TypeInfo_setConstraint_bsl::function_bool_BloombergLP::bdlt::Datetime_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&) */ 0x00469fa0 push r15 | 0x00469fa2 push r14 | 0x00469fa4 push r13 | 0x00469fa6 push r12 | 0x00469fa8 push rbx | 0x00469fa9 mov r15, rsi | r15 = rsi; 0x00469fac mov r13, rdi | r13 = rdi; 0x00469faf cmp dword [rdi], 7 | | if (*(rdi) == 7) { 0x00469fb2 jne 0x46a098 | 0x00469fb8 mov r12, qword [r13 + 0x20] | r12 = *((r13 + 0x20)); 0x00469fbc mov rax, qword [r12] | rax = *(r12); 0x00469fc0 mov esi, 0x60 | esi = 0x60; 0x00469fc5 mov rdi, r12 | rdi = r12; 0x00469fc8 call qword [rax + 0x10] | rax = uint64_t (*rax + 0x10)() (); 0x00469fcb mov rbx, rax | rbx = rax; 0x00469fce mov r14, rax | r14 = rax; 0x00469fd1 mov rax, qword [r13 + 0x20] | rax = *((r13 + 0x20)); 0x00469fd5 mov qword [rbx], 0x4b0b10 | *(rbx) = vtable.BloombergLP::balcl::_anonymous_namespace_::u::ScalarConstraint_BloombergLP::bdlt::Datetime__bsl::function_bool__BloombergLP::bdlt::Datetime_const__std::__1::basic_ostream_char__std::__1::char_traits_char_______7_.0; 0x00469fdc test rax, rax | | if (rax == 0) { 0x00469fdf jne 0x469ff2 | 0x00469fe1 mov rax, qword [rip + 0x29ac40] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x00469fe8 test rax, rax | | if (rax != 0) { 0x00469feb jne 0x469ff2 | goto label_0; | } 0x00469fed call 0x47cad0 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); | } | label_0: 0x00469ff2 mov qword [r14 + 0x40], rax | *((r14 + 0x40)) = rax; 0x00469ff6 xorps xmm0, xmm0 | __asm ("xorps xmm0, xmm0"); 0x00469ff9 movups xmmword [r14 + 0x48], xmm0 | __asm ("movups xmmword [r14 + 0x48], xmm0"); 0x00469ffe add rbx, 0x10 | rbx += 0x10; 0x0046a002 mov rdi, rbx | 0x0046a005 mov rsi, r15 | 0x0046a008 call 0x47f970 | BloombergLP::bslstl::Function_Rep::copyInit(BloombergLP::bslstl::Function_Repconst&) (rbx, r15); 0x0046a00d mov r15, qword [r13 + 0x20] | r15 = *((r13 + 0x20)); 0x0046a011 mov r12, r15 | r12 = *((r13 + 0x20)); 0x0046a014 test r15, r15 | | if (r15 == 0) { 0x0046a017 jne 0x46a02d | 0x0046a019 mov r12, qword [rip + 0x29ac08] | r12 = BloombergLP::bslma::Default::s_defaultAllocator; 0x0046a020 test r12, r12 | | if (r12 != 0) { 0x0046a023 jne 0x46a02d | goto label_1; | } 0x0046a025 call 0x47cad0 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); 0x0046a02a mov r12, rax | r12 = rax; | } | label_1: 0x0046a02d mov rax, qword [r12] | rax = *(r12); 0x0046a031 mov esi, 0x28 | esi = 0x28; 0x0046a036 mov rdi, r12 | rdi = r12; 0x0046a039 call qword [rax + 0x10] | rax = uint64_t (*rax + 0x10)() (); 0x0046a03c mov rbx, rax | rbx = rax; 0x0046a03f movabs rax, 0x100000002 | rax = 0x100000002; 0x0046a049 mov qword [rbx + 8], rax | *((rbx + 8)) = rax; 0x0046a04d mov qword [rbx], 0x4b3528 | *(rbx) = method.BloombergLP::bslma::SharedPtrRep.SharedPtrRep__; 0x0046a054 test r15, r15 | | if (r15 == 0) { 0x0046a057 jne 0x46a06d | 0x0046a059 mov rax, qword [rip + 0x29abc8] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x0046a060 test rax, rax | | if (rax == 0) { 0x0046a063 jne 0x46a06a | 0x0046a065 call 0x47cad0 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); | } 0x0046a06a mov r15, rax | r15 = rax; | } 0x0046a06d mov qword [rbx + 0x10], r15 | *((rbx + 0x10)) = r15; 0x0046a071 mov qword [rbx + 0x18], r14 | *((rbx + 0x18)) = r14; 0x0046a075 mov qword [rbx + 0x20], r12 | *((rbx + 0x20)) = r12; 0x0046a079 mov qword [r13 + 0x10], r14 | *((r13 + 0x10)) = r14; 0x0046a07d mov rdi, qword [r13 + 0x18] | rdi = *((r13 + 0x18)); 0x0046a081 mov qword [r13 + 0x18], rbx | *((r13 + 0x18)) = rbx; 0x0046a085 test rdi, rdi | | if (rdi == 0) { 0x0046a088 je 0x46a16f | goto label_2; | } 0x0046a08e call 0x47d3f0 | BloombergLP::bslma::SharedPtrRep::releaseRef() (rdi); 0x0046a093 jmp 0x46a16f | | } else { 0x0046a098 mov r12, qword [r13 + 0x20] | r12 = *((r13 + 0x20)); 0x0046a09c mov rax, qword [r12] | rax = *(r12); 0x0046a0a0 mov esi, 0x60 | esi = 0x60; 0x0046a0a5 mov rdi, r12 | rdi = r12; 0x0046a0a8 call qword [rax + 0x10] | rax = uint64_t (*rax + 0x10)() (); 0x0046a0ab mov rbx, rax | rbx = rax; 0x0046a0ae mov r14, rax | r14 = rax; 0x0046a0b1 mov rax, qword [r13 + 0x20] | rax = *((r13 + 0x20)); 0x0046a0b5 mov qword [rbx], 0x4b1278 | *(rbx) = vtable.BloombergLP::balcl::_anonymous_namespace_::u::ArrayConstraint_BloombergLP::bdlt::Datetime__bsl::function_bool__BloombergLP::bdlt::Datetime_const__std::__1::basic_ostream_char__std::__1::char_traits_char_______15_.0; 0x0046a0bc test rax, rax | | if (rax == 0) { 0x0046a0bf jne 0x46a0d2 | 0x0046a0c1 mov rax, qword [rip + 0x29ab60] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x0046a0c8 test rax, rax | | if (rax != 0) { 0x0046a0cb jne 0x46a0d2 | goto label_3; | } 0x0046a0cd call 0x47cad0 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); | } | label_3: 0x0046a0d2 mov qword [r14 + 0x40], rax | *((r14 + 0x40)) = rax; 0x0046a0d6 xorps xmm0, xmm0 | __asm ("xorps xmm0, xmm0"); 0x0046a0d9 movups xmmword [r14 + 0x48], xmm0 | __asm ("movups xmmword [r14 + 0x48], xmm0"); 0x0046a0de add rbx, 0x10 | rbx += 0x10; 0x0046a0e2 mov rdi, rbx | 0x0046a0e5 mov rsi, r15 | 0x0046a0e8 call 0x47f970 | BloombergLP::bslstl::Function_Rep::copyInit(BloombergLP::bslstl::Function_Repconst&) (rbx, r15); 0x0046a0ed mov r15, qword [r13 + 0x20] | r15 = *((r13 + 0x20)); 0x0046a0f1 mov r12, r15 | r12 = *((r13 + 0x20)); 0x0046a0f4 test r15, r15 | | if (r15 == 0) { 0x0046a0f7 jne 0x46a10d | 0x0046a0f9 mov r12, qword [rip + 0x29ab28] | r12 = BloombergLP::bslma::Default::s_defaultAllocator; 0x0046a100 test r12, r12 | | if (r12 != 0) { 0x0046a103 jne 0x46a10d | goto label_4; | } 0x0046a105 call 0x47cad0 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); 0x0046a10a mov r12, rax | r12 = rax; | } | label_4: 0x0046a10d mov rax, qword [r12] | rax = *(r12); 0x0046a111 mov esi, 0x28 | esi = 0x28; 0x0046a116 mov rdi, r12 | rdi = r12; 0x0046a119 call qword [rax + 0x10] | rax = uint64_t (*rax + 0x10)() (); 0x0046a11c mov rbx, rax | rbx = rax; 0x0046a11f movabs rax, 0x100000002 | rax = 0x100000002; 0x0046a129 mov qword [rbx + 8], rax | *((rbx + 8)) = rax; 0x0046a12d mov qword [rbx], 0x4b3650 | *(rbx) = method.BloombergLP::bslma::SharedPtrRep.SharedPtrRep__; 0x0046a134 test r15, r15 | | if (r15 == 0) { 0x0046a137 jne 0x46a14d | 0x0046a139 mov rax, qword [rip + 0x29aae8] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x0046a140 test rax, rax | | if (rax == 0) { 0x0046a143 jne 0x46a14a | 0x0046a145 call 0x47cad0 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); | } 0x0046a14a mov r15, rax | r15 = rax; | } 0x0046a14d mov qword [rbx + 0x10], r15 | *((rbx + 0x10)) = r15; 0x0046a151 mov qword [rbx + 0x18], r14 | *((rbx + 0x18)) = r14; 0x0046a155 mov qword [rbx + 0x20], r12 | *((rbx + 0x20)) = r12; 0x0046a159 mov qword [r13 + 0x10], r14 | *((r13 + 0x10)) = r14; 0x0046a15d mov rdi, qword [r13 + 0x18] | rdi = *((r13 + 0x18)); 0x0046a161 mov qword [r13 + 0x18], rbx | *((r13 + 0x18)) = rbx; 0x0046a165 test rdi, rdi | | if (rdi == 0) { 0x0046a168 je 0x46a16f | goto label_2; | } 0x0046a16a call 0x47d3f0 | BloombergLP::bslma::SharedPtrRep::releaseRef() (rdi); | } | label_2: 0x0046a16f pop rbx | 0x0046a170 pop r12 | 0x0046a172 pop r13 | 0x0046a174 pop r14 | 0x0046a176 pop r15 | 0x0046a178 ret | return rax; | }