; assembly | /* r2dec pseudo code output */ | /* balxml_encoder.t/assume @ 0x4e2380 */ | #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) */ 0x004e2380 push rbp | 0x004e2381 push r15 | 0x004e2383 push r14 | 0x004e2385 push rbx | 0x004e2386 sub rsp, 0x18 | 0x004e238a mov rbx, rsi | rbx = rsi; 0x004e238d mov r14, rdi | r14 = rdi; 0x004e2390 cmp edx, 2 | | if (edx != 2) { 0x004e2393 je 0x4e2413 | 0x004e2395 cmp edx, 1 | | if (edx == 1) { 0x004e2398 je 0x4e249e | goto label_1; | } 0x004e239e mov ebp, 0xffffffff | 0x004e23a3 test edx, edx | | if (edx != 0) { 0x004e23a5 jne 0x4e2491 | goto label_0; | } 0x004e23ab sub r14, 0xffffffffffffff80 | r14 -= 0xffffffffffffff80; 0x004e23af mov r15d, dword [rip + 0x7db8a] | r15d = *(0x0055ff40); 0x004e23b6 mov rax, qword [rbx] | rax = *(rbx); 0x004e23b9 mov rbp, qword [rax] | rbp = *(rax); 0x004e23bc cmp dword [rbp + 0xd8], 2 | | if (*((rbp + 0xd8)) == 2) { 0x004e23c3 jne 0x4e23e7 | 0x004e23c5 mov rdi, qword [rbp + 0xa0] | 0x004e23cc mov byte [rsp], 0x3e | *(rsp) = 0x3e; 0x004e23d0 mov rsi, rsp | 0x004e23d3 mov edx, 1 | 0x004e23d8 call 0x4521a0 | std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (*((rbp + 0xa0)), rsp, 1); 0x004e23dd mov dword [rbp + 0xd8], 3 | *((rbp + 0xd8)) = 3; | } 0x004e23e7 mov eax, dword [rbp + 0xb4] | eax = *((rbp + 0xb4)); 0x004e23ed inc eax | eax++; 0x004e23ef mov dword [rbp + 0xb0], eax | *((rbp + 0xb0)) = eax; 0x004e23f5 mov rdi, qword [rbp + 0xa0] | 0x004e23fc mov rax, qword [rbx] | rax = *(rbx); 0x004e23ff mov rax, qword [rax + 8] | rax = *((rax + 8)); 0x004e2403 mov rcx, qword [rax] | rcx = *(rax); 0x004e2406 mov rsi, r14 | rsi = r14; 0x004e2409 mov edx, r15d | edx = r15d; 0x004e240c call 0x48f490 | std::_1::basic_ostream>&BloombergLP::balxml::TypesPrintUtil::print>(std::_1::basic_ostream>&,BloombergLP::bdlb::NullableValueconst&,int,BloombergLP::balxml::EncoderOptionsconst*) (*((rbp + 0xa0))); 0x004e2411 jmp 0x4e2475 | | } else { 0x004e2413 mov r15d, dword [rip + 0x7db76] | r15d = *(0x0055ff90); 0x004e241a mov rax, qword [rbx] | rax = *(rbx); 0x004e241d mov rbp, qword [rax] | rbp = *(rax); 0x004e2420 cmp dword [rbp + 0xd8], 2 | | if (*((rbp + 0xd8)) == 2) { 0x004e2427 jne 0x4e244b | 0x004e2429 mov rdi, qword [rbp + 0xa0] | 0x004e2430 mov byte [rsp], 0x3e | *(rsp) = 0x3e; 0x004e2434 mov rsi, rsp | 0x004e2437 mov edx, 1 | 0x004e243c call 0x4521a0 | std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (*((rbp + 0xa0)), rsp, 1); 0x004e2441 mov dword [rbp + 0xd8], 3 | *((rbp + 0xd8)) = 3; | } 0x004e244b mov eax, dword [rbp + 0xb4] | eax = *((rbp + 0xb4)); 0x004e2451 inc eax | eax++; 0x004e2453 mov dword [rbp + 0xb0], eax | *((rbp + 0xb0)) = eax; 0x004e2459 mov rdi, qword [rbp + 0xa0] | 0x004e2460 mov rax, qword [rbx] | rax = *(rbx); 0x004e2463 mov rax, qword [rax + 8] | rax = *((rax + 8)); 0x004e2467 mov rcx, qword [rax] | rcx = *(rax); 0x004e246a mov rsi, r14 | rsi = r14; 0x004e246d mov edx, r15d | edx = r15d; 0x004e2470 call 0x4df460 | 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))); | } 0x004e2475 mov rax, qword [rbx] | rax = *(rbx); 0x004e2478 mov rax, qword [rax] | rax = *(rax); 0x004e247b mov rax, qword [rax + 0xa0] | rax = *((rax + 0xa0)); 0x004e2482 mov rcx, qword [rax] | rcx = *(rax); 0x004e2485 mov rcx, qword [rcx - 0x18] | rcx = *((rcx - 0x18)); 0x004e2489 xor edx, edx | edx = 0; 0x004e248b cmp edx, dword [rax + rcx + 0x20] | 0x004e248f sbb ebp, ebp | ebp -= ebp; | do { | label_0: 0x004e2491 mov eax, ebp | eax = ebp; 0x004e2493 add rsp, 0x18 | 0x004e2497 pop rbx | 0x004e2498 pop r14 | 0x004e249a pop r15 | 0x004e249c pop rbp | 0x004e249d ret | return rax; | label_1: 0x004e249e mov eax, dword [r14 + 0x70] | eax = *((r14 + 0x70)); 0x004e24a2 cmp eax, 0xffffffff | | if (eax == 0xffffffff) { 0x004e24a5 je 0x4e24e8 | goto label_2; | } 0x004e24a7 add r14, 0x40 | r14 += 0x40; 0x004e24ab mov rcx, qword [rbx] | rcx = *(rbx); 0x004e24ae mov qword [rsp + 0x10], rcx | *((rsp + 0x10)) = rcx; 0x004e24b3 test eax, eax | | if (eax == 0) { 0x004e24b5 je 0x4e2523 | goto label_3; | } 0x004e24b7 mov rax, qword [rip + 0x7db72] | rax = *(str.myChoice2); 0x004e24be movsxd rcx, dword [rip + 0x7db73] | rcx = *(0x00560038); 0x004e24c5 mov qword [rsp], rax | *(rsp) = rax; 0x004e24c9 mov qword [rsp + 8], rcx | *((rsp + 8)) = rcx; 0x004e24ce mov ecx, dword [rip + 0x7db74] | 0x004e24d4 lea rdi, [rsp + 0x10] | 0x004e24d9 mov rdx, rsp | 0x004e24dc mov rsi, r14 | 0x004e24df 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, r14, rsp, *(0x00560048)); 0x004e24e4 mov ebp, eax | 0x004e24e6 jmp 0x4e2491 | | } while (1); | label_2: 0x004e24e8 mov ecx, dword [rip + 0x7da7a] | 0x004e24ee mov rax, qword [rbx] | rax = *(rbx); 0x004e24f1 mov qword [rsp], 0x5523bf | *(rsp) = 0x5523bf; 0x004e24f9 mov qword [rsp + 8], 3 | *((rsp + 8)) = 3; 0x004e2502 mov rdi, qword [rax + 8] | 0x004e2506 mov rdx, rsp | 0x004e2509 mov ebp, 0xffffffff | 0x004e250e mov esi, 0x55239b | 0x004e2513 mov r8d, 0xffffffff | 0x004e2519 call 0x4e4a00 | BloombergLP::balxml::Encoder::logError(char const*,std::_1::basic_string_view>const&,int,int) (*((rax + 8)), "Undefined selection is not allowed ", rsp, *(0x0055ff68), 0xffffffff); 0x004e251e jmp 0x4e2491 | goto label_0; | label_3: 0x004e2523 mov rax, qword [rip + 0x7dade] | rax = *(str.myChoice1); 0x004e252a movsxd rcx, dword [rip + 0x7dadf] | rcx = *(0x00560010); 0x004e2531 mov qword [rsp], rax | *(rsp) = rax; 0x004e2535 mov qword [rsp + 8], rcx | *((rsp + 8)) = rcx; 0x004e253a mov ecx, dword [rip + 0x7dae0] | 0x004e2540 lea rdi, [rsp + 0x10] | 0x004e2545 mov rdx, rsp | 0x004e2548 mov rsi, r14 | 0x004e254b call 0x456570 | eax = intBloombergLP::balxml::Encoder_EncodeObject::executeImp(intconst&,std::_1::basic_string_view>const&,int,BloombergLP::bdlat_TypeCategory::Simple) (rsp + 0x10, r14, rsp, *(0x00560020)); 0x004e2550 mov ebp, eax | 0x004e2552 jmp 0x4e2491 | goto label_0; | }