; assembly | /* r2dec pseudo code output */ | /* ball_defaultattributecontainer.t/assume @ 0x417640 */ | #include | ; (fcn) method.void_BloombergLP::bslalg::ArrayPrimitives_Imp::moveIfNoexcept_BloombergLP::ball::Attribute__bsl::allocator_BloombergLP::ball.Attribute____BloombergLP::ball::Attribute__BloombergLP::ball::Attribute__BloombergLP::ball::Attribute__bsl::allocator_B () | uint64_t method_void_BloombergLP::bslalg::ArrayPrimitives_Imp::moveIfNoexcept_BloombergLP::ball::Attribute_bsl::allocator_BloombergLP::ball_Attribute_BloombergLP::ball::Attribute_BloombergLP::ball::Attribute_BloombergLP::ball::Attribute_bsl::allocator_B (int64_t arg4, int64_t arg3, uint32_t arg2, int64_t arg1) { | int64_t var_8h; | int64_t var_10h; | rcx = arg4; | rdx = arg3; | rsi = arg2; | rdi = arg1; | /* void BloombergLP::bslalg::ArrayPrimitives_Imp::moveIfNoexcept >(BloombergLP::ball::Attribute*, BloombergLP::ball::Attribute*, BloombergLP::ball::Attribute*, bsl::allocator, BloombergLP::bslmf::MetaInt<0>*) */ 0x00417640 push rbp | 0x00417641 push r15 | 0x00417643 push r14 | 0x00417645 push r13 | 0x00417647 push r12 | 0x00417649 push rbx | 0x0041764a sub rsp, 0x18 | 0x0041764e cmp rsi, rdx | | if (rsi == rdx) { 0x00417651 je 0x41771e | goto label_1; | } 0x00417657 mov r14, rcx | r14 = rcx; 0x0041765a mov r15, rdx | r15 = rdx; 0x0041765d mov rbx, rsi | rbx = rsi; 0x00417660 mov r13, rdi | r13 = rdi; 0x00417663 add rbx, 8 | rbx += 8; 0x00417667 xor ebp, ebp | ebp = 0; 0x00417669 mov r12, rdi | r12 = rdi; 0x0041766c jmp 0x41769d | | while (ecx == 0) { | label_0: 0x00417670 lea rax, [rbx - 8] | rax = rbx - 8; 0x00417674 mov ecx, dword [rbx + 0x40] | ecx = *((rbx + 0x40)); 0x00417677 mov dword [r12 + 0x48], ecx | *((r12 + 0x48)) = ecx; 0x0041767c mov ecx, dword [rbx + 0x44] | ecx = *((rbx + 0x44)); 0x0041767f mov dword [r12 + 0x4c], ecx | *((r12 + 0x4c)) = ecx; 0x00417684 add r12, 0x50 | r12 += 0x50; 0x00417688 add rbp, 0xffffffffffffffb0 | rbp += 0xffffffffffffffb0; 0x0041768c add rbx, 0x50 | rbx += 0x50; 0x00417690 add rax, 0x50 | rax += 0x50; 0x00417694 cmp rax, r15 | | if (rax == r15) { 0x00417697 je 0x41771e | goto label_1; | } 0x0041769d mov rax, qword [r14] | rax = *(r14); 0x004176a0 test rax, rax | | if (rax == 0) { 0x004176a3 jne 0x4176c0 | 0x004176a5 mov rax, qword [rip + 0x245684] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x004176ac test rax, rax | | if (rax != 0) { 0x004176af jne 0x4176c0 | goto label_2; | } 0x004176b1 call 0x41b050 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); 0x004176b6 nop word cs:[rax + rax] | | } | label_2: 0x004176c0 mov rcx, qword [rbx - 8] | rcx = *((rbx - 8)); 0x004176c4 mov qword [r12], rcx | *(r12) = rcx; 0x004176c8 mov ecx, dword [rbx + 0x30] | ecx = *((rbx + 0x30)); 0x004176cb mov dword [r12 + 0x38], ecx | *((r12 + 0x38)) = ecx; 0x004176d0 test rax, rax | | if (rax == 0) { 0x004176d3 jne 0x4176f0 | 0x004176d5 mov rax, qword [rip + 0x245654] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x004176dc test rax, rax | | if (rax != 0) { 0x004176df jne 0x4176f0 | goto label_3; | } 0x004176e1 call 0x41b050 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); 0x004176e6 mov ecx, dword [r12 + 0x38] | ecx = *((r12 + 0x38)); 0x004176eb nop dword [rax + rax] | | } | label_3: 0x004176f0 mov qword [r12 + 0x40], rax | *((r12 + 0x40)) = rax; 0x004176f5 test ecx, ecx | 0x004176f7 je 0x417670 | | } 0x004176fd lea rcx, [r12 + 8] | rcx = r12 + 8; 0x00417702 mov qword [rsp + 8], rcx | *((rsp + 8)) = rcx; 0x00417707 mov qword [rsp + 0x10], rax | *((rsp + 0x10)) = rax; 0x0041770c mov rdi, rbx | rdi = rbx; 0x0041770f lea rsi, [rsp + 8] | rsi = rsp + 8; 0x00417714 call 0x416760 | _ZNK11BloombergLP4bdlb10VariantImpINS_5bslmf8TypeListIJixN3bsl12basic_stringIcNSt3_111char_traitsIcEENS4_9allocatorIcEEEEEEEE5applyINS0_28Variant_CopyConstructVisitorEEENS4_9enable_ifIXeqsr25Variant_ReturnValueHelperIT_EE5valueLi0EEvE4typeERSH_ (); 0x00417719 jmp 0x417670 | goto label_0; | label_1: 0x0041771e add rsp, 0x18 | 0x00417722 pop rbx | 0x00417723 pop r12 | 0x00417725 pop r13 | 0x00417727 pop r14 | 0x00417729 pop r15 | 0x0041772b pop rbp | 0x0041772c ret | return rax; | }