; assembly | /* r2dec pseudo code output */ | /* baljsn_encoder.t/assume @ 0x461ec0 */ | #include | ; (fcn) method.int_BloombergLP::balxml::Decoder_ParseObject::executeImp_BloombergLP::s_baltst.SequenceWithAnonymityChoice2__BloombergLP::s_baltst::SequenceWithAnonymityChoice2__int__BloombergLP::bdlat_TypeCategory::Choice_ () | int64_t method_int_BloombergLP::balxml::Decoder_ParseObject::executeImp_BloombergLP::s_baltst_SequenceWithAnonymityChoice2_BloombergLP::s_baltst::SequenceWithAnonymityChoice2_int_BloombergLP::bdlat_TypeCategory::Choice_ (int64_t arg3, int64_t arg2, int64_t arg1) { | int64_t var_8h; | int64_t var_10h; | int64_t var_18h; | int64_t var_20h; | int64_t var_28h; | int64_t var_38h; | int64_t var_40h; | uint32_t var_48h; | int64_t var_50h; | int64_t var_f0h; | int64_t var_f8h; | rdx = arg3; | rsi = arg2; | rdi = arg1; | /* int BloombergLP::balxml::Decoder_ParseObject::executeImp(BloombergLP::s_baltst::SequenceWithAnonymityChoice2*, int, BloombergLP::bdlat_TypeCategory::Choice) */ 0x00461ec0 push r15 | 0x00461ec2 push r14 | 0x00461ec4 push rbx | 0x00461ec5 sub rsp, 0x100 | 0x00461ecc mov rbx, rsi | rbx = rsi; 0x00461ecf mov r14, rdi | r14 = rdi; 0x00461ed2 test edx, 0x10000 | | if ((edx & 0x10000) == 0) { 0x00461ed8 jne 0x461f26 | 0x00461eda mov qword [rsp + 8], 0x549eb8 | *((rsp + 8)) = vtable.BloombergLP::balxml::Decoder_ChoiceContext_BloombergLP::s_baltst::SequenceWithAnonymityChoice2_.0; 0x00461ee3 mov byte [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x00461ee8 mov qword [rsp + 0x18], rbx | *((rsp + 0x18)) = rbx; 0x00461eed mov byte [rsp + 0x20], 0 | *((rsp + 0x20)) = 0; 0x00461ef2 mov qword [rsp + 0x28], 0 | *((rsp + 0x28)) = 0; 0x00461efb movaps xmm0, xmmword [rip + 0xdab0e] | xmm0 = .comment; 0x00461f02 movups xmmword [rsp + 0x40], xmm0 | __asm ("movups xmmword [rsp + 0x40], xmm0"); 0x00461f07 mov rax, qword [rip + 0x46b19a] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x00461f0e test rax, rax | | if (rax == 0) { 0x00461f11 je 0x462009 | goto label_0; | } 0x00461f17 mov qword [rsp + 0x50], rax | *((rsp + 0x50)) = rax; 0x00461f1c lea rcx, [rsp + 0x28] | rcx = rsp + 0x28; 0x00461f21 jmp 0x462079 | goto label_1; | } 0x00461f26 mov rax, qword [r14] | rax = *(r14); 0x00461f29 mov rax, qword [rax] | rax = *(rax); 0x00461f2c cmp byte [rax + 8], 0 | | if (*((rax + 8)) != 0) { 0x00461f30 je 0x461f48 | 0x00461f32 mov rdi, qword [r14 + 8] | 0x00461f36 mov esi, dword [r14 + 0x10] | 0x00461f3a call 0x4d14c0 | rax = BloombergLP::s_baltst::SequenceWithAnonymityChoice2::lookupSelectionInfo(char const*,int) (*((r14 + 8)), *((r14 + 0x10))); 0x00461f3f test rax, rax | | if (rax == 0) { 0x00461f42 je 0x46204f | goto label_2; | } | } 0x00461f48 mov rsi, qword [r14 + 8] | 0x00461f4c mov edx, dword [r14 + 0x10] | 0x00461f50 mov rdi, rbx | 0x00461f53 call 0x4d1e80 | eax = BloombergLP::s_baltst::SequenceWithAnonymityChoice2::makeSelection(char const*,int) (rbx, *((r14 + 8)), *((r14 + 0x10))); 0x00461f58 test eax, eax | | if (eax == 0) { 0x00461f5a je 0x462022 | goto label_3; | } 0x00461f60 mov rbx, qword [r14] | rbx = *(r14); 0x00461f63 mov rsi, qword [rbx + 0x2d0] | 0x00461f6a lea r15, [rsp + 8] | r15 = rsp + 8; 0x00461f6f mov rdi, r15 | 0x00461f72 call 0x4297b0 | BloombergLP::balxml::Decoder::MemOutStream::MemOutStream(BloombergLP::bslma::Allocator*) (r15, *((rbx + 0x2d0))); 0x00461f77 mov dword [rsp + 0xf0], 2 | *((rsp + 0xf0)) = 2; 0x00461f82 mov qword [rsp + 0xf8], rbx | *((rsp + 0xf8)) = rbx; 0x00461f8a mov esi, 0x5432de | 0x00461f8f mov edx, 0x1b | 0x00461f94 mov rdi, r15 | 0x00461f97 call 0x428b40 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (r15, "Unable to make selection: \", 0x1b); 0x00461f9c mov r15, rax | r15 = rax; 0x00461f9f mov rbx, qword [r14 + 8] | rbx = *((r14 + 8)); 0x00461fa3 mov rdi, rbx | 0x00461fa6 call 0x4055c0 | rax = strlen (*((r14 + 8))); 0x00461fab mov rdi, r15 | 0x00461fae mov rsi, rbx | 0x00461fb1 mov rdx, rax | 0x00461fb4 call 0x428b40 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (r15, rbx, rax); 0x00461fb9 mov esi, 0x5432fa | 0x00461fbe mov edx, 2 | 0x00461fc3 mov rdi, rax | 0x00461fc6 call 0x428b40 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x5432fa, 2); 0x00461fcb mov rdi, rax | rdi = rax; 0x00461fce call 0x4058a0 | std::_1::basic_ostream>::flush() (); 0x00461fd3 mov rdi, qword [rsp + 0xf8] | 0x00461fdb mov esi, dword [rsp + 0xf0] | 0x00461fe2 mov rdx, qword [rsp + 0x38] | 0x00461fe7 mov eax, dword [rsp + 0x40] | eax = *((rsp + 0x40)); 0x00461feb sub eax, edx | eax -= edx; 0x00461fed movsxd rcx, eax | rcx = (int64_t) eax; 0x00461ff0 call 0x4a51b0 | BloombergLP::balxml::Decoder::setDecoderError(BloombergLP::balxml::ErrorInfo::Severity,std::_1::basic_string_view>) (*((rsp + 0xf8)), *((rsp + 0xf0)), *((rsp + 0x38)), rcx); 0x00461ff5 lea rdi, [rsp + 8] | 0x00461ffa call 0x4a4770 | BloombergLP::balxml::Decoder::MemOutStream::~MemOutStream() (rsp + 8); | do { 0x00461fff mov ebx, 0xffffffff | ebx = 0xffffffff; 0x00462004 jmp 0x4620bf | goto label_4; | label_0: 0x00462009 call 0x517520 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); 0x0046200e cmp qword [rsp + 0x48], 0x17 | 0x00462014 mov qword [rsp + 0x50], rax | *((rsp + 0x50)) = rax; | if (*((rsp + 0x48)) != 0x17) { 0x00462019 jne 0x462074 | goto label_5; | } 0x0046201b lea rcx, [rsp + 0x28] | rcx = rsp + 0x28; 0x00462020 jmp 0x462079 | goto label_1; | label_3: 0x00462022 mov eax, dword [rbx + 8] | eax = *((rbx + 8)); 0x00462025 cmp eax, 1 | | if (eax == 1) { 0x00462028 je 0x4620ce | goto label_6; | } 0x0046202e test eax, eax | 0x00462030 jne 0x461fff | | } while (eax != 0); 0x00462032 mov rsi, qword [rbx] | rsi = *(rbx); 0x00462035 mov edx, dword [rip + 0x1e8705] | edx = .comment; 0x0046203b mov rdi, r14 | rdi = r14; 0x0046203e add rsp, 0x100 | 0x00462045 pop rbx | 0x00462046 pop r14 | 0x00462048 pop r15 | 0x0046204a jmp 0x438bd0 | void (*0x438bd0)() (); | label_2: 0x0046204f mov rax, qword [r14] | rax = *(r14); 0x00462052 inc dword [rax + 0x410] | *((rax + 0x410))++; 0x00462058 lea rbx, [rsp + 8] | rbx = rsp + 8; 0x0046205d mov rdi, rbx | rdi = rbx; 0x00462060 call 0x4a55c0 | BloombergLP::balxml::Decoder_UnknownElementContext::Decoder_UnknownElementContext() (); 0x00462065 mov rsi, qword [r14] | 0x00462068 mov rdi, rbx | 0x0046206b call 0x4a40e0 | eax = BloombergLP::balxml::Decoder_ElementContext::beginParse(BloombergLP::balxml::Decoder*) (rbx, *(r14)); 0x00462070 mov ebx, eax | ebx = eax; 0x00462072 jmp 0x4620b5 | goto label_7; | label_5: 0x00462074 mov rcx, qword [rsp + 0x28] | rcx = *((rsp + 0x28)); | label_1: 0x00462079 mov byte [rcx], 0 | *(rcx) = 0; 0x0046207c mov rsi, qword [r14] | 0x0046207f lea rdi, [rsp + 8] | 0x00462084 call 0x4a40e0 | eax = BloombergLP::balxml::Decoder_ElementContext::beginParse(BloombergLP::balxml::Decoder*) (rsp + 8, *(r14)); 0x00462089 mov ebx, eax | ebx = eax; 0x0046208b mov qword [rsp + 8], 0x549eb8 | *((rsp + 8)) = vtable.BloombergLP::balxml::Decoder_ChoiceContext_BloombergLP::s_baltst::SequenceWithAnonymityChoice2_.0; 0x00462094 cmp qword [rsp + 0x48], 0x17 | | if (*((rsp + 0x48)) != 0x17) { 0x0046209a je 0x4620ac | 0x0046209c mov rsi, qword [rsp + 0x28] | rsi = *((rsp + 0x28)); 0x004620a1 mov rdi, qword [rsp + 0x50] | rdi = *((rsp + 0x50)); 0x004620a6 mov rax, qword [rdi] | rax = *(rdi); 0x004620a9 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x004620ac mov qword [rsp + 0x40], 0xffffffffffffffff | *((rsp + 0x40)) = 0xffffffffffffffff; | label_7: 0x004620b5 lea rdi, [rsp + 8] | rdi = rsp + 8; 0x004620ba call 0x4a59f0 | BloombergLP::balxml::Decoder_ElementContext::~Decoder_ElementContext() (); | label_4: 0x004620bf mov eax, ebx | eax = ebx; 0x004620c1 add rsp, 0x100 | 0x004620c8 pop rbx | 0x004620c9 pop r14 | 0x004620cb pop r15 | 0x004620cd ret | return rax; | label_6: 0x004620ce mov rsi, qword [rbx] | rsi = *(rbx); 0x004620d1 mov edx, dword [rip + 0x1e8691] | edx = .comment; 0x004620d7 mov rdi, r14 | rdi = r14; 0x004620da add rsp, 0x100 | 0x004620e1 pop rbx | 0x004620e2 pop r14 | 0x004620e4 pop r15 | 0x004620e6 jmp 0x455130 | return void (*0x455130)() (); | }