; assembly | /* r2dec pseudo code output */ | /* ball_broadcastobserver.t/none @ 0x41a3a0 */ | #include | ; (fcn) method.void_bsl::vector_BloombergLP::ball::UserFieldValue__bsl::allocator_BloombergLP::ball::UserFieldValue___::privateInsert_BloombergLP::ball.UserFieldValue_const__BloombergLP::ball::UserFieldValue_const__BloombergLP::ball::UserFieldValue_const__Blo () | int64_t method_void_bsl::vector_BloombergLP::ball::UserFieldValue_bsl::allocator_BloombergLP::ball::UserFieldValue_::privateInsert_BloombergLP::ball_UserFieldValue_const_BloombergLP::ball::UserFieldValue_const_BloombergLP::ball::UserFieldValue_const_Blo (int64_t arg4, int64_t arg3, int64_t arg2, int64_t arg1) { | int64_t var_8h; | int64_t var_10h; | int64_t var_8h_2; | int64_t var_50h; | int64_t var_58h; | int64_t var_60h; | int64_t var_20h; | int64_t var_28h; | int64_t var_30h; | rcx = arg4; | rdx = arg3; | rsi = arg2; | rdi = arg1; | /* void bsl::vector >::privateInsert(BloombergLP::ball::UserFieldValue const*, BloombergLP::ball::UserFieldValue const*, BloombergLP::ball::UserFieldValue const*, std::__1::forward_iterator_tag const&) */ 0x0041a3a0 push rbp | 0x0041a3a1 push r15 | 0x0041a3a3 push r14 | 0x0041a3a5 push r13 | 0x0041a3a7 push r12 | 0x0041a3a9 push rbx | 0x0041a3aa sub rsp, 0x38 | 0x0041a3ae mov r15, rcx | r15 = rcx; 0x0041a3b1 mov r12, rdx | r12 = rdx; 0x0041a3b4 mov r8, rsi | r8 = rsi; 0x0041a3b7 movabs rdx, 0x3ffffffffffffff | rdx = 0x3ffffffffffffff; 0x0041a3c1 sub rcx, r12 | rcx -= r12; 0x0041a3c4 mov rbx, rcx | rbx = rcx; 0x0041a3c7 mov rsi, qword [rdi + 8] | rsi = *((rdi + 8)); 0x0041a3cb mov rbp, rsi | 0x0041a3ce sub rbp, qword [rdi] | rbp -= *(rdi); 0x0041a3d1 sar rbx, 6 | rbx >>= 6; 0x0041a3d5 sar rbp, 6 | rbp >>= 6; 0x0041a3d9 mov rax, rdx | rax = rdx; 0x0041a3dc sub rax, rbp | rax -= rbp; 0x0041a3df cmp rbx, rax | | if (rbx > rax) { 0x0041a3e2 ja 0x41a573 | goto label_2; | } 0x0041a3e8 mov r14, rdi | r14 = rdi; 0x0041a3eb lea r13, [rdi + 8] | r13 = rdi + 8; 0x0041a3ef add rbp, rbx | rbp += rbx; 0x0041a3f2 mov rax, qword [rdi + 0x10] | rax = *((rdi + 0x10)); 0x0041a3f6 cmp rbp, rax | | if (rbp <= rax) { 0x0041a3f9 jbe 0x41a514 | goto label_3; | } 0x0041a3ff mov qword [rsp + 0x20], r8 | *((rsp + 0x20)) = r8; 0x0041a404 mov qword [rsp + 0x28], r13 | *((rsp + 0x28)) = r13; 0x0041a409 mov rdi, rbp | 0x0041a40c mov rsi, rax | 0x0041a40f call 0x42b180 | rax = bsl::Vector_Util::computeNewCapacity(unsigned long,unsigned long,unsigned long) (rbp, rax, rdx); 0x0041a414 mov r13, rax | r13 = rax; 0x0041a417 mov rdi, qword [r14 + 0x18] | rdi = *((r14 + 0x18)); 0x0041a41b xorps xmm0, xmm0 | __asm ("xorps xmm0, xmm0"); 0x0041a41e movaps xmmword [rsp], xmm0 | *(rsp) = xmm0; 0x0041a422 mov qword [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x0041a42b mov qword [rsp + 0x18], rdi | *((rsp + 0x18)) = rdi; 0x0041a430 mov rsi, rax | rsi = rax; 0x0041a433 shl rsi, 6 | rsi <<= 6; 0x0041a437 mov rax, qword [rdi] | rax = *(rdi); 0x0041a43a call qword [rax + 0x10] | rax = uint64_t (*rax + 0x10)() (); 0x0041a43d mov qword [rsp + 8], rax | *((rsp + 8)) = rax; 0x0041a442 mov qword [rsp], rax | *(rsp) = rax; 0x0041a446 mov qword [rsp + 0x10], r13 | *((rsp + 0x10)) = r13; 0x0041a44b mov rdx, qword [r14] | 0x0041a44e mov r8, qword [r14 + 8] | 0x0041a452 mov rcx, qword [r14 + 0x18] | rcx = *((r14 + 0x18)); 0x0041a456 mov qword [rsp + 0x30], rcx | *((rsp + 0x30)) = rcx; 0x0041a45b sub rsp, 8 | 0x0041a45f lea r10, [rsp + 0x38] | r10 = rsp + 0x38; 0x0041a464 mov rdi, rax | 0x0041a467 mov rsi, qword [rsp + 0x30] | 0x0041a46c mov rcx, qword [rsp + 0x28] | 0x0041a471 mov r9, r12 | 0x0041a474 push r10 | 0x0041a476 push rbx | 0x0041a477 push r15 | 0x0041a479 call 0x41a640 | voidBloombergLP::bslalg::ArrayPrimitives::destructiveMoveAndInsert,BloombergLP::ball::UserFieldValueconst*>(bsl::allocator_traits>::pointer,bsl::allocator_traits>::pointer*,bsl::allocator_traits>::pointer,bsl::allocator_traits>::pointer,bsl::allocator_traits>::pointer,BloombergLP::ball::UserFieldValueconst*,BloombergLP::ball::UserFieldValueconst*,unsigned long,bsl::allocator) (rax, *((rsp + 0x30)), *(r14), *((rsp + 0x28)), *((r14 + 8)), r12); 0x0041a47e add rsp, 0x20 | 0x0041a482 shl rbp, 6 | rbp <<= 6; 0x0041a486 add qword [rsp + 8], rbp | *((rsp + 8)) += rbp; 0x0041a48b mov rsi, rsp | 0x0041a48e mov rdi, r14 | 0x0041a491 call 0x42b1b0 | bsl::Vector_Util::swap(void*,void*) (r14, rsp); 0x0041a496 mov rbx, qword [rsp] | rbx = *(rsp); 0x0041a49a test rbx, rbx | | if (rbx == 0) { 0x0041a49d je 0x41a564 | goto label_4; | } 0x0041a4a3 mov rbp, qword [rsp + 8] | rbp = *((rsp + 8)); 0x0041a4a8 cmp rbx, rbp | | if (rbx != rbp) { 0x0041a4ab jne 0x41a4d8 | goto label_5; | } 0x0041a4ad jmp 0x41a556 | goto label_6; | label_1: 0x0041a4c0 mov qword [rbx + 0x18], 0xffffffffffffffff | *((rbx + 0x18)) = 0xffffffffffffffff; | label_0: 0x0041a4c8 mov dword [rbx + 0x30], 0 | *((rbx + 0x30)) = 0; | do { 0x0041a4cf add rbx, 0x40 | rbx += 0x40; 0x0041a4d3 cmp rbp, rbx | | if (rbp == rbx) { 0x0041a4d6 je 0x41a552 | goto label_7; | } | label_5: 0x0041a4d8 mov eax, dword [rbx + 0x30] | eax = *((rbx + 0x30)); 0x0041a4db test eax, eax | 0x0041a4dd je 0x41a4cf | | } while (eax == 0); 0x0041a4df cmp eax, 5 | | if (eax == 5) { 0x0041a4e2 je 0x41a500 | goto label_8; | } 0x0041a4e4 cmp eax, 3 | | if (eax != 3) { 0x0041a4e7 jne 0x41a4c8 | goto label_0; | } 0x0041a4e9 cmp qword [rbx + 0x20], 0x17 | | if (*((rbx + 0x20)) == 0x17) { 0x0041a4ee je 0x41a4c0 | goto label_1; | } 0x0041a4f0 mov rsi, qword [rbx] | rsi = *(rbx); 0x0041a4f3 mov rdi, qword [rbx + 0x28] | rdi = *((rbx + 0x28)); 0x0041a4f7 mov rax, qword [rdi] | rax = *(rdi); 0x0041a4fa call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); 0x0041a4fd jmp 0x41a4c0 | goto label_1; | label_8: 0x0041a500 mov rsi, qword [rbx] | rsi = *(rbx); 0x0041a503 test rsi, rsi | | if (rsi == 0) { 0x0041a506 je 0x41a4c8 | goto label_0; | } 0x0041a508 mov rdi, qword [rbx + 0x18] | rdi = *((rbx + 0x18)); 0x0041a50c mov rax, qword [rdi] | rax = *(rdi); 0x0041a50f call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); 0x0041a512 jmp 0x41a4c8 | goto label_0; | label_3: 0x0041a514 test rcx, rcx | | if (rcx != 0) { 0x0041a517 je 0x41a545 | 0x0041a519 mov rax, qword [r14 + 0x18] | rax = *((r14 + 0x18)); 0x0041a51d mov qword [rsp], rax | *(rsp) = rax; 0x0041a521 sub rsp, 8 | 0x0041a525 lea r9, [rsp + 8] | 0x0041a52a mov rdi, r8 | 0x0041a52d mov rdx, r12 | 0x0041a530 mov rcx, r15 | 0x0041a533 mov r8, rbx | 0x0041a536 push 0 | 0x0041a538 call 0x41aab0 | voidBloombergLP::bslalg::ArrayPrimitives_Imp::insert>(BloombergLP::ball::UserFieldValue*,BloombergLP::ball::UserFieldValue*,BloombergLP::ball::UserFieldValueconst*,BloombergLP::ball::UserFieldValueconst*,unsigned long,bsl::allocator,BloombergLP::bslmf::MetaInt<0>*) (r8, rsi, r12, r15, rbx, rsp + 8); 0x0041a53d add rsp, 0x10 | 0x0041a541 mov rsi, qword [r13] | rsi = *(r13); | } 0x0041a545 shl rbx, 6 | rbx <<= 6; 0x0041a549 add rbx, rsi | rbx += rsi; 0x0041a54c mov qword [r13], rbx | *(r13) = rbx; 0x0041a550 jmp 0x41a564 | goto label_4; | label_7: 0x0041a552 mov rbx, qword [rsp] | rbx = *(rsp); | label_6: 0x0041a556 mov rdi, qword [rsp + 0x18] | rdi = *((rsp + 0x18)); 0x0041a55b mov rax, qword [rdi] | rax = *(rdi); 0x0041a55e mov rsi, rbx | rsi = rbx; 0x0041a561 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | label_4: 0x0041a564 add rsp, 0x38 | 0x0041a568 pop rbx | 0x0041a569 pop r12 | 0x0041a56b pop r13 | 0x0041a56d pop r14 | 0x0041a56f pop r15 | 0x0041a571 pop rbp | 0x0041a572 ret | return rax; | label_2: 0x0041a573 mov edi, 0x447fbd | 0x0041a578 call 0x4213d0 | return BloombergLP::bslstl::StdExceptUtil::throwLengthError(char const*) ("vector<...>::insert(pos,first,last): vector too long"); | }