; assembly | /* r2dec pseudo code output */ | /* balxml_configschema.t/none @ 0x412c50 */ | #include | ; (fcn) method.int_BloombergLP::balxml::Decoder_ParseObject::executeImp_BloombergLP::s_baltst.BasicSchemaEnumerationElementChoice__BloombergLP::s_baltst::BasicSchemaEnumerationElementChoice__int__BloombergLP::bdlat_TypeCategory::Choice_ () | int64_t method_int_BloombergLP::balxml::Decoder_ParseObject::executeImp_BloombergLP::s_baltst_BasicSchemaEnumerationElementChoice_BloombergLP::s_baltst::BasicSchemaEnumerationElementChoice_int_BloombergLP::bdlat_TypeCategory::Choice_ (int64_t arg3, int64_t arg2, int64_t arg1) { | int64_t var_8h_3; | int64_t var_10h_2; | int64_t var_18h; | int64_t var_20h; | int64_t var_28h_2; | int64_t var_38h; | int64_t var_40h; | uint32_t var_48h; | int64_t var_50h; | int64_t var_28h; | int64_t var_30h; | rdx = arg3; | rsi = arg2; | rdi = arg1; | /* int BloombergLP::balxml::Decoder_ParseObject::executeImp(BloombergLP::s_baltst::BasicSchemaEnumerationElementChoice*, int, BloombergLP::bdlat_TypeCategory::Choice) */ 0x00412c50 push rbp | 0x00412c51 push r14 | 0x00412c53 push rbx | 0x00412c54 sub rsp, 0x100 | 0x00412c5b mov rbp, rsi | 0x00412c5e mov rbx, rdi | rbx = rdi; 0x00412c61 test edx, 0x10000 | | if ((edx & 0x10000) == 0) { 0x00412c67 jne 0x412cb5 | 0x00412c69 mov qword [rsp + 8], 0x49b1a8 | *((rsp + 8)) = vtable.BloombergLP::balxml::Decoder_ChoiceContext_BloombergLP::s_baltst::BasicSchemaEnumerationElementChoice_.0; 0x00412c72 mov byte [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x00412c77 mov qword [rsp + 0x18], rbp | *((rsp + 0x18)) = rbp; 0x00412c7c mov byte [rsp + 0x20], 0 | *((rsp + 0x20)) = 0; 0x00412c81 mov qword [rsp + 0x28], 0 | *((rsp + 0x28)) = 0; 0x00412c8a movaps xmm0, xmmword [rip + 0x8717f] | xmm0 = .comment; 0x00412c91 movups xmmword [rsp + 0x40], xmm0 | __asm ("movups xmmword [rsp + 0x40], xmm0"); 0x00412c96 mov rax, qword [rip + 0x2cd463] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x00412c9d test rax, rax | | if (rax != 0) { 0x00412ca0 je 0x412d97 | 0x00412ca6 mov qword [rsp + 0x50], rax | *((rsp + 0x50)) = rax; 0x00412cab lea rcx, [rsp + 0x28] | rcx = rsp + 0x28; 0x00412cb0 jmp 0x412e07 | | } else { 0x00412cb5 mov rax, qword [rbx] | rax = *(rbx); 0x00412cb8 mov rax, qword [rax] | rax = *(rax); 0x00412cbb cmp byte [rax + 8], 0 | | if (*((rax + 8)) != 0) { 0x00412cbf je 0x412cd6 | 0x00412cc1 mov rdi, qword [rbx + 8] | 0x00412cc5 mov esi, dword [rbx + 0x10] | 0x00412cc8 call 0x42fc30 | rax = BloombergLP::s_baltst::BasicSchemaEnumerationElementChoice::lookupSelectionInfo(char const*,int) (*((rbx + 8)), *((rbx + 0x10))); 0x00412ccd test rax, rax | | if (rax == 0) { 0x00412cd0 je 0x412ddc | goto label_0; | } | } 0x00412cd6 mov rsi, qword [rbx + 8] | 0x00412cda mov edx, dword [rbx + 0x10] | 0x00412cdd mov rdi, rbp | 0x00412ce0 call 0x430240 | eax = BloombergLP::s_baltst::BasicSchemaEnumerationElementChoice::makeSelection(char const*,int) (rbp, *((rbx + 8)), *((rbx + 0x10))); 0x00412ce5 test eax, eax | | if (eax == 0) { 0x00412ce7 je 0x412db0 | goto label_1; | } 0x00412ced mov rbp, qword [rbx] | rbp = *(rbx); 0x00412cf0 mov rsi, qword [rbp + 0x2d0] | 0x00412cf7 lea r14, [rsp + 8] | r14 = rsp + 8; 0x00412cfc mov rdi, r14 | 0x00412cff call 0x40ee30 | BloombergLP::balxml::Decoder::MemOutStream::MemOutStream(BloombergLP::bslma::Allocator*) (r14, *((rbp + 0x2d0))); 0x00412d04 mov dword [rsp + 0xf0], 2 | *((rsp + 0xf0)) = 2; 0x00412d0f mov qword [rsp + 0xf8], rbp | *((rsp + 0xf8)) = rbp; 0x00412d17 mov esi, 0x49aa63 | 0x00412d1c mov edx, 0x1b | 0x00412d21 mov rdi, r14 | 0x00412d24 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); 0x00412d29 mov rbp, rax | 0x00412d2c mov rbx, qword [rbx + 8] | rbx = *((rbx + 8)); 0x00412d30 mov rdi, rbx | 0x00412d33 call 0x404780 | rax = strlen (*((rbx + 8))); 0x00412d38 mov rdi, rbp | 0x00412d3b mov rsi, rbx | 0x00412d3e mov rdx, rax | 0x00412d41 call 0x40db40 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rbp, rbx, rax); 0x00412d46 mov esi, 0x49a969 | 0x00412d4b mov edx, 2 | 0x00412d50 mov rdi, rax | 0x00412d53 call 0x40db40 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x49a969, 2); 0x00412d58 mov rdi, rax | rdi = rax; 0x00412d5b call 0x4049f0 | std::_1::basic_ostream>::flush() (); 0x00412d60 mov rdi, qword [rsp + 0xf8] | 0x00412d68 mov esi, dword [rsp + 0xf0] | 0x00412d6f mov rdx, qword [rsp + 0x38] | 0x00412d74 mov eax, dword [rsp + 0x40] | eax = *((rsp + 0x40)); 0x00412d78 sub eax, edx | eax -= edx; 0x00412d7a movsxd rcx, eax | rcx = (int64_t) eax; 0x00412d7d call 0x421a30 | BloombergLP::balxml::Decoder::setDecoderError(BloombergLP::balxml::ErrorInfo::Severity,std::_1::basic_string_view>) (*((rsp + 0xf8)), *((rsp + 0xf0)), *((rsp + 0x38)), rcx); 0x00412d82 lea rdi, [rsp + 8] | 0x00412d87 call 0x420ff0 | BloombergLP::balxml::Decoder::MemOutStream::~MemOutStream() (rsp + 8); 0x00412d8c mov r14d, 0xffffffff | r14d = 0xffffffff; 0x00412d92 jmp 0x412e4e | goto label_2; | } 0x00412d97 call 0x474360 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); 0x00412d9c cmp qword [rsp + 0x48], 0x17 | 0x00412da2 mov qword [rsp + 0x50], rax | *((rsp + 0x50)) = rax; | if (*((rsp + 0x48)) == 0x17) { 0x00412da7 jne 0x412e02 | 0x00412da9 lea rcx, [rsp + 0x28] | rcx = rsp + 0x28; 0x00412dae jmp 0x412e07 | goto label_3; | label_1: 0x00412db0 mov r14d, 0xffffffff | r14d = 0xffffffff; 0x00412db6 cmp dword [rbp + 0x40], 0 | | if (*((rbp + 0x40)) != 0) { 0x00412dba jne 0x412e4e | goto label_2; | } 0x00412dc0 mov edx, dword [rip + 0x8ec9a] | edx = .comment; 0x00412dc6 mov rdi, rbx | rdi = rbx; 0x00412dc9 mov rsi, rbp | rsi = rbp; 0x00412dcc add rsp, 0x100 | 0x00412dd3 pop rbx | 0x00412dd4 pop r14 | 0x00412dd6 pop rbp | 0x00412dd7 jmp 0x410db0 | void (*0x410db0)() (); | label_0: 0x00412ddc mov rax, qword [rbx] | rax = *(rbx); 0x00412ddf inc dword [rax + 0x410] | *((rax + 0x410))++; 0x00412de5 lea rbp, [rsp + 8] | rbp = rsp + 8; 0x00412dea mov rdi, rbp | rdi = rbp; 0x00412ded call 0x421e30 | BloombergLP::balxml::Decoder_UnknownElementContext::Decoder_UnknownElementContext() (); 0x00412df2 mov rsi, qword [rbx] | 0x00412df5 mov rdi, rbp | 0x00412df8 call 0x420960 | eax = BloombergLP::balxml::Decoder_ElementContext::beginParse(BloombergLP::balxml::Decoder*) (rbp, *(rbx)); 0x00412dfd mov r14d, eax | r14d = eax; 0x00412e00 jmp 0x412e44 | goto label_4; | } 0x00412e02 mov rcx, qword [rsp + 0x28] | rcx = *((rsp + 0x28)); | } | label_3: 0x00412e07 mov byte [rcx], 0 | *(rcx) = 0; 0x00412e0a mov rsi, qword [rbx] | 0x00412e0d lea rdi, [rsp + 8] | 0x00412e12 call 0x420960 | eax = BloombergLP::balxml::Decoder_ElementContext::beginParse(BloombergLP::balxml::Decoder*) (rsp + 8, *(rbx)); 0x00412e17 mov r14d, eax | r14d = eax; 0x00412e1a mov qword [rsp + 8], 0x49b1a8 | *((rsp + 8)) = vtable.BloombergLP::balxml::Decoder_ChoiceContext_BloombergLP::s_baltst::BasicSchemaEnumerationElementChoice_.0; 0x00412e23 cmp qword [rsp + 0x48], 0x17 | | if (*((rsp + 0x48)) != 0x17) { 0x00412e29 je 0x412e3b | 0x00412e2b mov rsi, qword [rsp + 0x28] | rsi = *((rsp + 0x28)); 0x00412e30 mov rdi, qword [rsp + 0x50] | rdi = *((rsp + 0x50)); 0x00412e35 mov rax, qword [rdi] | rax = *(rdi); 0x00412e38 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x00412e3b mov qword [rsp + 0x40], 0xffffffffffffffff | *((rsp + 0x40)) = 0xffffffffffffffff; | label_4: 0x00412e44 lea rdi, [rsp + 8] | rdi = rsp + 8; 0x00412e49 call 0x422260 | BloombergLP::balxml::Decoder_ElementContext::~Decoder_ElementContext() (); | label_2: 0x00412e4e mov eax, r14d | eax = r14d; 0x00412e51 add rsp, 0x100 | 0x00412e58 pop rbx | 0x00412e59 pop r14 | 0x00412e5b pop rbp | 0x00412e5c ret | return rax; | }