; assembly | /* r2dec pseudo code output */ | /* bdlat_symbolicconverter.t/assume @ 0x410060 */ | #include | ; (fcn) method.int_BloombergLP::bdlat_SymbolicConverter_StoreInSequence_BloombergLP::test::MixedSequence_.operator___BloombergLP::test::EnumerationA::Value__BloombergLP::bdlat_AttributeInfo__BloombergLP::test::EnumerationA::Value_const__BloombergLP::bdlat_Attri () | uint64_t method_int_BloombergLP::bdlat_SymbolicConverter_StoreInSequence_BloombergLP::test::MixedSequence_operator_BloombergLP::test::EnumerationA::Value_BloombergLP::bdlat_AttributeInfo_BloombergLP::test::EnumerationA::Value_const_BloombergLP::bdlat_Attri (int64_t arg3, int64_t arg2, int64_t arg1) { | rdx = arg3; | rsi = arg2; | rdi = arg1; | /* int BloombergLP::bdlat_SymbolicConverter_StoreInSequence::operator()(BloombergLP::test::EnumerationA::Value const&, BloombergLP::bdlat_AttributeInfo const&) const */ 0x00410060 push r15 | 0x00410062 push r14 | 0x00410064 push r13 | 0x00410066 push r12 | 0x00410068 push rbx | 0x00410069 mov rbx, rdx | rbx = rdx; 0x0041006c mov r12, rsi | r12 = rsi; 0x0041006f mov r15, rdi | r15 = rdi; 0x00410072 mov r14, qword [rdi] | r14 = *(rdi); 0x00410075 mov r13, qword [rdi + 8] | r13 = *((rdi + 8)); 0x00410079 mov rdi, qword [rdx + 8] | 0x0041007d mov esi, dword [rdx + 0x10] | 0x00410080 call 0x404960 | rax = BloombergLP::test::MixedSequence::lookupAttributeInfo(char const*,int) (*((rdx + 8)), *((rdx + 0x10))); 0x00410085 test rax, rax | | if (rax != 0) { 0x00410088 je 0x4100b4 | 0x0041008a mov eax, dword [rax] | eax = *(rax); 0x0041008c dec eax | eax--; 0x0041008e cmp eax, 4 | | if (eax > 4) { 0x00410091 ja 0x4100b4 | goto label_2; | } | /* switch table (5 cases) at 0x437d60 */ 0x00410093 jmp qword [rax*8 + 0x437d60] | 0x0041009a add r14, 0x40 | r14 += 0x40; 0x0041009e mov rdi, r13 | 0x004100a1 mov rsi, r14 | 0x004100a4 mov rdx, r12 | rdx = r12; 0x004100a7 call 0x4108b0 | eax = intBloombergLP::bdlat_SymbolicConverter_Imp::convert(BloombergLP::test::CustomizedA*,BloombergLP::bdlat_TypeCategory::CustomizedType,BloombergLP::test::EnumerationA::Valueconst&,BloombergLP::bdlat_TypeCategory::Enumeration) (r13, r14); 0x004100ac test eax, eax | | if (eax == 0) { 0x004100ae je 0x410129 | goto label_3; | } | label_0: 0x004100b0 mov r13, qword [r15 + 8] | r13 = *((r15 + 8)); | } | label_2: 0x004100b4 mov rdi, qword [r13] | 0x004100b8 mov esi, 0x438d42 | 0x004100bd mov edx, 0x1d | 0x004100c2 call 0x40f620 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (*(r13), "Failed to convert attribute ', 0x1d); 0x004100c7 mov rsi, qword [rbx + 8] | 0x004100cb movsxd rdx, dword [rbx + 0x10] | rdx = *((rbx + 0x10)); 0x004100cf mov rdi, rax | 0x004100d2 call 0x40f620 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, *((rbx + 8)), rdx); 0x004100d7 mov esi, 0x438d60 | 0x004100dc mov edx, 2 | 0x004100e1 mov rdi, rax | 0x004100e4 call 0x40f620 | std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x438d60, 2); 0x004100e9 mov ebx, 0xfffffff9 | ebx = 0xfffffff9; | do { | label_1: 0x004100ee mov eax, ebx | eax = 0xfffffff9; 0x004100f0 pop rbx | 0x004100f1 pop r12 | 0x004100f3 pop r13 | 0x004100f5 pop r14 | 0x004100f7 pop r15 | 0x004100f9 ret | return rax; 0x004100fa mov dword [r14 + 0x70], 0 | *((r14 + 0x70)) = 0; 0x00410102 mov byte [r14 + 0x74], 1 | *((r14 + 0x74)) = 1; 0x00410107 mov eax, dword [r12] | eax = *(r12); 0x0041010b mov dword [r14 + 0x70], eax | *((r14 + 0x70)) = eax; 0x0041010f xor ebx, ebx | ebx = 0; 0x00410111 jmp 0x4100ee | | } while (1); 0x00410113 add r14, 0x78 | r14 += 0x78; 0x00410117 mov rdi, r13 | 0x0041011a mov rsi, r14 | 0x0041011d mov rdx, r12 | rdx = r12; 0x00410120 call 0x410a00 | eax = intBloombergLP::bdlat_SymbolicConverter_Imp::convert(BloombergLP::test::EnumerationA::Value*,BloombergLP::bdlat_TypeCategory::Enumeration,BloombergLP::test::EnumerationA::Valueconst&,BloombergLP::bdlat_TypeCategory::Enumeration) (r13, r14); 0x00410125 test eax, eax | | if (eax != 0) { 0x00410127 jne 0x4100b0 | goto label_0; | } | label_3: 0x00410129 xor ebx, ebx | ebx = 0; 0x0041012b jmp 0x4100ee | goto label_1; 0x0041012d mov eax, dword [r12] | eax = *(r12); 0x00410131 mov dword [r14 + 0x7c], eax | *((r14 + 0x7c)) = eax; 0x00410135 xor ebx, ebx | ebx = 0; 0x00410137 jmp 0x4100ee | goto label_1; 0x00410139 cmp dword [r12], 1 | 0x0041013e mov eax, 0x437e97 | eax = "VALUE1"; 0x00410143 mov esi, 0x437e9e | esi = "VALUE2"; | if (*(r12) == 1) { 0x00410148 cmove rsi, rax | rsi = rax; | } 0x0041014c lea rdi, [r14 + 0x80] | 0x00410153 mov r15, qword [r14 + 0x98] | r15 = *((r14 + 0x98)); 0x0041015a mov qword [r14 + 0x98], 0 | *((r14 + 0x98)) = 0; 0x00410165 xor ebx, ebx | ebx = 0; 0x00410167 mov edx, 6 | 0x0041016c mov ecx, 0x438d63 | 0x00410171 call 0x414040 | bsl::basic_string,bsl::allocator>::privateAppend(char const*,unsigned long,char const*) (r14 + 0x80, rsi, 6, "string<...>::assign(char*...): string too long"); 0x00410176 jmp 0x4100ee | goto label_1; | }