; assembly | /* r2dec pseudo code output */ | /* balxml_configschema.t/none @ 0x418610 */ | #include | ; (fcn) method.int_BloombergLP::balxml::Decoder_ParseObject::executeImp_BloombergLP::s_baltst.BasicSchemaSequenceElementChoice__BloombergLP::s_baltst::BasicSchemaSequenceElementChoice__int__BloombergLP::bdlat_TypeCategory::Choice_ () | int64_t method_int_BloombergLP::balxml::Decoder_ParseObject::executeImp_BloombergLP::s_baltst_BasicSchemaSequenceElementChoice_BloombergLP::s_baltst::BasicSchemaSequenceElementChoice_int_BloombergLP::bdlat_TypeCategory::Choice_ (int64_t arg3, int64_t arg2, int64_t arg1) { | int64_t var_50h; | int64_t var_10h_5; | int64_t var_18h_2; | int64_t var_20h_2; | int64_t var_28h_3; | int64_t var_38h_2; | int64_t var_40h_2; | uint32_t var_48h_2; | int64_t var_50h_2; | int64_t var_f0h; | int64_t var_8h_4; | rdx = arg3; | rsi = arg2; | rdi = arg1; | /* int BloombergLP::balxml::Decoder_ParseObject::executeImp(BloombergLP::s_baltst::BasicSchemaSequenceElementChoice*, int, BloombergLP::bdlat_TypeCategory::Choice) */ 0x00418610 push rbp | 0x00418611 push r14 | 0x00418613 push rbx | 0x00418614 sub rsp, 0x100 | 0x0041861b mov r14, rsi | r14 = rsi; 0x0041861e mov rbx, rdi | rbx = rdi; 0x00418621 test edx, 0x10000 | | if ((edx & 0x10000) == 0) { 0x00418627 jne 0x418675 | 0x00418629 mov qword [rsp + 8], 0x49c098 | *((rsp + 8)) = vtable.BloombergLP::balxml::Decoder_ChoiceContext_BloombergLP::s_baltst::BasicSchemaSequenceElementChoice_.0; 0x00418632 mov byte [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x00418637 mov qword [rsp + 0x18], r14 | *((rsp + 0x18)) = r14; 0x0041863c mov byte [rsp + 0x20], 0 | *((rsp + 0x20)) = 0; 0x00418641 mov qword [rsp + 0x28], 0 | *((rsp + 0x28)) = 0; 0x0041864a movaps xmm0, xmmword [rip + 0x817bf] | xmm0 = .comment; 0x00418651 movups xmmword [rsp + 0x40], xmm0 | __asm ("movups xmmword [rsp + 0x40], xmm0"); 0x00418656 mov rax, qword [rip + 0x2c7aa3] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x0041865d test rax, rax | | if (rax != 0) { 0x00418660 je 0x418756 | 0x00418666 mov qword [rsp + 0x50], rax | *((rsp + 0x50)) = rax; 0x0041866b lea rcx, [rsp + 0x28] | rcx = rsp + 0x28; 0x00418670 jmp 0x4187cf | | } else { 0x00418675 mov rax, qword [rbx] | rax = *(rbx); 0x00418678 mov rax, qword [rax] | rax = *(rax); 0x0041867b cmp byte [rax + 8], 0 | | if (*((rax + 8)) != 0) { 0x0041867f je 0x418696 | 0x00418681 mov rdi, qword [rbx + 8] | 0x00418685 mov esi, dword [rbx + 0x10] | 0x00418688 call 0x439a70 | rax = BloombergLP::s_baltst::BasicSchemaSequenceElementChoice::lookupSelectionInfo(char const*,int) (*((rbx + 8)), *((rbx + 0x10))); 0x0041868d test rax, rax | | if (rax == 0) { 0x00418690 je 0x4187a5 | goto label_0; | } | } 0x00418696 mov rsi, qword [rbx + 8] | 0x0041869a mov edx, dword [rbx + 0x10] | edx = *((rbx + 0x10)); 0x0041869d mov rdi, r14 | 0x004186a0 call 0x43a540 | eax = BloombergLP::s_baltst::BasicSchemaSequenceElementChoice::makeSelection(char const*,int) (r14, *((rbx + 8))); 0x004186a5 test eax, eax | | if (eax == 0) { 0x004186a7 je 0x41876f | goto label_1; | } 0x004186ad mov rbp, qword [rbx] | rbp = *(rbx); 0x004186b0 mov rsi, qword [rbp + 0x2d0] | 0x004186b7 lea r14, [rsp + 8] | r14 = rsp + 8; 0x004186bc mov rdi, r14 | 0x004186bf call 0x40ee30 | BloombergLP::balxml::Decoder::MemOutStream::MemOutStream(BloombergLP::bslma::Allocator*) (r14, *((rbp + 0x2d0))); 0x004186c4 mov dword [rsp + 0xf0], 2 | *((rsp + 0xf0)) = 2; 0x004186cf mov qword [rsp + 0xf8], rbp | *((rsp + 0xf8)) = rbp; 0x004186d7 mov esi, 0x49aa63 | 0x004186dc mov edx, 0x1b | 0x004186e1 mov rdi, r14 | 0x004186e4 call 0x40db40 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (r14, "Unable to make selection: \", 0x1b); 0x004186e9 mov rbp, rax | 0x004186ec mov rbx, qword [rbx + 8] | rbx = *((rbx + 8)); 0x004186f0 mov rdi, rbx | 0x004186f3 call 0x404780 | rax = strlen (*((rbx + 8))); 0x004186f8 mov rdi, rbp | 0x004186fb mov rsi, rbx | 0x004186fe mov rdx, rax | 0x00418701 call 0x40db40 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rbp, rbx, rax); 0x00418706 mov esi, 0x49a969 | 0x0041870b mov edx, 2 | 0x00418710 mov rdi, rax | 0x00418713 call 0x40db40 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x49a969, 2); 0x00418718 mov rdi, rax | rdi = rax; 0x0041871b call 0x4049f0 | std::_1::basic_ostream>::flush() (); 0x00418720 mov rdi, qword [rsp + 0xf8] | 0x00418728 mov esi, dword [rsp + 0xf0] | 0x0041872f mov rdx, qword [rsp + 0x38] | 0x00418734 mov eax, dword [rsp + 0x40] | eax = *((rsp + 0x40)); 0x00418738 sub eax, edx | eax -= edx; 0x0041873a movsxd rcx, eax | rcx = (int64_t) eax; 0x0041873d call 0x421a30 | BloombergLP::balxml::Decoder::setDecoderError(BloombergLP::balxml::ErrorInfo::Severity,std::_1::basic_string_view>) (*((rsp + 0xf8)), *((rsp + 0xf0)), *((rsp + 0x38)), rcx); 0x00418742 lea rdi, [rsp + 8] | 0x00418747 call 0x420ff0 | BloombergLP::balxml::Decoder::MemOutStream::~MemOutStream() (rsp + 8); 0x0041874c mov ebp, 0xffffffff | 0x00418751 jmp 0x418815 | goto label_2; | } 0x00418756 call 0x474360 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); 0x0041875b cmp qword [rsp + 0x48], 0x17 | 0x00418761 mov qword [rsp + 0x50], rax | *((rsp + 0x50)) = rax; | if (*((rsp + 0x48)) == 0x17) { 0x00418766 jne 0x4187ca | 0x00418768 lea rcx, [rsp + 0x28] | rcx = rsp + 0x28; 0x0041876d jmp 0x4187cf | goto label_3; | label_1: 0x0041876f mov eax, dword [r14 + 0x40] | eax = *((r14 + 0x40)); 0x00418773 cmp eax, 1 | | if (eax == 1) { 0x00418776 je 0x418823 | goto label_4; | } 0x0041877c mov ebp, 0xffffffff | 0x00418781 test eax, eax | | if (eax != 0) { 0x00418783 jne 0x418815 | goto label_2; | } 0x00418789 mov edx, dword [rip + 0x89a31] | edx = .comment; 0x0041878f mov rdi, rbx | rdi = rbx; 0x00418792 mov rsi, r14 | rsi = r14; 0x00418795 add rsp, 0x100 | 0x0041879c pop rbx | 0x0041879d pop r14 | 0x0041879f pop rbp | 0x004187a0 jmp 0x410db0 | void (*0x410db0)() (); | label_0: 0x004187a5 mov rax, qword [rbx] | rax = *(rbx); 0x004187a8 inc dword [rax + 0x410] | *((rax + 0x410))++; 0x004187ae lea rbp, [rsp + 8] | rbp = rsp + 8; 0x004187b3 mov rdi, rbp | rdi = rbp; 0x004187b6 call 0x421e30 | BloombergLP::balxml::Decoder_UnknownElementContext::Decoder_UnknownElementContext() (); 0x004187bb mov rsi, qword [rbx] | 0x004187be mov rdi, rbp | 0x004187c1 call 0x420960 | eax = BloombergLP::balxml::Decoder_ElementContext::beginParse(BloombergLP::balxml::Decoder*) (rbp, *(rbx)); 0x004187c6 mov ebp, eax | 0x004187c8 jmp 0x41880b | goto label_5; | } 0x004187ca mov rcx, qword [rsp + 0x28] | rcx = *((rsp + 0x28)); | } | label_3: 0x004187cf mov byte [rcx], 0 | *(rcx) = 0; 0x004187d2 mov rsi, qword [rbx] | 0x004187d5 lea rdi, [rsp + 8] | 0x004187da call 0x420960 | eax = BloombergLP::balxml::Decoder_ElementContext::beginParse(BloombergLP::balxml::Decoder*) (rsp + 8, *(rbx)); 0x004187df mov ebp, eax | 0x004187e1 mov qword [rsp + 8], 0x49c098 | *((rsp + 8)) = vtable.BloombergLP::balxml::Decoder_ChoiceContext_BloombergLP::s_baltst::BasicSchemaSequenceElementChoice_.0; 0x004187ea cmp qword [rsp + 0x48], 0x17 | | if (*((rsp + 0x48)) != 0x17) { 0x004187f0 je 0x418802 | 0x004187f2 mov rsi, qword [rsp + 0x28] | rsi = *((rsp + 0x28)); 0x004187f7 mov rdi, qword [rsp + 0x50] | rdi = *((rsp + 0x50)); 0x004187fc mov rax, qword [rdi] | rax = *(rdi); 0x004187ff call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x00418802 mov qword [rsp + 0x40], 0xffffffffffffffff | *((rsp + 0x40)) = 0xffffffffffffffff; | label_5: 0x0041880b lea rdi, [rsp + 8] | rdi = rsp + 8; 0x00418810 call 0x422260 | BloombergLP::balxml::Decoder_ElementContext::~Decoder_ElementContext() (); | label_2: 0x00418815 mov eax, ebp | eax = ebp; 0x00418817 add rsp, 0x100 | 0x0041881e pop rbx | 0x0041881f pop r14 | 0x00418821 pop rbp | 0x00418822 ret | return rax; | label_4: 0x00418823 mov rsi, qword [r14] | rsi = *(r14); 0x00418826 mov edx, dword [rip + 0x899bc] | edx = .comment; 0x0041882c mov rdi, rbx | rdi = rbx; 0x0041882f add rsp, 0x100 | 0x00418836 pop rbx | 0x00418837 pop r14 | 0x00418839 pop rbp | 0x0041883a jmp 0x418930 | return void (*0x418930)() (); | }