; assembly | /* r2dec pseudo code output */ | /* balxml_encoder.t/none @ 0x4e2d10 */ | #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) */ 0x004e2d10 push rbp | 0x004e2d11 push r15 | 0x004e2d13 push r14 | 0x004e2d15 push rbx | 0x004e2d16 sub rsp, 0x18 | 0x004e2d1a mov r15d, ecx | r15d = ecx; 0x004e2d1d mov r14, rdx | r14 = rdx; 0x004e2d20 mov rbp, rsi | 0x004e2d23 mov rbx, rdi | rbx = rdi; 0x004e2d26 test ecx, 0x10000 | | if ((ecx & 0x10000) == 0) { 0x004e2d2c jne 0x4e2d3e | 0x004e2d2e mov rax, qword [rbx] | rax = *(rbx); 0x004e2d31 mov rdi, qword [rax] | 0x004e2d34 mov rsi, r14 | 0x004e2d37 xor edx, edx | 0x004e2d39 call 0x4e7d10 | BloombergLP::balxml::Formatter::openElement(std::_1::basic_string_view>const&,BloombergLP::balxml::Formatter::WhitespaceType) (*(rax), r14, 0); | } 0x004e2d3e mov rcx, qword [rbx] | rcx = *(rbx); 0x004e2d41 mov eax, dword [rbp + 0x30] | eax = *((rbp + 0x30)); 0x004e2d44 cmp eax, 0xffffffff | | if (eax != 0xffffffff) { 0x004e2d47 je 0x4e2d91 | 0x004e2d49 mov qword [rsp + 0x10], rcx | *((rsp + 0x10)) = rcx; 0x004e2d4e test eax, eax | | if (eax == 0) { 0x004e2d50 je 0x4e2dbe | goto label_1; | } 0x004e2d52 cmp eax, 1 | | if (eax != 1) { 0x004e2d55 jne 0x4e2def | goto label_2; | } 0x004e2d5b mov rax, qword [rip + 0x7dcae] | rax = *(str.myChoice2); 0x004e2d62 movsxd rcx, dword [rip + 0x7dcaf] | rcx = *(0x00560a18); 0x004e2d69 mov qword [rsp], rax | *(rsp) = rax; 0x004e2d6d mov qword [rsp + 8], rcx | *((rsp + 8)) = rcx; 0x004e2d72 mov ecx, dword [rip + 0x7dcb0] | 0x004e2d78 lea rdi, [rsp + 0x10] | 0x004e2d7d mov rdx, rsp | 0x004e2d80 mov rsi, rbp | 0x004e2d83 call 0x4dd740 | 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, *(0x00560a28)); 0x004e2d88 test eax, eax | | if (eax != 0) { 0x004e2d8a jne 0x4e2def | goto label_2; | } 0x004e2d8c jmp 0x4e2e1e | goto label_3; | } 0x004e2d91 mov qword [rsp], 0x552dab | *(rsp) = 0x552dab; 0x004e2d99 mov qword [rsp + 8], 3 | *((rsp + 8)) = 3; 0x004e2da2 mov rdi, qword [rcx + 8] | 0x004e2da6 mov rdx, rsp | 0x004e2da9 mov esi, 0x552d87 | 0x004e2dae mov ecx, r15d | 0x004e2db1 mov r8d, 0xffffffff | 0x004e2db7 call 0x4e51d0 | BloombergLP::balxml::Encoder::logError(char const*,std::_1::basic_string_view>const&,int,int) (*((rcx + 8)), "Undefined selection is not allowed ", rsp, r15d, 0xffffffff); 0x004e2dbc jmp 0x4e2def | goto label_2; | label_1: 0x004e2dbe mov rax, qword [rip + 0x7dc23] | rax = *(str.myChoice1); 0x004e2dc5 movsxd rcx, dword [rip + 0x7dc24] | rcx = *(0x005609f0); 0x004e2dcc mov qword [rsp], rax | *(rsp) = rax; 0x004e2dd0 mov qword [rsp + 8], rcx | *((rsp + 8)) = rcx; 0x004e2dd5 mov ecx, dword [rip + 0x7dc25] | 0x004e2ddb lea rdi, [rsp + 0x10] | 0x004e2de0 mov rdx, rsp | 0x004e2de3 mov rsi, rbp | 0x004e2de6 call 0x456de0 | eax = intBloombergLP::balxml::Encoder_EncodeObject::executeImp(intconst&,std::_1::basic_string_view>const&,int,BloombergLP::bdlat_TypeCategory::Simple) (rsp + 0x10, rbp, rsp, *(0x00560a00)); 0x004e2deb test eax, eax | | if (eax == 0) { 0x004e2ded je 0x4e2e1e | goto label_3; | } | label_2: 0x004e2def mov rax, qword [rbx] | rax = *(rbx); 0x004e2df2 mov esi, 0x552c7e | | do { 0x004e2df7 mov rdi, qword [rax + 8] | 0x004e2dfb mov ebx, 0xffffffff | ebx = 0xffffffff; 0x004e2e00 mov rdx, r14 | 0x004e2e03 mov ecx, r15d | 0x004e2e06 mov r8d, 0xffffffff | 0x004e2e0c call 0x4e51d0 | 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: 0x004e2e11 mov eax, ebx | eax = ebx; 0x004e2e13 add rsp, 0x18 | 0x004e2e17 pop rbx | 0x004e2e18 pop r14 | 0x004e2e1a pop r15 | 0x004e2e1c pop rbp | 0x004e2e1d ret | return rax; | label_3: 0x004e2e1e test r15d, 0x10000 | | if ((r15d & 0x10000) == 0) { 0x004e2e25 jne 0x4e2e35 | 0x004e2e27 mov rax, qword [rbx] | rax = *(rbx); 0x004e2e2a mov rdi, qword [rax] | 0x004e2e2d mov rsi, r14 | 0x004e2e30 call 0x4e7e30 | BloombergLP::balxml::Formatter::closeElement(std::_1::basic_string_view>const&) (*(rax), r14); | } 0x004e2e35 mov rax, qword [rbx] | rax = *(rbx); 0x004e2e38 mov rcx, qword [rax] | rcx = *(rax); 0x004e2e3b mov rcx, qword [rcx + 0xa0] | rcx = *((rcx + 0xa0)); 0x004e2e42 mov rdx, qword [rcx] | rdx = *(rcx); 0x004e2e45 mov rdx, qword [rdx - 0x18] | rdx = *((rdx - 0x18)); 0x004e2e49 mov esi, 0x552c95 | esi = "Formatter was invalidated for"; 0x004e2e4e cmp dword [rcx + rdx + 0x20], 0 | 0x004e2e53 jne 0x4e2df7 | | } while (*((rcx + rdx + 0x20)) != 0); 0x004e2e55 xor ebx, ebx | ebx = 0; 0x004e2e57 jmp 0x4e2e11 | goto label_0; | }