; assembly | /* r2dec pseudo code output */ | /* ball_administration.t/none @ 0x4120d0 */ | #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&&) */ 0x004120d0 push rbp | 0x004120d1 push r15 | 0x004120d3 push r14 | 0x004120d5 push r13 | 0x004120d7 push r12 | 0x004120d9 push rbx | 0x004120da sub rsp, 0x28 | 0x004120de mov r12, rsi | r12 = rsi; 0x004120e1 mov rbx, rdi | rbx = rdi; 0x004120e4 mov rdi, qword [rdi + 8] | rdi = *((rdi + 8)); 0x004120e8 mov rsi, qword [rbx + 0x10] | rsi = *((rbx + 0x10)); 0x004120ec mov rax, rdi | rax = rdi; 0x004120ef sub rax, qword [rbx] | rax -= *(rbx); 0x004120f2 sar rax, 7 | rax >>= 7; 0x004120f6 cmp rsi, rax | | if (rsi <= rax) { 0x004120f9 jbe 0x41211d | goto label_4; | } 0x004120fb mov rsi, qword [rbx + 0x18] | 0x004120ff xor edx, edx | 0x00412101 mov rcx, r12 | rcx = r12; 0x00412104 call 0x4124c0 | rax = voidBloombergLP::bslma::ConstructionUtil_Imp::construct(BloombergLP::ball::ManagedAttribute*,BloombergLP::bslma::Allocator*,bsl::integral_constant*,BloombergLP::ball::ManagedAttribute&&) (rdi, *((rbx + 0x18)), 0); 0x00412109 sub qword [rbx + 8], 0xffffffffffffff80 | *((rbx + 8)) -= 0xffffffffffffff80; | do { | label_3: 0x0041210e add rsp, 0x28 | 0x00412112 pop rbx | 0x00412113 pop r12 | 0x00412115 pop r13 | 0x00412117 pop r14 | 0x00412119 pop r15 | 0x0041211b pop rbp | 0x0041211c ret | return rax; | label_4: 0x0041211d inc rax | rax++; 0x00412120 movabs rdx, 0x1ffffffffffffff | rdx = 0x1ffffffffffffff; 0x0041212a mov rdi, rax | 0x0041212d call 0x43e210 | rax = bsl::Vector_Util::computeNewCapacity(unsigned long,unsigned long,unsigned long) (rax, rsi, rdx); 0x00412132 mov r14, rax | r14 = rax; 0x00412135 mov rdi, qword [rbx + 0x18] | rdi = *((rbx + 0x18)); 0x00412139 xorps xmm0, xmm0 | __asm ("xorps xmm0, xmm0"); 0x0041213c movaps xmmword [rsp], xmm0 | *(rsp) = xmm0; 0x00412140 mov qword [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x00412149 mov qword [rsp + 0x18], rdi | *((rsp + 0x18)) = rdi; 0x0041214e mov rsi, rax | rsi = rax; 0x00412151 shl rsi, 7 | rsi <<= 7; 0x00412155 mov rax, qword [rdi] | rax = *(rdi); 0x00412158 call qword [rax + 0x10] | rax = uint64_t (*rax + 0x10)() (); 0x0041215b mov r15, rax | r15 = rax; 0x0041215e mov qword [rsp + 8], rax | *((rsp + 8)) = rax; 0x00412163 mov qword [rsp], rax | *(rsp) = rax; 0x00412167 mov qword [rsp + 0x10], r14 | *((rsp + 0x10)) = r14; 0x0041216c mov rbp, qword [rbx + 8] | rbp = *((rbx + 8)); 0x00412170 mov rsi, qword [rbx + 0x18] | 0x00412174 sub rbp, qword [rbx] | rbp -= *(rbx); 0x00412177 lea r14, [rax + rbp] | r14 = rax + rbp; 0x0041217b mov rdi, r14 | 0x0041217e xor edx, edx | 0x00412180 mov rcx, r12 | rcx = r12; 0x00412183 call 0x4124c0 | voidBloombergLP::bslma::ConstructionUtil_Imp::construct(BloombergLP::ball::ManagedAttribute*,BloombergLP::bslma::Allocator*,bsl::integral_constant*,BloombergLP::ball::ManagedAttribute&&) (r14, *((rbx + 0x18)), 0); 0x00412188 sar rbp, 7 | rbp >>= 7; 0x0041218c mov rdi, qword [rsp] | 0x00412190 mov r12, qword [rbx] | r12 = *(rbx); 0x00412193 mov r13, qword [rbx + 8] | r13 = *((rbx + 8)); 0x00412197 mov rax, qword [rbx + 0x18] | rax = *((rbx + 0x18)); 0x0041219b mov qword [rsp + 0x20], rax | *((rsp + 0x20)) = rax; 0x004121a0 lea rcx, [rsp + 0x20] | 0x004121a5 mov rsi, r12 | 0x004121a8 mov rdx, r13 | 0x004121ab xor r8d, r8d | r8d = 0; 0x004121ae call 0x412700 | 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); 0x004121b3 cmp r12, r13 | | if (r12 != r13) { 0x004121b6 jne 0x412201 | goto label_5; | } | label_0: 0x004121b8 mov rax, qword [rbx] | rax = *(rbx); 0x004121bb mov qword [rbx + 8], rax | *((rbx + 8)) = rax; 0x004121bf sub r14, 0xffffffffffffff80 | r14 -= 0xffffffffffffff80; 0x004121c3 mov qword [rsp + 8], r14 | *((rsp + 8)) = r14; 0x004121c8 mov rsi, rsp | 0x004121cb mov rdi, rbx | 0x004121ce call 0x43e240 | bsl::Vector_Util::swap(void*,void*) (rbx, rsp); 0x004121d3 mov rbx, qword [rsp] | rbx = *(rsp); 0x004121d7 test rbx, rbx | 0x004121da je 0x41210e | | } while (rbx == 0); 0x004121e0 mov rbp, qword [rsp + 8] | rbp = *((rsp + 8)); 0x004121e5 cmp rbx, rbp | | if (rbx != rbp) { 0x004121e8 jne 0x412263 | goto label_6; | } 0x004121ea jmp 0x4122ad | goto label_7; | label_1: 0x004121ef mov qword [r12 + 0x18], 0xffffffffffffffff | *((r12 + 0x18)) = 0xffffffffffffffff; 0x004121f8 sub r12, 0xffffffffffffff80 | r12 -= 0xffffffffffffff80; 0x004121fc cmp r13, r12 | | if (r13 == r12) { 0x004121ff je 0x4121b8 | goto label_0; | } | label_5: 0x00412201 mov eax, dword [r12 + 0x68] | eax = *((r12 + 0x68)); 0x00412206 test eax, eax | | if (eax != 0) { 0x00412208 je 0x412239 | 0x0041220a cmp eax, 3 | | if (eax == 3) { 0x0041220d jne 0x412230 | 0x0041220f cmp qword [r12 + 0x58], 0x17 | | if (*((r12 + 0x58)) != 0x17) { 0x00412215 je 0x412227 | 0x00412217 mov rsi, qword [r12 + 0x38] | rsi = *((r12 + 0x38)); 0x0041221c mov rdi, qword [r12 + 0x60] | rdi = *((r12 + 0x60)); 0x00412221 mov rax, qword [rdi] | rax = *(rdi); 0x00412224 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x00412227 mov qword [r12 + 0x50], 0xffffffffffffffff | *((r12 + 0x50)) = 0xffffffffffffffff; | } 0x00412230 mov dword [r12 + 0x68], 0 | *((r12 + 0x68)) = 0; | } 0x00412239 cmp qword [r12 + 0x20], 0x17 | | if (*((r12 + 0x20)) == 0x17) { 0x0041223f je 0x4121ef | goto label_1; | } 0x00412241 mov rsi, qword [r12] | rsi = *(r12); 0x00412245 mov rdi, qword [r12 + 0x28] | rdi = *((r12 + 0x28)); 0x0041224a mov rax, qword [rdi] | rax = *(rdi); 0x0041224d call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); 0x00412250 jmp 0x4121ef | goto label_1; | do { | label_2: 0x00412252 mov qword [rbx + 0x18], 0xffffffffffffffff | *((rbx + 0x18)) = 0xffffffffffffffff; 0x0041225a sub rbx, 0xffffffffffffff80 | rbx -= 0xffffffffffffff80; 0x0041225e cmp rbp, rbx | | if (rbp == rbx) { 0x00412261 je 0x4122a9 | goto label_8; | } | label_6: 0x00412263 mov eax, dword [rbx + 0x68] | eax = *((rbx + 0x68)); 0x00412266 test eax, eax | | if (eax != 0) { 0x00412268 je 0x412293 | 0x0041226a cmp eax, 3 | | if (eax == 3) { 0x0041226d jne 0x41228c | 0x0041226f cmp qword [rbx + 0x58], 0x17 | | if (*((rbx + 0x58)) != 0x17) { 0x00412274 je 0x412284 | 0x00412276 mov rsi, qword [rbx + 0x38] | rsi = *((rbx + 0x38)); 0x0041227a mov rdi, qword [rbx + 0x60] | rdi = *((rbx + 0x60)); 0x0041227e mov rax, qword [rdi] | rax = *(rdi); 0x00412281 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x00412284 mov qword [rbx + 0x50], 0xffffffffffffffff | *((rbx + 0x50)) = 0xffffffffffffffff; | } 0x0041228c mov dword [rbx + 0x68], 0 | *((rbx + 0x68)) = 0; | } 0x00412293 cmp qword [rbx + 0x20], 0x17 | 0x00412298 je 0x412252 | | } while (*((rbx + 0x20)) == 0x17); 0x0041229a mov rsi, qword [rbx] | rsi = *(rbx); 0x0041229d mov rdi, qword [rbx + 0x28] | rdi = *((rbx + 0x28)); 0x004122a1 mov rax, qword [rdi] | rax = *(rdi); 0x004122a4 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); 0x004122a7 jmp 0x412252 | goto label_2; | label_8: 0x004122a9 mov rbx, qword [rsp] | rbx = *(rsp); | label_7: 0x004122ad mov rdi, qword [rsp + 0x18] | rdi = *((rsp + 0x18)); 0x004122b2 mov rax, qword [rdi] | rax = *(rdi); 0x004122b5 mov rsi, rbx | rsi = rbx; 0x004122b8 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); 0x004122bb jmp 0x41210e | goto label_3; | }