; assembly | /* r2dec pseudo code output */ | /* baltzo_localtimeoffsetutil.t/assume @ 0x412f00 */ | #include | ; (fcn) method.BloombergLP::baltzo::TimeZoneUtil.initLocalTime_BloombergLP::baltzo::LocalDatetime__BloombergLP::baltzo::LocalTimeValidity::Enum__BloombergLP::bdlt::Datetime_const__char_const__BloombergLP::baltzo::DstPolicy::Enum_ () | int64_t method_BloombergLP::baltzo::TimeZoneUtil_initLocalTime_BloombergLP::baltzo::LocalDatetime_BloombergLP::baltzo::LocalTimeValidity::Enum_BloombergLP::bdlt::Datetime_const_char_const_BloombergLP::baltzo::DstPolicy::Enum_ (int64_t arg5, int64_t arg4, int64_t arg3, int64_t arg2, int64_t arg1) { | int64_t var_ch; | char * var_10h; | char * var_18h; | int64_t var_20h; | char * var_28h; | uint32_t var_30h; | int64_t var_38h; | int64_t var_40h; | int64_t var_48h; | r8 = arg5; | rcx = arg4; | rdx = arg3; | rsi = arg2; | rdi = arg1; | /* BloombergLP::baltzo::TimeZoneUtil::initLocalTime(BloombergLP::baltzo::LocalDatetime*, BloombergLP::baltzo::LocalTimeValidity::Enum*, BloombergLP::bdlt::Datetime const&, char const*, BloombergLP::baltzo::DstPolicy::Enum) */ 0x00412f00 push rbp | 0x00412f01 push r15 | 0x00412f03 push r14 | 0x00412f05 push r12 | 0x00412f07 push rbx | 0x00412f08 sub rsp, 0x50 | 0x00412f0c mov ebp, r8d | 0x00412f0f mov r15, rcx | r15 = rcx; 0x00412f12 mov rbx, rdx | rbx = rdx; 0x00412f15 mov r14, rsi | r14 = rsi; 0x00412f18 mov r12, rdi | r12 = rdi; 0x00412f1b movabs rax, 0x800000141dd76000 | rax = 0x800000141dd76000; 0x00412f25 mov qword [rsp + 0x40], rax | *((rsp + 0x40)) = rax; 0x00412f2a mov dword [rsp + 0x48], 0 | *((rsp + 0x48)) = 0; 0x00412f32 call 0x40f1e0 | rax = BloombergLP::baltzo::DefaultZoneinfoCache::instance() (); 0x00412f37 lea rdi, [rsp + 0x40] | 0x00412f3c lea rsi, [rsp + 0xc] | 0x00412f41 mov rdx, rbx | 0x00412f44 mov rcx, r15 | 0x00412f47 mov r8d, ebp | 0x00412f4a mov r9, rax | 0x00412f4d 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 + 0x40, rsp + 0xc, rbx, r15, ebp, rax); 0x00412f52 mov ebp, eax | 0x00412f54 test eax, eax | | if (eax != 0) { 0x00412f56 jne 0x412fee | goto label_0; | } 0x00412f5c mov rax, qword [rsp + 0x40] | rax = *((rsp + 0x40)); 0x00412f61 mov qword [r12], rax | *(r12) = rax; 0x00412f65 test rax, rax | 0x00412f68 jns 0x412ffd | | while (1) { 0x00412f6e mov qword [r12], rax | *(r12) = rax; 0x00412f72 mov eax, dword [rsp + 0x48] | eax = *((rsp + 0x48)); 0x00412f76 mov dword [r12 + 8], eax | *((r12 + 8)) = eax; 0x00412f7b mov rax, qword [r12 + 0x38] | rax = *((r12 + 0x38)); 0x00412f80 add r12, 0x10 | r12 += 0x10; 0x00412f84 mov qword [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x00412f8d mov qword [rsp + 0x30], 0x17 | *((rsp + 0x30)) = 0x17; 0x00412f96 mov qword [rsp + 0x38], rax | *((rsp + 0x38)) = rax; 0x00412f9b mov rdi, r15 | 0x00412f9e call 0x4066d0 | rax = strlen (r15); 0x00412fa3 mov qword [rsp + 0x28], 0 | *((rsp + 0x28)) = 0; 0x00412fac lea rbx, [rsp + 0x10] | rbx = rsp + 0x10; 0x00412fb1 mov ecx, 0x459b80 | 0x00412fb6 mov rdi, rbx | 0x00412fb9 mov rsi, r15 | 0x00412fbc mov rdx, rax | 0x00412fbf call 0x4350b0 | bsl::basic_string,bsl::allocator>::privateAppend(char const*,unsigned long,char const*) (rbx, r15, rax, "string<...>::assign(char*...): string too long"); 0x00412fc4 mov rdi, rbx | 0x00412fc7 mov rsi, r12 | 0x00412fca call 0x437640 | bsl::basic_string,bsl::allocator>::swap(bsl::basic_string,bsl::allocator>&) (rbx, r12); 0x00412fcf cmp qword [rsp + 0x30], 0x17 | | if (*((rsp + 0x30)) != 0x17) { 0x00412fd5 je 0x412fe7 | 0x00412fd7 mov rsi, qword [rsp + 0x10] | rsi = *((rsp + 0x10)); 0x00412fdc mov rdi, qword [rsp + 0x38] | rdi = *((rsp + 0x38)); 0x00412fe1 mov rax, qword [rdi] | rax = *(rdi); 0x00412fe4 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x00412fe7 mov eax, dword [rsp + 0xc] | eax = *((rsp + 0xc)); 0x00412feb mov dword [r14], eax | *(r14) = eax; | label_0: 0x00412fee mov eax, ebp | eax = ebp; 0x00412ff0 add rsp, 0x50 | 0x00412ff4 pop rbx | 0x00412ff5 pop r12 | 0x00412ff7 pop r14 | 0x00412ff9 pop r15 | 0x00412ffb pop rbp | 0x00412ffc ret | return rax; 0x00412ffd mov edi, 0x694844 | 0x00413002 call 0x4324c0 | eax = BloombergLP::bsls::Review::updateCount(BloombergLP::bsls::Atomic_TypeTraits::Int*) (method.BloombergLP::bdlt::Datetime.validateAndTraceLogRepresentation___const::lambda__1::operator_____const::count); 0x00413007 mov qword [rsp + 0x10], 0x459aab | *((rsp + 0x10)) = "detected invalid 'bdlt::Datetime'; see TEAM 579660115"; 0x00413010 mov qword [rsp + 0x18], 0x459ae1 | *((rsp + 0x18)) = "/home/parsa/experiments/assumptions/crush/ccm-assume/groups/bdl/bdlt/bdlt_datetime.h"; 0x00413019 mov dword [rsp + 0x20], 0x466 | *((rsp + 0x20)) = 0x466; 0x00413021 mov qword [rsp + 0x28], 0x47543a | *((rsp + 0x28)) = "R-INV"; 0x0041302a mov dword [rsp + 0x30], eax | *((rsp + 0x30)) = eax; 0x0041302e lea rdi, [rsp + 0x10] | rdi = rsp + 0x10; 0x00413033 call 0x4324e0 | BloombergLP::bsls::Review::invokeHandler(BloombergLP::bsls::ReviewViolationconst&) (); 0x00413038 mov rax, qword [r12] | rax = *(r12); 0x0041303c mov rcx, rax | rcx = *(r12); 0x0041303f shr rcx, 0x20 | rcx >>= 0x20; 0x00413043 shl rax, 0x25 | rax <<= 0x25; 0x00413047 movabs rdx, 0x7fffffe000000000 | rdx = 0x7fffffe000000000; 0x00413051 add rdx, rax | rdx += rax; 0x00413054 imul rcx, rcx, 0x3e8 | rcx *= 0x3e8; 0x0041305b movabs rax, 0x8000000000000000 | rax = 0x8000000000000000; 0x00413065 or rax, rdx | rax |= rdx; 0x00413068 or rax, rcx | rax |= rcx; 0x0041306b jmp 0x412f6e | | } | }