; assembly | /* r2dec pseudo code output */ | /* balxml_encoder.t/none @ 0x4e7a80 */ | #include | ; (fcn) method.BloombergLP::balxml::Formatter.doAddData_std::__1::basic_string_view_char__std::__1::char_traits_char____const__bool_ () | int64_t method_BloombergLP::balxml::Formatter_doAddData_std::_1::basic_string_view_char_std::_1::char_traits_char_const_bool_ (int64_t arg3, int64_t arg2, signed int64_t arg1) { | int64_t var_1h; | int64_t var_2h; | int64_t var_3h; | int64_t var_4h; | int64_t var_5h; | int64_t var_6h; | int64_t var_7h; | rdx = arg3; | rsi = arg2; | rdi = arg1; | /* BloombergLP::balxml::Formatter::doAddData(std::__1::basic_string_view > const&, bool) */ 0x004e7a80 push rbp | 0x004e7a81 push r15 | 0x004e7a83 push r14 | 0x004e7a85 push rbx | 0x004e7a86 push rax | 0x004e7a87 mov r14, rsi | r14 = rsi; 0x004e7a8a mov rbx, rdi | rbx = rdi; 0x004e7a8d mov r15d, dword [rsi + 8] | r15d = *((rsi + 8)); 0x004e7a91 cmp dword [rdi + 0xb4], 0 | | if (*((rdi + 0xb4)) >= 0) { 0x004e7a98 js 0x4e7cdc | 0x004e7a9e mov ebp, edx | 0x004e7aa0 cmp byte [rbx + 0xdc], 0 | | if (*((rbx + 0xdc)) != 0) { 0x004e7aa7 je 0x4e7b18 | 0x004e7aa9 cmp dword [rbx + 0xb0], 0 | | if (*((rbx + 0xb0)) <= 0) { 0x004e7ab0 jle 0x4e7b18 | goto label_0; | } 0x004e7ab2 mov rax, qword [rbx + 0xc0] | rax = *((rbx + 0xc0)); 0x004e7ab9 cmp dword [rax - 4], 3 | | if (*((rax - 4)) != 3) { 0x004e7abd jne 0x4e7b18 | goto label_0; | } 0x004e7abf cmp dword [rbx + 0xd8], 2 | | if (*((rbx + 0xd8)) == 2) { 0x004e7ac6 jne 0x4e7af3 | 0x004e7ac8 mov rdi, qword [rbx + 0xa0] | 0x004e7acf mov byte [rsp + 3], 0x3e | *((rsp + 3)) = 0x3e; 0x004e7ad4 lea rsi, [rsp + 3] | 0x004e7ad9 mov edx, 1 | 0x004e7ade call 0x4529b0 | std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (*((rbx + 0xa0)), rsp + 3, 1); 0x004e7ae3 inc dword [rbx + 0xb0] | *((rbx + 0xb0))++; 0x004e7ae9 mov dword [rbx + 0xd8], 3 | *((rbx + 0xd8)) = 3; | } 0x004e7af3 mov rdi, qword [rbx + 0xa0] | 0x004e7afa mov byte [rsp + 4], 0xa | *((rsp + 4)) = 0xa; 0x004e7aff lea rsi, [rsp + 4] | 0x004e7b04 mov edx, 1 | 0x004e7b09 call 0x4529b0 | std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (*((rbx + 0xa0)), rsp + 4, 1); 0x004e7b0e mov dword [rbx + 0xb0], 0 | *((rbx + 0xb0)) = 0; | } | label_0: 0x004e7b18 test r15d, r15d | | if (r15d == 0) { 0x004e7b1b je 0x4e7cff | goto label_1; | } 0x004e7b21 mov rax, qword [rbx + 0xc0] | rax = *((rbx + 0xc0)); 0x004e7b28 mov ecx, dword [rax - 4] | ecx = *((rax - 4)); 0x004e7b2b test ecx, ecx | | if (ecx != 0) { 0x004e7b2d je 0x4e7bcf | 0x004e7b33 test bpl, bpl | | if (bpl != 0) { 0x004e7b36 je 0x4e7bcf | 0x004e7b3c mov edx, dword [rbx + 0xb0] | edx = *((rbx + 0xb0)); 0x004e7b42 mov esi, dword [rbx + 0xb4] | esi = *((rbx + 0xb4)); 0x004e7b48 test edx, edx | | if (edx != 0) { 0x004e7b4a je 0x4e7b58 | 0x004e7b4c lea edi, [rdx + r15] | edi = rdx + r15; 0x004e7b50 cmp edi, esi | | if (edi < esi) { 0x004e7b52 jl 0x4e7cb2 | goto label_2; | } | } 0x004e7b58 cmp ecx, 1 | | if (ecx != 1) { 0x004e7b5b jne 0x4e7c4f | goto label_3; | } 0x004e7b61 test edx, edx | | if (edx <= 0) { 0x004e7b63 jle 0x4e7c4f | goto label_3; | } 0x004e7b69 test esi, esi | | if (esi < 0) { 0x004e7b6b js 0x4e7ca4 | goto label_4; | } 0x004e7b71 cmp dword [rbx + 0xd8], 2 | | if (*((rbx + 0xd8)) == 2) { 0x004e7b78 jne 0x4e7ba5 | 0x004e7b7a mov rdi, qword [rbx + 0xa0] | 0x004e7b81 mov byte [rsp + 5], 0x3e | *((rsp + 5)) = 0x3e; 0x004e7b86 lea rsi, [rsp + 5] | 0x004e7b8b mov edx, 1 | 0x004e7b90 call 0x4529b0 | std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (*((rbx + 0xa0)), rsp + 5, 1); 0x004e7b95 inc dword [rbx + 0xb0] | *((rbx + 0xb0))++; 0x004e7b9b mov dword [rbx + 0xd8], 3 | *((rbx + 0xd8)) = 3; | } 0x004e7ba5 mov rdi, qword [rbx + 0xa0] | 0x004e7bac mov byte [rsp + 6], 0xa | *((rsp + 6)) = 0xa; 0x004e7bb1 lea rsi, [rsp + 6] | 0x004e7bb6 mov edx, 1 | 0x004e7bbb call 0x4529b0 | std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (*((rbx + 0xa0)), rsp + 6, 1); 0x004e7bc0 mov dword [rbx + 0xb0], 0 | *((rbx + 0xb0)) = 0; 0x004e7bca jmp 0x4e7cab | | } | } else { 0x004e7bcf test bpl, bpl | | if (bpl != 0) { 0x004e7bd2 jne 0x4e7cb2 | goto label_2; | } 0x004e7bd8 cmp ecx, 3 | | if (ecx != 3) { 0x004e7bdb jne 0x4e7cdc | goto label_5; | } 0x004e7be1 cmp byte [rbx + 0xdc], 0 | | if (*((rbx + 0xdc)) == 0) { 0x004e7be8 je 0x4e7cdc | goto label_5; | } 0x004e7bee cmp dword [rbx + 0xb4], 0 | | if (*((rbx + 0xb4)) < 0) { 0x004e7bf5 js 0x4e7cdc | goto label_5; | } 0x004e7bfb cmp dword [rbx + 0xb0], 0 | | if (*((rbx + 0xb0)) != 0) { 0x004e7c02 je 0x4e7c1f | 0x004e7c04 mov rdi, qword [rbx + 0xa0] | 0x004e7c0b mov byte [rsp + 2], 0xa | *((rsp + 2)) = 0xa; 0x004e7c10 lea rsi, [rsp + 2] | 0x004e7c15 mov edx, 1 | 0x004e7c1a call 0x4529b0 | std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (*((rbx + 0xa0)), rsp + 2, 1); | } 0x004e7c1f mov rdi, qword [rbx + 0xa0] | 0x004e7c26 mov esi, dword [rbx + 0xa8] | 0x004e7c2c mov edx, dword [rbx + 0xac] | edx = *((rbx + 0xac)); 0x004e7c32 call 0x4f0430 | BloombergLP::bdlb::Print::indent(std::_1::basic_ostream>&,int,int) (*((rbx + 0xa0)), *((rbx + 0xa8))); 0x004e7c37 mov eax, dword [rbx + 0xac] | eax = *((rbx + 0xac)); 0x004e7c3d imul eax, dword [rbx + 0xa8] | eax *= *((rbx + 0xa8)); 0x004e7c44 mov dword [rbx + 0xb0], eax | *((rbx + 0xb0)) = eax; 0x004e7c4a jmp 0x4e7cdc | goto label_5; | label_3: 0x004e7c4f test esi, esi | | if (esi >= 0) { 0x004e7c51 js 0x4e7ca4 | 0x004e7c53 test edx, edx | | if (edx != 0) { 0x004e7c55 je 0x4e7c72 | 0x004e7c57 mov rdi, qword [rbx + 0xa0] | 0x004e7c5e mov byte [rsp + 7], 0xa | *((rsp + 7)) = 0xa; 0x004e7c63 lea rsi, [rsp + 7] | 0x004e7c68 mov edx, 1 | 0x004e7c6d call 0x4529b0 | std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (*((rbx + 0xa0)), rsp + 7, 1); | } 0x004e7c72 mov rdi, qword [rbx + 0xa0] | 0x004e7c79 mov esi, dword [rbx + 0xa8] | 0x004e7c7f mov edx, dword [rbx + 0xac] | edx = *((rbx + 0xac)); 0x004e7c85 call 0x4f0430 | BloombergLP::bdlb::Print::indent(std::_1::basic_ostream>&,int,int) (*((rbx + 0xa0)), *((rbx + 0xa8))); 0x004e7c8a mov eax, dword [rbx + 0xac] | eax = *((rbx + 0xac)); 0x004e7c90 imul eax, dword [rbx + 0xa8] | eax *= *((rbx + 0xa8)); 0x004e7c97 mov dword [rbx + 0xb0], eax | *((rbx + 0xb0)) = eax; 0x004e7c9d mov rax, qword [rbx + 0xc0] | rax = *((rbx + 0xc0)); | } | label_4: 0x004e7ca4 mov dword [rax - 4], 3 | *((rax - 4)) = 3; | } 0x004e7cab mov byte [rbx + 0xdd], 1 | *((rbx + 0xdd)) = 1; | label_2: 0x004e7cb2 cmp byte [rbx + 0xdd], 0 | | if (*((rbx + 0xdd)) != 0) { 0x004e7cb9 jne 0x4e7cdc | goto label_5; | } 0x004e7cbb mov rdi, qword [rbx + 0xa0] | 0x004e7cc2 mov byte [rsp + 1], 0x20 | *((rsp + 1)) = 0x20; 0x004e7cc7 lea rsi, [rsp + 1] | 0x004e7ccc mov edx, 1 | 0x004e7cd1 call 0x4529b0 | std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (*((rbx + 0xa0)), rsp + 1, 1); 0x004e7cd6 inc dword [rbx + 0xb0] | *((rbx + 0xb0))++; | } | label_5: 0x004e7cdc mov rdi, qword [rbx + 0xa0] | 0x004e7ce3 mov rsi, qword [r14] | 0x004e7ce6 mov rdx, qword [r14 + 8] | 0x004e7cea call 0x4529b0 | std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (*((rbx + 0xa0)), *(r14), *((r14 + 8))); 0x004e7cef add dword [rbx + 0xb0], r15d | *((rbx + 0xb0)) += r15d; 0x004e7cf6 mov word [rbx + 0xdc], 0 | *((rbx + 0xdc)) = 0; | label_1: 0x004e7cff add rsp, 8 | 0x004e7d03 pop rbx | 0x004e7d04 pop r14 | 0x004e7d06 pop r15 | 0x004e7d08 pop rbp | 0x004e7d09 ret | return rax; | }