; assembly | /* r2dec pseudo code output */ | /* balxml_encoder.t/none @ 0x4e2b20 */ | #include | ; (fcn) method.int_BloombergLP::bdlat_SequenceFunctions::bdlat_sequenceAccessAttribute_BloombergLP::s_baltst::MySequenceWithAnonymousChoice__BloombergLP::balxml.Encoder_EncodeValue__BloombergLP::s_baltst::MySequenceWithAnonymousChoice_const__BloombergLP::balxml () | int64_t method_int_BloombergLP::bdlat_SequenceFunctions::bdlat_sequenceAccessAttribute_BloombergLP::s_baltst::MySequenceWithAnonymousChoice_BloombergLP::balxml_Encoder_EncodeValue_BloombergLP::s_baltst::MySequenceWithAnonymousChoice_const_BloombergLP::balxml (uint32_t arg3, int64_t arg2, int64_t arg1) { | int64_t var_8h; | int64_t var_10h; | rdx = arg3; | rsi = arg2; | rdi = arg1; | /* int BloombergLP::bdlat_SequenceFunctions::bdlat_sequenceAccessAttribute(BloombergLP::s_baltst::MySequenceWithAnonymousChoice const&, BloombergLP::balxml::Encoder_EncodeValue&, int) */ 0x004e2b20 push rbp | 0x004e2b21 push r15 | 0x004e2b23 push r14 | 0x004e2b25 push rbx | 0x004e2b26 sub rsp, 0x18 | 0x004e2b2a mov rbx, rsi | rbx = rsi; 0x004e2b2d mov r14, rdi | r14 = rdi; 0x004e2b30 cmp edx, 2 | | if (edx != 2) { 0x004e2b33 je 0x4e2bb3 | 0x004e2b35 cmp edx, 1 | | if (edx == 1) { 0x004e2b38 je 0x4e2c3e | goto label_1; | } 0x004e2b3e mov ebp, 0xffffffff | 0x004e2b43 test edx, edx | | if (edx != 0) { 0x004e2b45 jne 0x4e2c31 | goto label_0; | } 0x004e2b4b sub r14, 0xffffffffffffff80 | r14 -= 0xffffffffffffff80; 0x004e2b4f mov r15d, dword [rip + 0x7ddca] | r15d = *(0x00560920); 0x004e2b56 mov rax, qword [rbx] | rax = *(rbx); 0x004e2b59 mov rbp, qword [rax] | rbp = *(rax); 0x004e2b5c cmp dword [rbp + 0xd8], 2 | | if (*((rbp + 0xd8)) == 2) { 0x004e2b63 jne 0x4e2b87 | 0x004e2b65 mov rdi, qword [rbp + 0xa0] | 0x004e2b6c mov byte [rsp], 0x3e | *(rsp) = 0x3e; 0x004e2b70 mov rsi, rsp | 0x004e2b73 mov edx, 1 | 0x004e2b78 call 0x4529b0 | std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (*((rbp + 0xa0)), rsp, 1); 0x004e2b7d mov dword [rbp + 0xd8], 3 | *((rbp + 0xd8)) = 3; | } 0x004e2b87 mov eax, dword [rbp + 0xb4] | eax = *((rbp + 0xb4)); 0x004e2b8d inc eax | eax++; 0x004e2b8f mov dword [rbp + 0xb0], eax | *((rbp + 0xb0)) = eax; 0x004e2b95 mov rdi, qword [rbp + 0xa0] | 0x004e2b9c mov rax, qword [rbx] | rax = *(rbx); 0x004e2b9f mov rax, qword [rax + 8] | rax = *((rax + 8)); 0x004e2ba3 mov rcx, qword [rax] | rcx = *(rax); 0x004e2ba6 mov rsi, r14 | rsi = r14; 0x004e2ba9 mov edx, r15d | edx = r15d; 0x004e2bac call 0x4903d0 | std::_1::basic_ostream>&BloombergLP::balxml::TypesPrintUtil::print>(std::_1::basic_ostream>&,BloombergLP::bdlb::NullableValueconst&,int,BloombergLP::balxml::EncoderOptionsconst*) (*((rbp + 0xa0))); 0x004e2bb1 jmp 0x4e2c15 | | } else { 0x004e2bb3 mov r15d, dword [rip + 0x7ddb6] | r15d = *(0x00560970); 0x004e2bba mov rax, qword [rbx] | rax = *(rbx); 0x004e2bbd mov rbp, qword [rax] | rbp = *(rax); 0x004e2bc0 cmp dword [rbp + 0xd8], 2 | | if (*((rbp + 0xd8)) == 2) { 0x004e2bc7 jne 0x4e2beb | 0x004e2bc9 mov rdi, qword [rbp + 0xa0] | 0x004e2bd0 mov byte [rsp], 0x3e | *(rsp) = 0x3e; 0x004e2bd4 mov rsi, rsp | 0x004e2bd7 mov edx, 1 | 0x004e2bdc call 0x4529b0 | std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (*((rbp + 0xa0)), rsp, 1); 0x004e2be1 mov dword [rbp + 0xd8], 3 | *((rbp + 0xd8)) = 3; | } 0x004e2beb mov eax, dword [rbp + 0xb4] | eax = *((rbp + 0xb4)); 0x004e2bf1 inc eax | eax++; 0x004e2bf3 mov dword [rbp + 0xb0], eax | *((rbp + 0xb0)) = eax; 0x004e2bf9 mov rdi, qword [rbp + 0xa0] | 0x004e2c00 mov rax, qword [rbx] | rax = *(rbx); 0x004e2c03 mov rax, qword [rax + 8] | rax = *((rax + 8)); 0x004e2c07 mov rcx, qword [rax] | rcx = *(rax); 0x004e2c0a mov rsi, r14 | rsi = r14; 0x004e2c0d mov edx, r15d | edx = r15d; 0x004e2c10 call 0x4dfbf0 | std::_1::basic_ostream>&BloombergLP::balxml::TypesPrintUtil::print,bsl::allocator>>>(std::_1::basic_ostream>&,BloombergLP::bdlb::NullableValue,bsl::allocator>>const&,int,BloombergLP::balxml::EncoderOptionsconst*) (*((rbp + 0xa0))); | } 0x004e2c15 mov rax, qword [rbx] | rax = *(rbx); 0x004e2c18 mov rax, qword [rax] | rax = *(rax); 0x004e2c1b mov rax, qword [rax + 0xa0] | rax = *((rax + 0xa0)); 0x004e2c22 mov rcx, qword [rax] | rcx = *(rax); 0x004e2c25 mov rcx, qword [rcx - 0x18] | rcx = *((rcx - 0x18)); 0x004e2c29 xor edx, edx | edx = 0; 0x004e2c2b cmp edx, dword [rax + rcx + 0x20] | 0x004e2c2f sbb ebp, ebp | ebp -= ebp; | do { | label_0: 0x004e2c31 mov eax, ebp | eax = ebp; 0x004e2c33 add rsp, 0x18 | 0x004e2c37 pop rbx | 0x004e2c38 pop r14 | 0x004e2c3a pop r15 | 0x004e2c3c pop rbp | 0x004e2c3d ret | return rax; | label_1: 0x004e2c3e mov eax, dword [r14 + 0x70] | eax = *((r14 + 0x70)); 0x004e2c42 cmp eax, 0xffffffff | | if (eax == 0xffffffff) { 0x004e2c45 je 0x4e2c92 | goto label_2; | } 0x004e2c47 add r14, 0x40 | r14 += 0x40; 0x004e2c4b mov rcx, qword [rbx] | rcx = *(rbx); 0x004e2c4e mov qword [rsp + 0x10], rcx | *((rsp + 0x10)) = rcx; 0x004e2c53 cmp eax, 1 | | if (eax == 1) { 0x004e2c56 je 0x4e2ccd | goto label_3; | } 0x004e2c58 mov ebp, 0xffffffff | 0x004e2c5d test eax, eax | 0x004e2c5f jne 0x4e2c31 | | } while (eax != 0); 0x004e2c61 mov rax, qword [rip + 0x7dd80] | rax = *(str.myChoice1); 0x004e2c68 movsxd rcx, dword [rip + 0x7dd81] | rcx = *(0x005609f0); 0x004e2c6f mov qword [rsp], rax | *(rsp) = rax; 0x004e2c73 mov qword [rsp + 8], rcx | *((rsp + 8)) = rcx; 0x004e2c78 mov ecx, dword [rip + 0x7dd82] | 0x004e2c7e lea rdi, [rsp + 0x10] | 0x004e2c83 mov rdx, rsp | 0x004e2c86 mov rsi, r14 | 0x004e2c89 call 0x456de0 | eax = intBloombergLP::balxml::Encoder_EncodeObject::executeImp(intconst&,std::_1::basic_string_view>const&,int,BloombergLP::bdlat_TypeCategory::Simple) (rsp + 0x10, r14, rsp, *(0x00560a00)); 0x004e2c8e mov ebp, eax | 0x004e2c90 jmp 0x4e2c31 | goto label_0; | label_2: 0x004e2c92 mov ecx, dword [rip + 0x7dcb0] | 0x004e2c98 mov rax, qword [rbx] | rax = *(rbx); 0x004e2c9b mov qword [rsp], 0x552dab | *(rsp) = 0x552dab; 0x004e2ca3 mov qword [rsp + 8], 3 | *((rsp + 8)) = 3; 0x004e2cac mov rdi, qword [rax + 8] | 0x004e2cb0 mov rdx, rsp | 0x004e2cb3 mov ebp, 0xffffffff | 0x004e2cb8 mov esi, 0x552d87 | 0x004e2cbd mov r8d, 0xffffffff | 0x004e2cc3 call 0x4e51d0 | BloombergLP::balxml::Encoder::logError(char const*,std::_1::basic_string_view>const&,int,int) (*((rax + 8)), "Undefined selection is not allowed ", rsp, *(0x00560948), 0xffffffff); 0x004e2cc8 jmp 0x4e2c31 | goto label_0; | label_3: 0x004e2ccd mov rax, qword [rip + 0x7dd3c] | rax = *(str.myChoice2); 0x004e2cd4 movsxd rcx, dword [rip + 0x7dd3d] | rcx = *(0x00560a18); 0x004e2cdb mov qword [rsp], rax | *(rsp) = rax; 0x004e2cdf mov qword [rsp + 8], rcx | *((rsp + 8)) = rcx; 0x004e2ce4 mov ecx, dword [rip + 0x7dd3e] | 0x004e2cea lea rdi, [rsp + 0x10] | 0x004e2cef mov rdx, rsp | 0x004e2cf2 mov rsi, r14 | 0x004e2cf5 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, r14, rsp, *(0x00560a28)); 0x004e2cfa mov ebp, eax | 0x004e2cfc jmp 0x4e2c31 | goto label_0; | }