; assembly | /* r2dec pseudo code output */ | /* ball_userfieldvalue.t/none @ 0x423450 */ | #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_MoveConstructVisitor__BloombergLP::bdlb::Variant_MoveConstructVisitor__int_ () | int64_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_MoveConstructVisitor_BloombergLP::bdlb::Variant_MoveConstructVisitor_int_ (uint32_t arg3, int64_t arg2, int64_t arg1) { | char * var_8h; | int64_t var_10h; | char * var_18h; | int64_t var_20h; | rdx = arg3; | rsi = arg2; | rdi = arg1; | /* void BloombergLP::bdlb::VariantImp, bsl::allocator >, BloombergLP::bdlt::DatetimeTz, bsl::vector > > >::doApply(BloombergLP::bdlb::Variant_MoveConstructVisitor&, int) */ 0x00423450 push r14 | 0x00423452 push rbx | 0x00423453 sub rsp, 0x28 | 0x00423457 dec edx | edx--; 0x00423459 cmp edx, 4 | | if (edx > 4) { 0x0042345c ja 0x423584 | goto label_1; | } 0x00423462 mov rbx, rdi | rbx = rdi; | /* switch table (5 cases) at 0x44efb8 */ 0x00423465 jmp qword [rdx*8 + 0x44efb8] | 0x0042346c mov rax, qword [rsi] | rax = *(rsi); 0x0042346f mov rcx, qword [rbx] | rcx = *(rbx); 0x00423472 mov qword [rax], rcx | *(rax) = rcx; 0x00423475 jmp 0x423584 | goto label_1; 0x0042347a mov rax, qword [rsi] | rax = *(rsi); 0x0042347d movsd xmm0, qword [rbx] | xmm0 = *(rbx); 0x00423481 movsd qword [rax], xmm0 | *(rax) = xmm0; 0x00423485 jmp 0x423584 | goto label_1; 0x0042348a mov r14, qword [rsi] | r14 = *(rsi); 0x0042348d mov rdi, qword [rsi + 8] | rdi = *((rsi + 8)); 0x00423491 test rdi, rdi | | if (rdi == 0) { 0x00423494 jne 0x4234aa | 0x00423496 mov rdi, qword [rip + 0x25f77b] | rdi = BloombergLP::bslma::Default::s_defaultAllocator; 0x0042349d test rdi, rdi | | if (rdi != 0) { 0x004234a0 jne 0x4234aa | goto label_2; | } 0x004234a2 call 0x427340 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); 0x004234a7 mov rdi, rax | rdi = rax; | } | label_2: 0x004234aa mov rax, qword [rbx + 0x20] | rax = *((rbx + 0x20)); 0x004234ae mov qword [r14 + 0x20], rax | *((r14 + 0x20)) = rax; 0x004234b2 movups xmm0, xmmword [rbx] | __asm ("movups xmm0, xmmword [rbx]"); 0x004234b5 movups xmm1, xmmword [rbx + 0x10] | __asm ("movups xmm1, xmmword [rbx + 0x10]"); 0x004234b9 movups xmmword [r14 + 0x10], xmm1 | __asm ("movups xmmword [r14 + 0x10], xmm1"); 0x004234be movups xmmword [r14], xmm0 | __asm ("movups xmmword [r14], xmm0"); 0x004234c2 mov qword [r14 + 0x28], rdi | *((r14 + 0x28)) = rdi; 0x004234c6 cmp rax, 0x17 | | if (rax == 0x17) { 0x004234ca je 0x423584 | goto label_1; | } 0x004234d0 cmp rdi, qword [rbx + 0x28] | | if (rdi == *((rbx + 0x28))) { 0x004234d4 je 0x42358c | goto label_3; | } 0x004234da mov rax, qword [rbx + 0x18] | rax = *((rbx + 0x18)); 0x004234de cmp rax, 0x17 | 0x004234e2 mov esi, 0x17 | esi = 0x17; | if (rax > 0x17) { 0x004234e7 cmova rsi, rax | rsi = rax; | } 0x004234eb mov qword [r14], 0 | *(r14) = 0; 0x004234f2 mov qword [r14 + 0x18], rax | *((r14 + 0x18)) = rax; 0x004234f6 mov qword [r14 + 0x20], rsi | *((r14 + 0x20)) = rsi; 0x004234fa cmp rax, 0x18 | | if (rax >= 0x18) { 0x004234fe jb 0x423513 | 0x00423500 inc rsi | rsi++; 0x00423503 mov rax, qword [rdi] | rax = *(rdi); 0x00423506 call qword [rax + 0x10] | rax = uint64_t (*rax + 0x10)() (); 0x00423509 mov qword [r14], rax | *(r14) = rax; 0x0042350c cmp qword [r14 + 0x20], 0x17 | | if (*((r14 + 0x20)) != 0x17) { 0x00423511 jne 0x423516 | goto label_4; | } | } 0x00423513 mov rax, r14 | rax = r14; | label_4: 0x00423516 mov rdx, qword [r14 + 0x18] | rdx = *((r14 + 0x18)); 0x0042351a inc rdx | rdx++; | if (rdx == 0) { 0x0042351d je 0x423584 | goto label_1; | } 0x0042351f cmp qword [rbx + 0x20], 0x17 | | if (*((rbx + 0x20)) != 0x17) { 0x00423524 je 0x423529 | 0x00423526 mov rbx, qword [rbx] | rbx = *(rbx); | } 0x00423529 mov rdi, rax | rdi = rax; 0x0042352c mov rsi, rbx | rsi = rbx; 0x0042352f add rsp, 0x28 | 0x00423533 pop rbx | 0x00423534 pop r14 | 0x00423536 jmp 0x4043f0 | void (*0x4043f0)() (); 0x0042353b mov r14, qword [rsi] | r14 = *(rsi); 0x0042353e mov rax, qword [rbx] | rax = *(rbx); 0x00423541 mov qword [r14], rax | *(r14) = rax; 0x00423544 test rax, rax | | if (rax >= 0) { 0x00423547 jns 0x4235a0 | goto label_5; | } | label_0: 0x00423549 mov qword [r14], rax | *(r14) = rax; 0x0042354c mov eax, dword [rbx + 8] | eax = *((rbx + 8)); 0x0042354f mov dword [r14 + 8], eax | *((r14 + 8)) = eax; 0x00423553 jmp 0x423584 | goto label_1; 0x00423555 mov r14, qword [rsi] | r14 = *(rsi); 0x00423558 mov rax, qword [rsi + 8] | rax = *((rsi + 8)); 0x0042355c test rax, rax | | if (rax == 0) { 0x0042355f jne 0x423572 | 0x00423561 mov rax, qword [rip + 0x25f6b0] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x00423568 test rax, rax | | if (rax != 0) { 0x0042356b jne 0x423572 | goto label_6; | } 0x0042356d call 0x427340 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); | } | label_6: 0x00423572 mov qword [rsp], rax | *(rsp) = rax; 0x00423576 mov rdx, rsp | 0x00423579 mov rdi, r14 | 0x0042357c mov rsi, rbx | 0x0042357f call 0x436ec0 | bsl::vector>::vector(bsl::vector>&&,bsl::allocatorconst&) (r14, rbx, rsp); | do { | label_1: 0x00423584 add rsp, 0x28 | 0x00423588 pop rbx | 0x00423589 pop r14 | 0x0042358b ret | return rax; | label_3: 0x0042358c mov qword [rbx], 0 | *(rbx) = 0; 0x00423593 movaps xmm0, xmmword [rip + 0x2b8c6] | xmm0 = .comment; 0x0042359a movups xmmword [rbx + 0x18], xmm0 | __asm ("movups xmmword [rbx + 0x18], xmm0"); 0x0042359e jmp 0x423584 | | } while (1); | label_5: 0x004235a0 mov edi, 0x682c00 | 0x004235a5 call 0x429310 | eax = BloombergLP::bsls::Review::updateCount(BloombergLP::bsls::Atomic_TypeTraits::Int*) (method.BloombergLP::bdlt::Datetime.validateAndTraceLogRepresentation___const::lambda__1::operator_____const::count); 0x004235aa mov qword [rsp], 0x450d0d | *(rsp) = "detected invalid 'bdlt::Datetime'; see TEAM 579660115"; 0x004235b2 mov qword [rsp + 8], 0x450d43 | *((rsp + 8)) = "/home/parsa/experiments/assumptions/crush/ccm-none/groups/bdl/bdlt/bdlt_datetime.h"; 0x004235bb mov dword [rsp + 0x10], 0x466 | *((rsp + 0x10)) = 0x466; 0x004235c3 mov qword [rsp + 0x18], 0x46923a | *((rsp + 0x18)) = "R-INV"; 0x004235cc mov dword [rsp + 0x20], eax | *((rsp + 0x20)) = eax; 0x004235d0 mov rdi, rsp | rdi = rsp; 0x004235d3 call 0x429330 | BloombergLP::bsls::Review::invokeHandler(BloombergLP::bsls::ReviewViolationconst&) (); 0x004235d8 mov rax, qword [r14] | rax = *(r14); 0x004235db mov rcx, rax | rcx = *(r14); 0x004235de shr rcx, 0x20 | rcx >>= 0x20; 0x004235e2 shl rax, 0x25 | rax <<= 0x25; 0x004235e6 movabs rdx, 0x7fffffe000000000 | rdx = 0x7fffffe000000000; 0x004235f0 add rdx, rax | rdx += rax; 0x004235f3 imul rcx, rcx, 0x3e8 | rcx *= 0x3e8; 0x004235fa movabs rax, 0x8000000000000000 | rax = 0x8000000000000000; 0x00423604 or rax, rdx | rax |= rdx; 0x00423607 or rax, rcx | rax |= rcx; 0x0042360a jmp 0x423549 | goto label_0; | }