; assembly | /* r2dec pseudo code output */ | /* ball_broadcastobserver.t/assume @ 0x41a070 */ | #include | ; (fcn) sym.void_BloombergLP::bdlb::VariantImp_BloombergLP::bslmf::TypeList_long_long__double__bsl::basic_string_char__std::__1::char_traits_char___bsl::allocator_char_____BloombergLP::bdlt::DatetimeTz__bsl::vector_char__bsl::allocator_char_______::doApply_BloombergLP::bdlb::Variant_CopyAssignVisitor__BloombergLP::bdlb::Variant_CopyAssignVisitor__int__const () | uint64_t void_BloombergLP::bdlb::VariantImp_BloombergLP::bslmf::TypeList_long_long_double_bsl::basic_string_char_std::_1::char_traits_char_bsl::allocator_char_BloombergLP::bdlt::DatetimeTz_bsl::vector_char_bsl::allocator_char_::doApply_BloombergLP::bdlb::Variant_CopyAssignVisitor_BloombergLP::bdlb::Variant_CopyAssignVisitor_int_const (char * arg_8h, char * arg_10h, int64_t arg_18h, char * arg_20h, int64_t arg_28h, int64_t arg3, int64_t arg2, int64_t arg1) { | rdx = arg3; | rsi = arg2; | rdi = arg1; | /* void BloombergLP::bdlb::VariantImp, bsl::allocator >, BloombergLP::bdlt::DatetimeTz, bsl::vector > > >::doApply(BloombergLP::bdlb::Variant_CopyAssignVisitor&, int) const */ 0x0041a070 push r15 | 0x0041a072 push r14 | 0x0041a074 push rbx | 0x0041a075 sub rsp, 0x30 | 0x0041a079 lea eax, [rdx - 6] | eax = rdx - 6; 0x0041a07c cmp eax, 0xf | 0x0041a07f jae 0x41a08b | | while (1) { | label_0: 0x0041a081 add rsp, 0x30 | 0x0041a085 pop rbx | 0x0041a086 pop r14 | 0x0041a088 pop r15 | 0x0041a08a ret | return eax; 0x0041a08b mov rbx, rdi | rbx = rdi; 0x0041a08e dec edx | edx--; | /* switch table (16 cases) at 0x447c40 */ 0x0041a090 jmp qword [rdx*8 + 0x447c40] | 0x0041a097 mov rax, qword [rbx] | rax = *(rbx); 0x0041a09a mov rcx, qword [rsi] | rcx = *(rsi); 0x0041a09d mov qword [rcx], rax | *(rcx) = rax; 0x0041a0a0 jmp 0x41a081 | | } 0x0041a0a2 movsd xmm0, qword [rbx] | xmm0 = *(rbx); 0x0041a0a6 mov rax, qword [rsi] | rax = *(rsi); 0x0041a0a9 movsd qword [rax], xmm0 | *(rax) = xmm0; 0x0041a0ad jmp 0x41a081 | goto label_0; 0x0041a0af mov r14, qword [rsi] | r14 = *(rsi); 0x0041a0b2 cmp r14, rbx | | if (r14 == rbx) { 0x0041a0b5 je 0x41a081 | goto label_0; | } 0x0041a0b7 mov rdx, qword [rbx + 0x18] | rdx = *((rbx + 0x18)); 0x0041a0bb cmp qword [rbx + 0x20], 0x17 | | if (*((rbx + 0x20)) != 0x17) { 0x0041a0c0 je 0x41a0c5 | 0x0041a0c2 mov rbx, qword [rbx] | rbx = *(rbx); | } 0x0041a0c5 mov r15, qword [r14 + 0x18] | r15 = *((r14 + 0x18)); 0x0041a0c9 mov qword [r14 + 0x18], 0 | *((r14 + 0x18)) = 0; 0x0041a0d1 mov ecx, 0x447c03 | 0x0041a0d6 mov rdi, r14 | 0x0041a0d9 mov rsi, rbx | 0x0041a0dc call 0x422f10 | bsl::basic_string,bsl::allocator>::privateAppend(char const*,unsigned long,char const*) (r14, rbx, rdx, "string<...>::operator=(const string&...): string too long"); 0x0041a0e1 jmp 0x41a081 | goto label_0; 0x0041a0e3 mov r14, qword [rsi] | r14 = *(rsi); 0x0041a0e6 mov rax, qword [rbx] | rax = *(rbx); 0x0041a0e9 mov qword [r14], rax | *(r14) = rax; 0x0041a0ec test rax, rax | 0x0041a0ef jns 0x41a10d | | while (1) { 0x0041a0f1 mov qword [r14], rax | *(r14) = rax; 0x0041a0f4 mov eax, dword [rbx + 8] | eax = *((rbx + 8)); 0x0041a0f7 mov dword [r14 + 8], eax | *((r14 + 8)) = eax; 0x0041a0fb jmp 0x41a081 | goto label_0; 0x0041a0fd mov rdi, qword [rsi] | 0x0041a100 mov rsi, rbx | 0x0041a103 call 0x42ea40 | bsl::vector>::operator=(bsl::vector>const&) (*(rsi), rbx); 0x0041a108 jmp 0x41a081 | goto label_0; 0x0041a10d mov edi, 0x679ba0 | 0x0041a112 call 0x420b30 | eax = BloombergLP::bsls::Review::updateCount(BloombergLP::bsls::Atomic_TypeTraits::Int*) (method.BloombergLP::bdlt::Datetime.validateAndTraceLogRepresentation___const::lambda__1::operator_____const::count); 0x0041a117 mov qword [rsp + 8], 0x447b49 | *((rsp + 8)) = "detected invalid 'bdlt::Datetime'; see TEAM 579660115"; 0x0041a120 mov qword [rsp + 0x10], 0x447b7f | *((rsp + 0x10)) = "/home/parsa/experiments/assumptions/crush/ccm-assume/groups/bdl/bdlt/bdlt_datetime.h"; 0x0041a129 mov dword [rsp + 0x18], 0x466 | *((rsp + 0x18)) = 0x466; 0x0041a131 mov qword [rsp + 0x20], 0x45f7b1 | *((rsp + 0x20)) = "R-INV"; 0x0041a13a mov dword [rsp + 0x28], eax | *((rsp + 0x28)) = eax; 0x0041a13e lea rdi, [rsp + 8] | rdi = rsp + 8; 0x0041a143 call 0x420b50 | BloombergLP::bsls::Review::invokeHandler(BloombergLP::bsls::ReviewViolationconst&) (); 0x0041a148 mov rax, qword [r14] | rax = *(r14); 0x0041a14b mov rcx, rax | rcx = *(r14); 0x0041a14e shr rcx, 0x20 | rcx >>= 0x20; 0x0041a152 shl rax, 0x25 | rax <<= 0x25; 0x0041a156 movabs rdx, 0x7fffffe000000000 | rdx = 0x7fffffe000000000; 0x0041a160 add rdx, rax | rdx += rax; 0x0041a163 imul rcx, rcx, 0x3e8 | rcx *= 0x3e8; 0x0041a16a movabs rax, 0x8000000000000000 | rax = 0x8000000000000000; 0x0041a174 or rax, rdx | rax |= rdx; 0x0041a177 or rax, rcx | rax |= rcx; 0x0041a17a jmp 0x41a0f1 | | } | }