; assembly | /* r2dec pseudo code output */ | /* balber_berdecoder.t/assume @ 0x46b950 */ | #include | ; (fcn) method.BloombergLP::bdlt::Time.setMillisecond_int_ () | int64_t method_BloombergLP::bdlt::Time_setMillisecond_int_ (int64_t arg2, int64_t arg1) { | char * var_8h; | char * var_10h; | int64_t var_18h; | char * var_20h; | int64_t var_28h; | rsi = arg2; | rdi = arg1; | /* BloombergLP::bdlt::Time::setMillisecond(int) */ 0x0046b950 push rbp | 0x0046b951 push r14 | 0x0046b953 push rbx | 0x0046b954 sub rsp, 0x30 | 0x0046b958 mov ebp, esi | 0x0046b95a mov rbx, rdi | rbx = rdi; 0x0046b95d movabs r14, 0x4000000000 | r14 = 0x4000000000; 0x0046b967 mov rcx, qword [rdi] | rcx = *(rdi); 0x0046b96a cmp rcx, r14 | | if (rcx < r14) { 0x0046b96d jl 0x46ba08 | goto label_0; | } 0x0046b973 movabs rax, 0xffffffbfffffffff | rax = 0xffffffbfffffffff; 0x0046b97d and rcx, rax | rcx &= rax; | do { 0x0046b980 movabs rax, 0x141dd75fff | rax = 0x141dd75fff; 0x0046b98a cmp rcx, rax | | if (rcx <= rax) { 0x0046b98d jg 0x46b9f3 | 0x0046b98f movabs rdx, 0x20c49ba5e353f7cf | rdx = 0x20c49ba5e353f7cf; 0x0046b999 mov rax, rcx | rax = rcx; 0x0046b99c imul rdx | rdx:rax = rax * rdx; 0x0046b99f mov rax, rdx | rax = rdx; 0x0046b9a2 shr rax, 0x3f | rax >>= 0x3f; 0x0046b9a6 sar rdx, 7 | rdx >>= 7; 0x0046b9aa add rdx, rax | rdx += rax; 0x0046b9ad imul rax, rdx, 0x3e8 | rax = rdx * 0x3e8; 0x0046b9b4 mov rsi, rcx | rsi = rcx; 0x0046b9b7 sub rsi, rax | rsi -= rax; 0x0046b9ba movabs rdx, 0x431bde82d7b634db | rdx = 0x431bde82d7b634db; 0x0046b9c4 mov rax, rcx | rax = rcx; 0x0046b9c7 imul rdx | rdx:rax = rax * rdx; 0x0046b9ca mov rax, rdx | rax = rdx; 0x0046b9cd shr rax, 0x3f | rax >>= 0x3f; 0x0046b9d1 sar rdx, 0x12 | rdx >>= 0x12; 0x0046b9d5 add rdx, rax | rdx += rax; 0x0046b9d8 imul rax, rdx, 0xf4240 | rax = rdx * 0xf4240; 0x0046b9df imul edx, ebp, 0x3e8 | edx = ebp * 0x3e8; 0x0046b9e5 add rdx, rcx | rdx += rcx; 0x0046b9e8 sub rax, rcx | rax -= rcx; 0x0046b9eb add rax, rdx | rax += rdx; 0x0046b9ee add rax, rsi | rax += rsi; 0x0046b9f1 jmp 0x46b9f9 | | } else { 0x0046b9f3 imul eax, ebp, 0x3e8 | eax = ebp * 0x3e8; | } 0x0046b9f9 or rax, r14 | rax |= r14; 0x0046b9fc mov qword [rbx], rax | *(rbx) = rax; 0x0046b9ff add rsp, 0x30 | 0x0046ba03 pop rbx | 0x0046ba04 pop r14 | 0x0046ba06 pop rbp | 0x0046ba07 ret | return rax; | label_0: 0x0046ba08 mov edi, 0x6f73e0 | 0x0046ba0d call 0x46f120 | eax = BloombergLP::bsls::Review::updateCount(BloombergLP::bsls::Atomic_TypeTraits::Int*) (method.BloombergLP::bdlt::Time.invalidMicrosecondsFromMidnight___const::__0::operator_____const::count); 0x0046ba12 mov qword [rsp + 8], 0x4cc7d0 | *((rsp + 8)) = "detected invalid 'bdlt::Time'; see TEAM 579660115"; 0x0046ba1b mov qword [rsp + 0x10], 0x4cc802 | *((rsp + 0x10)) = "/home/parsa/experiments/assumptions/crush/ccm-assume/groups/bdl/bdlt/bdlt_time.cpp"; 0x0046ba24 mov dword [rsp + 0x18], 0xcb | *((rsp + 0x18)) = 0xcb; 0x0046ba2c mov qword [rsp + 0x20], 0x4cd41a | *((rsp + 0x20)) = "R-INV"; 0x0046ba35 mov dword [rsp + 0x28], eax | *((rsp + 0x28)) = eax; 0x0046ba39 lea rdi, [rsp + 8] | rdi = rsp + 8; 0x0046ba3e call 0x46f140 | BloombergLP::bsls::Review::invokeHandler(BloombergLP::bsls::ReviewViolationconst&) (); 0x0046ba43 imul rcx, qword [rbx], 0x3e8 | rcx = *(rbx) * 0x3e8; 0x0046ba4a jmp 0x46b980 | | } while (1); | }