; assembly | /* r2dec pseudo code output */ | /* ball_broadcastobserver.t/assume @ 0x41a840 */ | #include | ; (fcn) method.void_BloombergLP::bslalg::ArrayPrimitives_Imp::insert_BloombergLP::ball::UserFieldValue__BloombergLP::ball::UserFieldValue_const__bsl::allocator_BloombergLP::ball.UserFieldValue____BloombergLP::ball::UserFieldValue__BloombergLP::ball::UserFieldV () | int64_t method_void_BloombergLP::bslalg::ArrayPrimitives_Imp::insert_BloombergLP::ball::UserFieldValue_BloombergLP::ball::UserFieldValue_const_bsl::allocator_BloombergLP::ball_UserFieldValue_BloombergLP::ball::UserFieldValue_BloombergLP::ball::UserFieldV (int64_t arg6, uint32_t arg5, uint32_t arg4, int64_t arg3, int64_t arg2, int64_t arg1) { | int64_t var_8h; | int64_t var_10h; | int64_t var_18h; | int64_t var_20h; | uint32_t var_28h; | int64_t var_30h; | int64_t var_38h; | int64_t var_40h; | r9 = arg6; | r8 = arg5; | rcx = arg4; | rdx = arg3; | rsi = arg2; | rdi = arg1; | /* void BloombergLP::bslalg::ArrayPrimitives_Imp::insert >(BloombergLP::ball::UserFieldValue*, BloombergLP::ball::UserFieldValue*, BloombergLP::ball::UserFieldValue const*, BloombergLP::ball::UserFieldValue const*, unsigned long, bsl::allocator, BloombergLP::bslmf::MetaInt<0>*) */ 0x0041a840 push rbp | 0x0041a841 push r15 | 0x0041a843 push r14 | 0x0041a845 push r13 | 0x0041a847 push r12 | 0x0041a849 push rbx | 0x0041a84a sub rsp, 0x48 | 0x0041a84e test r8, r8 | | if (r8 == 0) { 0x0041a851 je 0x41aab1 | goto label_4; | } 0x0041a857 mov r14, r8 | r14 = r8; 0x0041a85a mov r12, rdx | r12 = rdx; 0x0041a85d mov r15, rsi | r15 = rsi; 0x0041a860 mov rbx, rdi | rbx = rdi; 0x0041a863 mov rbp, rsi | 0x0041a866 sub rbp, rdi | rbp -= rdi; 0x0041a869 mov rax, rbp | rax = rbp; 0x0041a86c sar rax, 6 | rax >>= 6; 0x0041a870 cmp rax, r8 | | if (rax <= r8) { 0x0041a873 jbe 0x41a947 | goto label_5; | } 0x0041a879 shl r14, 6 | r14 <<= 6; 0x0041a87d mov rbp, r15 | 0x0041a880 mov qword [rsp + 0x18], r14 | *((rsp + 0x18)) = r14; 0x0041a885 sub rbp, r14 | rbp -= r14; 0x0041a888 mov rax, qword [r9] | rax = *(r9); 0x0041a88b mov qword [rsp + 0x40], rax | *((rsp + 0x40)) = rax; 0x0041a890 lea rcx, [rsp + 0x40] | 0x0041a895 mov rdi, r15 | rdi = r15; 0x0041a898 mov rsi, rbp | 0x0041a89b mov rdx, r15 | 0x0041a89e xor r8d, r8d | r8d = 0; 0x0041a8a1 call 0x41a760 | voidBloombergLP::bslalg::ArrayPrimitives_Imp::moveIfNoexcept>(BloombergLP::ball::UserFieldValue*,BloombergLP::ball::UserFieldValue*,BloombergLP::ball::UserFieldValue*,bsl::allocator,BloombergLP::bslmf::MetaInt<0>*) (rdi, rbp, r15, rsp + 0x40); 0x0041a8a6 mov qword [rsp + 0x20], r15 | *((rsp + 0x20)) = r15; 0x0041a8ab cmp rbp, rbx | | if (rbp == rbx) { 0x0041a8ae je 0x41aa04 | goto label_6; | } 0x0041a8b4 mov r14, qword [rsp + 0x18] | r14 = *((rsp + 0x18)); 0x0041a8b9 lea rax, [rbx + r14] | rax = rbx + r14; 0x0041a8bd mov qword [rsp + 0x28], rax | *((rsp + 0x28)) = rax; 0x0041a8c2 neg r14 | r14 = -r14; 0x0041a8c5 mov r13, qword [rsp + 0x20] | r13 = *((rsp + 0x20)); 0x0041a8ca jmp 0x41a8de | | while (r14 == 0) { | label_0: 0x0041a8d0 mov r13, r15 | r13 = r15; 0x0041a8d3 cmp qword [rsp + 0x28], r15 | | if (*((rsp + 0x28)) == r15) { 0x0041a8d8 je 0x41aa04 | goto label_6; | } 0x0041a8de lea r15, [r13 - 0x40] | r15 = r13 - 0x40; 0x0041a8e2 test r14, r14 | 0x0041a8e5 je 0x41a8d0 | | } 0x0041a8e7 lea rbp, [r13 + r14 - 0x40] | rbp = r13 + r14 - 0x40; 0x0041a8ec mov edx, dword [r13 - 0x10] | edx = *((r13 - 0x10)); 0x0041a8f0 cmp edx, dword [r13 + r14 - 0x10] | | if (edx != *((r13 + r14 - 0x10))) { 0x0041a8f5 jne 0x41a910 | goto label_7; | } 0x0041a8f7 test edx, edx | | if (edx == 0) { 0x0041a8f9 je 0x41a8d0 | goto label_0; | } 0x0041a8fb mov qword [rsp + 8], r15 | *((rsp + 8)) = r15; 0x0041a900 mov rdi, rbp | rdi = rbp; 0x0041a903 lea rsi, [rsp + 8] | rsi = rsp + 8; 0x0041a908 call 0x41a070 | voidBloombergLP::bdlb::VariantImp,bsl::allocator>,BloombergLP::bdlt::DatetimeTz,bsl::vector>>>::doApply(BloombergLP::bdlb::Variant_CopyAssignVisitor&,int)const (); 0x0041a90d jmp 0x41a8d0 | goto label_0; | label_7: 0x0041a910 mov rdi, r15 | 0x0041a913 call 0x4167b0 | BloombergLP::bdlb::VariantImp,bsl::allocator>,BloombergLP::bdlt::DatetimeTz,bsl::vector>>>::reset() (r15); 0x0041a918 mov edx, dword [r13 + r14 - 0x10] | edx = *((r13 + r14 - 0x10)); 0x0041a91d test edx, edx | | if (edx == 0) { 0x0041a91f je 0x41a8d0 | goto label_0; | } 0x0041a921 mov rax, qword [r13 - 8] | rax = *((r13 - 8)); 0x0041a925 mov qword [rsp + 8], r15 | *((rsp + 8)) = r15; 0x0041a92a mov qword [rsp + 0x10], rax | *((rsp + 0x10)) = rax; 0x0041a92f mov rdi, rbp | 0x0041a932 lea rsi, [rsp + 8] | 0x0041a937 call 0x41a190 | voidBloombergLP::bdlb::VariantImp,bsl::allocator>,BloombergLP::bdlt::DatetimeTz,bsl::vector>>>::doApply(BloombergLP::bdlb::Variant_CopyConstructVisitor&,int)const (rbp, rsp + 8, rdx, rcx, r8, r9); 0x0041a93c mov eax, dword [r13 + r14 - 0x10] | eax = *((r13 + r14 - 0x10)); 0x0041a941 mov dword [r13 - 0x10], eax | *((r13 - 0x10)) = eax; 0x0041a945 jmp 0x41a8d0 | goto label_0; | label_5: 0x0041a947 mov qword [rsp + 0x28], rcx | *((rsp + 0x28)) = rcx; 0x0041a94c shl r14, 6 | r14 <<= 6; 0x0041a950 lea rdi, [rbx + r14] | 0x0041a954 mov qword [rsp + 0x20], r9 | *((rsp + 0x20)) = r9; 0x0041a959 mov rax, qword [r9] | rax = *(r9); 0x0041a95c mov qword [rsp + 0x38], rax | *((rsp + 0x38)) = rax; 0x0041a961 lea rcx, [rsp + 0x38] | 0x0041a966 mov rsi, rbx | 0x0041a969 mov rdx, r15 | 0x0041a96c xor r8d, r8d | r8d = 0; 0x0041a96f call 0x41a760 | voidBloombergLP::bslalg::ArrayPrimitives_Imp::moveIfNoexcept>(BloombergLP::ball::UserFieldValue*,BloombergLP::ball::UserFieldValue*,BloombergLP::ball::UserFieldValue*,bsl::allocator,BloombergLP::bslmf::MetaInt<0>*) (rbx + r14, rbx, r15, rsp + 0x38); 0x0041a974 mov rax, rbx | rax = rbx; 0x0041a977 sub rax, r15 | rax -= r15; 0x0041a97a mov qword [rsp + 0x18], rax | *((rsp + 0x18)) = rax; | if (rax == 0) { 0x0041a97f je 0x41aa8c | goto label_8; | } 0x0041a985 lea r13, [rsp + 8] | r13 = rsp + 8; 0x0041a98a jmp 0x41a9a1 | | while (r12 == rbx) { | label_1: 0x0041a990 add r12, 0x40 | r12 += 0x40; 0x0041a994 add rbx, 0x40 | rbx += 0x40; 0x0041a998 cmp r15, rbx | | if (r15 == rbx) { 0x0041a99b je 0x41aa8c | goto label_8; | } 0x0041a9a1 cmp r12, rbx | 0x0041a9a4 je 0x41a990 | | } 0x0041a9a6 mov edx, dword [rbx + 0x30] | edx = *((rbx + 0x30)); 0x0041a9a9 cmp edx, dword [r12 + 0x30] | | if (edx != *((r12 + 0x30))) { 0x0041a9ae jne 0x41a9d0 | goto label_9; | } 0x0041a9b0 test edx, edx | | if (edx == 0) { 0x0041a9b2 je 0x41a990 | goto label_1; | } 0x0041a9b4 mov qword [rsp + 8], rbx | *((rsp + 8)) = rbx; 0x0041a9b9 mov rdi, r12 | rdi = r12; 0x0041a9bc mov rsi, r13 | rsi = r13; 0x0041a9bf call 0x41a070 | voidBloombergLP::bdlb::VariantImp,bsl::allocator>,BloombergLP::bdlt::DatetimeTz,bsl::vector>>>::doApply(BloombergLP::bdlb::Variant_CopyAssignVisitor&,int)const (); 0x0041a9c4 jmp 0x41a990 | goto label_1; | label_9: 0x0041a9d0 mov rdi, rbx | 0x0041a9d3 call 0x4167b0 | BloombergLP::bdlb::VariantImp,bsl::allocator>,BloombergLP::bdlt::DatetimeTz,bsl::vector>>>::reset() (rbx); 0x0041a9d8 mov edx, dword [r12 + 0x30] | edx = *((r12 + 0x30)); 0x0041a9dd test edx, edx | | if (edx == 0) { 0x0041a9df je 0x41a990 | goto label_1; | } 0x0041a9e1 mov rax, qword [rbx + 0x38] | rax = *((rbx + 0x38)); 0x0041a9e5 mov qword [rsp + 8], rbx | *((rsp + 8)) = rbx; 0x0041a9ea mov qword [rsp + 0x10], rax | *((rsp + 0x10)) = rax; 0x0041a9ef mov rdi, r12 | 0x0041a9f2 mov rsi, r13 | 0x0041a9f5 call 0x41a190 | voidBloombergLP::bdlb::VariantImp,bsl::allocator>,BloombergLP::bdlt::DatetimeTz,bsl::vector>>>::doApply(BloombergLP::bdlb::Variant_CopyConstructVisitor&,int)const (r12, r13, rdx, rcx, r8, r9); 0x0041a9fa mov eax, dword [r12 + 0x30] | eax = *((r12 + 0x30)); 0x0041a9ff mov dword [rbx + 0x30], eax | *((rbx + 0x30)) = eax; 0x0041aa02 jmp 0x41a990 | goto label_1; | label_6: 0x0041aa04 cmp r15, rbx | | if (r15 == rbx) { 0x0041aa07 je 0x41aab1 | goto label_4; | } 0x0041aa0d lea rbp, [rsp + 8] | rbp = rsp + 8; 0x0041aa12 jmp 0x41aa31 | goto label_10; | label_3: 0x0041aa14 mov eax, dword [r12 + 0x30] | eax = *((r12 + 0x30)); 0x0041aa19 mov dword [rbx + 0x30], eax | *((rbx + 0x30)) = eax; 0x0041aa1c nop dword [rax] | | do { | label_2: 0x0041aa20 add rbx, 0x40 | rbx += 0x40; 0x0041aa24 add r12, 0x40 | r12 += 0x40; 0x0041aa28 cmp r15, rbx | | if (r15 == rbx) { 0x0041aa2b je 0x41aab1 | goto label_4; | } | label_10: 0x0041aa31 cmp r12, rbx | 0x0041aa34 je 0x41aa20 | | } while (r12 == rbx); 0x0041aa36 mov edx, dword [rbx + 0x30] | edx = *((rbx + 0x30)); 0x0041aa39 cmp edx, dword [r12 + 0x30] | | if (edx != *((r12 + 0x30))) { 0x0041aa3e jne 0x41aa60 | goto label_11; | } 0x0041aa40 test edx, edx | | if (edx == 0) { 0x0041aa42 je 0x41aa20 | goto label_2; | } 0x0041aa44 mov qword [rsp + 8], rbx | *((rsp + 8)) = rbx; 0x0041aa49 mov rdi, r12 | rdi = r12; 0x0041aa4c mov rsi, rbp | rsi = rbp; 0x0041aa4f call 0x41a070 | voidBloombergLP::bdlb::VariantImp,bsl::allocator>,BloombergLP::bdlt::DatetimeTz,bsl::vector>>>::doApply(BloombergLP::bdlb::Variant_CopyAssignVisitor&,int)const (); 0x0041aa54 jmp 0x41aa20 | goto label_2; | label_11: 0x0041aa60 mov rdi, rbx | 0x0041aa63 call 0x4167b0 | BloombergLP::bdlb::VariantImp,bsl::allocator>,BloombergLP::bdlt::DatetimeTz,bsl::vector>>>::reset() (rbx); 0x0041aa68 mov edx, dword [r12 + 0x30] | edx = *((r12 + 0x30)); 0x0041aa6d test edx, edx | | if (edx == 0) { 0x0041aa6f je 0x41aa20 | goto label_2; | } 0x0041aa71 mov rax, qword [rbx + 0x38] | rax = *((rbx + 0x38)); 0x0041aa75 mov qword [rsp + 8], rbx | *((rsp + 8)) = rbx; 0x0041aa7a mov qword [rsp + 0x10], rax | *((rsp + 0x10)) = rax; 0x0041aa7f mov rdi, r12 | 0x0041aa82 mov rsi, rbp | 0x0041aa85 call 0x41a190 | voidBloombergLP::bdlb::VariantImp,bsl::allocator>,BloombergLP::bdlt::DatetimeTz,bsl::vector>>>::doApply(BloombergLP::bdlb::Variant_CopyConstructVisitor&,int)const (r12, rbp, rdx, rcx, r8, r9); 0x0041aa8a jmp 0x41aa14 | goto label_3; | label_8: 0x0041aa8c mov rax, qword [rsp + 0x20] | rax = *((rsp + 0x20)); 0x0041aa91 mov rax, qword [rax] | rax = *(rax); 0x0041aa94 mov qword [rsp + 0x30], rax | *((rsp + 0x30)) = rax; 0x0041aa99 lea rcx, [rsp + 0x30] | 0x0041aa9e mov rdi, r15 | 0x0041aaa1 mov rsi, r12 | 0x0041aaa4 mov rdx, qword [rsp + 0x28] | 0x0041aaa9 xor r8d, r8d | r8d = 0; 0x0041aaac call 0x41a680 | voidBloombergLP::bslalg::ArrayPrimitives_Imp::copyConstruct>(BloombergLP::ball::UserFieldValue*,BloombergLP::ball::UserFieldValueconst*,BloombergLP::ball::UserFieldValueconst*,bsl::allocator,BloombergLP::bslmf::MetaInt<0>*) (r15, r12, *((rsp + 0x28)), rsp + 0x30); | label_4: 0x0041aab1 add rsp, 0x48 | 0x0041aab5 pop rbx | 0x0041aab6 pop r12 | 0x0041aab8 pop r13 | 0x0041aaba pop r14 | 0x0041aabc pop r15 | 0x0041aabe pop rbp | 0x0041aabf ret | return rax; | }