; assembly | /* r2dec pseudo code output */ | /* baltzo_localtimeoffsetutil.t/none @ 0x412ed0 */ | #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) { | int64_t var_8h; | char * var_10h; | char * var_18h; | int64_t var_20h; | char * var_28h; | int64_t var_30h; | 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) */ 0x00412ed0 push rbp | 0x00412ed1 push r15 | 0x00412ed3 push r14 | 0x00412ed5 push rbx | 0x00412ed6 sub rsp, 0x38 | 0x00412eda mov ebp, ecx | 0x00412edc mov r14, rdx | r14 = rdx; 0x00412edf mov rbx, rsi | rbx = rsi; 0x00412ee2 mov r15, rdi | r15 = rdi; 0x00412ee5 movabs rax, 0x800000141dd76000 | rax = 0x800000141dd76000; 0x00412eef mov qword [rsp], rax | *(rsp) = rax; 0x00412ef3 mov dword [rsp + 8], 0 | *((rsp + 8)) = 0; 0x00412efb call 0x40f1e0 | rax = BloombergLP::baltzo::DefaultZoneinfoCache::instance() (); 0x00412f00 mov rdi, rsp | 0x00412f03 lea rsi, [rsp + 0x10] | 0x00412f08 mov rdx, rbx | 0x00412f0b mov rcx, r14 | 0x00412f0e mov r8d, ebp | 0x00412f11 mov r9, rax | 0x00412f14 call 0x413740 | 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, rsp + 0x10, rbx, r14, ebp, rax); 0x00412f19 mov ebp, eax | 0x00412f1b test eax, eax | | if (eax != 0) { 0x00412f1d jne 0x412f41 | goto label_0; | } 0x00412f1f mov rax, qword [rsp] | rax = *(rsp); 0x00412f23 mov qword [r15], rax | *(r15) = rax; 0x00412f26 test rax, rax | 0x00412f29 jns 0x412f4e | | while (1) { 0x00412f2b mov qword [r15], rax | *(r15) = rax; 0x00412f2e mov eax, dword [rsp + 8] | eax = *((rsp + 8)); 0x00412f32 mov dword [r15 + 8], eax | *((r15 + 8)) = eax; 0x00412f36 mov rdi, r15 | 0x00412f39 mov rsi, r14 | 0x00412f3c call 0x4135e0 | BloombergLP::baltzo::LocalDatetime::setTimeZoneId(char const*) (r15, r14); | label_0: 0x00412f41 mov eax, ebp | eax = ebp; 0x00412f43 add rsp, 0x38 | 0x00412f47 pop rbx | 0x00412f48 pop r14 | 0x00412f4a pop r15 | 0x00412f4c pop rbp | 0x00412f4d ret | return rax; 0x00412f4e mov edi, 0x695844 | 0x00412f53 call 0x432b20 | eax = BloombergLP::bsls::Review::updateCount(BloombergLP::bsls::Atomic_TypeTraits::Int*) (method.BloombergLP::bdlt::Datetime.validateAndTraceLogRepresentation___const::lambda__1::operator_____const::count); 0x00412f58 mov qword [rsp + 0x10], 0x45a109 | *((rsp + 0x10)) = "detected invalid 'bdlt::Datetime'; see TEAM 579660115"; 0x00412f61 mov qword [rsp + 0x18], 0x45a13f | *((rsp + 0x18)) = "/home/parsa/experiments/assumptions/crush/ccm-none/groups/bdl/bdlt/bdlt_datetime.h"; 0x00412f6a mov dword [rsp + 0x20], 0x466 | *((rsp + 0x20)) = 0x466; 0x00412f72 mov qword [rsp + 0x28], 0x475a8a | *((rsp + 0x28)) = "R-INV"; 0x00412f7b mov dword [rsp + 0x30], eax | *((rsp + 0x30)) = eax; 0x00412f7f lea rdi, [rsp + 0x10] | rdi = rsp + 0x10; 0x00412f84 call 0x432b40 | BloombergLP::bsls::Review::invokeHandler(BloombergLP::bsls::ReviewViolationconst&) (); 0x00412f89 mov rax, qword [r15] | rax = *(r15); 0x00412f8c mov rcx, rax | rcx = *(r15); 0x00412f8f shr rcx, 0x20 | rcx >>= 0x20; 0x00412f93 shl rax, 0x25 | rax <<= 0x25; 0x00412f97 movabs rdx, 0x7fffffe000000000 | rdx = 0x7fffffe000000000; 0x00412fa1 add rdx, rax | rdx += rax; 0x00412fa4 imul rcx, rcx, 0x3e8 | rcx *= 0x3e8; 0x00412fab movabs rax, 0x8000000000000000 | rax = 0x8000000000000000; 0x00412fb5 or rax, rdx | rax |= rdx; 0x00412fb8 or rax, rcx | rax |= rcx; 0x00412fbb jmp 0x412f2b | | } | }