; assembly | /* r2dec pseudo code output */ | /* baltzo_localtimeoffsetutil.t/assume @ 0x4130b0 */ | #include | ; (fcn) method.BloombergLP::baltzo::TimeZoneUtil.initLocalTime_BloombergLP::baltzo::LocalDatetime__BloombergLP::bdlt::Datetime_const__char_const__BloombergLP::baltzo::DstPolicy::Enum_ () | int64_t method_BloombergLP::baltzo::TimeZoneUtil_initLocalTime_BloombergLP::baltzo::LocalDatetime_BloombergLP::bdlt::Datetime_const_char_const_BloombergLP::baltzo::DstPolicy::Enum_ (int64_t arg4, 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; | rcx = arg4; | rdx = arg3; | rsi = arg2; | rdi = arg1; | /* BloombergLP::baltzo::TimeZoneUtil::initLocalTime(BloombergLP::baltzo::LocalDatetime*, BloombergLP::bdlt::Datetime const&, char const*, BloombergLP::baltzo::DstPolicy::Enum) */ 0x004130b0 push rbp | 0x004130b1 push r15 | 0x004130b3 push r14 | 0x004130b5 push rbx | 0x004130b6 sub rsp, 0x48 | 0x004130ba mov ebp, ecx | 0x004130bc mov r14, rdx | r14 = rdx; 0x004130bf mov rbx, rsi | rbx = rsi; 0x004130c2 mov r15, rdi | r15 = rdi; 0x004130c5 movabs rax, 0x800000141dd76000 | rax = 0x800000141dd76000; 0x004130cf mov qword [rsp + 0x38], rax | *((rsp + 0x38)) = rax; 0x004130d4 mov dword [rsp + 0x40], 0 | *((rsp + 0x40)) = 0; 0x004130dc call 0x40f1e0 | rax = BloombergLP::baltzo::DefaultZoneinfoCache::instance() (); 0x004130e1 lea rdi, [rsp + 0x38] | 0x004130e6 lea rsi, [rsp + 8] | 0x004130eb mov rdx, rbx | 0x004130ee mov rcx, r14 | 0x004130f1 mov r8d, ebp | 0x004130f4 mov r9, rax | 0x004130f7 call 0x4138f0 | eax = BloombergLP::baltzo::TimeZoneUtilImp::initLocalTime(BloombergLP::bdlt::DatetimeTz*,BloombergLP::baltzo::LocalTimeValidity::Enum*,BloombergLP::bdlt::Datetimeconst&,char const*,BloombergLP::baltzo::DstPolicy::Enum,BloombergLP::baltzo::ZoneinfoCache*) (rsp + 0x38, rsp + 8, rbx, r14, ebp, rax); 0x004130fc mov ebp, eax | 0x004130fe test eax, eax | | if (eax != 0) { 0x00413100 jne 0x41318d | goto label_0; | } 0x00413106 mov rax, qword [rsp + 0x38] | rax = *((rsp + 0x38)); 0x0041310b mov qword [r15], rax | *(r15) = rax; 0x0041310e test rax, rax | 0x00413111 jns 0x41319a | | while (1) { 0x00413117 mov qword [r15], rax | *(r15) = rax; 0x0041311a mov eax, dword [rsp + 0x40] | eax = *((rsp + 0x40)); 0x0041311e mov dword [r15 + 8], eax | *((r15 + 8)) = eax; 0x00413122 mov rax, qword [r15 + 0x38] | rax = *((r15 + 0x38)); 0x00413126 add r15, 0x10 | r15 += 0x10; 0x0041312a mov qword [rsp + 8], 0 | *((rsp + 8)) = 0; 0x00413133 mov qword [rsp + 0x28], 0x17 | *((rsp + 0x28)) = 0x17; 0x0041313c mov qword [rsp + 0x30], rax | *((rsp + 0x30)) = rax; 0x00413141 mov rdi, r14 | 0x00413144 call 0x4066d0 | rax = strlen (r14); 0x00413149 mov qword [rsp + 0x20], 0 | *((rsp + 0x20)) = 0; 0x00413152 lea rbx, [rsp + 8] | rbx = rsp + 8; 0x00413157 mov ecx, 0x459b80 | 0x0041315c mov rdi, rbx | 0x0041315f mov rsi, r14 | 0x00413162 mov rdx, rax | 0x00413165 call 0x4350b0 | bsl::basic_string,bsl::allocator>::privateAppend(char const*,unsigned long,char const*) (rbx, r14, rax, "string<...>::assign(char*...): string too long"); 0x0041316a mov rdi, rbx | 0x0041316d mov rsi, r15 | 0x00413170 call 0x437640 | bsl::basic_string,bsl::allocator>::swap(bsl::basic_string,bsl::allocator>&) (rbx, r15); 0x00413175 cmp qword [rsp + 0x28], 0x17 | | if (*((rsp + 0x28)) != 0x17) { 0x0041317b je 0x41318d | 0x0041317d mov rsi, qword [rsp + 8] | rsi = *((rsp + 8)); 0x00413182 mov rdi, qword [rsp + 0x30] | rdi = *((rsp + 0x30)); 0x00413187 mov rax, qword [rdi] | rax = *(rdi); 0x0041318a call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } | label_0: 0x0041318d mov eax, ebp | eax = ebp; 0x0041318f add rsp, 0x48 | 0x00413193 pop rbx | 0x00413194 pop r14 | 0x00413196 pop r15 | 0x00413198 pop rbp | 0x00413199 ret | return rax; 0x0041319a mov edi, 0x694844 | 0x0041319f call 0x4324c0 | eax = BloombergLP::bsls::Review::updateCount(BloombergLP::bsls::Atomic_TypeTraits::Int*) (method.BloombergLP::bdlt::Datetime.validateAndTraceLogRepresentation___const::lambda__1::operator_____const::count); 0x004131a4 mov qword [rsp + 8], 0x459aab | *((rsp + 8)) = "detected invalid 'bdlt::Datetime'; see TEAM 579660115"; 0x004131ad mov qword [rsp + 0x10], 0x459ae1 | *((rsp + 0x10)) = "/home/parsa/experiments/assumptions/crush/ccm-assume/groups/bdl/bdlt/bdlt_datetime.h"; 0x004131b6 mov dword [rsp + 0x18], 0x466 | *((rsp + 0x18)) = 0x466; 0x004131be mov qword [rsp + 0x20], 0x47543a | *((rsp + 0x20)) = "R-INV"; 0x004131c7 mov dword [rsp + 0x28], eax | *((rsp + 0x28)) = eax; 0x004131cb lea rdi, [rsp + 8] | rdi = rsp + 8; 0x004131d0 call 0x4324e0 | BloombergLP::bsls::Review::invokeHandler(BloombergLP::bsls::ReviewViolationconst&) (); 0x004131d5 mov rax, qword [r15] | rax = *(r15); 0x004131d8 mov rcx, rax | rcx = *(r15); 0x004131db shr rcx, 0x20 | rcx >>= 0x20; 0x004131df shl rax, 0x25 | rax <<= 0x25; 0x004131e3 movabs rdx, 0x7fffffe000000000 | rdx = 0x7fffffe000000000; 0x004131ed add rdx, rax | rdx += rax; 0x004131f0 imul rcx, rcx, 0x3e8 | rcx *= 0x3e8; 0x004131f7 movabs rax, 0x8000000000000000 | rax = 0x8000000000000000; 0x00413201 or rax, rdx | rax |= rdx; 0x00413204 or rax, rcx | rax |= rcx; 0x00413207 jmp 0x413117 | | } | }