; assembly | /* r2dec pseudo code output */ | /* balber_berdecoder.t/none @ 0x4470b0 */ | #include | ; (fcn) method.BloombergLP::bdlb::VariantImp_BloombergLP::bslmf::TypeList_BloombergLP::bdlt::Time__BloombergLP::bdlt::TimeTz___.operator_BloombergLP::bdlb::VariantImp_BloombergLP::bslmf::TypeList_BloombergLP::bdlt::Time__BloombergLP::bdlt::TimeTz____ () | int64_t method_BloombergLP::bdlb::VariantImp_BloombergLP::bslmf::TypeList_BloombergLP::bdlt::Time_BloombergLP::bdlt::TimeTz_operator_BloombergLP::bdlb::VariantImp_BloombergLP::bslmf::TypeList_BloombergLP::bdlt::Time_BloombergLP::bdlt::TimeTz_ (int64_t arg2, uint32_t arg1) { | rsi = arg2; | rdi = arg1; | /* BloombergLP::bdlb::VariantImp >::operator=(BloombergLP::bdlb::VariantImp >&&) */ 0x004470b0 push r15 | 0x004470b2 push r14 | 0x004470b4 push rbx | 0x004470b5 mov rbx, rdi | rbx = rdi; 0x004470b8 cmp rsi, rdi | | if (rsi == rdi) { 0x004470bb je 0x4471cb | goto label_3; | } 0x004470c1 mov r14, rsi | r14 = rsi; 0x004470c4 mov ecx, dword [rbx + 0x10] | ecx = *((rbx + 0x10)); 0x004470c7 mov eax, dword [rsi + 0x10] | eax = *((rsi + 0x10)); 0x004470ca cmp ecx, eax | | if (ecx != eax) { 0x004470cc jne 0x447111 | goto label_4; | } 0x004470ce cmp ecx, 2 | | if (ecx == 2) { 0x004470d1 je 0x447164 | goto label_5; | } 0x004470d7 cmp ecx, 1 | | if (ecx != 1) { 0x004470da jne 0x4471cb | goto label_3; | } 0x004470e0 movabs r15, 0x4000000000 | r15 = 0x4000000000; 0x004470ea mov rax, qword [r14] | rax = *(r14); 0x004470ed mov qword [rbx], rax | *(rbx) = rax; 0x004470f0 cmp rax, r15 | | if (rax < r15) { 0x004470f3 jl 0x4471d4 | goto label_6; | } 0x004470f9 movabs rcx, 0xffffffbfffffffff | rcx = 0xffffffbfffffffff; 0x00447103 and rax, rcx | rax &= rcx; | do { 0x00447106 or rax, r15 | rax |= r15; 0x00447109 mov qword [rbx], rax | *(rbx) = rax; 0x0044710c jmp 0x4471cb | goto label_3; | label_4: 0x00447111 test ecx, ecx | | if (ecx != 0) { 0x00447113 je 0x447120 | 0x00447115 mov dword [rbx + 0x10], 0 | *((rbx + 0x10)) = 0; 0x0044711c mov eax, dword [r14 + 0x10] | eax = *((r14 + 0x10)); | } 0x00447120 test eax, eax | | if (eax != 0) { 0x00447122 je 0x4471cb | 0x00447128 cmp eax, 2 | | if (eax != 2) { 0x0044712b je 0x447195 | 0x0044712d cmp eax, 1 | | if (eax == 1) { 0x00447130 jne 0x4471c4 | 0x00447136 movabs r15, 0x4000000000 | r15 = 0x4000000000; 0x00447140 mov rax, qword [r14] | rax = *(r14); 0x00447143 mov qword [rbx], rax | *(rbx) = rax; 0x00447146 cmp rax, r15 | | if (rax < r15) { 0x00447149 jl 0x4471eb | goto label_7; | } 0x0044714f movabs rcx, 0xffffffbfffffffff | rcx = 0xffffffbfffffffff; 0x00447159 and rax, rcx | rax &= rcx; | label_1: 0x0044715c or rax, r15 | rax |= r15; 0x0044715f mov qword [rbx], rax | *(rbx) = rax; 0x00447162 jmp 0x4471c4 | goto label_8; | label_5: 0x00447164 movabs r15, 0x4000000000 | r15 = 0x4000000000; 0x0044716e mov rax, qword [r14] | rax = *(r14); 0x00447171 mov qword [rbx], rax | *(rbx) = rax; 0x00447174 cmp rax, r15 | | if (rax < r15) { 0x00447177 jl 0x4471e1 | goto label_9; | } 0x00447179 movabs rcx, 0xffffffbfffffffff | rcx = 0xffffffbfffffffff; 0x00447183 and rax, rcx | rax &= rcx; | label_0: 0x00447186 or rax, r15 | rax |= r15; 0x00447189 mov qword [rbx], rax | *(rbx) = rax; 0x0044718c mov eax, dword [r14 + 8] | eax = *((r14 + 8)); 0x00447190 mov dword [rbx + 8], eax | *((rbx + 8)) = eax; 0x00447193 jmp 0x4471cb | | } else { 0x00447195 movabs r15, 0x4000000000 | r15 = 0x4000000000; 0x0044719f mov rax, qword [r14] | rax = *(r14); 0x004471a2 mov qword [rbx], rax | *(rbx) = rax; 0x004471a5 cmp rax, r15 | | if (rax < r15) { 0x004471a8 jl 0x4471f8 | goto label_10; | } 0x004471aa movabs rcx, 0xffffffbfffffffff | rcx = 0xffffffbfffffffff; 0x004471b4 and rax, rcx | rax &= rcx; | label_2: 0x004471b7 or rax, r15 | rax |= r15; 0x004471ba mov qword [rbx], rax | *(rbx) = rax; 0x004471bd mov eax, dword [r14 + 8] | eax = *((r14 + 8)); 0x004471c1 mov dword [rbx + 8], eax | *((rbx + 8)) = eax; | } | label_8: 0x004471c4 mov eax, dword [r14 + 0x10] | eax = *((r14 + 0x10)); 0x004471c8 mov dword [rbx + 0x10], eax | *((rbx + 0x10)) = eax; | } | } | label_3: 0x004471cb mov rax, rbx | rax = rbx; 0x004471ce pop rbx | 0x004471cf pop r14 | r14 = rbx; 0x004471d1 pop r15 | r15 = rbx; 0x004471d3 ret | return rax; | label_6: 0x004471d4 mov rdi, rbx | 0x004471d7 call 0x46b280 | BloombergLP::bdlt::Time::invalidMicrosecondsFromMidnight()const (rbx); 0x004471dc jmp 0x447106 | | } while (1); | label_9: 0x004471e1 mov rdi, rbx | 0x004471e4 call 0x46b280 | BloombergLP::bdlt::Time::invalidMicrosecondsFromMidnight()const (rbx); 0x004471e9 jmp 0x447186 | goto label_0; | label_7: 0x004471eb mov rdi, rbx | 0x004471ee call 0x46b280 | BloombergLP::bdlt::Time::invalidMicrosecondsFromMidnight()const (rbx); 0x004471f3 jmp 0x44715c | goto label_1; | label_10: 0x004471f8 mov rdi, rbx | 0x004471fb call 0x46b280 | BloombergLP::bdlt::Time::invalidMicrosecondsFromMidnight()const (rbx); 0x00447200 jmp 0x4471b7 | goto label_2; | }