; assembly | /* r2dec pseudo code output */ | /* balxml_encoder.t/assume @ 0x4e2560 */ | #include | ; (fcn) method.int_BloombergLP::balxml::Encoder_EncodeObject::executeImp_BloombergLP::s_baltst::MySequenceWithAnonymousChoiceChoice__BloombergLP::bdlat_TypeCategory.Choice__BloombergLP::s_baltst::MySequenceWithAnonymousChoiceChoice_const__std::__1::basic_string () | int64_t method_int_BloombergLP::balxml::Encoder_EncodeObject::executeImp_BloombergLP::s_baltst::MySequenceWithAnonymousChoiceChoice_BloombergLP::bdlat_TypeCategory_Choice_BloombergLP::s_baltst::MySequenceWithAnonymousChoiceChoice_const_std::_1::basic_string (int64_t arg4, int64_t arg3, int64_t arg2, int64_t arg1) { | int64_t var_8h; | int64_t var_10h; | rcx = arg4; | rdx = arg3; | rsi = arg2; | rdi = arg1; | /* int BloombergLP::balxml::Encoder_EncodeObject::executeImp(BloombergLP::s_baltst::MySequenceWithAnonymousChoiceChoice const&, std::__1::basic_string_view > const&, int, BloombergLP::bdlat_TypeCategory::Choice) */ 0x004e2560 push rbp | 0x004e2561 push r15 | 0x004e2563 push r14 | 0x004e2565 push rbx | 0x004e2566 sub rsp, 0x18 | 0x004e256a mov r15d, ecx | r15d = ecx; 0x004e256d mov r14, rdx | r14 = rdx; 0x004e2570 mov rbp, rsi | 0x004e2573 mov rbx, rdi | rbx = rdi; 0x004e2576 test ecx, 0x10000 | | if ((ecx & 0x10000) == 0) { 0x004e257c jne 0x4e258e | 0x004e257e mov rax, qword [rbx] | rax = *(rbx); 0x004e2581 mov rdi, qword [rax] | 0x004e2584 mov rsi, r14 | 0x004e2587 xor edx, edx | 0x004e2589 call 0x4e7510 | BloombergLP::balxml::Formatter::openElement(std::_1::basic_string_view>const&,BloombergLP::balxml::Formatter::WhitespaceType) (*(rax), r14, 0); | } 0x004e258e mov rax, qword [rbx] | rax = *(rbx); 0x004e2591 mov ecx, dword [rbp + 0x30] | ecx = *((rbp + 0x30)); 0x004e2594 cmp ecx, 0xffffffff | | if (ecx != 0xffffffff) { 0x004e2597 je 0x4e25d8 | 0x004e2599 mov qword [rsp + 0x10], rax | *((rsp + 0x10)) = rax; 0x004e259e test ecx, ecx | | if (ecx == 0) { 0x004e25a0 je 0x4e2605 | goto label_1; | } 0x004e25a2 mov rax, qword [rip + 0x7da87] | rax = *(str.myChoice2); 0x004e25a9 movsxd rcx, dword [rip + 0x7da88] | rcx = *(0x00560038); 0x004e25b0 mov qword [rsp], rax | *(rsp) = rax; 0x004e25b4 mov qword [rsp + 8], rcx | *((rsp + 8)) = rcx; 0x004e25b9 mov ecx, dword [rip + 0x7da89] | 0x004e25bf lea rdi, [rsp + 0x10] | 0x004e25c4 mov rdx, rsp | 0x004e25c7 mov rsi, rbp | 0x004e25ca call 0x4dcfb0 | eax = intBloombergLP::balxml::Encoder_EncodeObject::executeImp,bsl::allocator>,BloombergLP::bdlat_TypeCategory::Simple>(bsl::basic_string,bsl::allocator>const&,std::_1::basic_string_view>const&,int,BloombergLP::bdlat_TypeCategory::Simple) (rsp + 0x10, rbp, rsp, *(0x00560048)); 0x004e25cf test eax, eax | | if (eax != 0) { 0x004e25d1 jne 0x4e2636 | goto label_2; | } 0x004e25d3 jmp 0x4e2665 | goto label_3; | } 0x004e25d8 mov qword [rsp], 0x5523bf | *(rsp) = 0x5523bf; 0x004e25e0 mov qword [rsp + 8], 3 | *((rsp + 8)) = 3; 0x004e25e9 mov rdi, qword [rax + 8] | 0x004e25ed mov rdx, rsp | 0x004e25f0 mov esi, 0x55239b | 0x004e25f5 mov ecx, r15d | 0x004e25f8 mov r8d, 0xffffffff | 0x004e25fe call 0x4e4a00 | BloombergLP::balxml::Encoder::logError(char const*,std::_1::basic_string_view>const&,int,int) (*((rax + 8)), "Undefined selection is not allowed ", rsp, r15d, 0xffffffff); 0x004e2603 jmp 0x4e2636 | goto label_2; | label_1: 0x004e2605 mov rax, qword [rip + 0x7d9fc] | rax = *(str.myChoice1); 0x004e260c movsxd rcx, dword [rip + 0x7d9fd] | rcx = *(0x00560010); 0x004e2613 mov qword [rsp], rax | *(rsp) = rax; 0x004e2617 mov qword [rsp + 8], rcx | *((rsp + 8)) = rcx; 0x004e261c mov ecx, dword [rip + 0x7d9fe] | 0x004e2622 lea rdi, [rsp + 0x10] | 0x004e2627 mov rdx, rsp | 0x004e262a mov rsi, rbp | 0x004e262d call 0x456570 | eax = intBloombergLP::balxml::Encoder_EncodeObject::executeImp(intconst&,std::_1::basic_string_view>const&,int,BloombergLP::bdlat_TypeCategory::Simple) (rsp + 0x10, rbp, rsp, *(0x00560020)); 0x004e2632 test eax, eax | | if (eax == 0) { 0x004e2634 je 0x4e2665 | goto label_3; | } | label_2: 0x004e2636 mov rax, qword [rbx] | rax = *(rbx); 0x004e2639 mov esi, 0x552292 | | do { 0x004e263e mov rdi, qword [rax + 8] | 0x004e2642 mov ebx, 0xffffffff | ebx = 0xffffffff; 0x004e2647 mov rdx, r14 | 0x004e264a mov ecx, r15d | 0x004e264d mov r8d, 0xffffffff | 0x004e2653 call 0x4e4a00 | BloombergLP::balxml::Encoder::logError(char const*,std::_1::basic_string_view>const&,int,int) (*((rax + 8)), "Unable to encode value", r14, r15d, 0xffffffff); | label_0: 0x004e2658 mov eax, ebx | eax = ebx; 0x004e265a add rsp, 0x18 | 0x004e265e pop rbx | 0x004e265f pop r14 | 0x004e2661 pop r15 | 0x004e2663 pop rbp | 0x004e2664 ret | return rax; | label_3: 0x004e2665 test r15d, 0x10000 | | if ((r15d & 0x10000) == 0) { 0x004e266c jne 0x4e267c | 0x004e266e mov rax, qword [rbx] | rax = *(rbx); 0x004e2671 mov rdi, qword [rax] | 0x004e2674 mov rsi, r14 | 0x004e2677 call 0x4e7630 | BloombergLP::balxml::Formatter::closeElement(std::_1::basic_string_view>const&) (*(rax), r14); | } 0x004e267c mov rax, qword [rbx] | rax = *(rbx); 0x004e267f mov rcx, qword [rax] | rcx = *(rax); 0x004e2682 mov rcx, qword [rcx + 0xa0] | rcx = *((rcx + 0xa0)); 0x004e2689 mov rdx, qword [rcx] | rdx = *(rcx); 0x004e268c mov rdx, qword [rdx - 0x18] | rdx = *((rdx - 0x18)); 0x004e2690 mov esi, 0x5522a9 | esi = "Formatter was invalidated for"; 0x004e2695 cmp dword [rcx + rdx + 0x20], 0 | 0x004e269a jne 0x4e263e | | } while (*((rcx + rdx + 0x20)) != 0); 0x004e269c xor ebx, ebx | ebx = 0; 0x004e269e jmp 0x4e2658 | goto label_0; | }