; assembly | /* r2dec pseudo code output */ | /* bdlat_symbolicconverter.t/assume @ 0x410530 */ | #include | ; (fcn) method.int_BloombergLP::bdlat_SymbolicConverter_StoreInChoice_BloombergLP::test::ChoiceA_.operator___bsl::basic_string_char__std::__1::char_traits_char___bsl::allocator_char_____BloombergLP::bdlat_SelectionInfo__bsl::basic_string_char__std::__1::char_tra () | uint64_t method_int_BloombergLP::bdlat_SymbolicConverter_StoreInChoice_BloombergLP::test::ChoiceA_operator_bsl::basic_string_char_std::_1::char_traits_char_bsl::allocator_char_BloombergLP::bdlat_SelectionInfo_bsl::basic_string_char_std::_1::char_tra (uint32_t arg3, int64_t arg2, int64_t arg1) { | rdx = arg3; | rsi = arg2; | rdi = arg1; | /* int BloombergLP::bdlat_SymbolicConverter_StoreInChoice::operator(), bsl::allocator >, BloombergLP::bdlat_SelectionInfo>(bsl::basic_string, bsl::allocator > const&, BloombergLP::bdlat_SelectionInfo const&) const */ 0x00410530 push rbp | 0x00410531 push r15 | 0x00410533 push r14 | 0x00410535 push r13 | 0x00410537 push r12 | 0x00410539 push rbx | 0x0041053a push rax | 0x0041053b mov rbx, rdx | rbx = rdx; 0x0041053e mov r14, rdi | r14 = rdi; 0x00410541 cmp dword [rdx + 0x10], 0xa | | if (*((rdx + 0x10)) == 0xa) { 0x00410545 jne 0x4105f0 | 0x0041054b mov r15, rsi | r15 = rsi; 0x0041054e mov r12, qword [r14] | r12 = *(r14); 0x00410551 mov r13, qword [rbx + 8] | r13 = *((rbx + 8)); 0x00410555 movsx rbp, byte [r13] | rbp = *(r13); 0x0041055a call 0x402ed0 | rax = ctype_toupper_loc (); 0x0041055f mov rax, qword [rax] | rax = *(rax); 0x00410562 cmp dword [rax + rbp*4], 0x53 | | if (*((rax + rbp*4)) != 0x53) { 0x00410566 jne 0x4105f0 | goto label_1; | } 0x0041056c movsx rcx, byte [r13 + 1] | rcx = *((r13 + 1)); 0x00410571 cmp dword [rax + rcx*4], 0x45 | | if (*((rax + rcx*4)) != 0x45) { 0x00410575 jne 0x4105f0 | goto label_1; | } 0x00410577 movsx rcx, byte [r13 + 2] | rcx = *((r13 + 2)); 0x0041057c cmp dword [rax + rcx*4], 0x4c | | if (*((rax + rcx*4)) != 0x4c) { 0x00410580 jne 0x4105f0 | goto label_1; | } 0x00410582 movsx rcx, byte [r13 + 3] | rcx = *((r13 + 3)); 0x00410587 cmp dword [rax + rcx*4], 0x45 | | if (*((rax + rcx*4)) != 0x45) { 0x0041058b jne 0x4105f0 | goto label_1; | } 0x0041058d movsx rcx, byte [r13 + 4] | rcx = *((r13 + 4)); 0x00410592 cmp dword [rax + rcx*4], 0x43 | | if (*((rax + rcx*4)) != 0x43) { 0x00410596 jne 0x4105f0 | goto label_1; | } 0x00410598 movsx rcx, byte [r13 + 5] | rcx = *((r13 + 5)); 0x0041059d cmp dword [rax + rcx*4], 0x54 | | if (*((rax + rcx*4)) != 0x54) { 0x004105a1 jne 0x4105f0 | goto label_1; | } 0x004105a3 movsx rcx, byte [r13 + 6] | rcx = *((r13 + 6)); 0x004105a8 cmp dword [rax + rcx*4], 0x49 | | if (*((rax + rcx*4)) != 0x49) { 0x004105ac jne 0x4105f0 | goto label_1; | } 0x004105ae movsx rcx, byte [r13 + 7] | rcx = *((r13 + 7)); 0x004105b3 cmp dword [rax + rcx*4], 0x4f | | if (*((rax + rcx*4)) != 0x4f) { 0x004105b7 jne 0x4105f0 | goto label_1; | } 0x004105b9 movsx rcx, byte [r13 + 8] | rcx = *((r13 + 8)); 0x004105be cmp dword [rax + rcx*4], 0x4e | | if (*((rax + rcx*4)) != 0x4e) { 0x004105c2 jne 0x4105f0 | goto label_1; | } 0x004105c4 movsx rcx, byte [r13 + 9] | rcx = *((r13 + 9)); 0x004105c9 mov eax, dword [rax + rcx*4] | eax = *((rax + rcx*4)); 0x004105cc cmp eax, 0x31 | | if (eax != 0x31) { 0x004105cf je 0x4105dd | 0x004105d1 cmp eax, 0x32 | | if (eax != 0x32) { 0x004105d4 jne 0x4105f0 | goto label_1; | } 0x004105d6 mov eax, 0x437848 | eax = 0x437848; 0x004105db jmp 0x4105e2 | | } else { 0x004105dd mov eax, 0x437820 | eax = BloombergLP::test::ChoiceA::SELECTION_INFO_ARRAY; | } 0x004105e2 mov esi, dword [rax] | 0x004105e4 mov rdi, r12 | 0x004105e7 call 0x40f320 | eax = BloombergLP::test::ChoiceA::makeSelection(int) (r12, *(rax)); 0x004105ec test eax, eax | | if (eax == 0) { 0x004105ee je 0x41063c | goto label_2; | } | } | label_1: 0x004105f0 mov rax, qword [r14 + 8] | rax = *((r14 + 8)); 0x004105f4 mov rdi, qword [rax] | 0x004105f7 mov esi, 0x438d92 | 0x004105fc mov edx, 0x1a | | do { 0x00410601 call 0x40f620 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (*(rax), "Failed to make selection ', 0x1a); 0x00410606 mov rdi, rax | 0x00410609 mov rsi, qword [rbx + 8] | 0x0041060d movsxd rdx, dword [rbx + 0x10] | rdx = *((rbx + 0x10)); 0x00410611 call 0x40f620 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, *((rbx + 8)), rdx); 0x00410616 mov esi, 0x438d60 | 0x0041061b mov edx, 2 | 0x00410620 mov rdi, rax | 0x00410623 call 0x40f620 | std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x438d60, 2); 0x00410628 mov eax, 0xfffffff8 | eax = 0xfffffff8; | label_0: 0x0041062d add rsp, 8 | 0x00410631 pop rbx | 0x00410632 pop r12 | 0x00410634 pop r13 | 0x00410636 pop r14 | 0x00410638 pop r15 | 0x0041063a pop rbp | 0x0041063b ret | return rax; | label_2: 0x0041063c mov rdi, qword [r14] | rdi = *(r14); 0x0041063f mov eax, dword [rdi + 0x30] | eax = *((rdi + 0x30)); 0x00410642 test eax, eax | | if (eax != 0) { 0x00410644 je 0x410657 | 0x00410646 cmp eax, 1 | | if (eax != 1) { 0x00410649 jne 0x410657 | goto label_3; | } 0x0041064b mov rsi, r15 | 0x0041064e call 0x40fb60 | eax = intBloombergLP::bdlat_ValueTypeFunctions_Imp::assignSimpleTypes,bsl::allocator>,bsl::basic_string,bsl::allocator>>(bsl::basic_string,bsl::allocator>*,bsl::basic_string,bsl::allocator>const&,BloombergLP::bdlat_ValueTypeFunctions_Imp::IsConvertible) (rdi, r15); 0x00410653 test eax, eax | | if (eax == 0) { 0x00410655 je 0x41066a | goto label_4; | } | } | label_3: 0x00410657 mov rax, qword [r14 + 8] | rax = *((r14 + 8)); 0x0041065b mov rdi, qword [rax] | rdi = *(rax); 0x0041065e mov esi, 0x438dad | esi = "Failed to convert selection '; 0x00410663 mov edx, 0x1d | edx = 0x1d; 0x00410668 jmp 0x410601 | | } while (1); | label_4: 0x0041066a xor eax, eax | eax = 0; 0x0041066c jmp 0x41062d | goto label_0; | }