; assembly | /* r2dec pseudo code output */ | /* bdlat_symbolicconverter.t/none @ 0x410860 */ | #include | ; (fcn) method.int_BloombergLP::bdlat_SymbolicConverter_Imp::convert_BloombergLP::test::CustomizedA__BloombergLP::test::EnumerationA::Value__BloombergLP::bdlat_TypeCategory.Enumeration__BloombergLP::test::CustomizedA__BloombergLP::bdlat_TypeCategory::Customized () | int64_t method_int_BloombergLP::bdlat_SymbolicConverter_Imp::convert_BloombergLP::test::CustomizedA_BloombergLP::test::EnumerationA::Value_BloombergLP::bdlat_TypeCategory_Enumeration_BloombergLP::test::CustomizedA_BloombergLP::bdlat_TypeCategory::Customized (int64_t arg3, int64_t arg2) { | int64_t var_8h; | int64_t var_20h; | uint32_t var_28h; | int64_t var_30h; | rdx = arg3; | rsi = arg2; | /* int BloombergLP::bdlat_SymbolicConverter_Imp::convert(BloombergLP::test::CustomizedA*, BloombergLP::bdlat_TypeCategory::CustomizedType, BloombergLP::test::EnumerationA::Value const&, BloombergLP::bdlat_TypeCategory::Enumeration) */ 0x00410860 push rbp | 0x00410861 push r15 | 0x00410863 push r14 | 0x00410865 push rbx | 0x00410866 sub rsp, 0x38 | 0x0041086a mov rbp, rdx | 0x0041086d mov r14, rsi | r14 = rsi; 0x00410870 mov qword [rsp + 8], 0 | *((rsp + 8)) = 0; 0x00410879 movaps xmm0, xmmword [rip + 0x26ea0] | xmm0 = .comment; 0x00410880 movups xmmword [rsp + 0x20], xmm0 | __asm ("movups xmmword [rsp + 0x20], xmm0"); 0x00410885 mov rax, qword [rip + 0x23feb4] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x0041088c test rax, rax | | if (rax != 0) { 0x0041088f je 0x41089d | 0x00410891 lea rcx, [rsp + 8] | rcx = rsp + 8; 0x00410896 mov qword [rsp + 0x30], rax | *((rsp + 0x30)) = rax; 0x0041089b jmp 0x4108bb | | } else { 0x0041089d call 0x411ec0 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); 0x004108a2 cmp qword [rsp + 0x28], 0x17 | 0x004108a8 mov qword [rsp + 0x30], rax | *((rsp + 0x30)) = rax; | if (*((rsp + 0x28)) != 0x17) { 0x004108ad je 0x4108b6 | 0x004108af mov rcx, qword [rsp + 8] | rcx = *((rsp + 8)); 0x004108b4 jmp 0x4108bb | | } else { 0x004108b6 lea rcx, [rsp + 8] | rcx = rsp + 8; | } | } 0x004108bb mov byte [rcx], 0 | *(rcx) = 0; 0x004108be mov eax, dword [rbp] | eax = *(rbp); 0x004108c1 xor ecx, ecx | ecx = 0; 0x004108c3 cmp eax, 2 | 0x004108c6 mov edx, 0x437e86 | edx = "VALUE2"; | if (eax == 2) { 0x004108cb cmove rcx, rdx | rcx = rdx; | } 0x004108cf cmp eax, 1 | 0x004108d2 mov ebp, 0x437e7f | | if (eax != 1) { 0x004108d7 cmovne rbp, rcx | | } 0x004108db mov rdi, rbp | 0x004108de call 0x402ef0 | rax = strlen (rbp); 0x004108e3 mov r15, qword [rsp + 0x20] | r15 = *((rsp + 0x20)); 0x004108e8 mov qword [rsp + 0x20], 0 | *((rsp + 0x20)) = 0; 0x004108f1 lea rbx, [rsp + 8] | rbx = rsp + 8; 0x004108f6 mov ecx, 0x438d47 | 0x004108fb mov rdi, rbx | 0x004108fe mov rsi, rbp | 0x00410901 mov rdx, rax | 0x00410904 call 0x413fd0 | bsl::basic_string,bsl::allocator>::privateAppend(char const*,unsigned long,char const*) (rbx, rbp, rax, "string<...>::assign(char*...): string too long"); 0x00410909 mov rdx, qword [rsp + 0x20] | rdx = *((rsp + 0x20)); 0x0041090e mov ebp, 0xffffffff | 0x00410913 cmp rdx, 5 | | if (rdx <= 5) { 0x00410917 ja 0x410949 | 0x00410919 xor ebp, ebp | ebp = 0; 0x0041091b cmp r14, rbx | | if (r14 == rbx) { 0x0041091e je 0x410949 | goto label_0; | } 0x00410920 cmp qword [rsp + 0x28], 0x17 | | if (*((rsp + 0x28)) != 0x17) { 0x00410926 je 0x41092d | 0x00410928 mov rbx, qword [rsp + 8] | rbx = *((rsp + 8)); | } 0x0041092d mov r15, qword [r14 + 0x18] | r15 = *((r14 + 0x18)); 0x00410931 mov qword [r14 + 0x18], 0 | *((r14 + 0x18)) = 0; 0x00410939 mov ecx, 0x438ce7 | 0x0041093e mov rdi, r14 | 0x00410941 mov rsi, rbx | 0x00410944 call 0x413fd0 | bsl::basic_string,bsl::allocator>::privateAppend(char const*,unsigned long,char const*) (r14, rbx, rdx, "string<...>::operator=(const string&...): string too long"); | } | label_0: 0x00410949 cmp qword [rsp + 0x28], 0x17 | | if (*((rsp + 0x28)) != 0x17) { 0x0041094f je 0x410961 | 0x00410951 mov rsi, qword [rsp + 8] | rsi = *((rsp + 8)); 0x00410956 mov rdi, qword [rsp + 0x30] | rdi = *((rsp + 0x30)); 0x0041095b mov rax, qword [rdi] | rax = *(rdi); 0x0041095e call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x00410961 mov eax, ebp | eax = ebp; 0x00410963 add rsp, 0x38 | 0x00410967 pop rbx | 0x00410968 pop r14 | 0x0041096a pop r15 | 0x0041096c pop rbp | 0x0041096d ret | return rax; | }