; assembly | /* r2dec pseudo code output */ | /* balber_berdecoder.t/none @ 0x46be00 */ | #include | ; (fcn) method.BloombergLP::bdlt::Time.setMinute_int_ () | int64_t method_BloombergLP::bdlt::Time_setMinute_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::setMinute(int) */ 0x0046be00 push rbp | 0x0046be01 push r14 | 0x0046be03 push rbx | 0x0046be04 sub rsp, 0x30 | 0x0046be08 mov ebp, esi | 0x0046be0a mov rbx, rdi | rbx = rdi; 0x0046be0d movabs r14, 0x4000000000 | r14 = 0x4000000000; 0x0046be17 mov rcx, qword [rdi] | rcx = *(rdi); 0x0046be1a cmp rcx, r14 | | if (rcx < r14) { 0x0046be1d jl 0x46bec8 | goto label_0; | } 0x0046be23 movabs rax, 0xffffffbfffffffff | rax = 0xffffffbfffffffff; 0x0046be2d and rcx, rax | rcx &= rax; | do { 0x0046be30 movabs rax, 0x141dd75fff | rax = 0x141dd75fff; 0x0046be3a cmp rcx, rax | | if (rcx <= rax) { 0x0046be3d jg 0x46beaf | 0x0046be3f movabs rdx, 0x8f2a633943a6d729 | rdx = 0x8f2a633943a6d729; 0x0046be49 mov rax, rcx | rax = rcx; 0x0046be4c imul rdx | rdx:rax = rax * rdx; 0x0046be4f add rdx, rcx | rdx += rcx; 0x0046be52 mov rax, rdx | rax = rdx; 0x0046be55 shr rax, 0x3f | rax >>= 0x3f; 0x0046be59 sar rdx, 0x19 | rdx >>= 0x19; 0x0046be5d add rdx, rax | rdx += rax; 0x0046be60 imul rax, rdx, 0x3938700 | rax = rdx * 0x3938700; 0x0046be67 mov rsi, rcx | rsi = rcx; 0x0046be6a sub rsi, rax | rsi -= rax; 0x0046be6d movabs rdx, 0x98b5bf2c03e529c5 | rdx = 0x98b5bf2c03e529c5; 0x0046be77 mov rax, rcx | rax = rcx; 0x0046be7a imul rdx | rdx:rax = rax * rdx; 0x0046be7d add rdx, rcx | rdx += rcx; 0x0046be80 mov rax, rdx | rax = rdx; 0x0046be83 shr rax, 0x3f | rax >>= 0x3f; 0x0046be87 sar rdx, 0x1f | rdx >>= 0x1f; 0x0046be8b add rdx, rax | rdx += rax; 0x0046be8e mov eax, 0xd693a400 | eax = 0xd693a400; 0x0046be93 imul rax, rdx | rax *= rdx; 0x0046be97 movsxd rdx, ebp | rdx = (int64_t) ebp; 0x0046be9a imul rdx, rdx, 0x3938700 | rdx *= 0x3938700; 0x0046bea1 add rdx, rcx | rdx += rcx; 0x0046bea4 sub rax, rcx | rax -= rcx; 0x0046bea7 add rax, rdx | rax += rdx; 0x0046beaa add rax, rsi | rax += rsi; 0x0046bead jmp 0x46beb9 | | } else { 0x0046beaf movsxd rax, ebp | rax = (int64_t) ebp; 0x0046beb2 imul rax, rax, 0x3938700 | rax *= 0x3938700; | } 0x0046beb9 or rax, r14 | rax |= r14; 0x0046bebc mov qword [rbx], rax | *(rbx) = rax; 0x0046bebf add rsp, 0x30 | 0x0046bec3 pop rbx | 0x0046bec4 pop r14 | 0x0046bec6 pop rbp | 0x0046bec7 ret | return rax; | label_0: 0x0046bec8 mov edi, 0x6f73e0 | 0x0046becd call 0x46f4e0 | eax = BloombergLP::bsls::Review::updateCount(BloombergLP::bsls::Atomic_TypeTraits::Int*) (method.BloombergLP::bdlt::Time.invalidMicrosecondsFromMidnight___const::__0::operator_____const::count); 0x0046bed2 mov qword [rsp + 8], 0x4ccc90 | *((rsp + 8)) = "detected invalid 'bdlt::Time'; see TEAM 579660115"; 0x0046bedb mov qword [rsp + 0x10], 0x4cccc2 | *((rsp + 0x10)) = "/home/parsa/experiments/assumptions/crush/ccm-none/groups/bdl/bdlt/bdlt_time.cpp"; 0x0046bee4 mov dword [rsp + 0x18], 0xcb | *((rsp + 0x18)) = 0xcb; 0x0046beec mov qword [rsp + 0x20], 0x4cd8e2 | *((rsp + 0x20)) = "R-INV"; 0x0046bef5 mov dword [rsp + 0x28], eax | *((rsp + 0x28)) = eax; 0x0046bef9 lea rdi, [rsp + 8] | rdi = rsp + 8; 0x0046befe call 0x46f500 | BloombergLP::bsls::Review::invokeHandler(BloombergLP::bsls::ReviewViolationconst&) (); 0x0046bf03 imul rcx, qword [rbx], 0x3e8 | rcx = *(rbx) * 0x3e8; 0x0046bf0a jmp 0x46be30 | | } while (1); | }