; assembly | /* r2dec pseudo code output */ | /* bdld_datum.t/none @ 0x45c480 */ | #include | ; (fcn) method.void_BloombergLP::bdld::Datum.apply_Benchmark_Visitor__Benchmark_Visitor__const () | int64_t method_void_BloombergLP::bdld::Datum_apply_Benchmark_Visitor_Benchmark_Visitor_const (char * arg_8h, char * arg_10h, int64_t arg_18h, char * arg_20h, int64_t arg_28h, int64_t arg2, uint32_t arg1) { | rsi = arg2; | rdi = arg1; | /* void BloombergLP::bdld::Datum::apply(Benchmark_Visitor&) const */ 0x0045c480 push r15 | 0x0045c482 push r14 | 0x0045c484 push rbx | 0x0045c485 sub rsp, 0x30 | 0x0045c489 movsx eax, word [rdi + 0xe] | eax = *((rdi + 0xe)); 0x0045c48d lea ecx, [rax - 1] | ecx = rax - 1; 0x0045c490 cmp ecx, 0x13 | | if (ecx > 0x13) { 0x0045c493 ja 0x45c64f | goto label_2; | } 0x0045c499 mov rbx, rsi | rbx = rsi; | /* switch table (20 cases) at 0x4c5f98 */ 0x0045c49c jmp qword [rcx*8 + 0x4c5f98] | 0x0045c4a3 movsxd rax, dword [rdi + 8] | rax = *((rdi + 8)); 0x0045c4a7 jmp 0x45c4e6 | goto label_3; 0x0045c4a9 cmp ax, 0x13 | | if (ax != 0x13) { 0x0045c4ad jne 0x45c634 | goto label_4; | } 0x0045c4b3 mov eax, dword [rdi] | eax = *(rdi); 0x0045c4b5 cvtsi2sd xmm0, eax | __asm ("cvtsi2sd xmm0, eax"); 0x0045c4b9 jmp 0x45c647 | goto label_5; 0x0045c4be movsd xmm0, qword [rbx] | xmm0 = *(rbx); 0x0045c4c2 addsd xmm0, qword [rip + 0x6913e] | __asm ("addsd xmm0, qword [0x004c5608]"); 0x0045c4ca jmp 0x45c64b | goto label_6; 0x0045c4cf cmp dword [rdi + 8], 0 | | if (*((rdi + 8)) != 0) { 0x0045c4d3 jne 0x45c63f | goto label_7; | } 0x0045c4d9 xorpd xmm0, xmm0 | __asm ("xorpd xmm0, xmm0"); 0x0045c4dd jmp 0x45c647 | goto label_5; 0x0045c4e2 movsx rax, byte [rdi] | rax = *(rdi); | label_3: 0x0045c4e6 movq xmm0, rax | xmm0 = rax; 0x0045c4eb punpckldq xmm0, xmmword [rip + 0x68dcd] | __asm ("punpckldq xmm0, xmmword [0x004c52c0]"); 0x0045c4f3 subpd xmm0, xmmword [rip + 0x68dd5] | __asm ("subpd xmm0, xmmword [0x004c52d0]"); 0x0045c4fb movapd xmm1, xmm0 | __asm ("movapd xmm1, xmm0"); 0x0045c4ff unpckhpd xmm1, xmm0 | __asm ("unpckhpd xmm1, xmm0"); 0x0045c503 addsd xmm1, xmm0 | __asm ("addsd xmm1, xmm0"); 0x0045c507 addsd xmm1, qword [rbx] | __asm ("addsd xmm1, qword [rbx]"); 0x0045c50b movsd qword [rbx], xmm1 | *(rbx) = xmm1; 0x0045c50f jmp 0x45c64f | goto label_2; 0x0045c514 mov edi, dword [rdi] | 0x0045c516 call 0x46f8f0 | eax = BloombergLP::bdlt::PosixDateImpUtil::serialToDay(int) (*(rdi), rsi); 0x0045c51b cvtsi2sd xmm0, eax | __asm ("cvtsi2sd xmm0, eax"); 0x0045c51f jmp 0x45c647 | goto label_5; 0x0045c524 movabs r14, 0xffffffbfffffffff | r14 = 0xffffffbfffffffff; 0x0045c52e movabs r15, 0x4000000000 | r15 = 0x4000000000; 0x0045c538 mov rax, qword [rdi] | rax = *(rdi); 0x0045c53b mov qword [rsp + 8], rax | *((rsp + 8)) = rax; 0x0045c540 cmp rax, r15 | | if (rax < r15) { 0x0045c543 jl 0x45c659 | goto label_8; | } 0x0045c549 and rax, r14 | rax &= r14; | do { 0x0045c54c mov rcx, rax | rcx = rax; 0x0045c54f or rcx, r15 | rcx |= r15; 0x0045c552 mov qword [rsp + 8], rcx | *((rsp + 8)) = rcx; 0x0045c557 cmp rcx, r15 | | if (rcx < r15) { 0x0045c55a jl 0x45c668 | goto label_9; | } 0x0045c560 and rax, r14 | rax &= r14; | label_0: 0x0045c563 movabs rcx, 0x431bde82d7b634db | rcx = 0x431bde82d7b634db; 0x0045c56d imul rcx | rdx:rax = rax * rcx; 0x0045c570 jmp 0x45c5e4 | goto label_10; 0x0045c572 mov r14, qword [rdi] | r14 = *(rdi); 0x0045c575 test r14, r14 | | if (r14 >= 0) { 0x0045c578 jns 0x45c677 | goto label_11; | } | label_1: 0x0045c57e movabs rax, 0x1fffffffc0 | rax = 0x1fffffffc0; 0x0045c588 and rax, r14 | rax &= r14; 0x0045c58b movabs rcx, 0x431bde82d7b634db | rcx = 0x431bde82d7b634db; 0x0045c595 mul rcx | rdx:rax = rax * rcx; 0x0045c598 shr rdx, 0x12 | rdx >>= 0x12; 0x0045c59c mov eax, 0x88888889 | eax = 0x88888889; 0x0045c5a1 imul rax, rdx | rax *= rdx; 0x0045c5a5 shr rax, 0x25 | rax >>= 0x25; 0x0045c5a9 imul eax, eax, 0x3c | eax *= 0x3c; 0x0045c5ac sub edx, eax | edx -= eax; 0x0045c5ae cvtsi2sd xmm0, edx | __asm ("cvtsi2sd xmm0, edx"); 0x0045c5b2 jmp 0x45c647 | goto label_5; 0x0045c5b7 mov esi, dword [rdi + 8] | 0x0045c5ba mov rax, qword [rdi] | rax = *(rdi); 0x0045c5bd mov qword [rsp], rax | *(rsp) = rax; 0x0045c5c1 lea rdi, [rsp + 8] | 0x0045c5c6 xor edx, edx | 0x0045c5c8 xor ecx, ecx | 0x0045c5ca xor r8d, r8d | 0x0045c5cd xor r9d, r9d | 0x0045c5d0 call 0x46e700 | BloombergLP::bdlt::DatetimeInterval::setInterval(int,long long,long long,long long,long long,long long) (rsp + 8, *((rdi + 8)), 0, 0, 0, 0); 0x0045c5d5 movabs rax, 0x431bde82d7b634db | rax = 0x431bde82d7b634db; 0x0045c5df imul qword [rsp + 0x10] | rdx:rax = rax * *((rsp + 0x10)); | label_10: 0x0045c5e4 mov rcx, rdx | rcx = rdx; 0x0045c5e7 mov rax, rdx | rax = rdx; 0x0045c5ea shr rax, 0x3f | rax >>= 0x3f; 0x0045c5ee sar rcx, 0x12 | rcx >>= 0x12; 0x0045c5f2 add rcx, rax | rcx += rax; 0x0045c5f5 movabs rdx, 0x8888888888888889 | rdx = 0x8888888888888889; 0x0045c5ff mov rax, rcx | rax = rcx; 0x0045c602 imul rdx | rdx:rax = rax * rdx; 0x0045c605 add rdx, rcx | rdx += rcx; 0x0045c608 mov rax, rdx | rax = rdx; 0x0045c60b shr rax, 0x3f | rax >>= 0x3f; 0x0045c60f shr rdx, 5 | rdx >>= 5; 0x0045c613 add edx, eax | edx += eax; 0x0045c615 imul eax, edx, 0x3c | eax = edx * 0x3c; 0x0045c618 sub ecx, eax | ecx -= eax; 0x0045c61a cvtsi2sd xmm0, ecx | __asm ("cvtsi2sd xmm0, ecx"); 0x0045c61e jmp 0x45c647 | goto label_5; 0x0045c620 cvtsi2sd xmm0, dword [rdi + 8] | __asm ("cvtsi2sd xmm0, dword [rdi + 8]"); 0x0045c625 jmp 0x45c647 | goto label_5; 0x0045c627 cvtsi2sd xmm0, qword [rdi] | __asm ("cvtsi2sd xmm0, qword [rdi]"); 0x0045c62c jmp 0x45c647 | goto label_5; 0x0045c62e movsd xmm0, qword [rdi] | xmm0 = *(rdi); 0x0045c632 jmp 0x45c647 | goto label_5; | label_4: 0x0045c634 mov rax, qword [rdi] | rax = *(rdi); 0x0045c637 mov eax, dword [rax] | eax = *(rax); 0x0045c639 cvtsi2sd xmm0, eax | __asm ("cvtsi2sd xmm0, eax"); 0x0045c63d jmp 0x45c647 | goto label_5; | label_7: 0x0045c63f movsd xmm0, qword [rip + 0x68fb9] | xmm0 = *(0x004c5600); | label_5: 0x0045c647 addsd xmm0, qword [rbx] | __asm ("addsd xmm0, qword [rbx]"); | label_6: 0x0045c64b movsd qword [rbx], xmm0 | *(rbx) = xmm0; | label_2: 0x0045c64f add rsp, 0x30 | 0x0045c653 pop rbx | 0x0045c654 pop r14 | 0x0045c656 pop r15 | 0x0045c658 ret | return rax; | label_8: 0x0045c659 lea rdi, [rsp + 8] | 0x0045c65e call 0x46fcf0 | BloombergLP::bdlt::Time::invalidMicrosecondsFromMidnight()const (rsp + 8); 0x0045c663 jmp 0x45c54c | | } while (1); | label_9: 0x0045c668 lea rdi, [rsp + 8] | 0x0045c66d call 0x46fcf0 | BloombergLP::bdlt::Time::invalidMicrosecondsFromMidnight()const (rsp + 8); 0x0045c672 jmp 0x45c563 | goto label_0; | label_11: 0x0045c677 mov edi, 0x8ee75c | 0x0045c67c call 0x476eb0 | eax = BloombergLP::bsls::Review::updateCount(BloombergLP::bsls::Atomic_TypeTraits::Int*) (method.BloombergLP::bdlt::Datetime.validateAndTraceLogRepresentation___const::lambda__1::operator_____const::count); 0x0045c681 mov qword [rsp + 8], 0x4cc6a8 | *((rsp + 8)) = "detected invalid 'bdlt::Datetime'; see TEAM 579660115"; 0x0045c68a mov qword [rsp + 0x10], 0x4cc6de | *((rsp + 0x10)) = "/home/parsa/experiments/assumptions/crush/ccm-none/groups/bdl/bdlt/bdlt_datetime.h"; 0x0045c693 mov dword [rsp + 0x18], 0x466 | *((rsp + 0x18)) = 0x466; 0x0045c69b mov qword [rsp + 0x20], 0x4e560a | *((rsp + 0x20)) = "R-INV"; 0x0045c6a4 mov dword [rsp + 0x28], eax | *((rsp + 0x28)) = eax; 0x0045c6a8 lea rdi, [rsp + 8] | rdi = rsp + 8; 0x0045c6ad call 0x476ed0 | rax = BloombergLP::bsls::Review::invokeHandler(BloombergLP::bsls::ReviewViolationconst&) (); 0x0045c6b2 shr r14, 0x20 | r14 >>= 0x20; 0x0045c6b6 imul rax, r14, 0x3e8 | rax = r14 * 0x3e8; 0x0045c6bd movabs r14, 0xffffffe000000000 | r14 = 0xffffffe000000000; 0x0045c6c7 or r14, rax | r14 |= rax; 0x0045c6ca jmp 0x45c57e | goto label_1; | }