; assembly | /* r2dec pseudo code output */ | /* balber_berdecoder.t/assume @ 0x4471b0 */ | #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 >&&) */ 0x004471b0 push r15 | 0x004471b2 push r14 | 0x004471b4 push rbx | 0x004471b5 mov rbx, rdi | rbx = rdi; 0x004471b8 cmp rsi, rdi | | if (rsi == rdi) { 0x004471bb je 0x447232 | goto label_1; | } 0x004471bd mov r14, rsi | r14 = rsi; 0x004471c0 mov ecx, dword [rbx + 0x10] | ecx = *((rbx + 0x10)); 0x004471c3 mov eax, dword [rsi + 0x10] | eax = *((rsi + 0x10)); 0x004471c6 cmp ecx, eax | | if (ecx == eax) { 0x004471c8 jne 0x447214 | 0x004471ca lea eax, [rcx - 3] | eax = rcx - 3; 0x004471cd cmp eax, 0x12 | | if (eax < 0x12) { 0x004471d0 jb 0x447232 | goto label_1; | } 0x004471d2 test ecx, ecx | | if (ecx == 0) { 0x004471d4 je 0x447232 | goto label_1; | } 0x004471d6 movabs r15, 0x4000000000 | r15 = 0x4000000000; 0x004471e0 cmp ecx, 2 | | if (ecx != 2) { 0x004471e3 jne 0x447275 | goto label_5; | } 0x004471e9 mov rax, qword [r14] | rax = *(r14); 0x004471ec mov qword [rbx], rax | *(rbx) = rax; 0x004471ef cmp rax, r15 | | if (rax < r15) { 0x004471f2 jl 0x4472b8 | goto label_6; | } 0x004471f8 movabs rcx, 0xffffffbfffffffff | rcx = 0xffffffbfffffffff; 0x00447202 and rax, rcx | rax &= rcx; | label_2: 0x00447205 or rax, r15 | rax |= r15; 0x00447208 mov qword [rbx], rax | *(rbx) = rax; 0x0044720b mov eax, dword [r14 + 8] | eax = *((r14 + 8)); 0x0044720f mov dword [rbx + 8], eax | *((rbx + 8)) = eax; 0x00447212 jmp 0x447232 | | } else { 0x00447214 test ecx, ecx | | if (ecx != 0) { 0x00447216 je 0x447223 | 0x00447218 mov dword [rbx + 0x10], 0 | *((rbx + 0x10)) = 0; 0x0044721f mov eax, dword [r14 + 0x10] | eax = *((r14 + 0x10)); | } 0x00447223 lea ecx, [rax - 3] | ecx = rax - 3; 0x00447226 cmp ecx, 0x12 | | if (ecx >= 0x12) { 0x00447229 jae 0x44723b | goto label_7; | } | label_0: 0x0044722b mov eax, dword [r14 + 0x10] | eax = *((r14 + 0x10)); 0x0044722f mov dword [rbx + 0x10], eax | *((rbx + 0x10)) = eax; | } | do { | label_1: 0x00447232 mov rax, rbx | rax = rbx; 0x00447235 pop rbx | 0x00447236 pop r14 | r14 = rbx; 0x00447238 pop r15 | r15 = rbx; 0x0044723a ret | return rax; | label_7: 0x0044723b test eax, eax | 0x0044723d je 0x447232 | | } while (eax == 0); 0x0044723f movabs r15, 0x4000000000 | r15 = 0x4000000000; 0x00447249 cmp eax, 2 | | if (eax != 2) { 0x0044724c jne 0x447295 | goto label_8; | } 0x0044724e mov rax, qword [r14] | rax = *(r14); 0x00447251 mov qword [rbx], rax | *(rbx) = rax; 0x00447254 cmp rax, r15 | | if (rax < r15) { 0x00447257 jl 0x4472c5 | goto label_9; | } 0x00447259 movabs rcx, 0xffffffbfffffffff | rcx = 0xffffffbfffffffff; 0x00447263 and rax, rcx | rax &= rcx; | do { 0x00447266 or rax, r15 | rax |= r15; 0x00447269 mov qword [rbx], rax | *(rbx) = rax; 0x0044726c mov eax, dword [r14 + 8] | eax = *((r14 + 8)); 0x00447270 mov dword [rbx + 8], eax | *((rbx + 8)) = eax; 0x00447273 jmp 0x44722b | goto label_0; | label_5: 0x00447275 mov rax, qword [r14] | rax = *(r14); 0x00447278 mov qword [rbx], rax | *(rbx) = rax; 0x0044727b cmp rax, r15 | | if (rax < r15) { 0x0044727e jl 0x4472cf | goto label_10; | } 0x00447280 movabs rcx, 0xffffffbfffffffff | rcx = 0xffffffbfffffffff; 0x0044728a and rax, rcx | rax &= rcx; | label_3: 0x0044728d or rax, r15 | rax |= r15; 0x00447290 mov qword [rbx], rax | *(rbx) = rax; 0x00447293 jmp 0x447232 | goto label_1; | label_8: 0x00447295 mov rax, qword [r14] | rax = *(r14); 0x00447298 mov qword [rbx], rax | *(rbx) = rax; 0x0044729b cmp rax, r15 | | if (rax < r15) { 0x0044729e jl 0x4472d9 | goto label_11; | } 0x004472a0 movabs rcx, 0xffffffbfffffffff | rcx = 0xffffffbfffffffff; 0x004472aa and rax, rcx | rax &= rcx; | label_4: 0x004472ad or rax, r15 | rax |= r15; 0x004472b0 mov qword [rbx], rax | *(rbx) = rax; 0x004472b3 jmp 0x44722b | goto label_0; | label_6: 0x004472b8 mov rdi, rbx | 0x004472bb call 0x46aee0 | BloombergLP::bdlt::Time::invalidMicrosecondsFromMidnight()const (rbx); 0x004472c0 jmp 0x447205 | goto label_2; | label_9: 0x004472c5 mov rdi, rbx | 0x004472c8 call 0x46aee0 | BloombergLP::bdlt::Time::invalidMicrosecondsFromMidnight()const (rbx); 0x004472cd jmp 0x447266 | | } while (1); | label_10: 0x004472cf mov rdi, rbx | 0x004472d2 call 0x46aee0 | BloombergLP::bdlt::Time::invalidMicrosecondsFromMidnight()const (rbx); 0x004472d7 jmp 0x44728d | goto label_3; | label_11: 0x004472d9 mov rdi, rbx | 0x004472dc call 0x46aee0 | BloombergLP::bdlt::Time::invalidMicrosecondsFromMidnight()const (rbx); 0x004472e1 jmp 0x4472ad | goto label_4; | }