; assembly | /* r2dec pseudo code output */ | /* balxml_encoder.t/assume @ 0x4e13a0 */ | #include | ; (fcn) method.int_BloombergLP::balxml::Encoder_EncodeValue::executeImp_BloombergLP::s_baltst.MySequenceWithAttributes__BloombergLP::s_baltst::MySequenceWithAttributes_const__int__BloombergLP::bdlat_TypeCategory::Sequence_ () | int64_t method_int_BloombergLP::balxml::Encoder_EncodeValue::executeImp_BloombergLP::s_baltst_MySequenceWithAttributes_BloombergLP::s_baltst::MySequenceWithAttributes_const_int_BloombergLP::bdlat_TypeCategory::Sequence_ (int64_t arg2, int64_t arg1) { | int64_t var_4h; | int64_t var_8h; | int64_t var_10h; | rsi = arg2; | rdi = arg1; | /* int BloombergLP::balxml::Encoder_EncodeValue::executeImp(BloombergLP::s_baltst::MySequenceWithAttributes const&, int, BloombergLP::bdlat_TypeCategory::Sequence) */ 0x004e13a0 push rbp | 0x004e13a1 push r15 | 0x004e13a3 push r14 | 0x004e13a5 push r13 | 0x004e13a7 push r12 | 0x004e13a9 push rbx | 0x004e13aa sub rsp, 0x18 | 0x004e13ae mov r15, rsi | r15 = rsi; 0x004e13b1 mov r14, rdi | r14 = rdi; 0x004e13b4 mov r12, qword [rdi] | r12 = *(rdi); 0x004e13b7 mov ebp, dword [rip + 0x7ecd3] | ebp = *(0x00560090); 0x004e13bd test ebp, 0x40000 | | if ((ebp & 0x40000) == 0) { 0x004e13c3 jne 0x4e13d4 | 0x004e13c5 test ebp, 0x20000 | | if ((ebp & 0x20000) == 0) { 0x004e13cb jne 0x4e13e1 | 0x004e13cd xor r13d, r13d | r13d = 0; 0x004e13d0 mov dl, 1 | dl = 1; 0x004e13d2 jmp 0x4e1432 | | } else { 0x004e13d4 mov r13b, 1 | r13b = 1; 0x004e13d7 mov ebx, dword [rip + 0x7ec93] | ebx = BloombergLP::s_baltst::MySequenceWithAttributes::ATTRIBUTE_INFO_ARRAY; 0x004e13dd xor edx, edx | edx = 0; 0x004e13df jmp 0x4e1434 | goto label_5; | } 0x004e13e1 lea rdx, [r15 + 0x80] | 0x004e13e8 mov rax, qword [rip + 0x7ec89] | rax = *(str.attribute1); 0x004e13ef movsxd rcx, dword [rip + 0x7ec8a] | rcx = *(0x00560080); 0x004e13f6 mov qword [rsp + 8], rax | *((rsp + 8)) = rax; 0x004e13fb mov qword [rsp + 0x10], rcx | *((rsp + 0x10)) = rcx; 0x004e1400 mov rdi, qword [r12] | 0x004e1404 lea rsi, [rsp + 8] | 0x004e1409 mov ecx, ebp | 0x004e140b call 0x466990 | voidBloombergLP::balxml::Formatter::addAttribute(std::_1::basic_string_view>const&,intconst&,int) (*(r12), rsp + 8, r15 + 0x80, ebp); 0x004e1410 mov rax, qword [r12] | rax = *(r12); 0x004e1414 mov rax, qword [rax + 0xa0] | rax = *((rax + 0xa0)); 0x004e141b mov rcx, qword [rax] | rcx = *(rax); 0x004e141e mov rcx, qword [rcx - 0x18] | rcx = *((rcx - 0x18)); 0x004e1422 cmp dword [rax + rcx + 0x20], 0 | | if (*((rax + rcx + 0x20)) != 0) { 0x004e1427 jne 0x4e15db | goto label_6; | } 0x004e142d xor r13d, r13d | r13d = 0; 0x004e1430 xor edx, edx | edx = 0; | } 0x004e1432 xor ebx, ebx | ebx = 0; | label_5: 0x004e1434 mov ebp, dword [rip + 0x7ec7e] | ebp = *(0x005600b8); 0x004e143a test ebp, 0x40000 | | if ((ebp & 0x40000) == 0) { 0x004e1440 jne 0x4e144e | 0x004e1442 test ebp, 0x20000 | | if ((ebp & 0x20000) != 0) { 0x004e1448 jne 0x4e14c8 | goto label_7; | } 0x004e144a mov dl, 1 | dl = 1; 0x004e144c jmp 0x4e1457 | | } else { 0x004e144e mov r13b, 1 | r13b = 1; 0x004e1451 mov ebx, dword [rip + 0x7ec41] | ebx = *(0x00560098); | } | do { | label_0: 0x004e1457 mov ebp, dword [rip + 0x7ec83] | ebp = *(0x005600e0); 0x004e145d test ebp, 0x40000 | | if ((ebp & 0x40000) == 0) { 0x004e1463 jne 0x4e1475 | 0x004e1465 test ebp, 0x20000 | | if ((ebp & 0x20000) != 0) { 0x004e146b jne 0x4e1528 | goto label_8; | } 0x004e1471 mov dl, 1 | dl = 1; 0x004e1473 jmp 0x4e1480 | | } else { 0x004e1475 mov r13b, 1 | r13b = 1; 0x004e1478 mov ebx, dword [rip + 0x7ec42] | ebx = *(0x005600c0); 0x004e147e xor edx, edx | edx = 0; | } | label_1: 0x004e1480 mov ebp, dword [rip + 0x7ec82] | ebp = *(0x00560108); 0x004e1486 test ebp, 0x40000 | | if ((ebp & 0x40000) == 0) { 0x004e148c jne 0x4e14a4 | 0x004e148e test ebp, 0x20000 | | if ((ebp & 0x20000) != 0) { 0x004e1494 jne 0x4e158b | goto label_9; | } 0x004e149a test r13b, r13b | | if (r13b != 0) { 0x004e149d jne 0x4e14aa | goto label_2; | } 0x004e149f jmp 0x4e161e | goto label_10; | } 0x004e14a4 mov ebx, dword [rip + 0x7ec3e] | ebx = *(0x005600e8); | label_2: 0x004e14aa mov rax, qword [r14] | rax = *(r14); 0x004e14ad mov qword [rsp + 8], rax | *((rsp + 8)) = rax; 0x004e14b2 lea rsi, [rsp + 8] | 0x004e14b7 mov rdi, r15 | 0x004e14ba mov edx, ebx | 0x004e14bc call 0x4e1640 | eax = intBloombergLP::s_baltst::MySequenceWithAttributes::accessAttribute(BloombergLP::balxml::Encoder_EncodeValue&,int)const (r15, rsp + 8, ebx); | label_3: 0x004e14c1 mov ebx, eax | ebx = eax; 0x004e14c3 jmp 0x4e15fc | goto label_4; | label_7: 0x004e14c8 mov rax, qword [rip + 0x7ebd1] | rax = *(str.attribute2); 0x004e14cf movsxd rcx, dword [rip + 0x7ebd2] | rcx = *(0x005600a8); 0x004e14d6 mov qword [rsp + 8], rax | *((rsp + 8)) = rax; 0x004e14db mov qword [rsp + 0x10], rcx | *((rsp + 0x10)) = rcx; 0x004e14e0 cmp byte [r15 + 0x30], 0 | 0x004e14e5 je 0x4e1457 | | } while (*((r15 + 0x30)) == 0); 0x004e14eb mov dword [rsp + 4], edx | *((rsp + 4)) = edx; 0x004e14ef mov rdi, qword [r12] | 0x004e14f3 lea rsi, [rsp + 8] | 0x004e14f8 mov rdx, r15 | 0x004e14fb mov ecx, ebp | 0x004e14fd call 0x452d00 | voidBloombergLP::balxml::Formatter::addAttribute,bsl::allocator>>(std::_1::basic_string_view>const&,bsl::basic_string,bsl::allocator>const&,int) (*(r12), rsp + 8, r15, ebp); 0x004e1502 mov rax, qword [r12] | rax = *(r12); 0x004e1506 mov rax, qword [rax + 0xa0] | rax = *((rax + 0xa0)); 0x004e150d mov rcx, qword [rax] | rcx = *(rax); 0x004e1510 mov rcx, qword [rcx - 0x18] | rcx = *((rcx - 0x18)); 0x004e1514 cmp dword [rax + rcx + 0x20], 0 | | if (*((rax + rcx + 0x20)) != 0) { 0x004e1519 jne 0x4e15db | goto label_6; | } 0x004e151f mov edx, dword [rsp + 4] | edx = *((rsp + 4)); 0x004e1523 jmp 0x4e1457 | goto label_0; | label_8: 0x004e1528 mov rax, qword [rip + 0x7eb99] | rax = *(str.element1); 0x004e152f movsxd rcx, dword [rip + 0x7eb9a] | rcx = *(0x005600d0); 0x004e1536 mov qword [rsp + 8], rax | *((rsp + 8)) = rax; 0x004e153b mov qword [rsp + 0x10], rcx | *((rsp + 0x10)) = rcx; 0x004e1540 cmp byte [r15 + 0x88], 0 | | if (*((r15 + 0x88)) == 0) { 0x004e1548 je 0x4e1480 | goto label_1; | } 0x004e154e mov dword [rsp + 4], edx | *((rsp + 4)) = edx; 0x004e1552 lea rdx, [r15 + 0x84] | 0x004e1559 mov rdi, qword [r12] | 0x004e155d lea rsi, [rsp + 8] | 0x004e1562 mov ecx, ebp | 0x004e1564 call 0x466990 | voidBloombergLP::balxml::Formatter::addAttribute(std::_1::basic_string_view>const&,intconst&,int) (*(r12), rsp + 8, r15 + 0x84, ebp); 0x004e1569 mov rax, qword [r12] | rax = *(r12); 0x004e156d mov rax, qword [rax + 0xa0] | rax = *((rax + 0xa0)); 0x004e1574 mov rcx, qword [rax] | rcx = *(rax); 0x004e1577 mov rcx, qword [rcx - 0x18] | rcx = *((rcx - 0x18)); 0x004e157b cmp dword [rax + rcx + 0x20], 0 | | if (*((rax + rcx + 0x20)) == 0) { 0x004e1580 jne 0x4e15db | 0x004e1582 mov edx, dword [rsp + 4] | edx = *((rsp + 4)); 0x004e1586 jmp 0x4e1480 | goto label_1; | label_9: 0x004e158b mov rax, qword [rip + 0x7eb5e] | rax = *(str.element2); 0x004e1592 movsxd rcx, dword [rip + 0x7eb5f] | rcx = *(0x005600f8); 0x004e1599 mov qword [rsp + 8], rax | *((rsp + 8)) = rax; 0x004e159e mov qword [rsp + 0x10], rcx | *((rsp + 0x10)) = rcx; 0x004e15a3 cmp byte [r15 + 0x70], 0 | | if (*((r15 + 0x70)) == 0) { 0x004e15a8 je 0x4e1611 | goto label_11; | } 0x004e15aa mov dword [rsp + 4], edx | *((rsp + 4)) = edx; 0x004e15ae lea rdx, [r15 + 0x40] | 0x004e15b2 mov rdi, qword [r12] | 0x004e15b6 lea rsi, [rsp + 8] | 0x004e15bb mov ecx, ebp | 0x004e15bd call 0x452d00 | voidBloombergLP::balxml::Formatter::addAttribute,bsl::allocator>>(std::_1::basic_string_view>const&,bsl::basic_string,bsl::allocator>const&,int) (*(r12), rsp + 8, r15 + 0x40, ebp); 0x004e15c2 mov rax, qword [r12] | rax = *(r12); 0x004e15c6 mov rax, qword [rax + 0xa0] | rax = *((rax + 0xa0)); 0x004e15cd mov rcx, qword [rax] | rcx = *(rax); 0x004e15d0 mov rcx, qword [rcx - 0x18] | rcx = *((rcx - 0x18)); 0x004e15d4 cmp dword [rax + rcx + 0x20], 0 | | if (*((rax + rcx + 0x20)) == 0) { 0x004e15d9 je 0x4e160d | goto label_12; | } | } | label_6: 0x004e15db mov rdi, qword [r12 + 8] | 0x004e15e0 lea rdx, [rsp + 8] | 0x004e15e5 mov ebx, 0xffffffff | ebx = 0xffffffff; 0x004e15ea mov esi, 0x552277 | 0x004e15ef mov ecx, ebp | 0x004e15f1 mov r8d, 0xffffffff | 0x004e15f7 call 0x4e4a00 | BloombergLP::balxml::Encoder::logError(char const*,std::_1::basic_string_view>const&,int,int) (*((r12 + 8)), "Failed to encode attribute", rsp + 8, ebp, 0xffffffff); | label_4: 0x004e15fc mov eax, ebx | eax = ebx; 0x004e15fe add rsp, 0x18 | 0x004e1602 pop rbx | 0x004e1603 pop r12 | 0x004e1605 pop r13 | 0x004e1607 pop r14 | 0x004e1609 pop r15 | 0x004e160b pop rbp | 0x004e160c ret | return rax; | label_12: 0x004e160d mov edx, dword [rsp + 4] | edx = *((rsp + 4)); | label_11: 0x004e1611 test r13b, r13b | | if (r13b != 0) { 0x004e1614 jne 0x4e14aa | goto label_2; | } 0x004e161a test dl, dl | | if (dl != 0) { 0x004e161c je 0x4e1638 | | label_10: 0x004e161e mov rax, qword [r14] | rax = *(r14); 0x004e1621 mov qword [rsp + 8], rax | *((rsp + 8)) = rax; 0x004e1626 lea rsi, [rsp + 8] | 0x004e162b mov rdi, r15 | 0x004e162e call 0x4e1800 | intBloombergLP::s_baltst::MySequenceWithAttributes::accessAttributes(BloombergLP::balxml::Encoder_SequenceSecondPass&)const (r15, rsp + 8); 0x004e1633 jmp 0x4e14c1 | goto label_3; | } 0x004e1638 xor ebx, ebx | ebx = 0; 0x004e163a jmp 0x4e15fc | goto label_4; | }