; assembly | /* r2dec pseudo code output */ | /* ball_attribute.t/assume @ 0x414ce0 */ | #include | ; (fcn) method.BloombergLP::bdlb::VariantImp_BloombergLP::bslmf::TypeList_int__long_long__bsl::basic_string_char__std::__1::char_traits_char___bsl::allocator_char_______.operator_BloombergLP::bdlb::VariantImp_BloombergLP::bslmf::TypeList_int__long_long__bsl::ba () | int64_t method_BloombergLP::bdlb::VariantImp_BloombergLP::bslmf::TypeList_int_long_long_bsl::basic_string_char_std::_1::char_traits_char_bsl::allocator_char_operator_BloombergLP::bdlb::VariantImp_BloombergLP::bslmf::TypeList_int_long_long_bsl::ba (char * arg2, uint32_t arg1) { | int64_t var_8h; | rsi = arg2; | rdi = arg1; | /* BloombergLP::bdlb::VariantImp, bsl::allocator > > >::operator=(BloombergLP::bdlb::VariantImp, bsl::allocator > > > const&) */ 0x00414ce0 push r15 | 0x00414ce2 push r14 | 0x00414ce4 push rbx | 0x00414ce5 sub rsp, 0x10 | 0x00414ce9 mov rbx, rdi | rbx = rdi; 0x00414cec cmp rsi, rdi | | if (rsi == rdi) { 0x00414cef je 0x414d69 | void (*0x414d69)() (); | } 0x00414cf1 mov r14, rsi | r14 = rsi; 0x00414cf4 mov eax, dword [rbx + 0x30] | eax = *((rbx + 0x30)); 0x00414cf7 mov ecx, dword [rsi + 0x30] | ecx = *((rsi + 0x30)); 0x00414cfa cmp eax, ecx | | if (eax != ecx) { 0x00414cfc jne 0x414d16 | goto label_0; | } 0x00414cfe lea ecx, [rax - 4] | ecx = rax - 4; 0x00414d01 cmp ecx, 0x11 | | if (ecx < 0x11) { 0x00414d04 jb 0x414d69 | void (*0x414d69)() (); | } 0x00414d06 mov eax, eax | | /* switch table (18 cases) at 0x426f48 */ 0x00414d08 jmp qword [rax*8 + 0x426f48] | | label_0: 0x00414d16 test eax, eax | | if (eax != 0) { 0x00414d18 je 0x414d46 | 0x00414d1a cmp eax, 3 | | if (eax == 3) { 0x00414d1d jne 0x414d3b | 0x00414d1f cmp qword [rbx + 0x20], 0x17 | | if (*((rbx + 0x20)) != 0x17) { 0x00414d24 je 0x414d33 | 0x00414d26 mov rsi, qword [rbx] | rsi = *(rbx); 0x00414d29 mov rdi, qword [rbx + 0x28] | rdi = *((rbx + 0x28)); 0x00414d2d mov rax, qword [rdi] | rax = *(rdi); 0x00414d30 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x00414d33 mov qword [rbx + 0x18], 0xffffffffffffffff | *((rbx + 0x18)) = 0xffffffffffffffff; | } 0x00414d3b mov dword [rbx + 0x30], 0 | *((rbx + 0x30)) = 0; 0x00414d42 mov ecx, dword [r14 + 0x30] | ecx = *((r14 + 0x30)); | } 0x00414d46 test ecx, ecx | | if (ecx == 0) { 0x00414d48 je 0x414d69 | void (*0x414d69)() (); | } 0x00414d4a mov rax, qword [rbx + 0x38] | rax = *((rbx + 0x38)); 0x00414d4e mov qword [rsp], rbx | *(rsp) = rbx; 0x00414d52 mov qword [rsp + 8], rax | *((rsp + 8)) = rax; 0x00414d57 mov rsi, rsp | rsi = rsp; 0x00414d5a mov rdi, r14 | rdi = r14; 0x00414d5d call 0x414c00 | _ZNK11BloombergLP4bdlb10VariantImpINS_5bslmf8TypeListIJixN3bsl12basic_stringIcNSt3_111char_traitsIcEENS4_9allocatorIcEEEEEEEE5applyINS0_28Variant_CopyConstructVisitorEEENS4_9enable_ifIXeqsr25Variant_ReturnValueHelperIT_EE5valueLi0EEvE4typeERSH_ (); 0x00414d62 mov eax, dword [r14 + 0x30] | eax = *((r14 + 0x30)); 0x00414d66 mov dword [rbx + 0x30], eax | *((rbx + 0x30)) = eax; | }