; assembly | /* r2dec pseudo code output */ | /* ball_broadcastobserver.t/none @ 0x41a640 */ | #include | ; (fcn) method.void_BloombergLP::bslalg::ArrayPrimitives::destructiveMoveAndInsert_bsl::allocator_BloombergLP::ball::UserFieldValue___BloombergLP::ball.UserFieldValue_const__bsl::allocator_traits_bsl::allocator_BloombergLP::ball::UserFieldValue___::pointer__bsl () | int64_t method_void_BloombergLP::bslalg::ArrayPrimitives::destructiveMoveAndInsert_bsl::allocator_BloombergLP::ball::UserFieldValue_BloombergLP::ball_UserFieldValue_const_bsl::allocator_traits_bsl::allocator_BloombergLP::ball::UserFieldValue_::pointer_bsl (int64_t arg_50h, int64_t arg_58h, int64_t arg_60h, int64_t arg6, int64_t arg5, int64_t arg4, int64_t arg3, int64_t arg2, int64_t arg1) { | int64_t var_8h; | int64_t var_10h; | r9 = arg6; | r8 = arg5; | rcx = arg4; | rdx = arg3; | rsi = arg2; | rdi = arg1; | /* void BloombergLP::bslalg::ArrayPrimitives::destructiveMoveAndInsert, BloombergLP::ball::UserFieldValue const*>(bsl::allocator_traits >::pointer, bsl::allocator_traits >::pointer*, bsl::allocator_traits >::pointer, bsl::allocator_traits >::pointer, bsl::allocator_traits >::pointer, BloombergLP::ball::UserFieldValue const*, BloombergLP::ball::UserFieldValue const*, unsigned long, bsl::allocator) */ 0x0041a640 push rbp | 0x0041a641 push r15 | 0x0041a643 push r14 | 0x0041a645 push r13 | 0x0041a647 push r12 | 0x0041a649 push rbx | 0x0041a64a sub rsp, 0x18 | 0x0041a64e mov r15, r8 | r15 = r8; 0x0041a651 mov r13, rcx | r13 = rcx; 0x0041a654 mov r14, rdx | r14 = rdx; 0x0041a657 mov rbx, qword [rsp + 0x60] | rbx = *((rsp + 0x60)); 0x0041a65c mov r12, qword [rsp + 0x58] | r12 = *((rsp + 0x58)); 0x0041a661 mov rdx, qword [rsp + 0x50] | 0x0041a666 mov qword [rsp + 8], rsi | *((rsp + 8)) = rsi; 0x0041a66b mov qword [rsi], r8 | *(rsi) = r8; 0x0041a66e mov rbp, rcx | 0x0041a671 sub rbp, r14 | rbp -= r14; 0x0041a674 mov qword [rsp + 0x10], rdi | *((rsp + 0x10)) = rdi; 0x0041a679 add rbp, rdi | rbp += rdi; 0x0041a67c mov rax, qword [rbx] | rax = *(rbx); 0x0041a67f mov qword [rsp], rax | *(rsp) = rax; 0x0041a683 mov rcx, rsp | 0x0041a686 mov rdi, rbp | 0x0041a689 mov rsi, r9 | 0x0041a68c xor r8d, r8d | r8d = 0; 0x0041a68f call 0x41a850 | voidBloombergLP::bslalg::ArrayPrimitives_Imp::copyConstruct>(BloombergLP::ball::UserFieldValue*,BloombergLP::ball::UserFieldValueconst*,BloombergLP::ball::UserFieldValueconst*,bsl::allocator,BloombergLP::bslmf::MetaInt<0>*) (rbp, r9, *((rsp + 0x50)), rsp); 0x0041a694 shl r12, 6 | r12 <<= 6; 0x0041a698 add r12, rbp | r12 += rbp; 0x0041a69b mov rax, qword [rbx] | rax = *(rbx); 0x0041a69e mov qword [rsp], rax | *(rsp) = rax; 0x0041a6a2 mov rcx, rsp | 0x0041a6a5 mov rdi, r12 | 0x0041a6a8 mov rsi, r13 | 0x0041a6ab mov rdx, r15 | 0x0041a6ae xor r8d, r8d | r8d = 0; 0x0041a6b1 call 0x41a980 | voidBloombergLP::bslalg::ArrayPrimitives_Imp::moveIfNoexcept>(BloombergLP::ball::UserFieldValue*,BloombergLP::ball::UserFieldValue*,BloombergLP::ball::UserFieldValue*,bsl::allocator,BloombergLP::bslmf::MetaInt<0>*) (r12, r13, r15, rsp); 0x0041a6b6 cmp r13, r15 | | if (r13 == r15) { 0x0041a6b9 je 0x41a714 | goto label_4; | } 0x0041a6bb mov rbx, r13 | rbx = r13; 0x0041a6be jmp 0x41a6d8 | goto label_5; | label_1: 0x0041a6c0 mov qword [rbx + 0x18], 0xffffffffffffffff | *((rbx + 0x18)) = 0xffffffffffffffff; | label_0: 0x0041a6c8 mov dword [rbx + 0x30], 0 | *((rbx + 0x30)) = 0; | do { 0x0041a6cf add rbx, 0x40 | rbx += 0x40; 0x0041a6d3 cmp r15, rbx | | if (r15 == rbx) { 0x0041a6d6 je 0x41a714 | goto label_4; | } | label_5: 0x0041a6d8 mov eax, dword [rbx + 0x30] | eax = *((rbx + 0x30)); 0x0041a6db test eax, eax | 0x0041a6dd je 0x41a6cf | | } while (eax == 0); 0x0041a6df cmp eax, 5 | | if (eax == 5) { 0x0041a6e2 je 0x41a700 | goto label_6; | } 0x0041a6e4 cmp eax, 3 | | if (eax != 3) { 0x0041a6e7 jne 0x41a6c8 | goto label_0; | } 0x0041a6e9 cmp qword [rbx + 0x20], 0x17 | | if (*((rbx + 0x20)) == 0x17) { 0x0041a6ee je 0x41a6c0 | goto label_1; | } 0x0041a6f0 mov rsi, qword [rbx] | rsi = *(rbx); 0x0041a6f3 mov rdi, qword [rbx + 0x28] | rdi = *((rbx + 0x28)); 0x0041a6f7 mov rax, qword [rdi] | rax = *(rdi); 0x0041a6fa call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); 0x0041a6fd jmp 0x41a6c0 | goto label_1; | label_6: 0x0041a700 mov rsi, qword [rbx] | rsi = *(rbx); 0x0041a703 test rsi, rsi | | if (rsi == 0) { 0x0041a706 je 0x41a6c8 | goto label_0; | } 0x0041a708 mov rdi, qword [rbx + 0x18] | rdi = *((rbx + 0x18)); 0x0041a70c mov rax, qword [rdi] | rax = *(rdi); 0x0041a70f call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); 0x0041a712 jmp 0x41a6c8 | goto label_0; | label_4: 0x0041a714 mov rax, qword [rsp + 8] | rax = *((rsp + 8)); 0x0041a719 mov qword [rax], r13 | *(rax) = r13; 0x0041a71c sub r15, r13 | r15 -= r13; 0x0041a71f add r12, r15 | r12 += r15; 0x0041a722 mov rax, qword [rsp + 0x60] | rax = *((rsp + 0x60)); 0x0041a727 mov rax, qword [rax] | rax = *(rax); 0x0041a72a mov qword [rsp], rax | *(rsp) = rax; 0x0041a72e mov rcx, rsp | 0x0041a731 mov rdi, qword [rsp + 0x10] | 0x0041a736 mov rsi, r14 | 0x0041a739 mov rdx, r13 | 0x0041a73c xor r8d, r8d | r8d = 0; 0x0041a73f call 0x41a980 | voidBloombergLP::bslalg::ArrayPrimitives_Imp::moveIfNoexcept>(BloombergLP::ball::UserFieldValue*,BloombergLP::ball::UserFieldValue*,BloombergLP::ball::UserFieldValue*,bsl::allocator,BloombergLP::bslmf::MetaInt<0>*) (*((rsp + 0x10)), r14, r13, rsp); 0x0041a744 cmp r14, r13 | | if (r14 == r13) { 0x0041a747 je 0x41a7a4 | goto label_7; | } 0x0041a749 mov rbx, r14 | rbx = r14; 0x0041a74c jmp 0x41a768 | goto label_8; | label_3: 0x0041a750 mov qword [rbx + 0x18], 0xffffffffffffffff | *((rbx + 0x18)) = 0xffffffffffffffff; | label_2: 0x0041a758 mov dword [rbx + 0x30], 0 | *((rbx + 0x30)) = 0; | do { 0x0041a75f add rbx, 0x40 | rbx += 0x40; 0x0041a763 cmp r13, rbx | | if (r13 == rbx) { 0x0041a766 je 0x41a7a4 | goto label_7; | } | label_8: 0x0041a768 mov eax, dword [rbx + 0x30] | eax = *((rbx + 0x30)); 0x0041a76b test eax, eax | 0x0041a76d je 0x41a75f | | } while (eax == 0); 0x0041a76f cmp eax, 5 | | if (eax == 5) { 0x0041a772 je 0x41a790 | goto label_9; | } 0x0041a774 cmp eax, 3 | | if (eax != 3) { 0x0041a777 jne 0x41a758 | goto label_2; | } 0x0041a779 cmp qword [rbx + 0x20], 0x17 | | if (*((rbx + 0x20)) == 0x17) { 0x0041a77e je 0x41a750 | goto label_3; | } 0x0041a780 mov rsi, qword [rbx] | rsi = *(rbx); 0x0041a783 mov rdi, qword [rbx + 0x28] | rdi = *((rbx + 0x28)); 0x0041a787 mov rax, qword [rdi] | rax = *(rdi); 0x0041a78a call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); 0x0041a78d jmp 0x41a750 | goto label_3; | label_9: 0x0041a790 mov rsi, qword [rbx] | rsi = *(rbx); 0x0041a793 test rsi, rsi | | if (rsi == 0) { 0x0041a796 je 0x41a758 | goto label_2; | } 0x0041a798 mov rdi, qword [rbx + 0x18] | rdi = *((rbx + 0x18)); 0x0041a79c mov rax, qword [rdi] | rax = *(rdi); 0x0041a79f call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); 0x0041a7a2 jmp 0x41a758 | goto label_2; | label_7: 0x0041a7a4 mov rax, qword [rsp + 8] | rax = *((rsp + 8)); 0x0041a7a9 mov qword [rax], r14 | *(rax) = r14; 0x0041a7ac add rsp, 0x18 | 0x0041a7b0 pop rbx | 0x0041a7b1 pop r12 | 0x0041a7b3 pop r13 | 0x0041a7b5 pop r14 | 0x0041a7b7 pop r15 | 0x0041a7b9 pop rbp | 0x0041a7ba ret | return rax; | }