; assembly | /* r2dec pseudo code output */ | /* balcl_commandline.t/none @ 0x46cc10 */ | #include | ; (fcn) method.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_::parse_BloombergLP::balcl::Option () | uint64_t method_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_::parse_BloombergLP::balcl::Option (int64_t arg4, int64_t arg3, int64_t arg2, int64_t arg1) { | char * var_8h; | char * var_10h; | int64_t var_18h; | char * var_20h; | int64_t var_28h; | rcx = arg4; | rdx = arg3; | rsi = arg2; | rdi = arg1; | /* BloombergLP::balcl::(anonymous namespace)::u::ScalarConstraint >&)>, 7>::parse(BloombergLP::balcl::OptionValue*, std::__1::basic_ostream >&, bsl::basic_string, bsl::allocator > const&) const */ 0x0046cc10 push rbp | 0x0046cc11 push r15 | 0x0046cc13 push r14 | 0x0046cc15 push r12 | 0x0046cc17 push rbx | 0x0046cc18 sub rsp, 0x30 | 0x0046cc1c mov r12, rcx | r12 = rcx; 0x0046cc1f mov r14, rdx | r14 = rdx; 0x0046cc22 mov rbx, rsi | rbx = rsi; 0x0046cc25 mov r15, rdi | r15 = rdi; 0x0046cc28 mov rdi, rsi | 0x0046cc2b call 0x465850 | eax = BloombergLP::balcl::OptionValue::type()const (rsi); 0x0046cc30 mov ebp, eax | 0x0046cc32 movabs rax, 0x800000141dd76000 | rax = 0x800000141dd76000; 0x0046cc3c mov qword [rsp], rax | *(rsp) = rax; 0x0046cc40 cmp qword [r12 + 0x20], 0x17 | 0x0046cc46 mov rsi, r12 | rsi = r12; | if (*((r12 + 0x20)) != 0x17) { 0x0046cc49 je 0x46cc4f | 0x0046cc4b mov rsi, qword [r12] | | } 0x0046cc4f mov rdi, rsp | 0x0046cc52 mov edx, ebp | 0x0046cc54 call 0x46ff90 | al = BloombergLP::balcl::(anonymousnamespace)::u::parseValue(void*,char const*,BloombergLP::balcl::OptionType::Enum) (rsp, *(r12), ebp, rcx, r8); 0x0046cc59 test al, al | | if (al == 0) { 0x0046cc5b je 0x46cc8f | goto label_0; | } 0x0046cc5d cmp byte [rbx + 8], 0 | | if (*((rbx + 8)) != 0) { 0x0046cc61 je 0x46cc67 | 0x0046cc63 mov byte [rbx + 8], 0 | *((rbx + 8)) = 0; | } 0x0046cc67 mov rax, qword [rsp] | rax = *(rsp); 0x0046cc6b mov qword [rbx], rax | *(rbx) = rax; 0x0046cc6e test rax, rax | 0x0046cc71 jns 0x46cd1a | | while (1) { 0x0046cc77 mov qword [rbx], rax | *(rbx) = rax; 0x0046cc7a mov byte [rbx + 8], 1 | *((rbx + 8)) = 1; 0x0046cc7e mov rax, qword [r15] | rax = *(r15); 0x0046cc81 mov rdi, r15 | rdi = r15; 0x0046cc84 mov rsi, rbx | rsi = rbx; 0x0046cc87 mov rdx, r14 | rdx = r14; 0x0046cc8a call qword [rax + 0x28] | uint64_t (*rax + 0x28)() (); 0x0046cc8d jmp 0x46cd0d | goto label_1; | label_0: 0x0046cc8f add ebp, 0xfffffffe | ebp += 0xfffffffe; 0x0046cc92 mov ebx, 0x4b4147 | ebx = "An unknown type"; 0x0046cc97 cmp ebp, 7 | | if (ebp <= 7) { 0x0046cc9a ja 0x46cca7 | 0x0046cc9c movsxd rax, ebp | rax = (int64_t) ebp; 0x0046cc9f mov rbx, qword [rax*8 + 0x4b4028] | rbx = *((rax*8 + 0x4b4028)); | } 0x0046cca7 mov rdi, rbx | 0x0046ccaa call 0x4046c0 | rax = strlen (*((rax*8 + 0x4b4028))); 0x0046ccaf mov rdi, r14 | 0x0046ccb2 mov rsi, rbx | 0x0046ccb5 mov rdx, rax | 0x0046ccb8 call 0x455480 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (r14, rbx, rax); 0x0046ccbd mov esi, 0x4b40bd | 0x0046ccc2 mov edx, 0x21 | 0x0046ccc7 mov rdi, rax | 0x0046ccca call 0x455480 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, " value was expected, instead of \", 0x21); 0x0046cccf mov rdi, rax | 0x0046ccd2 mov rsi, r12 | 0x0046ccd5 call 0x44f6f0 | rax = std::_1::basic_ostream>&bsl::operator << ,bsl::allocator>(std::_1::basic_ostream>&,bsl::basic_string,bsl::allocator>const&) (rax, r12); 0x0046ccda mov esi, 0x4b004d | 0x0046ccdf mov edx, 1 | 0x0046cce4 mov rdi, rax | 0x0046cce7 call 0x455480 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x4b004d, 1); 0x0046ccec mov byte [rsp + 8], 0xa | *((rsp + 8)) = 0xa; 0x0046ccf1 lea rsi, [rsp + 8] | 0x0046ccf6 mov edx, 1 | 0x0046ccfb mov rdi, rax | 0x0046ccfe call 0x455480 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, rsp + 8, 1); 0x0046cd03 mov rdi, rax | rdi = rax; 0x0046cd06 call 0x404980 | eax = std::_1::basic_ostream>::flush() (); 0x0046cd0b xor eax, eax | eax = 0; | label_1: 0x0046cd0d add rsp, 0x30 | 0x0046cd11 pop rbx | 0x0046cd12 pop r12 | 0x0046cd14 pop r14 | 0x0046cd16 pop r15 | 0x0046cd18 pop rbp | 0x0046cd19 ret | return rax; 0x0046cd1a mov edi, 0x7054ec | 0x0046cd1f call 0x47f640 | eax = BloombergLP::bsls::Review::updateCount(BloombergLP::bsls::Atomic_TypeTraits::Int*) (method.BloombergLP::bdlt::Datetime.validateAndTraceLogRepresentation___const::lambda__1::operator_____const::count); 0x0046cd24 mov qword [rsp + 8], 0x4ae3f8 | *((rsp + 8)) = "detected invalid 'bdlt::Datetime'; see TEAM 579660115"; 0x0046cd2d mov qword [rsp + 0x10], 0x4ae42e | *((rsp + 0x10)) = "/home/parsa/experiments/assumptions/crush/ccm-none/groups/bdl/bdlt/bdlt_datetime.h"; 0x0046cd36 mov dword [rsp + 0x18], 0x466 | *((rsp + 0x18)) = 0x466; 0x0046cd3e mov qword [rsp + 0x20], 0x4cdd92 | *((rsp + 0x20)) = "R-INV"; 0x0046cd47 mov dword [rsp + 0x28], eax | *((rsp + 0x28)) = eax; 0x0046cd4b lea rdi, [rsp + 8] | rdi = rsp + 8; 0x0046cd50 call 0x47f660 | BloombergLP::bsls::Review::invokeHandler(BloombergLP::bsls::ReviewViolationconst&) (); 0x0046cd55 mov rax, qword [rbx] | rax = *(rbx); 0x0046cd58 mov rcx, rax | rcx = *(rbx); 0x0046cd5b shr rcx, 0x20 | rcx >>= 0x20; 0x0046cd5f shl rax, 0x25 | rax <<= 0x25; 0x0046cd63 movabs rdx, 0x7fffffe000000000 | rdx = 0x7fffffe000000000; 0x0046cd6d add rdx, rax | rdx += rax; 0x0046cd70 imul rcx, rcx, 0x3e8 | rcx *= 0x3e8; 0x0046cd77 movabs rax, 0x8000000000000000 | rax = 0x8000000000000000; 0x0046cd81 or rax, rdx | rax |= rdx; 0x0046cd84 or rax, rcx | rax |= rcx; 0x0046cd87 jmp 0x46cc77 | | } | }