; assembly | /* r2dec pseudo code output */ | /* ball_administration.t/assume @ 0x412030 */ | #include | ; (fcn) method.bsl::vector_BloombergLP::ball::ManagedAttribute__bsl::allocator_BloombergLP::ball::ManagedAttribute___.push_back_BloombergLP::ball::ManagedAttribute_ () | int64_t method_bsl::vector_BloombergLP::ball::ManagedAttribute_bsl::allocator_BloombergLP::ball::ManagedAttribute_push_back_BloombergLP::ball::ManagedAttribute_ (int64_t arg2, int64_t arg1) { | int64_t var_8h; | int64_t var_10h; | int64_t var_18h; | int64_t var_20h; | rsi = arg2; | rdi = arg1; | /* bsl::vector >::push_back(BloombergLP::ball::ManagedAttribute&&) */ 0x00412030 push rbp | 0x00412031 push r15 | 0x00412033 push r14 | 0x00412035 push r13 | 0x00412037 push r12 | 0x00412039 push rbx | 0x0041203a sub rsp, 0x28 | 0x0041203e mov r12, rsi | r12 = rsi; 0x00412041 mov rbp, rdi | 0x00412044 mov rbx, qword [rdi + 8] | rbx = *((rdi + 8)); 0x00412048 mov rsi, qword [rdi + 0x10] | rsi = *((rdi + 0x10)); 0x0041204c mov rdi, rbx | rdi = rbx; 0x0041204f sub rdi, qword [rbp] | rdi -= *(rbp); 0x00412053 sar rdi, 7 | rdi >>= 7; 0x00412057 cmp rsi, rdi | | if (rsi <= rdi) { 0x0041205a jbe 0x41209c | goto label_4; | } 0x0041205c mov rax, qword [rbp + 0x18] | rax = *((rbp + 0x18)); 0x00412060 test rax, rax | | if (rax == 0) { 0x00412063 jne 0x412076 | 0x00412065 mov rax, qword [rip + 0x285944] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x0041206c test rax, rax | | if (rax != 0) { 0x0041206f jne 0x412076 | goto label_5; | } 0x00412071 call 0x431130 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); | } | label_5: 0x00412076 mov qword [rsp], rax | *(rsp) = rax; 0x0041207a mov rdx, rsp | 0x0041207d mov rdi, rbx | 0x00412080 mov rsi, r12 | 0x00412083 call 0x412560 | BloombergLP::ball::ManagedAttribute::ManagedAttribute(BloombergLP::ball::ManagedAttributeconst&,bsl::allocatorconst&) (rbx, r12, rsp); 0x00412088 sub qword [rbp + 8], 0xffffffffffffff80 | *((rbp + 8)) -= 0xffffffffffffff80; | do { | label_3: 0x0041208d add rsp, 0x28 | 0x00412091 pop rbx | 0x00412092 pop r12 | 0x00412094 pop r13 | 0x00412096 pop r14 | 0x00412098 pop r15 | 0x0041209a pop rbp | 0x0041209b ret | return rax; | label_4: 0x0041209c inc rdi | rdi++; 0x0041209f movabs rdx, 0x1ffffffffffffff | rdx = 0x1ffffffffffffff; 0x004120a9 call 0x43dac0 | rax = bsl::Vector_Util::computeNewCapacity(unsigned long,unsigned long,unsigned long) (rdi, rsi, rdx); 0x004120ae mov rbx, rax | rbx = rax; 0x004120b1 mov rdi, qword [rbp + 0x18] | rdi = *((rbp + 0x18)); 0x004120b5 xorps xmm0, xmm0 | __asm ("xorps xmm0, xmm0"); 0x004120b8 movaps xmmword [rsp], xmm0 | *(rsp) = xmm0; 0x004120bc mov qword [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x004120c5 mov qword [rsp + 0x18], rdi | *((rsp + 0x18)) = rdi; 0x004120ca mov rsi, rax | rsi = rax; 0x004120cd shl rsi, 7 | rsi <<= 7; 0x004120d1 mov rax, qword [rdi] | rax = *(rdi); 0x004120d4 call qword [rax + 0x10] | rax = uint64_t (*rax + 0x10)() (); 0x004120d7 mov r15, rax | r15 = rax; 0x004120da mov qword [rsp + 8], rax | *((rsp + 8)) = rax; 0x004120df mov qword [rsp], rax | *(rsp) = rax; 0x004120e3 mov qword [rsp + 0x10], rbx | *((rsp + 0x10)) = rbx; 0x004120e8 mov rbx, qword [rbp + 8] | rbx = *((rbp + 8)); 0x004120ec mov rax, qword [rbp + 0x18] | rax = *((rbp + 0x18)); 0x004120f0 sub rbx, qword [rbp] | rbx -= *(rbp); 0x004120f4 test rax, rax | | if (rax == 0) { 0x004120f7 jne 0x41210a | 0x004120f9 mov rax, qword [rip + 0x2858b0] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x00412100 test rax, rax | | if (rax != 0) { 0x00412103 jne 0x41210a | goto label_6; | } 0x00412105 call 0x431130 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); | } | label_6: 0x0041210a lea r14, [r15 + rbx] | r14 = r15 + rbx; 0x0041210e mov qword [rsp + 0x20], rax | *((rsp + 0x20)) = rax; 0x00412113 lea rdx, [rsp + 0x20] | 0x00412118 mov rdi, r14 | 0x0041211b mov rsi, r12 | 0x0041211e call 0x412560 | BloombergLP::ball::ManagedAttribute::ManagedAttribute(BloombergLP::ball::ManagedAttributeconst&,bsl::allocatorconst&) (r14, r12, rsp + 0x20); 0x00412123 sar rbx, 7 | rbx >>= 7; 0x00412127 mov rdi, qword [rsp] | 0x0041212b mov r12, qword [rbp] | r12 = *(rbp); 0x0041212f mov r13, qword [rbp + 8] | r13 = *((rbp + 8)); 0x00412133 mov rax, qword [rbp + 0x18] | rax = *((rbp + 0x18)); 0x00412137 mov qword [rsp + 0x20], rax | *((rsp + 0x20)) = rax; 0x0041213c lea rcx, [rsp + 0x20] | 0x00412141 mov rsi, r12 | 0x00412144 mov rdx, r13 | 0x00412147 xor r8d, r8d | r8d = 0; 0x0041214a call 0x412790 | voidBloombergLP::bslalg::ArrayPrimitives_Imp::moveIfNoexcept>(BloombergLP::ball::ManagedAttribute*,BloombergLP::ball::ManagedAttribute*,BloombergLP::ball::ManagedAttribute*,bsl::allocator,BloombergLP::bslmf::MetaInt<0>*) (*(rsp), r12, r13, rsp + 0x20); 0x0041214f cmp r12, r13 | | if (r12 != r13) { 0x00412152 jne 0x41219e | goto label_7; | } | label_0: 0x00412154 mov rax, qword [rbp] | rax = *(rbp); 0x00412158 mov qword [rbp + 8], rax | *((rbp + 8)) = rax; 0x0041215c sub r14, 0xffffffffffffff80 | r14 -= 0xffffffffffffff80; 0x00412160 mov qword [rsp + 8], r14 | *((rsp + 8)) = r14; 0x00412165 mov rsi, rsp | 0x00412168 mov rdi, rbp | 0x0041216b call 0x43daf0 | bsl::Vector_Util::swap(void*,void*) (rbp, rsp); 0x00412170 mov rbx, qword [rsp] | rbx = *(rsp); 0x00412174 test rbx, rbx | 0x00412177 je 0x41208d | | } while (rbx == 0); 0x0041217d mov rbp, qword [rsp + 8] | rbp = *((rsp + 8)); 0x00412182 cmp rbx, rbp | | if (rbx != rbp) { 0x00412185 jne 0x412200 | goto label_8; | } 0x00412187 jmp 0x41224a | goto label_9; | label_1: 0x0041218c mov qword [r12 + 0x18], 0xffffffffffffffff | *((r12 + 0x18)) = 0xffffffffffffffff; 0x00412195 sub r12, 0xffffffffffffff80 | r12 -= 0xffffffffffffff80; 0x00412199 cmp r13, r12 | | if (r13 == r12) { 0x0041219c je 0x412154 | goto label_0; | } | label_7: 0x0041219e mov eax, dword [r12 + 0x68] | eax = *((r12 + 0x68)); 0x004121a3 test eax, eax | | if (eax != 0) { 0x004121a5 je 0x4121d6 | 0x004121a7 cmp eax, 3 | | if (eax == 3) { 0x004121aa jne 0x4121cd | 0x004121ac cmp qword [r12 + 0x58], 0x17 | | if (*((r12 + 0x58)) != 0x17) { 0x004121b2 je 0x4121c4 | 0x004121b4 mov rsi, qword [r12 + 0x38] | rsi = *((r12 + 0x38)); 0x004121b9 mov rdi, qword [r12 + 0x60] | rdi = *((r12 + 0x60)); 0x004121be mov rax, qword [rdi] | rax = *(rdi); 0x004121c1 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x004121c4 mov qword [r12 + 0x50], 0xffffffffffffffff | *((r12 + 0x50)) = 0xffffffffffffffff; | } 0x004121cd mov dword [r12 + 0x68], 0 | *((r12 + 0x68)) = 0; | } 0x004121d6 cmp qword [r12 + 0x20], 0x17 | | if (*((r12 + 0x20)) == 0x17) { 0x004121dc je 0x41218c | goto label_1; | } 0x004121de mov rsi, qword [r12] | rsi = *(r12); 0x004121e2 mov rdi, qword [r12 + 0x28] | rdi = *((r12 + 0x28)); 0x004121e7 mov rax, qword [rdi] | rax = *(rdi); 0x004121ea call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); 0x004121ed jmp 0x41218c | goto label_1; | do { | label_2: 0x004121ef mov qword [rbx + 0x18], 0xffffffffffffffff | *((rbx + 0x18)) = 0xffffffffffffffff; 0x004121f7 sub rbx, 0xffffffffffffff80 | rbx -= 0xffffffffffffff80; 0x004121fb cmp rbp, rbx | | if (rbp == rbx) { 0x004121fe je 0x412246 | goto label_10; | } | label_8: 0x00412200 mov eax, dword [rbx + 0x68] | eax = *((rbx + 0x68)); 0x00412203 test eax, eax | | if (eax != 0) { 0x00412205 je 0x412230 | 0x00412207 cmp eax, 3 | | if (eax == 3) { 0x0041220a jne 0x412229 | 0x0041220c cmp qword [rbx + 0x58], 0x17 | | if (*((rbx + 0x58)) != 0x17) { 0x00412211 je 0x412221 | 0x00412213 mov rsi, qword [rbx + 0x38] | rsi = *((rbx + 0x38)); 0x00412217 mov rdi, qword [rbx + 0x60] | rdi = *((rbx + 0x60)); 0x0041221b mov rax, qword [rdi] | rax = *(rdi); 0x0041221e call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x00412221 mov qword [rbx + 0x50], 0xffffffffffffffff | *((rbx + 0x50)) = 0xffffffffffffffff; | } 0x00412229 mov dword [rbx + 0x68], 0 | *((rbx + 0x68)) = 0; | } 0x00412230 cmp qword [rbx + 0x20], 0x17 | 0x00412235 je 0x4121ef | | } while (*((rbx + 0x20)) == 0x17); 0x00412237 mov rsi, qword [rbx] | rsi = *(rbx); 0x0041223a mov rdi, qword [rbx + 0x28] | rdi = *((rbx + 0x28)); 0x0041223e mov rax, qword [rdi] | rax = *(rdi); 0x00412241 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); 0x00412244 jmp 0x4121ef | goto label_2; | label_10: 0x00412246 mov rbx, qword [rsp] | rbx = *(rsp); | label_9: 0x0041224a mov rdi, qword [rsp + 0x18] | rdi = *((rsp + 0x18)); 0x0041224f mov rax, qword [rdi] | rax = *(rdi); 0x00412252 mov rsi, rbx | rsi = rbx; 0x00412255 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); 0x00412258 jmp 0x41208d | goto label_3; | }