; assembly | /* r2dec pseudo code output */ | /* balxml_decoder.t/none @ 0x440e00 */ | #include | ; (fcn) method.GenerateXmlElement.operator___BloombergLP::bslstl::StringRefImp_char__const__BloombergLP::bslstl::StringRefImp_char__const__const () | int64_t method_GenerateXmlElement_operator_BloombergLP::bslstl::StringRefImp_char_const_BloombergLP::bslstl::StringRefImp_char_const_const (int64_t arg4, char * arg3, int64_t arg1) { | int64_t var_8h; | int64_t var_18h; | uint32_t var_20h; | int64_t var_28h; | int64_t var_30h; | rcx = arg4; | rdx = arg3; | rdi = arg1; | /* GenerateXmlElement::operator()(BloombergLP::bslstl::StringRefImp const&, BloombergLP::bslstl::StringRefImp const&) const */ 0x00440e00 push r15 | 0x00440e02 push r14 | 0x00440e04 push rbx | 0x00440e05 sub rsp, 0x40 | 0x00440e09 mov rbx, rdx | rbx = rdx; 0x00440e0c mov r14, rdi | r14 = rdi; 0x00440e0f mov r15, rsp | r15 = rsp; 0x00440e12 mov rdi, r15 | 0x00440e15 mov rsi, rcx | 0x00440e18 call 0x449190 | TestXmlUtil::generateContent(BloombergLP::bslstl::StringRefImpconst&) (rsp, rcx); 0x00440e1d mov rdi, r14 | 0x00440e20 mov rsi, rbx | 0x00440e23 mov rdx, r15 | 0x00440e26 xor ecx, ecx | 0x00440e28 call 0x446030 | TestXmlElement::TestXmlElement(BloombergLP::bslstl::StringRefImpconst&,BloombergLP::bdlb::Variant>,bsl::basic_string,bsl::allocator>>const&,BloombergLP::bslma::Allocator*) (r14, rbx, r15, 0); 0x00440e2d mov eax, dword [rsp + 0x30] | eax = *((rsp + 0x30)); 0x00440e31 cmp eax, 2 | | if (eax == 2) { 0x00440e34 je 0x440e78 | goto label_0; | } 0x00440e36 cmp eax, 1 | | if (eax != 1) { 0x00440e39 jne 0x440e8f | goto label_1; | } 0x00440e3b mov rbx, qword [rsp] | rbx = *(rsp); 0x00440e3f test rbx, rbx | | if (rbx == 0) { 0x00440e42 je 0x440e8f | goto label_1; | } 0x00440e44 mov r15, qword [rsp + 8] | r15 = *((rsp + 8)); 0x00440e49 cmp rbx, r15 | | if (rbx == r15) { 0x00440e4c je 0x440e68 | goto label_2; | } 0x00440e4e nop | | do { 0x00440e50 mov rdi, rbx | 0x00440e53 call 0x444a20 | TestXmlElement::~TestXmlElement() (rbx); 0x00440e58 add rbx, 0x90 | rbx += 0x90; 0x00440e5f cmp r15, rbx | 0x00440e62 jne 0x440e50 | | } while (r15 != rbx); 0x00440e64 mov rbx, qword [rsp] | rbx = *(rsp); | label_2: 0x00440e68 mov rdi, qword [rsp + 0x18] | rdi = *((rsp + 0x18)); 0x00440e6d mov rax, qword [rdi] | rax = *(rdi); 0x00440e70 mov rsi, rbx | rsi = rbx; 0x00440e73 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); 0x00440e76 jmp 0x440e8f | goto label_1; | label_0: 0x00440e78 cmp qword [rsp + 0x20], 0x17 | | if (*((rsp + 0x20)) != 0x17) { 0x00440e7e je 0x440e8f | 0x00440e80 mov rsi, qword [rsp] | rsi = *(rsp); 0x00440e84 mov rdi, qword [rsp + 0x28] | rdi = *((rsp + 0x28)); 0x00440e89 mov rax, qword [rdi] | rax = *(rdi); 0x00440e8c call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } | label_1: 0x00440e8f mov rax, r14 | rax = r14; 0x00440e92 add rsp, 0x40 | 0x00440e96 pop rbx | 0x00440e97 pop r14 | 0x00440e99 pop r15 | 0x00440e9b ret | return rax; | }