; assembly | /* r2dec pseudo code output */ | /* balxml_encoder.t/assume @ 0x4dfc60 */ | #include | ; (fcn) method.int_BloombergLP::balxml::Encoder_EncodeValue::executeImp_BloombergLP::s_baltst.MySequenceWithNillables__BloombergLP::s_baltst::MySequenceWithNillables_const__int__BloombergLP::bdlat_TypeCategory::Sequence_ () | int64_t method_int_BloombergLP::balxml::Encoder_EncodeValue::executeImp_BloombergLP::s_baltst_MySequenceWithNillables_BloombergLP::s_baltst::MySequenceWithNillables_const_int_BloombergLP::bdlat_TypeCategory::Sequence_ (int64_t arg2, int64_t arg1) { | int64_t var_8h; | int64_t var_14h; | int64_t var_18h; | int64_t var_20h; | rsi = arg2; | rdi = arg1; | /* int BloombergLP::balxml::Encoder_EncodeValue::executeImp(BloombergLP::s_baltst::MySequenceWithNillables const&, int, BloombergLP::bdlat_TypeCategory::Sequence) */ 0x004dfc60 push rbp | 0x004dfc61 push r15 | 0x004dfc63 push r14 | 0x004dfc65 push r13 | 0x004dfc67 push r12 | 0x004dfc69 push rbx | 0x004dfc6a sub rsp, 0x28 | 0x004dfc6e mov r13, rsi | r13 = rsi; 0x004dfc71 mov r15, rdi | r15 = rdi; 0x004dfc74 mov r12, qword [rdi] | r12 = *(rdi); 0x004dfc77 lea r8, [rsi + 0x88] | r8 = rsi + 0x88; 0x004dfc7e mov ebx, dword [rip + 0x805ac] | ebx = *(0x00560230); 0x004dfc84 test ebx, 0x40000 | | if ((ebx & 0x40000) == 0) { 0x004dfc8a jne 0x4dfc9c | 0x004dfc8c test ebx, 0x20000 | | if ((ebx & 0x20000) == 0) { 0x004dfc92 jne 0x4dfca9 | 0x004dfc94 xor r14d, r14d | r14d = 0; 0x004dfc97 mov sil, 1 | sil = 1; 0x004dfc9a jmp 0x4dfd03 | | } else { 0x004dfc9c mov r14b, 1 | r14b = 1; 0x004dfc9f mov ebp, dword [rip + 0x8056b] | ebp = BloombergLP::s_baltst::MySequenceWithNillables::ATTRIBUTE_INFO_ARRAY; 0x004dfca5 xor esi, esi | esi = 0; 0x004dfca7 jmp 0x4dfd05 | goto label_4; | } 0x004dfca9 mov rax, qword [rip + 0x80568] | rax = *(str.attribute1); 0x004dfcb0 movsxd rcx, dword [rip + 0x80569] | rcx = *(0x00560220); 0x004dfcb7 mov qword [rsp], rax | *(rsp) = rax; 0x004dfcbb mov qword [rsp + 8], rcx | *((rsp + 8)) = rcx; 0x004dfcc0 cmp byte [r13 + 0x8c], 0 | | if (*((r13 + 0x8c)) != 0) { 0x004dfcc8 je 0x4dfcfe | 0x004dfcca mov rdi, qword [r12] | 0x004dfcce mov rsi, rsp | 0x004dfcd1 mov rdx, r8 | rdx = r8; 0x004dfcd4 mov ecx, ebx | 0x004dfcd6 mov rbp, r8 | 0x004dfcd9 call 0x466990 | voidBloombergLP::balxml::Formatter::addAttribute(std::_1::basic_string_view>const&,intconst&,int) (*(r12), rsp, rdx, ebx); 0x004dfcde mov rax, qword [r12] | rax = *(r12); 0x004dfce2 mov rax, qword [rax + 0xa0] | rax = *((rax + 0xa0)); 0x004dfce9 mov rcx, qword [rax] | rcx = *(rax); 0x004dfcec mov rcx, qword [rcx - 0x18] | rcx = *((rcx - 0x18)); 0x004dfcf0 cmp dword [rax + rcx + 0x20], 0 | | if (*((rax + rcx + 0x20)) != 0) { 0x004dfcf5 jne 0x4dfe24 | goto label_5; | } 0x004dfcfb mov r8, rbp | r8 = rbp; | } 0x004dfcfe xor r14d, r14d | r14d = 0; 0x004dfd01 xor esi, esi | esi = 0; | } 0x004dfd03 xor ebp, ebp | ebp = 0; | label_4: 0x004dfd05 mov ebx, dword [rip + 0x8054d] | ebx = *(0x00560258); 0x004dfd0b test ebx, 0x40000 | | if ((ebx & 0x40000) == 0) { 0x004dfd11 jne 0x4dfd20 | 0x004dfd13 test ebx, 0x20000 | | if ((ebx & 0x20000) != 0) { 0x004dfd19 jne 0x4dfd72 | goto label_6; | } 0x004dfd1b mov sil, 1 | sil = 1; 0x004dfd1e jmp 0x4dfd29 | | } else { 0x004dfd20 mov r14b, 1 | r14b = 1; 0x004dfd23 mov ebp, dword [rip + 0x8050f] | ebp = *(0x00560238); | } | do { | label_0: 0x004dfd29 mov ebx, dword [rip + 0x80551] | ebx = *(0x00560280); 0x004dfd2f test ebx, 0x40000 | | if ((ebx & 0x40000) == 0) { 0x004dfd35 jne 0x4dfd51 | 0x004dfd37 lea rdx, [r13 + 0x40] | rdx = r13 + 0x40; 0x004dfd3b test ebx, 0x20000 | | if ((ebx & 0x20000) != 0) { 0x004dfd41 jne 0x4dfdd1 | goto label_7; | } 0x004dfd47 test r14b, r14b | | if (r14b != 0) { 0x004dfd4a jne 0x4dfd57 | goto label_1; | } 0x004dfd4c jmp 0x4dfe70 | goto label_8; | } 0x004dfd51 mov ebp, dword [rip + 0x80509] | ebp = *(0x00560260); | label_1: 0x004dfd57 mov rax, qword [r15] | rax = *(r15); 0x004dfd5a mov qword [rsp], rax | *(rsp) = rax; 0x004dfd5e mov rsi, rsp | 0x004dfd61 mov rdi, r13 | 0x004dfd64 mov edx, ebp | 0x004dfd66 call 0x4e01a0 | eax = intBloombergLP::bdlat_SequenceFunctions::bdlat_sequenceAccessAttribute(BloombergLP::s_baltst::MySequenceWithNillablesconst&,BloombergLP::balxml::Encoder_EncodeValue&,int) (r13, rsp, ebp); | label_3: 0x004dfd6b mov ebp, eax | 0x004dfd6d jmp 0x4dfe43 | goto label_2; | label_6: 0x004dfd72 mov rax, qword [rip + 0x804c7] | rax = *(str.attribute2); 0x004dfd79 movsxd rcx, dword [rip + 0x804c8] | rcx = *(0x00560248); 0x004dfd80 mov qword [rsp], rax | *(rsp) = rax; 0x004dfd84 mov qword [rsp + 8], rcx | *((rsp + 8)) = rcx; 0x004dfd89 cmp byte [r13 + 0x30], 0 | 0x004dfd8e je 0x4dfd29 | | } while (*((r13 + 0x30)) == 0); 0x004dfd90 mov dword [rsp + 0x14], esi | *((rsp + 0x14)) = esi; 0x004dfd94 mov qword [rsp + 0x18], r8 | *((rsp + 0x18)) = r8; 0x004dfd99 mov rdi, qword [r12] | 0x004dfd9d mov rsi, rsp | 0x004dfda0 mov rdx, r13 | 0x004dfda3 mov ecx, ebx | 0x004dfda5 call 0x452d00 | voidBloombergLP::balxml::Formatter::addAttribute,bsl::allocator>>(std::_1::basic_string_view>const&,bsl::basic_string,bsl::allocator>const&,int) (*(r12), rsp, r13, ebx); 0x004dfdaa mov rax, qword [r12] | rax = *(r12); 0x004dfdae mov rax, qword [rax + 0xa0] | rax = *((rax + 0xa0)); 0x004dfdb5 mov rcx, qword [rax] | rcx = *(rax); 0x004dfdb8 mov rcx, qword [rcx - 0x18] | rcx = *((rcx - 0x18)); 0x004dfdbc cmp dword [rax + rcx + 0x20], 0 | | if (*((rax + rcx + 0x20)) == 0) { 0x004dfdc1 jne 0x4dfe24 | 0x004dfdc3 mov r8, qword [rsp + 0x18] | r8 = *((rsp + 0x18)); 0x004dfdc8 mov esi, dword [rsp + 0x14] | esi = *((rsp + 0x14)); 0x004dfdcc jmp 0x4dfd29 | goto label_0; | label_7: 0x004dfdd1 mov rax, qword [rip + 0x80490] | rax = *(str.attribute3); 0x004dfdd8 movsxd rcx, dword [rip + 0x80491] | rcx = *(0x00560270); 0x004dfddf mov qword [rsp], rax | *(rsp) = rax; 0x004dfde3 mov qword [rsp + 8], rcx | *((rsp + 8)) = rcx; 0x004dfde8 cmp byte [r13 + 0x78], 0 | | if (*((r13 + 0x78)) == 0) { 0x004dfded je 0x4dfe62 | goto label_9; | } 0x004dfdef mov dword [rsp + 0x14], esi | *((rsp + 0x14)) = esi; 0x004dfdf3 mov qword [rsp + 0x18], r8 | *((rsp + 0x18)) = r8; 0x004dfdf8 mov rdi, qword [r12] | 0x004dfdfc mov rsi, rsp | 0x004dfdff mov ecx, ebx | 0x004dfe01 mov qword [rsp + 0x20], rdx | *((rsp + 0x20)) = rdx; 0x004dfe06 call 0x4dfee0 | voidBloombergLP::balxml::Formatter::addAttribute(std::_1::basic_string_view>const&,BloombergLP::s_baltst::MySequenceconst&,int) (*(r12), rsp, rdx, ebx); 0x004dfe0b mov rax, qword [r12] | rax = *(r12); 0x004dfe0f mov rax, qword [rax + 0xa0] | rax = *((rax + 0xa0)); 0x004dfe16 mov rcx, qword [rax] | rcx = *(rax); 0x004dfe19 mov rcx, qword [rcx - 0x18] | rcx = *((rcx - 0x18)); 0x004dfe1d cmp dword [rax + rcx + 0x20], 0 | | if (*((rax + rcx + 0x20)) == 0) { 0x004dfe22 je 0x4dfe54 | goto label_10; | } | } | label_5: 0x004dfe24 mov rdi, qword [r12 + 8] | 0x004dfe29 mov rdx, rsp | 0x004dfe2c mov ebp, 0xffffffff | 0x004dfe31 mov esi, 0x552277 | 0x004dfe36 mov ecx, ebx | 0x004dfe38 mov r8d, 0xffffffff | 0x004dfe3e call 0x4e4a00 | BloombergLP::balxml::Encoder::logError(char const*,std::_1::basic_string_view>const&,int,int) (*((r12 + 8)), "Failed to encode attribute", rsp, ebx, 0xffffffff); | label_2: 0x004dfe43 mov eax, ebp | eax = ebp; 0x004dfe45 add rsp, 0x28 | 0x004dfe49 pop rbx | 0x004dfe4a pop r12 | 0x004dfe4c pop r13 | 0x004dfe4e pop r14 | 0x004dfe50 pop r15 | 0x004dfe52 pop rbp | 0x004dfe53 ret | return rax; | label_10: 0x004dfe54 mov r8, qword [rsp + 0x18] | r8 = *((rsp + 0x18)); 0x004dfe59 mov esi, dword [rsp + 0x14] | esi = *((rsp + 0x14)); 0x004dfe5d mov rdx, qword [rsp + 0x20] | rdx = *((rsp + 0x20)); | label_9: 0x004dfe62 test r14b, r14b | | if (r14b != 0) { 0x004dfe65 jne 0x4dfd57 | goto label_1; | } 0x004dfe6b test sil, sil | | if (sil == 0) { 0x004dfe6e je 0x4dfed8 | goto label_11; | } | label_8: 0x004dfe70 mov rbx, rdx | rbx = rdx; 0x004dfe73 mov rax, qword [r15] | rax = *(r15); 0x004dfe76 mov qword [rsp], rax | *(rsp) = rax; 0x004dfe7a test byte [rip + 0x803b1], 2 | | if ((*(0x00560232) & 2) != 0) { 0x004dfe81 jne 0x4dfe99 | goto label_12; | } 0x004dfe83 mov rdi, rsp | 0x004dfe86 mov edx, 0x560210 | 0x004dfe8b mov rsi, r8 | 0x004dfe8e call 0x48f4b0 | eax = intBloombergLP::balxml::Encoder_EncodeObject::operator(),BloombergLP::bdlat_AttributeInfo>(BloombergLP::bdlb::NullableValueconst&,BloombergLP::bdlat_AttributeInfoconst&) (rsp, r8, obj.BloombergLP::s_baltst::MySequenceWithNillables::ATTRIBUTE_INFO_ARRAY); 0x004dfe93 mov ebp, eax | 0x004dfe95 test eax, eax | | if (eax != 0) { 0x004dfe97 jne 0x4dfe43 | goto label_2; | } | label_12: 0x004dfe99 test byte [rip + 0x803ba], 2 | | if ((*(0x0056025a) & 2) != 0) { 0x004dfea0 jne 0x4dfeb8 | goto label_13; | } 0x004dfea2 mov rdi, rsp | 0x004dfea5 mov edx, 0x560238 | 0x004dfeaa mov rsi, r13 | 0x004dfead call 0x4df670 | eax = intBloombergLP::balxml::Encoder_EncodeObject::operator(),bsl::allocator>>,BloombergLP::bdlat_AttributeInfo>(BloombergLP::bdlb::NullableValue,bsl::allocator>>const&,BloombergLP::bdlat_AttributeInfoconst&) (rsp, r13, 0x560238); 0x004dfeb2 mov ebp, eax | 0x004dfeb4 test eax, eax | | if (eax != 0) { 0x004dfeb6 jne 0x4dfe43 | goto label_2; | } | label_13: 0x004dfeb8 xor ebp, ebp | ebp = 0; 0x004dfeba test byte [rip + 0x803c1], 2 | | if ((*(0x00560282) & 2) != 0) { 0x004dfec1 jne 0x4dfe43 | goto label_2; | } 0x004dfec3 mov rdi, rsp | 0x004dfec6 mov edx, 0x560260 | 0x004dfecb mov rsi, rbx | 0x004dfece call 0x4e0360 | intBloombergLP::balxml::Encoder_EncodeObject::operator(),BloombergLP::bdlat_AttributeInfo>(BloombergLP::bdlb::NullableValueconst&,BloombergLP::bdlat_AttributeInfoconst&) (rsp, rbx, 0x560260); 0x004dfed3 jmp 0x4dfd6b | goto label_3; | label_11: 0x004dfed8 xor ebp, ebp | ebp = 0; 0x004dfeda jmp 0x4dfe43 | goto label_2; | }