; assembly | /* r2dec pseudo code output */ | /* ball_attributecollectorregistry.t/none @ 0x4057a0 */ | #include | ; (fcn) method.u.collectingVisitor_bsl::vector_BloombergLP::ball::ManagedAttribute__bsl::allocator_BloombergLP::ball::ManagedAttribute_____BloombergLP::ball::Attribute_const_ () | uint64_t method_u_collectingVisitor_bsl::vector_BloombergLP::ball::ManagedAttribute_bsl::allocator_BloombergLP::ball::ManagedAttribute_BloombergLP::ball::Attribute_const_ (int64_t arg2, int64_t arg1) { | int64_t var_18h; | uint32_t var_20h; | int64_t var_28h; | int64_t var_30h; | int64_t var_38h; | int64_t var_50h; | uint32_t var_58h; | int64_t var_60h; | int64_t var_68h; | int64_t var_78h; | rsi = arg2; | rdi = arg1; | /* u::collectingVisitor(bsl::vector >*, BloombergLP::ball::Attribute const&) */ 0x004057a0 push r15 | 0x004057a2 push r14 | 0x004057a4 push r13 | 0x004057a6 push r12 | 0x004057a8 push rbx | 0x004057a9 sub rsp, 0x80 | 0x004057b0 mov r12, rsi | r12 = rsi; 0x004057b3 mov r14, rdi | r14 = rdi; 0x004057b6 mov r15, qword [rip + 0x248223] | r15 = BloombergLP::bslma::Default::s_defaultAllocator; 0x004057bd test r15, r15 | | if (r15 == 0) { 0x004057c0 jne 0x4057ca | 0x004057c2 call 0x40cd40 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); 0x004057c7 mov r15, rax | r15 = rax; | } 0x004057ca mov r13, qword [r12] | r13 = *(r12); 0x004057ce mov qword [rsp], 0 | *(rsp) = 0; 0x004057d6 mov qword [rsp + 0x20], 0x17 | *((rsp + 0x20)) = 0x17; 0x004057df mov qword [rsp + 0x28], r15 | *((rsp + 0x28)) = r15; 0x004057e4 mov rdi, r13 | 0x004057e7 call 0x404020 | rax = strlen (r13); 0x004057ec mov qword [rsp + 0x18], 0 | *((rsp + 0x18)) = 0; 0x004057f5 mov rbx, rsp | rbx = rsp; 0x004057f8 mov ecx, 0x43427c | 0x004057fd mov rdi, rbx | 0x00405800 mov rsi, r13 | 0x00405803 mov rdx, rax | 0x00405806 call 0x4104c0 | bsl::basic_string,bsl::allocator>::privateAppend(char const*,unsigned long,char const*) (rbx, r13, rax, "string<...>::assign(char*...): string too long"); 0x0040580b cmp qword [rsp + 0x20], 0x17 | | if (*((rsp + 0x20)) != 0x17) { 0x00405811 je 0x405817 | 0x00405813 mov rbx, qword [rsp] | rbx = *(rsp); | } 0x00405817 mov qword [rsp + 0x30], rbx | *((rsp + 0x30)) = rbx; 0x0040581c lea rdi, [rsp + 0x38] | 0x00405821 add r12, 8 | r12 += 8; 0x00405825 mov rsi, r12 | 0x00405828 mov rdx, r15 | 0x0040582b call 0x40a430 | BloombergLP::bdlb::VariantImp,bsl::allocator>>>::VariantImp(BloombergLP::bdlb::VariantImp,bsl::allocator>>>const&,BloombergLP::bslma::Allocator*) (rsp + 0x38, r12, r15); 0x00405830 mov eax, 0xffffffff | eax = 0xffffffff; 0x00405835 mov qword [rsp + 0x78], rax | *((rsp + 0x78)) = rax; 0x0040583a mov rsi, rsp | 0x0040583d mov rdi, r14 | 0x00405840 call 0x409490 | bsl::vector>::push_back(BloombergLP::ball::ManagedAttribute&&) (r14, rsp); 0x00405845 mov eax, dword [rsp + 0x68] | eax = *((rsp + 0x68)); 0x00405849 test eax, eax | | if (eax != 0) { 0x0040584b je 0x40587b | 0x0040584d cmp eax, 3 | | if (eax == 3) { 0x00405850 jne 0x405873 | 0x00405852 cmp qword [rsp + 0x58], 0x17 | | if (*((rsp + 0x58)) != 0x17) { 0x00405858 je 0x40586a | 0x0040585a mov rsi, qword [rsp + 0x38] | rsi = *((rsp + 0x38)); 0x0040585f mov rdi, qword [rsp + 0x60] | rdi = *((rsp + 0x60)); 0x00405864 mov rax, qword [rdi] | rax = *(rdi); 0x00405867 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x0040586a mov qword [rsp + 0x50], 0xffffffffffffffff | *((rsp + 0x50)) = 0xffffffffffffffff; | } 0x00405873 mov dword [rsp + 0x68], 0 | *((rsp + 0x68)) = 0; | } 0x0040587b cmp qword [rsp + 0x20], 0x17 | | if (*((rsp + 0x20)) != 0x17) { 0x00405881 je 0x405892 | 0x00405883 mov rsi, qword [rsp] | rsi = *(rsp); 0x00405887 mov rdi, qword [rsp + 0x28] | rdi = *((rsp + 0x28)); 0x0040588c mov rax, qword [rdi] | rax = *(rdi); 0x0040588f call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x00405892 add rsp, 0x80 | 0x00405899 pop rbx | 0x0040589a pop r12 | 0x0040589c pop r13 | 0x0040589e pop r14 | 0x004058a0 pop r15 | 0x004058a2 ret | return rax; | }