; assembly | /* r2dec pseudo code output */ | /* baltzo_localtimeoffsetutil.t/assume @ 0x412a40 */ | #include | ; (fcn) method.BloombergLP::baltzo::TimeZoneUtil.convertUtcToLocalTime_BloombergLP::baltzo::LocalDatetime__char_const__BloombergLP::bdlt::Datetime_const_ () | int64_t method_BloombergLP::baltzo::TimeZoneUtil_convertUtcToLocalTime_BloombergLP::baltzo::LocalDatetime_char_const_BloombergLP::bdlt::Datetime_const_ (int64_t arg3, int64_t arg2, int64_t arg1) { | char * var_8h; | char * var_10h; | int64_t var_18h; | char * var_20h; | uint32_t var_28h; | int64_t var_30h; | int64_t var_38h; | int64_t var_40h; | rdx = arg3; | rsi = arg2; | rdi = arg1; | /* BloombergLP::baltzo::TimeZoneUtil::convertUtcToLocalTime(BloombergLP::baltzo::LocalDatetime*, char const*, BloombergLP::bdlt::Datetime const&) */ 0x00412a40 push rbp | 0x00412a41 push r15 | 0x00412a43 push r14 | 0x00412a45 push rbx | 0x00412a46 sub rsp, 0x48 | 0x00412a4a mov rbp, rdx | 0x00412a4d mov r15, rsi | r15 = rsi; 0x00412a50 mov rbx, rdi | rbx = rdi; 0x00412a53 movabs rax, 0x800000141dd76000 | rax = 0x800000141dd76000; 0x00412a5d mov qword [rsp + 0x38], rax | *((rsp + 0x38)) = rax; 0x00412a62 mov dword [rsp + 0x40], 0 | *((rsp + 0x40)) = 0; 0x00412a6a call 0x40f1e0 | rax = BloombergLP::baltzo::DefaultZoneinfoCache::instance() (); 0x00412a6f lea rdi, [rsp + 0x38] | 0x00412a74 mov rsi, r15 | 0x00412a77 mov rdx, rbp | 0x00412a7a mov rcx, rax | 0x00412a7d call 0x413860 | eax = BloombergLP::baltzo::TimeZoneUtilImp::convertUtcToLocalTime(BloombergLP::bdlt::DatetimeTz*,char const*,BloombergLP::bdlt::Datetimeconst&,BloombergLP::baltzo::ZoneinfoCache*) (rsp + 0x38, r15, rbp, rax); 0x00412a82 mov r14d, eax | r14d = eax; 0x00412a85 test eax, eax | | if (eax != 0) { 0x00412a87 jne 0x412b13 | goto label_0; | } 0x00412a8d mov rax, qword [rsp + 0x38] | rax = *((rsp + 0x38)); 0x00412a92 mov qword [rbx], rax | *(rbx) = rax; 0x00412a95 test rax, rax | 0x00412a98 jns 0x412b21 | | while (1) { 0x00412a9e mov qword [rbx], rax | *(rbx) = rax; 0x00412aa1 mov eax, dword [rsp + 0x40] | eax = *((rsp + 0x40)); 0x00412aa5 mov dword [rbx + 8], eax | *((rbx + 8)) = eax; 0x00412aa8 mov rax, qword [rbx + 0x38] | rax = *((rbx + 0x38)); 0x00412aac add rbx, 0x10 | rbx += 0x10; 0x00412ab0 mov qword [rsp + 8], 0 | *((rsp + 8)) = 0; 0x00412ab9 mov qword [rsp + 0x28], 0x17 | *((rsp + 0x28)) = 0x17; 0x00412ac2 mov qword [rsp + 0x30], rax | *((rsp + 0x30)) = rax; 0x00412ac7 mov rdi, r15 | 0x00412aca call 0x4066d0 | rax = strlen (r15); 0x00412acf mov qword [rsp + 0x20], 0 | *((rsp + 0x20)) = 0; 0x00412ad8 lea rbp, [rsp + 8] | rbp = rsp + 8; 0x00412add mov ecx, 0x459b80 | 0x00412ae2 mov rdi, rbp | 0x00412ae5 mov rsi, r15 | 0x00412ae8 mov rdx, rax | 0x00412aeb call 0x4350b0 | bsl::basic_string,bsl::allocator>::privateAppend(char const*,unsigned long,char const*) (rbp, r15, rax, "string<...>::assign(char*...): string too long"); 0x00412af0 mov rdi, rbp | 0x00412af3 mov rsi, rbx | 0x00412af6 call 0x437640 | bsl::basic_string,bsl::allocator>::swap(bsl::basic_string,bsl::allocator>&) (rbp, rbx); 0x00412afb cmp qword [rsp + 0x28], 0x17 | | if (*((rsp + 0x28)) != 0x17) { 0x00412b01 je 0x412b13 | 0x00412b03 mov rsi, qword [rsp + 8] | rsi = *((rsp + 8)); 0x00412b08 mov rdi, qword [rsp + 0x30] | rdi = *((rsp + 0x30)); 0x00412b0d mov rax, qword [rdi] | rax = *(rdi); 0x00412b10 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } | label_0: 0x00412b13 mov eax, r14d | eax = r14d; 0x00412b16 add rsp, 0x48 | 0x00412b1a pop rbx | 0x00412b1b pop r14 | 0x00412b1d pop r15 | 0x00412b1f pop rbp | 0x00412b20 ret | return rax; 0x00412b21 mov edi, 0x694844 | 0x00412b26 call 0x4324c0 | eax = BloombergLP::bsls::Review::updateCount(BloombergLP::bsls::Atomic_TypeTraits::Int*) (method.BloombergLP::bdlt::Datetime.validateAndTraceLogRepresentation___const::lambda__1::operator_____const::count); 0x00412b2b mov qword [rsp + 8], 0x459aab | *((rsp + 8)) = "detected invalid 'bdlt::Datetime'; see TEAM 579660115"; 0x00412b34 mov qword [rsp + 0x10], 0x459ae1 | *((rsp + 0x10)) = "/home/parsa/experiments/assumptions/crush/ccm-assume/groups/bdl/bdlt/bdlt_datetime.h"; 0x00412b3d mov dword [rsp + 0x18], 0x466 | *((rsp + 0x18)) = 0x466; 0x00412b45 mov qword [rsp + 0x20], 0x47543a | *((rsp + 0x20)) = "R-INV"; 0x00412b4e mov dword [rsp + 0x28], eax | *((rsp + 0x28)) = eax; 0x00412b52 lea rdi, [rsp + 8] | rdi = rsp + 8; 0x00412b57 call 0x4324e0 | BloombergLP::bsls::Review::invokeHandler(BloombergLP::bsls::ReviewViolationconst&) (); 0x00412b5c mov rax, qword [rbx] | rax = *(rbx); 0x00412b5f mov rcx, rax | rcx = *(rbx); 0x00412b62 shr rcx, 0x20 | rcx >>= 0x20; 0x00412b66 shl rax, 0x25 | rax <<= 0x25; 0x00412b6a movabs rdx, 0x7fffffe000000000 | rdx = 0x7fffffe000000000; 0x00412b74 add rdx, rax | rdx += rax; 0x00412b77 imul rcx, rcx, 0x3e8 | rcx *= 0x3e8; 0x00412b7e movabs rax, 0x8000000000000000 | rax = 0x8000000000000000; 0x00412b88 or rax, rdx | rax |= rdx; 0x00412b8b or rax, rcx | rax |= rcx; 0x00412b8e jmp 0x412a9e | | } | }