; assembly | /* r2dec pseudo code output */ | /* baljsn_datumutil.t/none @ 0x42fa80 */ | #include | ; (fcn) method.void_testCase04_std::__1::basic_string_char__std::__1::char_traits_char___std::__1.allocator_char_______ () | int64_t method_void_testCase04_std::_1::basic_string_char_std::_1::char_traits_char_std::_1_allocator_char_ (void) { | int64_t var_10h; | int64_t var_11h; | int64_t var_18h; | int64_t var_20h; | int64_t var_30h; | int64_t var_31h; | int64_t var_35h; | int64_t var_38h; | int64_t var_40h; | int64_t var_50h; | int64_t var_51h; | uint32_t var_58h; | uint32_t var_5eh; | int64_t var_60h; | int64_t var_70h; | int64_t var_71h; | int64_t var_78h; | int64_t var_80h; | int64_t var_90h; | int64_t var_a0h; | int64_t var_a8h; | int64_t var_b0h; | int64_t var_d0h; | int64_t var_d8h; | int64_t var_e0h; | int64_t var_e8h; | int64_t var_f0h; | int64_t var_108h; | int64_t var_118h; | int64_t var_130h; | int64_t var_138h; | /* void testCase04, std::__1::allocator > >() */ 0x0042fa80 push rbp | 0x0042fa81 push r15 | 0x0042fa83 push r14 | 0x0042fa85 push r13 | 0x0042fa87 push r12 | 0x0042fa89 push rbx | 0x0042fa8a sub rsp, 0x208 | 0x0042fa91 lea rdi, [rsp + 0x138] | 0x0042fa99 mov esi, 0x4ca739 | 0x0042fa9e xor edx, edx | 0x0042faa0 call 0x491970 | BloombergLP::bslma::TestAllocator::TestAllocator(char const*,BloombergLP::bslma::Allocator*) (rsp + 0x138, "test", 0); 0x0042faa5 lea rdi, [rsp + 0x118] | 0x0042faad call 0x43cd20 | BloombergLP::baljsn::DatumEncoderOptions::DatumEncoderOptions() (rsp + 0x118); 0x0042fab2 mov byte [rsp + 0x118], 1 | *((rsp + 0x118)) = 1; 0x0042faba cmp byte [rip + 0x2f3c20], 0 | | if (*(obj.veryVerbose) != 0) { 0x0042fac1 je 0x42fb9b | 0x0042fac7 mov rax, qword [rip + 0x2f3b62] | rax = std::__1::cout; 0x0042face mov esi, 0x723630 | esi = std::__1::cout; 0x0042fad3 add rsi, qword [rax - 0x18] | rsi += *((rax - 0x18)); 0x0042fad7 lea rdi, [rsp + 0x90] | rdi = rsp + 0x90; 0x0042fadf call 0x404a70 | std::_1::ios_base::getloc()const (); 0x0042fae4 lea rdi, [rsp + 0x90] | rdi = rsp + 0x90; 0x0042faec mov esi, 0x723550 | esi = std::__1::ctype::id; 0x0042faf1 call 0x404b30 | rax = std::_1::locale::use_facet(std::_1::locale::id&)const (); 0x0042faf6 mov rcx, qword [rax] | rcx = *(rax); 0x0042faf9 mov rdi, rax | rdi = rax; 0x0042fafc mov esi, 0xa | esi = 0xa; 0x0042fb01 call qword [rcx + 0x38] | eax = uint64_t (*rcx + 0x38)() (); 0x0042fb04 mov ebx, eax | ebx = eax; 0x0042fb06 lea rdi, [rsp + 0x90] | rdi = rsp + 0x90; 0x0042fb0e call 0x404ba0 | std::_1::locale::~locale() (); 0x0042fb13 movsx esi, bl | esi = (int32_t) bl; 0x0042fb16 mov edi, 0x723630 | edi = std::__1::cout; 0x0042fb1b call 0x404850 | std::_1::basic_ostream>::put(char) (); 0x0042fb20 mov edi, 0x723630 | edi = std::__1::cout; 0x0042fb25 call 0x404a30 | std::_1::basic_ostream>::flush() (); 0x0042fb2a mov edi, 0x723630 | 0x0042fb2f mov esi, 0x4d19f5 | 0x0042fb34 mov edx, 0x23 | 0x0042fb39 call 0x43afb0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (obj.std::__1::cout, "1. Verify we can round-trip strings", 0x23); 0x0042fb3e mov rbx, rax | rbx = rax; 0x0042fb41 mov rax, qword [rax] | rax = *(rax); 0x0042fb44 mov rsi, qword [rax - 0x18] | rsi = *((rax - 0x18)); 0x0042fb48 add rsi, rbx | rsi += rbx; 0x0042fb4b lea rdi, [rsp + 0x90] | rdi = rsp + 0x90; 0x0042fb53 call 0x404a70 | std::_1::ios_base::getloc()const (); 0x0042fb58 lea rdi, [rsp + 0x90] | rdi = rsp + 0x90; 0x0042fb60 mov esi, 0x723550 | esi = std::__1::ctype::id; 0x0042fb65 call 0x404b30 | rax = std::_1::locale::use_facet(std::_1::locale::id&)const (); 0x0042fb6a mov rcx, qword [rax] | rcx = *(rax); 0x0042fb6d mov rdi, rax | rdi = rax; 0x0042fb70 mov esi, 0xa | esi = 0xa; 0x0042fb75 call qword [rcx + 0x38] | eax = uint64_t (*rcx + 0x38)() (); 0x0042fb78 mov ebp, eax | 0x0042fb7a lea rdi, [rsp + 0x90] | rdi = rsp + 0x90; 0x0042fb82 call 0x404ba0 | std::_1::locale::~locale() (); 0x0042fb87 movsx esi, bpl | esi = (int32_t) bpl; 0x0042fb8b mov rdi, rbx | rdi = rbx; 0x0042fb8e call 0x404850 | std::_1::basic_ostream>::put(char) (); 0x0042fb93 mov rdi, rbx | rdi = rbx; 0x0042fb96 call 0x404a30 | std::_1::basic_ostream>::flush() (); | } 0x0042fb9b cmp byte [rip + 0x2f3b40], 0 | | if (*(obj.veryVeryVerbose) != 0) { 0x0042fba2 je 0x42fc7c | 0x0042fba8 mov rax, qword [rip + 0x2f3a81] | rax = std::__1::cout; 0x0042fbaf mov esi, 0x723630 | esi = std::__1::cout; 0x0042fbb4 add rsi, qword [rax - 0x18] | rsi += *((rax - 0x18)); 0x0042fbb8 lea rdi, [rsp + 0x90] | rdi = rsp + 0x90; 0x0042fbc0 call 0x404a70 | std::_1::ios_base::getloc()const (); 0x0042fbc5 lea rdi, [rsp + 0x90] | rdi = rsp + 0x90; 0x0042fbcd mov esi, 0x723550 | esi = std::__1::ctype::id; 0x0042fbd2 call 0x404b30 | rax = std::_1::locale::use_facet(std::_1::locale::id&)const (); 0x0042fbd7 mov rcx, qword [rax] | rcx = *(rax); 0x0042fbda mov rdi, rax | rdi = rax; 0x0042fbdd mov esi, 0xa | esi = 0xa; 0x0042fbe2 call qword [rcx + 0x38] | eax = uint64_t (*rcx + 0x38)() (); 0x0042fbe5 mov ebx, eax | ebx = eax; 0x0042fbe7 lea rdi, [rsp + 0x90] | rdi = rsp + 0x90; 0x0042fbef call 0x404ba0 | std::_1::locale::~locale() (); 0x0042fbf4 movsx esi, bl | esi = (int32_t) bl; 0x0042fbf7 mov edi, 0x723630 | edi = std::__1::cout; 0x0042fbfc call 0x404850 | std::_1::basic_ostream>::put(char) (); 0x0042fc01 mov edi, 0x723630 | edi = std::__1::cout; 0x0042fc06 call 0x404a30 | std::_1::basic_ostream>::flush() (); 0x0042fc0b mov edi, 0x723630 | 0x0042fc10 mov esi, 0x4d1a19 | 0x0042fc15 mov edx, 0x1d | 0x0042fc1a call 0x43afb0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (obj.std::__1::cout, "\ta. round-trip simple string.", 0x1d); 0x0042fc1f mov rbx, rax | rbx = rax; 0x0042fc22 mov rax, qword [rax] | rax = *(rax); 0x0042fc25 mov rsi, qword [rax - 0x18] | rsi = *((rax - 0x18)); 0x0042fc29 add rsi, rbx | rsi += rbx; 0x0042fc2c lea rdi, [rsp + 0x90] | rdi = rsp + 0x90; 0x0042fc34 call 0x404a70 | std::_1::ios_base::getloc()const (); 0x0042fc39 lea rdi, [rsp + 0x90] | rdi = rsp + 0x90; 0x0042fc41 mov esi, 0x723550 | esi = std::__1::ctype::id; 0x0042fc46 call 0x404b30 | rax = std::_1::locale::use_facet(std::_1::locale::id&)const (); 0x0042fc4b mov rcx, qword [rax] | rcx = *(rax); 0x0042fc4e mov rdi, rax | rdi = rax; 0x0042fc51 mov esi, 0xa | esi = 0xa; 0x0042fc56 call qword [rcx + 0x38] | eax = uint64_t (*rcx + 0x38)() (); 0x0042fc59 mov ebp, eax | 0x0042fc5b lea rdi, [rsp + 0x90] | rdi = rsp + 0x90; 0x0042fc63 call 0x404ba0 | std::_1::locale::~locale() (); 0x0042fc68 movsx esi, bpl | esi = (int32_t) bpl; 0x0042fc6c mov rdi, rbx | rdi = rbx; 0x0042fc6f call 0x404850 | std::_1::basic_ostream>::put(char) (); 0x0042fc74 mov rdi, rbx | rdi = rbx; 0x0042fc77 call 0x404a30 | std::_1::basic_ostream>::flush() (); | } 0x0042fc7c mov byte [rsp + 0x30], 0xa | *((rsp + 0x30)) = 0xa; 0x0042fc81 mov dword [rsp + 0x31], 0x6c6c6568 | *((rsp + 0x31)) = 0x6c6c6568; 0x0042fc89 mov word [rsp + 0x35], 0x6f | *((rsp + 0x35)) = 0x6f; 0x0042fc90 lea rdi, [rsp + 0x90] | rdi = rsp + 0x90; 0x0042fc98 lea rdx, [rsp + 0x30] | rdx = rsp + 0x30; 0x0042fc9d mov esi, 0x4cfe50 | esi = 0x4cfe50; 0x0042fca2 call 0x4047d0 | std::_1::basic_string,std::_1::allocator>std::_1::operator+,std::_1::allocator>(char const*,std::_1::basic_string,std::_1::allocator>const&) (); 0x0042fca7 lea rdi, [rsp + 0x90] | rdi = rsp + 0x90; 0x0042fcaf mov esi, 0x4cfe50 | esi = 0x4cfe50; 0x0042fcb4 call 0x404c40 | rax = std::_1::basic_string,std::_1::allocator>::append(char const*) (); 0x0042fcb9 mov rcx, qword [rax + 0x10] | rcx = *((rax + 0x10)); 0x0042fcbd mov qword [rsp + 0x20], rcx | *((rsp + 0x20)) = rcx; 0x0042fcc2 movupd xmm0, xmmword [rax] | __asm ("movupd xmm0, xmmword [rax]"); 0x0042fcc6 movapd xmmword [rsp + 0x10], xmm0 | __asm ("movapd xmmword [rsp + 0x10], xmm0"); 0x0042fccc xorpd xmm0, xmm0 | __asm ("xorpd xmm0, xmm0"); 0x0042fcd0 movupd xmmword [rax], xmm0 | __asm ("movupd xmmword [rax], xmm0"); 0x0042fcd4 mov qword [rax + 0x10], 0 | *((rax + 0x10)) = 0; 0x0042fcdc test byte [rsp + 0x90], 1 | | if ((*((rsp + 0x90)) & 1) != 0) { 0x0042fce4 je 0x42fcf3 | 0x0042fce6 mov rdi, qword [rsp + 0xa0] | rdi = *((rsp + 0xa0)); 0x0042fcee call 0x4046c0 | delete (); | } 0x0042fcf3 lea rdi, [rsp + 0x31] | rdi = rsp + 0x31; 0x0042fcf8 movzx esi, byte [rsp + 0x30] | esi = *((rsp + 0x30)); 0x0042fcfd test sil, 1 | | if ((sil & 1) != 0) { 0x0042fd01 je 0x42fd0f | 0x0042fd03 mov rdi, qword [rsp + 0x40] | rdi = *((rsp + 0x40)); 0x0042fd08 mov rsi, qword [rsp + 0x38] | rsi = *((rsp + 0x38)); 0x0042fd0d jmp 0x42fd12 | | } else { 0x0042fd0f shr rsi, 1 | rsi >>= 1; | } 0x0042fd12 lea r15, [rsp + 0x138] | r15 = rsp + 0x138; 0x0042fd1a mov rdx, r15 | 0x0042fd1d call 0x44a580 | rax = BloombergLP::bdld::Datum::copyString(char const*,unsigned long,BloombergLP::bslma::Allocator*) (rdi, rsi, r15); 0x0042fd22 mov qword [rsp + 0xe0], rax | *((rsp + 0xe0)) = rax; 0x0042fd2a mov qword [rsp + 0xe8], rdx | *((rsp + 0xe8)) = rdx; 0x0042fd32 mov qword [rsp + 0xf0], r15 | *((rsp + 0xf0)) = r15; 0x0042fd3a xorpd xmm0, xmm0 | __asm ("xorpd xmm0, xmm0"); 0x0042fd3e movapd xmmword [rsp + 0x70], xmm0 | __asm ("movapd xmmword [rsp + 0x70], xmm0"); 0x0042fd44 mov qword [rsp + 0x80], 0 | *((rsp + 0x80)) = 0; 0x0042fd50 lea rbx, [rsp + 0x70] | rbx = rsp + 0x70; 0x0042fd55 lea rsi, [rsp + 0xe0] | 0x0042fd5d lea rdx, [rsp + 0x118] | 0x0042fd65 mov rdi, rbx | 0x0042fd68 call 0x43dfe0 | eax = BloombergLP::baljsn::DatumUtil::encode(std::_1::basic_string,std::_1::allocator>*,BloombergLP::bdld::Datumconst&,BloombergLP::baljsn::DatumEncoderOptionsconst&) (rbx, rsp + 0xe0, rsp + 0x118, rcx, r8, r9); 0x0042fd6d xor edi, edi | edi = 0; 0x0042fd6f test eax, eax | 0x0042fd71 setne dil | dil = (eax != 0) ? 1 : 0; 0x0042fd75 mov esi, 0x4d0a20 | esi = "0 == result"; 0x0042fd7a mov edx, 0x2c2 | edx = 0x2c2; 0x0042fd7f call 0x422600 | (anonymousnamespace)::aSsErT(bool,char const*,int) (); 0x0042fd84 movzx ecx, byte [rsp + 0x10] | ecx = *((rsp + 0x10)); 0x0042fd89 mov rax, rcx | rax = rcx; 0x0042fd8c shr rax, 1 | rax >>= 1; 0x0042fd8f mov rdx, rax | rdx = rax; 0x0042fd92 mov qword [rsp + 0x130], rcx | *((rsp + 0x130)) = rcx; 0x0042fd9a test cl, 1 | | if ((cl & 1) != 0) { 0x0042fd9d je 0x42fda4 | 0x0042fd9f mov rdx, qword [rsp + 0x18] | rdx = *((rsp + 0x18)); | } 0x0042fda4 movzx r13d, byte [rsp + 0x70] | r13d = *((rsp + 0x70)); 0x0042fdaa mov rbp, r13 | 0x0042fdad shr rbp, 1 | rbp >>= 1; 0x0042fdb0 and r13b, 1 | r13b &= 1; 0x0042fdb4 mov r14, qword [rsp + 0x78] | r14 = *((rsp + 0x78)); 0x0042fdb9 mov rcx, r14 | rcx = *((rsp + 0x78)); | if (r13b == 0) { 0x0042fdbc cmove rcx, rbp | rcx = rbp; | } 0x0042fdc0 cmp rdx, rcx | | if (rdx == rcx) { 0x0042fdc3 jne 0x42fe08 | 0x0042fdc5 test r13b, r13b | 0x0042fdc8 mov r12, qword [rsp + 0x80] | r12 = *((rsp + 0x80)); 0x0042fdd0 lea rsi, [rsp + 0x71] | rsi = rsp + 0x71; | if (r13b != 0) { 0x0042fdd5 cmovne rsi, r12 | rsi = r12; | } 0x0042fdd9 test byte [rsp + 0x130], 1 | | if ((*((rsp + 0x130)) & 1) == 0) { 0x0042fde1 je 0x430997 | goto label_4; | } 0x0042fde7 mov rdi, qword [rsp + 0x20] | rdi = *((rsp + 0x20)); | if ((*((rsp + 0x130)) & 1) == 0) { 0x0042fdec je 0x4309a2 | goto label_5; | } | label_0: 0x0042fdf2 test rdx, rdx | | if (rdx == 0) { 0x0042fdf5 je 0x42fe99 | goto label_1; | } 0x0042fdfb call 0x404900 | eax = bcmp (); 0x0042fe00 test eax, eax | | if (eax == 0) { 0x0042fe02 je 0x42fe99 | goto label_1; | } | } | label_2: 0x0042fe08 mov edi, 0x723630 | 0x0042fe0d mov esi, 0x4d1e23 | 0x0042fe12 mov edx, 4 | 0x0042fe17 call 0x43afb0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (obj.std::__1::cout, 0x4d1e23, 4); 0x0042fe1c mov esi, 0x4d1289 | 0x0042fe21 mov edx, 2 | 0x0042fe26 mov rdi, rax | 0x0042fe29 call 0x43afb0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x4d1289, 2); 0x0042fe2e movzx edx, byte [rsp + 0x70] | edx = *((rsp + 0x70)); 0x0042fe33 test dl, 1 | | if ((dl & 1) != 0) { 0x0042fe36 je 0x42fe47 | 0x0042fe38 mov rsi, qword [rsp + 0x80] | rsi = *((rsp + 0x80)); 0x0042fe40 mov rdx, qword [rsp + 0x78] | rdx = *((rsp + 0x78)); 0x0042fe45 jmp 0x42fe4f | | } else { 0x0042fe47 shr rdx, 1 | rdx >>= 1; 0x0042fe4a lea rsi, [rsp + 0x71] | | } 0x0042fe4f mov rdi, rax | 0x0042fe52 call 0x43afb0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, rsp + 0x71, rdx); 0x0042fe57 mov esi, 0x4f0e70 | 0x0042fe5c mov edx, 1 | 0x0042fe61 mov rdi, rax | 0x0042fe64 call 0x43afb0 | std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x4f0e70, 1); 0x0042fe69 mov esi, 0x4d1a37 | esi = "EXP_JSON == json"; 0x0042fe6e mov edi, 1 | edi = 1; 0x0042fe73 mov edx, 0x2c3 | edx = 0x2c3; 0x0042fe78 call 0x422600 | (anonymousnamespace)::aSsErT(bool,char const*,int) (); 0x0042fe7d movzx ebp, byte [rsp + 0x70] | ebp = *((rsp + 0x70)); 0x0042fe82 mov r14, qword [rsp + 0x78] | r14 = *((rsp + 0x78)); 0x0042fe87 mov r12, qword [rsp + 0x80] | r12 = *((rsp + 0x80)); 0x0042fe8f mov r13d, ebp | r13d = ebp; 0x0042fe92 and r13b, 1 | r13b &= 1; 0x0042fe96 shr rbp, 1 | rbp >>= 1; | label_1: 0x0042fe99 movabs rax, 0x2000000000000 | rax = 0x2000000000000; 0x0042fea3 mov qword [rsp + 0x58], rax | *((rsp + 0x58)) = rax; 0x0042fea8 mov qword [rsp + 0x60], r15 | *((rsp + 0x60)) = r15; 0x0042fead inc rbx | rbx++; 0x0042feb0 test r13b, r13b | | if (r13b != 0) { 0x0042feb3 cmovne rbx, r12 | rbx = r12; | } | if (r13b != 0) { 0x0042feb7 cmovne rbp, r14 | | } 0x0042febb lea rdi, [rsp + 0x108] | 0x0042fec3 call 0x43cc00 | BloombergLP::baljsn::DatumDecoderOptions::DatumDecoderOptions() (rsp + 0x108); 0x0042fec8 lea rdi, [rsp + 0x90] | rdi = rsp + 0x90; 0x0042fed0 call 0x4048f0 | std::_1::basic_streambuf>::basic_streambuf() (); 0x0042fed5 mov qword [rsp + 0x90], 0x4d6270 | *((rsp + 0x90)) = sym.imp.std::__1::basic_streambuf_char__std::__1::char_traits_char___::basic_streambuf__; 0x0042fee1 mov qword [rsp + 0xd0], rbx | *((rsp + 0xd0)) = rbx; 0x0042fee9 mov qword [rsp + 0xd8], rbp | *((rsp + 0xd8)) = rbp; 0x0042fef1 add rbp, rbx | rbp += rbx; 0x0042fef4 mov qword [rsp + 0xa0], rbx | *((rsp + 0xa0)) = rbx; 0x0042fefc mov qword [rsp + 0xa8], rbx | *((rsp + 0xa8)) = rbx; 0x0042ff04 mov qword [rsp + 0xb0], rbp | *((rsp + 0xb0)) = rbp; 0x0042ff0c lea rdi, [rsp + 0x50] | 0x0042ff11 lea rdx, [rsp + 0x90] | 0x0042ff19 lea rcx, [rsp + 0x108] | 0x0042ff21 xor esi, esi | 0x0042ff23 call 0x43cfd0 | eax = BloombergLP::baljsn::DatumUtil::decode(BloombergLP::bdld::ManagedDatum*,std::_1::basic_ostream>*,std::_1::basic_streambuf>*,BloombergLP::baljsn::DatumDecoderOptionsconst&) (rsp + 0x50, 0, rsp + 0x90, rsp + 0x108, r8, r9); 0x0042ff28 mov ebx, eax | ebx = eax; 0x0042ff2a lea rdi, [rsp + 0x90] | rdi = rsp + 0x90; 0x0042ff32 call 0x404630 | std::_1::basic_streambuf>::~basic_streambuf() (); 0x0042ff37 lea rdi, [rsp + 0x108] | rdi = rsp + 0x108; 0x0042ff3f call 0x43cc20 | BloombergLP::baljsn::DatumDecoderOptions::~DatumDecoderOptions() (); 0x0042ff44 test ebx, ebx | 0x0042ff46 lea rbp, [rsp + 0x31] | rbp = rsp + 0x31; | if (ebx != 0) { 0x0042ff4b je 0x42ffa3 | 0x0042ff4d mov edi, 0x723630 | 0x0042ff52 mov esi, 0x4d0a25 | 0x0042ff57 mov edx, 6 | 0x0042ff5c call 0x43afb0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (obj.std::__1::cout, 0x4d0a25, 6); 0x0042ff61 mov esi, 0x4d1289 | 0x0042ff66 mov edx, 2 | 0x0042ff6b mov rdi, rax | 0x0042ff6e call 0x43afb0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x4d1289, 2); 0x0042ff73 mov rdi, rax | rdi = rax; 0x0042ff76 mov esi, ebx | esi = ebx; 0x0042ff78 call 0x404a00 | rax = std::_1::basic_ostream>::operator << (int) (); 0x0042ff7d mov esi, 0x4f0e70 | 0x0042ff82 mov edx, 1 | 0x0042ff87 mov rdi, rax | 0x0042ff8a call 0x43afb0 | std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x4f0e70, 1); 0x0042ff8f mov esi, 0x4d0a20 | esi = "0 == result"; 0x0042ff94 mov edi, 1 | edi = 1; 0x0042ff99 mov edx, 0x2c7 | edx = 0x2c7; 0x0042ff9e call 0x422600 | (anonymousnamespace)::aSsErT(bool,char const*,int) (); | } 0x0042ffa3 movzx eax, word [rsp + 0x5e] | eax = *((rsp + 0x5e)); 0x0042ffa8 mov ecx, 0x4030 | ecx = 0x4030; 0x0042ffad bt rcx, rax | | if (((rcx >> rax) & 1) >= 0) { 0x0042ffb1 jb 0x43001b | 0x0042ffb3 mov edi, 0x723630 | 0x0042ffb8 mov esi, 0x4d1a48 | 0x0042ffbd mov edx, 0x11 | 0x0042ffc2 call 0x43afb0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (obj.std::__1::cout, "other->isString()", 0x11); 0x0042ffc7 mov esi, 0x4d1289 | 0x0042ffcc mov edx, 2 | 0x0042ffd1 mov rdi, rax | 0x0042ffd4 call 0x43afb0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x4d1289, 2); 0x0042ffd9 mov cl, byte [rsp + 0x5e] | cl = *((rsp + 0x5e)); 0x0042ffdd mov esi, 0x4030 | esi = 0x4030; 0x0042ffe2 shr rsi, cl | rsi >>= cl; 0x0042ffe5 and esi, 1 | esi &= 1; 0x0042ffe8 mov rdi, rax | rdi = rax; 0x0042ffeb call 0x404790 | rax = std::_1::basic_ostream>::operator << (bool) (); 0x0042fff0 mov esi, 0x4f0e70 | 0x0042fff5 mov edx, 1 | 0x0042fffa mov rdi, rax | 0x0042fffd call 0x43afb0 | std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x4f0e70, 1); 0x00430002 mov esi, 0x4d1a48 | esi = "other->isString()"; 0x00430007 mov edi, 1 | edi = 1; 0x0043000c mov edx, 0x2c8 | edx = 0x2c8; 0x00430011 call 0x422600 | (anonymousnamespace)::aSsErT(bool,char const*,int) (); 0x00430016 movzx eax, word [rsp + 0x5e] | eax = *((rsp + 0x5e)); | } 0x0043001b movzx edx, byte [rsp + 0x30] | edx = *((rsp + 0x30)); 0x00430020 test dl, 1 | | if ((dl & 1) != 0) { 0x00430023 je 0x430031 | 0x00430025 mov rdi, qword [rsp + 0x40] | rdi = *((rsp + 0x40)); 0x0043002a mov rdx, qword [rsp + 0x38] | rdx = *((rsp + 0x38)); 0x0043002f jmp 0x430037 | | } else { 0x00430031 shr rdx, 1 | rdx >>= 1; 0x00430034 mov rdi, rbp | rdi = rbp; | } 0x00430037 movsx ecx, ax | ecx = (int32_t) ax; 0x0043003a cmp ecx, 0xe | | if (ecx != 0xe) { 0x0043003d je 0x430062 | 0x0043003f cmp ecx, 5 | | if (ecx != 5) { 0x00430042 je 0x430062 | 0x00430044 xor esi, esi | esi = 0; 0x00430046 mov eax, 0 | eax = 0; 0x0043004b cmp ecx, 4 | | if (ecx == 4) { 0x0043004e jne 0x43005b | 0x00430050 lea rsi, [rsp + 0x51] | rsi = rsp + 0x51; 0x00430055 movsx rax, byte [rsp + 0x50] | rax = *((rsp + 0x50)); | } 0x0043005b cmp rdx, rax | | if (rdx == rax) { 0x0043005e je 0x430071 | goto label_6; | } 0x00430060 jmp 0x430087 | | } | } else { 0x00430062 mov rsi, qword [rsp + 0x50] | rsi = *((rsp + 0x50)); 0x00430067 movsxd rax, dword [rsp + 0x58] | rax = *((rsp + 0x58)); 0x0043006c cmp rdx, rax | | if (rdx != rax) { 0x0043006f jne 0x430087 | goto label_7; | } | label_6: 0x00430071 test rdx, rdx | | if (rdx == 0) { 0x00430074 je 0x430167 | goto label_8; | } 0x0043007a call 0x404900 | eax = bcmp (); 0x0043007f test eax, eax | | if (eax == 0) { 0x00430081 je 0x430167 | goto label_8; | } | } | label_7: 0x00430087 mov edi, 0x723630 | 0x0043008c mov esi, 0x4d1a5a | 0x00430091 mov edx, 0xa | 0x00430096 call 0x43afb0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (obj.std::__1::cout, "EXP_STRING", 0xa); 0x0043009b mov esi, 0x4d1289 | 0x004300a0 mov edx, 2 | 0x004300a5 mov rdi, rax | 0x004300a8 call 0x43afb0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x4d1289, 2); 0x004300ad movzx edx, byte [rsp + 0x30] | edx = *((rsp + 0x30)); 0x004300b2 test dl, 1 | | if ((dl & 1) != 0) { 0x004300b5 je 0x4300c3 | 0x004300b7 mov rbp, qword [rsp + 0x40] | rbp = *((rsp + 0x40)); 0x004300bc mov rdx, qword [rsp + 0x38] | rdx = *((rsp + 0x38)); 0x004300c1 jmp 0x4300c6 | | } else { 0x004300c3 shr rdx, 1 | rdx >>= 1; | } 0x004300c6 mov rdi, rax | 0x004300c9 mov rsi, rbp | 0x004300cc call 0x43afb0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, rbp, rdx); 0x004300d1 mov esi, 0x4f0f33 | 0x004300d6 mov edx, 1 | 0x004300db mov rdi, rax | 0x004300de call 0x43afb0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x4f0f33, 1); 0x004300e3 mov esi, 0x4d1a73 | 0x004300e8 mov edx, 0x12 | 0x004300ed mov rdi, rax | 0x004300f0 call 0x43afb0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x4d1a73, 0x12); 0x004300f5 mov esi, 0x4d1289 | 0x004300fa mov edx, 2 | 0x004300ff mov rdi, rax | 0x00430102 call 0x43afb0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x4d1289, 2); 0x00430107 movsx ecx, word [rsp + 0x5e] | ecx = *((rsp + 0x5e)); 0x0043010c cmp ecx, 0xe | | if (ecx != 0xe) { 0x0043010f je 0x43012f | 0x00430111 cmp ecx, 5 | | if (ecx != 5) { 0x00430114 je 0x43012f | 0x00430116 xor esi, esi | esi = 0; 0x00430118 mov edx, 0 | edx = 0; 0x0043011d cmp ecx, 4 | | if (ecx != 4) { 0x00430120 jne 0x430139 | goto label_9; | } 0x00430122 lea rsi, [rsp + 0x51] | rsi = rsp + 0x51; 0x00430127 movsx rdx, byte [rsp + 0x50] | rdx = *((rsp + 0x50)); 0x0043012d jmp 0x430139 | | } | } else { 0x0043012f mov rsi, qword [rsp + 0x50] | 0x00430134 movsxd rdx, dword [rsp + 0x58] | rdx = *((rsp + 0x58)); | } | label_9: 0x00430139 mov rdi, rax | 0x0043013c call 0x43afb0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, *((rsp + 0x50)), rdx); 0x00430141 mov esi, 0x4f0e70 | 0x00430146 mov edx, 1 | 0x0043014b mov rdi, rax | 0x0043014e call 0x43afb0 | std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x4f0e70, 1); 0x00430153 mov esi, 0x4d1a65 | esi = "EXP_STRING == other->theString()"; 0x00430158 mov edi, 1 | edi = 1; 0x0043015d mov edx, 0x2cb | edx = 0x2cb; 0x00430162 call 0x422600 | (anonymousnamespace)::aSsErT(bool,char const*,int) (); | label_8: 0x00430167 mov rsi, qword [rsp + 0x60] | 0x0043016c lea rdi, [rsp + 0x50] | 0x00430171 call 0x44a760 | BloombergLP::bdld::Datum::destroy(BloombergLP::bdld::Datumconst&,BloombergLP::bslma::Allocator*) (rsp + 0x50, *((rsp + 0x60))); 0x00430176 test byte [rsp + 0x70], 1 | | if ((*((rsp + 0x70)) & 1) != 0) { 0x0043017b je 0x43018a | 0x0043017d mov rdi, qword [rsp + 0x80] | rdi = *((rsp + 0x80)); 0x00430185 call 0x4046c0 | delete (); | } 0x0043018a mov rsi, qword [rsp + 0xf0] | 0x00430192 lea rdi, [rsp + 0xe0] | 0x0043019a call 0x44a760 | BloombergLP::bdld::Datum::destroy(BloombergLP::bdld::Datumconst&,BloombergLP::bslma::Allocator*) (rsp + 0xe0, *((rsp + 0xf0))); 0x0043019f test byte [rsp + 0x130], 1 | | if ((*((rsp + 0x130)) & 1) != 0) { 0x004301a7 jne 0x4301be | goto label_10; | } 0x004301a9 test byte [rsp + 0x30], 1 | | if ((*((rsp + 0x30)) & 1) != 0) { 0x004301ae jne 0x4301cf | goto label_11; | } | do { 0x004301b0 cmp byte [rip + 0x2f352b], 0 | | if (*(obj.veryVeryVerbose) != 0) { 0x004301b7 jne 0x4301e6 | goto label_12; | } 0x004301b9 jmp 0x4302ba | goto label_13; | label_10: 0x004301be mov rdi, qword [rsp + 0x20] | rdi = *((rsp + 0x20)); 0x004301c3 call 0x4046c0 | delete (); 0x004301c8 test byte [rsp + 0x30], 1 | 0x004301cd je 0x4301b0 | | } while ((*((rsp + 0x30)) & 1) == 0); | label_11: 0x004301cf mov rdi, qword [rsp + 0x40] | rdi = *((rsp + 0x40)); 0x004301d4 call 0x4046c0 | delete (); 0x004301d9 cmp byte [rip + 0x2f3502], 0 | | if (*(obj.veryVeryVerbose) != 0) { 0x004301e0 je 0x4302ba | | label_12: 0x004301e6 mov rax, qword [rip + 0x2f3443] | rax = std::__1::cout; 0x004301ed mov esi, 0x723630 | esi = std::__1::cout; 0x004301f2 add rsi, qword [rax - 0x18] | rsi += *((rax - 0x18)); 0x004301f6 lea rdi, [rsp + 0x90] | rdi = rsp + 0x90; 0x004301fe call 0x404a70 | std::_1::ios_base::getloc()const (); 0x00430203 lea rdi, [rsp + 0x90] | rdi = rsp + 0x90; 0x0043020b mov esi, 0x723550 | esi = std::__1::ctype::id; 0x00430210 call 0x404b30 | rax = std::_1::locale::use_facet(std::_1::locale::id&)const (); 0x00430215 mov rcx, qword [rax] | rcx = *(rax); 0x00430218 mov rdi, rax | rdi = rax; 0x0043021b mov esi, 0xa | esi = 0xa; 0x00430220 call qword [rcx + 0x38] | eax = uint64_t (*rcx + 0x38)() (); 0x00430223 mov ebx, eax | ebx = eax; 0x00430225 lea rdi, [rsp + 0x90] | rdi = rsp + 0x90; 0x0043022d call 0x404ba0 | std::_1::locale::~locale() (); 0x00430232 movsx esi, bl | esi = (int32_t) bl; 0x00430235 mov edi, 0x723630 | edi = std::__1::cout; 0x0043023a call 0x404850 | std::_1::basic_ostream>::put(char) (); 0x0043023f mov edi, 0x723630 | edi = std::__1::cout; 0x00430244 call 0x404a30 | std::_1::basic_ostream>::flush() (); 0x00430249 mov edi, 0x723630 | 0x0043024e mov esi, 0x4d1a86 | 0x00430253 mov edx, 0x2e | 0x00430258 call 0x43afb0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (obj.std::__1::cout, "\tb. round-trip string with special characters.", 0x2e); 0x0043025d mov rbx, rax | rbx = rax; 0x00430260 mov rax, qword [rax] | rax = *(rax); 0x00430263 mov rsi, qword [rax - 0x18] | rsi = *((rax - 0x18)); 0x00430267 add rsi, rbx | rsi += rbx; 0x0043026a lea rdi, [rsp + 0x90] | rdi = rsp + 0x90; 0x00430272 call 0x404a70 | std::_1::ios_base::getloc()const (); 0x00430277 lea rdi, [rsp + 0x90] | rdi = rsp + 0x90; 0x0043027f mov esi, 0x723550 | esi = std::__1::ctype::id; 0x00430284 call 0x404b30 | rax = std::_1::locale::use_facet(std::_1::locale::id&)const (); 0x00430289 mov rcx, qword [rax] | rcx = *(rax); 0x0043028c mov rdi, rax | rdi = rax; 0x0043028f mov esi, 0xa | esi = 0xa; 0x00430294 call qword [rcx + 0x38] | eax = uint64_t (*rcx + 0x38)() (); 0x00430297 mov ebp, eax | 0x00430299 lea rdi, [rsp + 0x90] | rdi = rsp + 0x90; 0x004302a1 call 0x404ba0 | std::_1::locale::~locale() (); 0x004302a6 movsx esi, bpl | esi = (int32_t) bpl; 0x004302aa mov rdi, rbx | rdi = rbx; 0x004302ad call 0x404850 | std::_1::basic_ostream>::put(char) (); 0x004302b2 mov rdi, rbx | rdi = rbx; 0x004302b5 call 0x404a30 | std::_1::basic_ostream>::flush() (); | } | label_13: 0x004302ba mov byte [rsp + 0x30], 0x1e | *((rsp + 0x30)) = 0x1e; 0x004302bf movabs rax, 0x200c2008205c2022 | rax = 0x200c2008205c2022; 0x004302c9 mov qword [rsp + 0x31], rax | *((rsp + 0x31)) = rax; 0x004302ce movabs rax, 0x12009200d200a20 | rax = 0x12009200d200a20; 0x004302d8 mov qword [rsp + 0x38], rax | *((rsp + 0x38)) = rax; 0x004302dd mov byte [rsp + 0x40], 0 | *((rsp + 0x40)) = 0; 0x004302e2 mov edi, 0x20 | edi = 0x20; 0x004302e7 call 0x4045f0 | rax = operatornew(unsigned long) (); 0x004302ec mov r12, rax | r12 = rax; 0x004302ef lea r15, [rsp + 0x31] | r15 = rsp + 0x31; 0x004302f4 movups xmm0, xmmword [rip + 0xa17d7] | __asm ("movups xmm0, xmmword [0x004d1ad2]"); 0x004302fb movups xmmword [rax + 0xd], xmm0 | __asm ("movups xmmword [rax + 0xd], xmm0"); 0x004302ff movdqu xmm0, xmmword [rip + 0xa17be] | __asm ("movdqu xmm0, xmmword [str._____b__f__n__r__t_u0001_]"); 0x00430307 movdqu xmmword [rax], xmm0 | __asm ("movdqu xmmword [rax], xmm0"); 0x0043030b mov byte [rax + 0x1d], 0 | *((rax + 0x1d)) = 0; 0x0043030f lea r14, [rsp + 0x138] | r14 = rsp + 0x138; 0x00430317 mov esi, 0xf | 0x0043031c mov rdi, r15 | 0x0043031f mov rdx, r14 | 0x00430322 call 0x44a580 | rax = BloombergLP::bdld::Datum::copyString(char const*,unsigned long,BloombergLP::bslma::Allocator*) (r15, 0xf, r14); 0x00430327 mov qword [rsp + 0xe0], rax | *((rsp + 0xe0)) = rax; 0x0043032f mov qword [rsp + 0xe8], rdx | *((rsp + 0xe8)) = rdx; 0x00430337 mov qword [rsp + 0xf0], r14 | *((rsp + 0xf0)) = r14; 0x0043033f pxor xmm0, xmm0 | xmm0 = 0; 0x00430343 movdqa xmmword [rsp + 0x10], xmm0 | __asm ("movdqa xmmword [rsp + 0x10], xmm0"); 0x00430349 mov qword [rsp + 0x20], 0 | *((rsp + 0x20)) = 0; 0x00430352 lea rbx, [rsp + 0x10] | rbx = rsp + 0x10; 0x00430357 lea rsi, [rsp + 0xe0] | 0x0043035f lea rdx, [rsp + 0x118] | 0x00430367 mov rdi, rbx | 0x0043036a call 0x43dfe0 | eax = BloombergLP::baljsn::DatumUtil::encode(std::_1::basic_string,std::_1::allocator>*,BloombergLP::bdld::Datumconst&,BloombergLP::baljsn::DatumEncoderOptionsconst&) (rbx, rsp + 0xe0, rsp + 0x118, rcx, r8, r9); 0x0043036f xor edi, edi | edi = 0; 0x00430371 test eax, eax | 0x00430373 setne dil | dil = (eax != 0) ? 1 : 0; 0x00430377 mov esi, 0x4d0a20 | esi = "0 == result"; 0x0043037c mov edx, 0x2d9 | edx = 0x2d9; 0x00430381 call 0x422600 | (anonymousnamespace)::aSsErT(bool,char const*,int) (); 0x00430386 movzx ecx, byte [rsp + 0x10] | ecx = *((rsp + 0x10)); 0x0043038b mov rbp, rcx | 0x0043038e shr rbp, 1 | rbp >>= 1; 0x00430391 and cl, 1 | cl &= 1; 0x00430394 mov rax, qword [rsp + 0x18] | rax = *((rsp + 0x18)); 0x00430399 mov rdx, rax | rdx = *((rsp + 0x18)); | if (cl == 0) { 0x0043039c cmove rdx, rbp | rdx = rbp; | } 0x004303a0 cmp rdx, 0x1d | | if (rdx == 0x1d) { 0x004303a4 jne 0x4303e3 | 0x004303a6 test cl, cl | 0x004303a8 mov rdx, qword [rsp + 0x20] | rdx = *((rsp + 0x20)); 0x004303ad lea rsi, [rsp + 0x11] | rsi = rsp + 0x11; | if (cl != 0) { 0x004303b2 cmovne rsi, rdx | rsi = rdx; | } 0x004303b6 movdqu xmm0, xmmword [r12] | __asm ("movdqu xmm0, xmmword [r12]"); 0x004303bc movdqu xmm1, xmmword [r12 + 0xd] | __asm ("movdqu xmm1, xmmword [r12 + 0xd]"); 0x004303c3 movdqu xmm2, xmmword [rsi] | __asm ("movdqu xmm2, xmmword [rsi]"); 0x004303c7 pxor xmm2, xmm0 | xmm2 ^= xmm0; 0x004303cb movdqu xmm0, xmmword [rsi + 0xd] | __asm ("movdqu xmm0, xmmword [rsi + 0xd]"); 0x004303d0 pxor xmm0, xmm1 | xmm0 ^= xmm1; 0x004303d4 por xmm0, xmm2 | xmm0 |= xmm2; 0x004303d8 ptest xmm0, xmm0 | __asm ("ptest xmm0, xmm0"); | if (cl == 0) { 0x004303dd je 0x43046c | goto label_14; | } | } 0x004303e3 mov edi, 0x723630 | 0x004303e8 mov esi, 0x4d1e23 | 0x004303ed mov edx, 4 | 0x004303f2 call 0x43afb0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (obj.std::__1::cout, 0x4d1e23, 4); 0x004303f7 mov esi, 0x4d1289 | 0x004303fc mov edx, 2 | 0x00430401 mov rdi, rax | 0x00430404 call 0x43afb0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x4d1289, 2); 0x00430409 movzx edx, byte [rsp + 0x10] | edx = *((rsp + 0x10)); 0x0043040e test dl, 1 | | if ((dl & 1) != 0) { 0x00430411 je 0x43041f | 0x00430413 mov rsi, qword [rsp + 0x20] | rsi = *((rsp + 0x20)); 0x00430418 mov rdx, qword [rsp + 0x18] | rdx = *((rsp + 0x18)); 0x0043041d jmp 0x430427 | | } else { 0x0043041f shr rdx, 1 | rdx >>= 1; 0x00430422 lea rsi, [rsp + 0x11] | | } 0x00430427 mov rdi, rax | 0x0043042a call 0x43afb0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, rsp + 0x11, rdx); 0x0043042f mov esi, 0x4f0e70 | 0x00430434 mov edx, 1 | 0x00430439 mov rdi, rax | 0x0043043c call 0x43afb0 | std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x4f0e70, 1); 0x00430441 mov esi, 0x4d1a37 | esi = "EXP_JSON == json"; 0x00430446 mov edi, 1 | edi = 1; 0x0043044b mov edx, 0x2da | edx = 0x2da; 0x00430450 call 0x422600 | (anonymousnamespace)::aSsErT(bool,char const*,int) (); 0x00430455 movzx ebp, byte [rsp + 0x10] | ebp = *((rsp + 0x10)); 0x0043045a mov rax, qword [rsp + 0x18] | rax = *((rsp + 0x18)); 0x0043045f mov rdx, qword [rsp + 0x20] | rdx = *((rsp + 0x20)); 0x00430464 mov ecx, ebp | ecx = ebp; 0x00430466 and cl, 1 | cl &= 1; 0x00430469 shr rbp, 1 | rbp >>= 1; | label_14: 0x0043046c movabs rsi, 0x2000000000000 | rsi = 0x2000000000000; 0x00430476 mov qword [rsp + 0x58], rsi | *((rsp + 0x58)) = rsi; 0x0043047b mov qword [rsp + 0x60], r14 | *((rsp + 0x60)) = r14; 0x00430480 inc rbx | rbx++; 0x00430483 test cl, cl | | if (cl != 0) { 0x00430485 cmovne rbx, rdx | rbx = rdx; | } | if (cl != 0) { 0x00430489 cmovne rbp, rax | | } 0x0043048d lea rdi, [rsp + 0x70] | 0x00430492 call 0x43cc00 | BloombergLP::baljsn::DatumDecoderOptions::DatumDecoderOptions() (rsp + 0x70); 0x00430497 lea rdi, [rsp + 0x90] | rdi = rsp + 0x90; 0x0043049f call 0x4048f0 | std::_1::basic_streambuf>::basic_streambuf() (); 0x004304a4 mov qword [rsp + 0x90], 0x4d6270 | *((rsp + 0x90)) = sym.imp.std::__1::basic_streambuf_char__std::__1::char_traits_char___::basic_streambuf__; 0x004304b0 mov qword [rsp + 0xd0], rbx | *((rsp + 0xd0)) = rbx; 0x004304b8 mov qword [rsp + 0xd8], rbp | *((rsp + 0xd8)) = rbp; 0x004304c0 add rbp, rbx | rbp += rbx; 0x004304c3 mov qword [rsp + 0xa0], rbx | *((rsp + 0xa0)) = rbx; 0x004304cb mov qword [rsp + 0xa8], rbx | *((rsp + 0xa8)) = rbx; 0x004304d3 mov qword [rsp + 0xb0], rbp | *((rsp + 0xb0)) = rbp; 0x004304db lea rdi, [rsp + 0x50] | 0x004304e0 lea rdx, [rsp + 0x90] | 0x004304e8 lea rcx, [rsp + 0x70] | 0x004304ed xor esi, esi | 0x004304ef call 0x43cfd0 | eax = BloombergLP::baljsn::DatumUtil::decode(BloombergLP::bdld::ManagedDatum*,std::_1::basic_ostream>*,std::_1::basic_streambuf>*,BloombergLP::baljsn::DatumDecoderOptionsconst&) (rsp + 0x50, 0, rsp + 0x90, rsp + 0x70, r8, r9); 0x004304f4 mov ebx, eax | ebx = eax; 0x004304f6 lea rdi, [rsp + 0x90] | rdi = rsp + 0x90; 0x004304fe call 0x404630 | std::_1::basic_streambuf>::~basic_streambuf() (); 0x00430503 lea rdi, [rsp + 0x70] | rdi = rsp + 0x70; 0x00430508 call 0x43cc20 | BloombergLP::baljsn::DatumDecoderOptions::~DatumDecoderOptions() (); 0x0043050d test ebx, ebx | | if (ebx != 0) { 0x0043050f je 0x430567 | 0x00430511 mov edi, 0x723630 | 0x00430516 mov esi, 0x4d0a25 | 0x0043051b mov edx, 6 | 0x00430520 call 0x43afb0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (obj.std::__1::cout, 0x4d0a25, 6); 0x00430525 mov esi, 0x4d1289 | 0x0043052a mov edx, 2 | 0x0043052f mov rdi, rax | 0x00430532 call 0x43afb0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x4d1289, 2); 0x00430537 mov rdi, rax | rdi = rax; 0x0043053a mov esi, ebx | esi = ebx; 0x0043053c call 0x404a00 | rax = std::_1::basic_ostream>::operator << (int) (); 0x00430541 mov esi, 0x4f0e70 | 0x00430546 mov edx, 1 | 0x0043054b mov rdi, rax | 0x0043054e call 0x43afb0 | std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x4f0e70, 1); 0x00430553 mov esi, 0x4d0a20 | esi = "0 == result"; 0x00430558 mov edi, 1 | edi = 1; 0x0043055d mov edx, 0x2de | edx = 0x2de; 0x00430562 call 0x422600 | (anonymousnamespace)::aSsErT(bool,char const*,int) (); | } 0x00430567 movzx eax, word [rsp + 0x5e] | eax = *((rsp + 0x5e)); 0x0043056c mov ecx, 0x4030 | ecx = 0x4030; 0x00430571 bt rcx, rax | | if (((rcx >> rax) & 1) >= 0) { 0x00430575 jb 0x4305df | 0x00430577 mov edi, 0x723630 | 0x0043057c mov esi, 0x4d1a48 | 0x00430581 mov edx, 0x11 | 0x00430586 call 0x43afb0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (obj.std::__1::cout, "other->isString()", 0x11); 0x0043058b mov esi, 0x4d1289 | 0x00430590 mov edx, 2 | 0x00430595 mov rdi, rax | 0x00430598 call 0x43afb0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x4d1289, 2); 0x0043059d mov cl, byte [rsp + 0x5e] | cl = *((rsp + 0x5e)); 0x004305a1 mov esi, 0x4030 | esi = 0x4030; 0x004305a6 shr rsi, cl | rsi >>= cl; 0x004305a9 and esi, 1 | esi &= 1; 0x004305ac mov rdi, rax | rdi = rax; 0x004305af call 0x404790 | rax = std::_1::basic_ostream>::operator << (bool) (); 0x004305b4 mov esi, 0x4f0e70 | 0x004305b9 mov edx, 1 | 0x004305be mov rdi, rax | 0x004305c1 call 0x43afb0 | std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x4f0e70, 1); 0x004305c6 mov esi, 0x4d1a48 | esi = "other->isString()"; 0x004305cb mov edi, 1 | edi = 1; 0x004305d0 mov edx, 0x2df | edx = 0x2df; 0x004305d5 call 0x422600 | (anonymousnamespace)::aSsErT(bool,char const*,int) (); 0x004305da movzx eax, word [rsp + 0x5e] | eax = *((rsp + 0x5e)); | } 0x004305df movzx edx, byte [rsp + 0x30] | edx = *((rsp + 0x30)); 0x004305e4 test dl, 1 | | if ((dl & 1) != 0) { 0x004305e7 je 0x4305f5 | 0x004305e9 mov rdi, qword [rsp + 0x40] | rdi = *((rsp + 0x40)); 0x004305ee mov rdx, qword [rsp + 0x38] | rdx = *((rsp + 0x38)); 0x004305f3 jmp 0x4305fb | | } else { 0x004305f5 shr rdx, 1 | rdx >>= 1; 0x004305f8 mov rdi, r15 | rdi = r15; | } 0x004305fb movsx ecx, ax | ecx = (int32_t) ax; 0x004305fe cmp ecx, 0xe | | if (ecx != 0xe) { 0x00430601 je 0x430626 | 0x00430603 cmp ecx, 5 | | if (ecx != 5) { 0x00430606 je 0x430626 | 0x00430608 xor esi, esi | esi = 0; 0x0043060a mov eax, 0 | eax = 0; 0x0043060f cmp ecx, 4 | | if (ecx == 4) { 0x00430612 jne 0x43061f | 0x00430614 lea rsi, [rsp + 0x51] | rsi = rsp + 0x51; 0x00430619 movsx rax, byte [rsp + 0x50] | rax = *((rsp + 0x50)); | } 0x0043061f cmp rdx, rax | | if (rdx == rax) { 0x00430622 je 0x430635 | goto label_15; | } 0x00430624 jmp 0x43064b | | } | } else { 0x00430626 mov rsi, qword [rsp + 0x50] | rsi = *((rsp + 0x50)); 0x0043062b movsxd rax, dword [rsp + 0x58] | rax = *((rsp + 0x58)); 0x00430630 cmp rdx, rax | | if (rdx != rax) { 0x00430633 jne 0x43064b | goto label_16; | } | label_15: 0x00430635 test rdx, rdx | | if (rdx == 0) { 0x00430638 je 0x43072b | goto label_17; | } 0x0043063e call 0x404900 | eax = bcmp (); 0x00430643 test eax, eax | | if (eax == 0) { 0x00430645 je 0x43072b | goto label_17; | } | } | label_16: 0x0043064b mov edi, 0x723630 | 0x00430650 mov esi, 0x4d1a5a | 0x00430655 mov edx, 0xa | 0x0043065a call 0x43afb0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (obj.std::__1::cout, "EXP_STRING", 0xa); 0x0043065f mov esi, 0x4d1289 | 0x00430664 mov edx, 2 | 0x00430669 mov rdi, rax | 0x0043066c call 0x43afb0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x4d1289, 2); 0x00430671 movzx edx, byte [rsp + 0x30] | edx = *((rsp + 0x30)); 0x00430676 test dl, 1 | | if ((dl & 1) != 0) { 0x00430679 je 0x430687 | 0x0043067b mov r15, qword [rsp + 0x40] | r15 = *((rsp + 0x40)); 0x00430680 mov rdx, qword [rsp + 0x38] | rdx = *((rsp + 0x38)); 0x00430685 jmp 0x43068a | | } else { 0x00430687 shr rdx, 1 | rdx >>= 1; | } 0x0043068a mov rdi, rax | 0x0043068d mov rsi, r15 | 0x00430690 call 0x43afb0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, r15, rdx); 0x00430695 mov esi, 0x4f0f33 | 0x0043069a mov edx, 1 | 0x0043069f mov rdi, rax | 0x004306a2 call 0x43afb0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x4f0f33, 1); 0x004306a7 mov esi, 0x4d1a73 | 0x004306ac mov edx, 0x12 | 0x004306b1 mov rdi, rax | 0x004306b4 call 0x43afb0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x4d1a73, 0x12); 0x004306b9 mov esi, 0x4d1289 | 0x004306be mov edx, 2 | 0x004306c3 mov rdi, rax | 0x004306c6 call 0x43afb0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x4d1289, 2); 0x004306cb movsx ecx, word [rsp + 0x5e] | ecx = *((rsp + 0x5e)); 0x004306d0 cmp ecx, 0xe | | if (ecx != 0xe) { 0x004306d3 je 0x4306f3 | 0x004306d5 cmp ecx, 5 | | if (ecx != 5) { 0x004306d8 je 0x4306f3 | 0x004306da xor esi, esi | esi = 0; 0x004306dc mov edx, 0 | edx = 0; 0x004306e1 cmp ecx, 4 | | if (ecx != 4) { 0x004306e4 jne 0x4306fd | goto label_18; | } 0x004306e6 lea rsi, [rsp + 0x51] | rsi = rsp + 0x51; 0x004306eb movsx rdx, byte [rsp + 0x50] | rdx = *((rsp + 0x50)); 0x004306f1 jmp 0x4306fd | | } | } else { 0x004306f3 mov rsi, qword [rsp + 0x50] | 0x004306f8 movsxd rdx, dword [rsp + 0x58] | rdx = *((rsp + 0x58)); | } | label_18: 0x004306fd mov rdi, rax | 0x00430700 call 0x43afb0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, *((rsp + 0x50)), rdx); 0x00430705 mov esi, 0x4f0e70 | 0x0043070a mov edx, 1 | 0x0043070f mov rdi, rax | 0x00430712 call 0x43afb0 | std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x4f0e70, 1); 0x00430717 mov esi, 0x4d1a65 | esi = "EXP_STRING == other->theString()"; 0x0043071c mov edi, 1 | edi = 1; 0x00430721 mov edx, 0x2e2 | edx = 0x2e2; 0x00430726 call 0x422600 | (anonymousnamespace)::aSsErT(bool,char const*,int) (); | label_17: 0x0043072b mov rsi, qword [rsp + 0x60] | 0x00430730 lea rdi, [rsp + 0x50] | 0x00430735 call 0x44a760 | BloombergLP::bdld::Datum::destroy(BloombergLP::bdld::Datumconst&,BloombergLP::bslma::Allocator*) (rsp + 0x50, *((rsp + 0x60))); 0x0043073a test byte [rsp + 0x10], 1 | | if ((*((rsp + 0x10)) & 1) != 0) { 0x0043073f je 0x43074b | 0x00430741 mov rdi, qword [rsp + 0x20] | rdi = *((rsp + 0x20)); 0x00430746 call 0x4046c0 | delete (); | } 0x0043074b mov rsi, qword [rsp + 0xf0] | 0x00430753 lea rdi, [rsp + 0xe0] | 0x0043075b call 0x44a760 | BloombergLP::bdld::Datum::destroy(BloombergLP::bdld::Datumconst&,BloombergLP::bslma::Allocator*) (rsp + 0xe0, *((rsp + 0xf0))); 0x00430760 mov rdi, r12 | rdi = r12; 0x00430763 call 0x4046c0 | delete (); 0x00430768 test byte [rsp + 0x30], 1 | | if ((*((rsp + 0x30)) & 1) != 0) { 0x0043076d je 0x430779 | 0x0043076f mov rdi, qword [rsp + 0x40] | rdi = *((rsp + 0x40)); 0x00430774 call 0x4046c0 | delete (); | } 0x00430779 cmp byte [rip + 0x2f2f61], 0 | | if (*(obj.veryVerbose) != 0) { 0x00430780 je 0x43085a | 0x00430786 mov rax, qword [rip + 0x2f2ea3] | rax = std::__1::cout; 0x0043078d mov esi, 0x723630 | esi = std::__1::cout; 0x00430792 add rsi, qword [rax - 0x18] | rsi += *((rax - 0x18)); 0x00430796 lea rdi, [rsp + 0x90] | rdi = rsp + 0x90; 0x0043079e call 0x404a70 | std::_1::ios_base::getloc()const (); 0x004307a3 lea rdi, [rsp + 0x90] | rdi = rsp + 0x90; 0x004307ab mov esi, 0x723550 | esi = std::__1::ctype::id; 0x004307b0 call 0x404b30 | rax = std::_1::locale::use_facet(std::_1::locale::id&)const (); 0x004307b5 mov rcx, qword [rax] | rcx = *(rax); 0x004307b8 mov rdi, rax | rdi = rax; 0x004307bb mov esi, 0xa | esi = 0xa; 0x004307c0 call qword [rcx + 0x38] | eax = uint64_t (*rcx + 0x38)() (); 0x004307c3 mov ebx, eax | ebx = eax; 0x004307c5 lea rdi, [rsp + 0x90] | rdi = rsp + 0x90; 0x004307cd call 0x404ba0 | std::_1::locale::~locale() (); 0x004307d2 movsx esi, bl | esi = (int32_t) bl; 0x004307d5 mov edi, 0x723630 | edi = std::__1::cout; 0x004307da call 0x404850 | std::_1::basic_ostream>::put(char) (); 0x004307df mov edi, 0x723630 | edi = std::__1::cout; 0x004307e4 call 0x404a30 | std::_1::basic_ostream>::flush() (); 0x004307e9 mov edi, 0x723630 | 0x004307ee mov esi, 0x4d1ae3 | 0x004307f3 mov edx, 0x22 | 0x004307f8 call 0x43afb0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (obj.std::__1::cout, "2. Verify we can round-trip 'int's", 0x22); 0x004307fd mov rbx, rax | rbx = rax; 0x00430800 mov rax, qword [rax] | rax = *(rax); 0x00430803 mov rsi, qword [rax - 0x18] | rsi = *((rax - 0x18)); 0x00430807 add rsi, rbx | rsi += rbx; 0x0043080a lea rdi, [rsp + 0x90] | rdi = rsp + 0x90; 0x00430812 call 0x404a70 | std::_1::ios_base::getloc()const (); 0x00430817 lea rdi, [rsp + 0x90] | rdi = rsp + 0x90; 0x0043081f mov esi, 0x723550 | esi = std::__1::ctype::id; 0x00430824 call 0x404b30 | rax = std::_1::locale::use_facet(std::_1::locale::id&)const (); 0x00430829 mov rcx, qword [rax] | rcx = *(rax); 0x0043082c mov rdi, rax | rdi = rax; 0x0043082f mov esi, 0xa | esi = 0xa; 0x00430834 call qword [rcx + 0x38] | eax = uint64_t (*rcx + 0x38)() (); 0x00430837 mov ebp, eax | 0x00430839 lea rdi, [rsp + 0x90] | rdi = rsp + 0x90; 0x00430841 call 0x404ba0 | std::_1::locale::~locale() (); 0x00430846 movsx esi, bpl | esi = (int32_t) bpl; 0x0043084a mov rdi, rbx | rdi = rbx; 0x0043084d call 0x404850 | std::_1::basic_ostream>::put(char) (); 0x00430852 mov rdi, rbx | rdi = rbx; 0x00430855 call 0x404a30 | std::_1::basic_ostream>::flush() (); | } 0x0043085a mov byte [rsp + 0x30], 6 | *((rsp + 0x30)) = 6; 0x0043085f mov dword [rsp + 0x31], 0x333231 | *((rsp + 0x31)) = 0x333231; 0x00430867 movabs rax, 0xa00000000007b | rax = 0xa00000000007b; 0x00430871 mov qword [rsp + 0xe8], rax | *((rsp + 0xe8)) = rax; 0x00430879 mov qword [rsp + 0xf0], r14 | *((rsp + 0xf0)) = r14; 0x00430881 pxor xmm0, xmm0 | xmm0 = 0; 0x00430885 movdqa xmmword [rsp + 0x10], xmm0 | __asm ("movdqa xmmword [rsp + 0x10], xmm0"); 0x0043088b mov qword [rsp + 0x20], 0 | *((rsp + 0x20)) = 0; 0x00430894 lea r12, [rsp + 0x10] | r12 = rsp + 0x10; 0x00430899 lea rsi, [rsp + 0xe0] | 0x004308a1 lea rdx, [rsp + 0x118] | 0x004308a9 mov rdi, r12 | 0x004308ac call 0x43dfe0 | eax = BloombergLP::baljsn::DatumUtil::encode(std::_1::basic_string,std::_1::allocator>*,BloombergLP::bdld::Datumconst&,BloombergLP::baljsn::DatumEncoderOptionsconst&) (r12, rsp + 0xe0, rsp + 0x118, rcx, r8, r9); 0x004308b1 mov ebp, eax | 0x004308b3 cmp eax, 1 | | if (eax != 1) { 0x004308b6 je 0x43090e | 0x004308b8 mov edi, 0x723630 | 0x004308bd mov esi, 0x4d0a25 | 0x004308c2 mov edx, 6 | 0x004308c7 call 0x43afb0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (obj.std::__1::cout, 0x4d0a25, 6); 0x004308cc mov esi, 0x4d1289 | 0x004308d1 mov edx, 2 | 0x004308d6 mov rdi, rax | 0x004308d9 call 0x43afb0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x4d1289, 2); 0x004308de mov rdi, rax | rdi = rax; 0x004308e1 mov esi, ebp | esi = ebp; 0x004308e3 call 0x404a00 | rax = std::_1::basic_ostream>::operator << (int) (); 0x004308e8 mov esi, 0x4f0e70 | 0x004308ed mov edx, 1 | 0x004308f2 mov rdi, rax | 0x004308f5 call 0x43afb0 | std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x4f0e70, 1); 0x004308fa mov esi, 0x4d1b06 | esi = "1 == result"; 0x004308ff mov edi, 1 | edi = 1; 0x00430904 mov edx, 0x2f0 | edx = 0x2f0; 0x00430909 call 0x422600 | (anonymousnamespace)::aSsErT(bool,char const*,int) (); | } 0x0043090e movzx ecx, byte [rsp + 0x30] | ecx = *((rsp + 0x30)); 0x00430913 mov rax, rcx | rax = rcx; 0x00430916 shr rax, 1 | rax >>= 1; 0x00430919 mov rdx, rax | rdx = rax; 0x0043091c test cl, 1 | | if ((cl & 1) != 0) { 0x0043091f je 0x430926 | 0x00430921 mov rdx, qword [rsp + 0x38] | rdx = *((rsp + 0x38)); | } 0x00430926 lea r15, [rsp + 0x31] | r15 = rsp + 0x31; 0x0043092b movzx ebx, byte [rsp + 0x10] | ebx = *((rsp + 0x10)); 0x00430930 mov rbp, rbx | 0x00430933 shr rbp, 1 | rbp >>= 1; 0x00430936 and bl, 1 | bl &= 1; 0x00430939 mov r13, qword [rsp + 0x18] | r13 = *((rsp + 0x18)); 0x0043093e mov rsi, r13 | rsi = *((rsp + 0x18)); | if (bl == 0) { 0x00430941 cmove rsi, rbp | rsi = rbp; | } 0x00430945 cmp rdx, rsi | | if (rdx != rsi) { 0x00430948 jne 0x4309e1 | goto label_19; | } 0x0043094e test bl, bl | 0x00430950 mov r14, qword [rsp + 0x20] | r14 = *((rsp + 0x20)); 0x00430955 lea rsi, [rsp + 0x11] | rsi = rsp + 0x11; | if (bl != 0) { 0x0043095a cmovne rsi, r14 | rsi = r14; | } 0x0043095e mov rdi, r15 | rdi = r15; 0x00430961 test cl, 1 | | if ((cl & 1) != 0) { 0x00430964 je 0x43096b | 0x00430966 mov rdi, qword [rsp + 0x40] | rdi = *((rsp + 0x40)); | } | if ((cl & 1) != 0) { 0x0043096b jne 0x4309cb | goto label_20; | } 0x0043096d test rdx, rdx | | if (rdx == 0) { 0x00430970 je 0x430ac4 | goto label_21; | } 0x00430976 xor ecx, ecx | ecx = 0; 0x00430978 nop dword [rax + rax] | | do { 0x00430980 movzx edx, byte [rsp + rcx + 0x31] | edx = *((rsp + rcx + 0x31)); 0x00430985 cmp dl, byte [rsi + rcx] | | if (dl != *((rsi + rcx))) { 0x00430988 jne 0x4309e1 | goto label_19; | } 0x0043098a inc rcx | rcx++; 0x0043098d cmp rax, rcx | 0x00430990 jne 0x430980 | | } while (rax != rcx); 0x00430992 jmp 0x430ac4 | goto label_21; | label_4: 0x00430997 lea rdi, [rsp + 0x11] | rdi = rsp + 0x11; | if (rax != rcx) { 0x0043099c jne 0x42fdf2 | goto label_0; | } | label_5: 0x004309a2 test rdx, rdx | | if (rdx == 0) { 0x004309a5 je 0x42fe99 | goto label_1; | } 0x004309ab xor ecx, ecx | ecx = 0; 0x004309ad nop dword [rax] | | label_3: 0x004309b0 movzx edx, byte [rsp + rcx + 0x11] | edx = *((rsp + rcx + 0x11)); 0x004309b5 cmp dl, byte [rsi + rcx] | | if (dl != *((rsi + rcx))) { 0x004309b8 jne 0x42fe08 | goto label_2; | } 0x004309be inc rcx | rcx++; 0x004309c1 cmp rax, rcx | | if (rax != rcx) { 0x004309c4 jne 0x4309b0 | goto label_3; | } 0x004309c6 jmp 0x42fe99 | goto label_1; | label_20: 0x004309cb test rdx, rdx | | if (rdx != 0) { 0x004309ce je 0x430ac4 | 0x004309d4 call 0x404900 | eax = bcmp (); 0x004309d9 test eax, eax | | if (eax == 0) { 0x004309db je 0x430ac4 | goto label_21; | } | label_19: 0x004309e1 mov edi, 0x723630 | 0x004309e6 mov esi, 0x4d1b12 | 0x004309eb mov edx, 8 | 0x004309f0 call 0x43afb0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (obj.std::__1::cout, "EXP_JSON", 8); 0x004309f5 mov esi, 0x4d1289 | 0x004309fa mov edx, 2 | 0x004309ff mov rdi, rax | 0x00430a02 call 0x43afb0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x4d1289, 2); 0x00430a07 movzx edx, byte [rsp + 0x30] | edx = *((rsp + 0x30)); 0x00430a0c test dl, 1 | | if ((dl & 1) != 0) { 0x00430a0f je 0x430a1d | 0x00430a11 mov r15, qword [rsp + 0x40] | r15 = *((rsp + 0x40)); 0x00430a16 mov rdx, qword [rsp + 0x38] | rdx = *((rsp + 0x38)); 0x00430a1b jmp 0x430a20 | | } else { 0x00430a1d shr rdx, 1 | rdx >>= 1; | } 0x00430a20 mov rdi, rax | 0x00430a23 mov rsi, r15 | 0x00430a26 call 0x43afb0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, r15, rdx); 0x00430a2b mov esi, 0x4f0f33 | 0x00430a30 mov edx, 1 | 0x00430a35 mov rdi, rax | 0x00430a38 call 0x43afb0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x4f0f33, 1); 0x00430a3d mov esi, 0x4d1e23 | 0x00430a42 mov edx, 4 | 0x00430a47 mov rdi, rax | 0x00430a4a call 0x43afb0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x4d1e23, 4); 0x00430a4f mov esi, 0x4d1289 | 0x00430a54 mov edx, 2 | 0x00430a59 mov rdi, rax | 0x00430a5c call 0x43afb0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x4d1289, 2); 0x00430a61 movzx edx, byte [rsp + 0x10] | edx = *((rsp + 0x10)); 0x00430a66 test dl, 1 | | if ((dl & 1) != 0) { 0x00430a69 je 0x430a77 | 0x00430a6b mov rsi, qword [rsp + 0x20] | rsi = *((rsp + 0x20)); 0x00430a70 mov rdx, qword [rsp + 0x18] | rdx = *((rsp + 0x18)); 0x00430a75 jmp 0x430a7f | | } else { 0x00430a77 shr rdx, 1 | rdx >>= 1; 0x00430a7a lea rsi, [rsp + 0x11] | | } 0x00430a7f mov rdi, rax | 0x00430a82 call 0x43afb0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, rsp + 0x11, rdx); 0x00430a87 mov esi, 0x4f0e70 | 0x00430a8c mov edx, 1 | 0x00430a91 mov rdi, rax | 0x00430a94 call 0x43afb0 | std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x4f0e70, 1); 0x00430a99 mov esi, 0x4d1a37 | esi = "EXP_JSON == json"; 0x00430a9e mov edi, 1 | edi = 1; 0x00430aa3 mov edx, 0x2f1 | edx = 0x2f1; 0x00430aa8 call 0x422600 | (anonymousnamespace)::aSsErT(bool,char const*,int) (); 0x00430aad movzx ebp, byte [rsp + 0x10] | ebp = *((rsp + 0x10)); 0x00430ab2 mov r13, qword [rsp + 0x18] | r13 = *((rsp + 0x18)); 0x00430ab7 mov r14, qword [rsp + 0x20] | r14 = *((rsp + 0x20)); 0x00430abc mov ebx, ebp | ebx = ebp; 0x00430abe and bl, 1 | bl &= 1; 0x00430ac1 shr rbp, 1 | rbp >>= 1; | } | label_21: 0x00430ac4 movabs rax, 0x2000000000000 | rax = 0x2000000000000; 0x00430ace mov qword [rsp + 0x58], rax | *((rsp + 0x58)) = rax; 0x00430ad3 lea rax, [rsp + 0x138] | rax = rsp + 0x138; 0x00430adb mov qword [rsp + 0x60], rax | *((rsp + 0x60)) = rax; 0x00430ae0 inc r12 | r12++; 0x00430ae3 test bl, bl | | if (bl != 0) { 0x00430ae5 cmovne r12, r14 | r12 = r14; | } | if (bl != 0) { 0x00430ae9 cmovne rbp, r13 | | } 0x00430aed lea rdi, [rsp + 0x70] | 0x00430af2 call 0x43cc00 | BloombergLP::baljsn::DatumDecoderOptions::DatumDecoderOptions() (rsp + 0x70); 0x00430af7 lea rdi, [rsp + 0x90] | rdi = rsp + 0x90; 0x00430aff call 0x4048f0 | std::_1::basic_streambuf>::basic_streambuf() (); 0x00430b04 mov qword [rsp + 0x90], 0x4d6270 | *((rsp + 0x90)) = sym.imp.std::__1::basic_streambuf_char__std::__1::char_traits_char___::basic_streambuf__; 0x00430b10 mov qword [rsp + 0xd0], r12 | *((rsp + 0xd0)) = r12; 0x00430b18 mov qword [rsp + 0xd8], rbp | *((rsp + 0xd8)) = rbp; 0x00430b20 add rbp, r12 | rbp += r12; 0x00430b23 mov qword [rsp + 0xa0], r12 | *((rsp + 0xa0)) = r12; 0x00430b2b mov qword [rsp + 0xa8], r12 | *((rsp + 0xa8)) = r12; 0x00430b33 mov qword [rsp + 0xb0], rbp | *((rsp + 0xb0)) = rbp; 0x00430b3b lea rdi, [rsp + 0x50] | 0x00430b40 lea rdx, [rsp + 0x90] | 0x00430b48 lea rcx, [rsp + 0x70] | 0x00430b4d xor esi, esi | 0x00430b4f call 0x43cfd0 | eax = BloombergLP::baljsn::DatumUtil::decode(BloombergLP::bdld::ManagedDatum*,std::_1::basic_ostream>*,std::_1::basic_streambuf>*,BloombergLP::baljsn::DatumDecoderOptionsconst&) (rsp + 0x50, 0, rsp + 0x90, rsp + 0x70, r8, r9); 0x00430b54 lea r14, [rsp + 0x138] | r14 = rsp + 0x138; 0x00430b5c mov ebx, eax | ebx = eax; 0x00430b5e lea rdi, [rsp + 0x90] | rdi = rsp + 0x90; 0x00430b66 call 0x404630 | std::_1::basic_streambuf>::~basic_streambuf() (); 0x00430b6b lea rdi, [rsp + 0x70] | rdi = rsp + 0x70; 0x00430b70 call 0x43cc20 | BloombergLP::baljsn::DatumDecoderOptions::~DatumDecoderOptions() (); 0x00430b75 test ebx, ebx | | if (ebx != 0) { 0x00430b77 je 0x430bcf | 0x00430b79 mov edi, 0x723630 | 0x00430b7e mov esi, 0x4d0a25 | 0x00430b83 mov edx, 6 | 0x00430b88 call 0x43afb0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (obj.std::__1::cout, 0x4d0a25, 6); 0x00430b8d mov esi, 0x4d1289 | 0x00430b92 mov edx, 2 | 0x00430b97 mov rdi, rax | 0x00430b9a call 0x43afb0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x4d1289, 2); 0x00430b9f mov rdi, rax | rdi = rax; 0x00430ba2 mov esi, ebx | esi = ebx; 0x00430ba4 call 0x404a00 | rax = std::_1::basic_ostream>::operator << (int) (); 0x00430ba9 mov esi, 0x4f0e70 | 0x00430bae mov edx, 1 | 0x00430bb3 mov rdi, rax | 0x00430bb6 call 0x43afb0 | std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x4f0e70, 1); 0x00430bbb mov esi, 0x4d0a20 | esi = "0 == result"; 0x00430bc0 mov edi, 1 | edi = 1; 0x00430bc5 mov edx, 0x2f5 | edx = 0x2f5; 0x00430bca call 0x422600 | (anonymousnamespace)::aSsErT(bool,char const*,int) (); | } 0x00430bcf movsx eax, word [rsp + 0x5e] | eax = *((rsp + 0x5e)); 0x00430bd4 cmp eax, 1 | | if (eax != 1) { 0x00430bd7 je 0x430c4d | 0x00430bd9 cmp eax, 0x10 | | if (eax == 0x10) { 0x00430bdc je 0x430c4d | goto label_22; | } 0x00430bde mov edi, 0x723630 | 0x00430be3 mov esi, 0x4d1b1b | 0x00430be8 mov edx, 0x11 | 0x00430bed call 0x43afb0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (obj.std::__1::cout, "other->isDouble()", 0x11); 0x00430bf2 mov esi, 0x4d1289 | 0x00430bf7 mov edx, 2 | 0x00430bfc mov rdi, rax | 0x00430bff call 0x43afb0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x4d1289, 2); 0x00430c04 movsx rcx, word [rsp + 0x5e] | rcx = *((rsp + 0x5e)); 0x00430c0a mov ecx, ecx | 0x00430c0c cmp rcx, 1 | 0x00430c10 sete dl | dl = (rcx == 1) ? 1 : 0; 0x00430c13 cmp rcx, 0x10 | 0x00430c17 sete cl | cl = (rcx == 0x10) ? 1 : 0; 0x00430c1a or cl, dl | cl |= dl; 0x00430c1c movzx esi, cl | esi = (int32_t) cl; 0x00430c1f mov rdi, rax | rdi = rax; 0x00430c22 call 0x404790 | rax = std::_1::basic_ostream>::operator << (bool) (); 0x00430c27 mov esi, 0x4f0e70 | 0x00430c2c mov edx, 1 | 0x00430c31 mov rdi, rax | 0x00430c34 call 0x43afb0 | std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x4f0e70, 1); 0x00430c39 mov esi, 0x4d1b1b | esi = "other->isDouble()"; 0x00430c3e mov edi, 1 | edi = 1; 0x00430c43 mov edx, 0x2f6 | edx = 0x2f6; 0x00430c48 call 0x422600 | (anonymousnamespace)::aSsErT(bool,char const*,int) (); | } | label_22: 0x00430c4d movsd xmm0, qword [rsp + 0x50] | xmm0 = *((rsp + 0x50)); 0x00430c53 ucomisd xmm0, qword [rip + 0x8678d] | __asm ("ucomisd xmm0, qword [0x004b73e8]"); | if (cl == 0) { 0x00430c5b jne 0x430c63 | | if (cl != 0) { 0x00430c5d jnp 0x430d03 | goto label_23; | } | } 0x00430c63 mov edi, 0x723630 | 0x00430c68 mov esi, 0x4d1b2d | 0x00430c6d mov edx, 0xb | 0x00430c72 call 0x43afb0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (obj.std::__1::cout, "double(obj)", 0xb); 0x00430c77 mov esi, 0x4d1289 | 0x00430c7c mov edx, 2 | 0x00430c81 mov rdi, rax | 0x00430c84 call 0x43afb0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x4d1289, 2); 0x00430c89 movq xmm0, qword [rip + 0x86757] | xmm0 = *(0x004b73e8); 0x00430c91 mov rdi, rax | rdi = rax; 0x00430c94 call 0x404bc0 | rax = std::_1::basic_ostream>::operator << (double) (); 0x00430c99 mov esi, 0x4f0f33 | 0x00430c9e mov edx, 1 | 0x00430ca3 mov rdi, rax | 0x00430ca6 call 0x43afb0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x4f0f33, 1); 0x00430cab mov esi, 0x4d1b48 | 0x00430cb0 mov edx, 0x12 | 0x00430cb5 mov rdi, rax | 0x00430cb8 call 0x43afb0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x4d1b48, 0x12); 0x00430cbd mov esi, 0x4d1289 | 0x00430cc2 mov edx, 2 | 0x00430cc7 mov rdi, rax | 0x00430cca call 0x43afb0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x4d1289, 2); 0x00430ccf movq xmm0, qword [rsp + 0x50] | xmm0 = *((rsp + 0x50)); 0x00430cd5 mov rdi, rax | rdi = rax; 0x00430cd8 call 0x404bc0 | rax = std::_1::basic_ostream>::operator << (double) (); 0x00430cdd mov esi, 0x4f0e70 | 0x00430ce2 mov edx, 1 | 0x00430ce7 mov rdi, rax | 0x00430cea call 0x43afb0 | std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x4f0e70, 1); 0x00430cef mov esi, 0x4d1b39 | esi = "double(obj) == other->theDouble()"; 0x00430cf4 mov edi, 1 | edi = 1; 0x00430cf9 mov edx, 0x2f9 | edx = 0x2f9; 0x00430cfe call 0x422600 | (anonymousnamespace)::aSsErT(bool,char const*,int) (); | label_23: 0x00430d03 mov rsi, qword [rsp + 0x60] | 0x00430d08 lea rdi, [rsp + 0x50] | 0x00430d0d call 0x44a760 | BloombergLP::bdld::Datum::destroy(BloombergLP::bdld::Datumconst&,BloombergLP::bslma::Allocator*) (rsp + 0x50, *((rsp + 0x60))); 0x00430d12 test byte [rsp + 0x10], 1 | | if ((*((rsp + 0x10)) & 1) != 0) { 0x00430d17 je 0x430d23 | 0x00430d19 mov rdi, qword [rsp + 0x20] | rdi = *((rsp + 0x20)); 0x00430d1e call 0x4046c0 | delete (); | } 0x00430d23 mov rsi, qword [rsp + 0xf0] | 0x00430d2b lea rdi, [rsp + 0xe0] | 0x00430d33 call 0x44a760 | BloombergLP::bdld::Datum::destroy(BloombergLP::bdld::Datumconst&,BloombergLP::bslma::Allocator*) (rsp + 0xe0, *((rsp + 0xf0))); 0x00430d38 test byte [rsp + 0x30], 1 | | if ((*((rsp + 0x30)) & 1) != 0) { 0x00430d3d je 0x430d49 | 0x00430d3f mov rdi, qword [rsp + 0x40] | rdi = *((rsp + 0x40)); 0x00430d44 call 0x4046c0 | delete (); | } 0x00430d49 cmp byte [rip + 0x2f2991], 0 | | if (*(obj.veryVerbose) != 0) { 0x00430d50 je 0x430e2a | 0x00430d56 mov rax, qword [rip + 0x2f28d3] | rax = std::__1::cout; 0x00430d5d mov esi, 0x723630 | esi = std::__1::cout; 0x00430d62 add rsi, qword [rax - 0x18] | rsi += *((rax - 0x18)); 0x00430d66 lea rdi, [rsp + 0x90] | rdi = rsp + 0x90; 0x00430d6e call 0x404a70 | std::_1::ios_base::getloc()const (); 0x00430d73 lea rdi, [rsp + 0x90] | rdi = rsp + 0x90; 0x00430d7b mov esi, 0x723550 | esi = std::__1::ctype::id; 0x00430d80 call 0x404b30 | rax = std::_1::locale::use_facet(std::_1::locale::id&)const (); 0x00430d85 mov rcx, qword [rax] | rcx = *(rax); 0x00430d88 mov rdi, rax | rdi = rax; 0x00430d8b mov esi, 0xa | esi = 0xa; 0x00430d90 call qword [rcx + 0x38] | eax = uint64_t (*rcx + 0x38)() (); 0x00430d93 mov ebx, eax | ebx = eax; 0x00430d95 lea rdi, [rsp + 0x90] | rdi = rsp + 0x90; 0x00430d9d call 0x404ba0 | std::_1::locale::~locale() (); 0x00430da2 movsx esi, bl | esi = (int32_t) bl; 0x00430da5 mov edi, 0x723630 | edi = std::__1::cout; 0x00430daa call 0x404850 | std::_1::basic_ostream>::put(char) (); 0x00430daf mov edi, 0x723630 | edi = std::__1::cout; 0x00430db4 call 0x404a30 | std::_1::basic_ostream>::flush() (); 0x00430db9 mov edi, 0x723630 | 0x00430dbe mov esi, 0x4d1b5b | 0x00430dc3 mov edx, 0x25 | 0x00430dc8 call 0x43afb0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (obj.std::__1::cout, "3. Verify we can round-trip 'double's", 0x25); 0x00430dcd mov rbx, rax | rbx = rax; 0x00430dd0 mov rax, qword [rax] | rax = *(rax); 0x00430dd3 mov rsi, qword [rax - 0x18] | rsi = *((rax - 0x18)); 0x00430dd7 add rsi, rbx | rsi += rbx; 0x00430dda lea rdi, [rsp + 0x90] | rdi = rsp + 0x90; 0x00430de2 call 0x404a70 | std::_1::ios_base::getloc()const (); 0x00430de7 lea rdi, [rsp + 0x90] | rdi = rsp + 0x90; 0x00430def mov esi, 0x723550 | esi = std::__1::ctype::id; 0x00430df4 call 0x404b30 | rax = std::_1::locale::use_facet(std::_1::locale::id&)const (); 0x00430df9 mov rcx, qword [rax] | rcx = *(rax); 0x00430dfc mov rdi, rax | rdi = rax; 0x00430dff mov esi, 0xa | esi = 0xa; 0x00430e04 call qword [rcx + 0x38] | eax = uint64_t (*rcx + 0x38)() (); 0x00430e07 mov ebp, eax | 0x00430e09 lea rdi, [rsp + 0x90] | rdi = rsp + 0x90; 0x00430e11 call 0x404ba0 | std::_1::locale::~locale() (); 0x00430e16 movsx esi, bpl | esi = (int32_t) bpl; 0x00430e1a mov rdi, rbx | rdi = rbx; 0x00430e1d call 0x404850 | std::_1::basic_ostream>::put(char) (); 0x00430e22 mov rdi, rbx | rdi = rbx; 0x00430e25 call 0x404a30 | std::_1::basic_ostream>::flush() (); | } 0x00430e2a mov byte [rsp + 0x30], 0xa | *((rsp + 0x30)) = 0xa; 0x00430e2f mov dword [rsp + 0x31], 0x37332e31 | *((rsp + 0x31)) = 0x37332e31; 0x00430e37 mov word [rsp + 0x35], 0x35 | *((rsp + 0x35)) = 0x35; 0x00430e3e movapd xmm0, xmmword [rip + 0x866fa] | __asm ("movapd xmm0, xmmword [0x004b7540]"); 0x00430e46 movapd xmmword [rsp + 0xe0], xmm0 | __asm ("movapd xmmword [rsp + 0xe0], xmm0"); 0x00430e4f mov qword [rsp + 0xf0], r14 | *((rsp + 0xf0)) = r14; 0x00430e57 xorpd xmm0, xmm0 | __asm ("xorpd xmm0, xmm0"); 0x00430e5b movapd xmmword [rsp + 0x10], xmm0 | __asm ("movapd xmmword [rsp + 0x10], xmm0"); 0x00430e61 mov qword [rsp + 0x20], 0 | *((rsp + 0x20)) = 0; 0x00430e6a lea r12, [rsp + 0x10] | r12 = rsp + 0x10; 0x00430e6f lea rsi, [rsp + 0xe0] | 0x00430e77 lea rdx, [rsp + 0x118] | 0x00430e7f mov rdi, r12 | 0x00430e82 call 0x43dfe0 | eax = BloombergLP::baljsn::DatumUtil::encode(std::_1::basic_string,std::_1::allocator>*,BloombergLP::bdld::Datumconst&,BloombergLP::baljsn::DatumEncoderOptionsconst&) (r12, rsp + 0xe0, rsp + 0x118, rcx, r8, r9); 0x00430e87 mov ebp, eax | 0x00430e89 test eax, eax | | if (eax != 0) { 0x00430e8b je 0x430ee3 | 0x00430e8d mov edi, 0x723630 | 0x00430e92 mov esi, 0x4d0a25 | 0x00430e97 mov edx, 6 | 0x00430e9c call 0x43afb0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (obj.std::__1::cout, 0x4d0a25, 6); 0x00430ea1 mov esi, 0x4d1289 | 0x00430ea6 mov edx, 2 | 0x00430eab mov rdi, rax | 0x00430eae call 0x43afb0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x4d1289, 2); 0x00430eb3 mov rdi, rax | rdi = rax; 0x00430eb6 mov esi, ebp | esi = ebp; 0x00430eb8 call 0x404a00 | rax = std::_1::basic_ostream>::operator << (int) (); 0x00430ebd mov esi, 0x4f0e70 | 0x00430ec2 mov edx, 1 | 0x00430ec7 mov rdi, rax | 0x00430eca call 0x43afb0 | std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x4f0e70, 1); 0x00430ecf mov esi, 0x4d0a20 | esi = "0 == result"; 0x00430ed4 mov edi, 1 | edi = 1; 0x00430ed9 mov edx, 0x306 | edx = 0x306; 0x00430ede call 0x422600 | (anonymousnamespace)::aSsErT(bool,char const*,int) (); | } 0x00430ee3 movzx ecx, byte [rsp + 0x30] | ecx = *((rsp + 0x30)); 0x00430ee8 mov rax, rcx | rax = rcx; 0x00430eeb shr rax, 1 | rax >>= 1; 0x00430eee mov rdx, rax | rdx = rax; 0x00430ef1 test cl, 1 | | if ((cl & 1) != 0) { 0x00430ef4 je 0x430efb | 0x00430ef6 mov rdx, qword [rsp + 0x38] | rdx = *((rsp + 0x38)); | } 0x00430efb lea r15, [rsp + 0x31] | r15 = rsp + 0x31; 0x00430f00 movzx ebx, byte [rsp + 0x10] | ebx = *((rsp + 0x10)); 0x00430f05 mov rbp, rbx | 0x00430f08 shr rbp, 1 | rbp >>= 1; 0x00430f0b and bl, 1 | bl &= 1; 0x00430f0e mov r13, qword [rsp + 0x18] | r13 = *((rsp + 0x18)); 0x00430f13 mov rsi, r13 | rsi = *((rsp + 0x18)); | if (bl == 0) { 0x00430f16 cmove rsi, rbp | rsi = rbp; | } 0x00430f1a cmp rdx, rsi | | if (rdx != rsi) { 0x00430f1d jne 0x430f7d | goto label_24; | } 0x00430f1f test bl, bl | 0x00430f21 mov r14, qword [rsp + 0x20] | r14 = *((rsp + 0x20)); 0x00430f26 lea rsi, [rsp + 0x11] | rsi = rsp + 0x11; | if (bl != 0) { 0x00430f2b cmovne rsi, r14 | rsi = r14; | } 0x00430f2f mov rdi, r15 | rdi = r15; 0x00430f32 test cl, 1 | | if ((cl & 1) != 0) { 0x00430f35 je 0x430f3c | 0x00430f37 mov rdi, qword [rsp + 0x40] | rdi = *((rsp + 0x40)); | } | if ((cl & 1) != 0) { 0x00430f3c jne 0x430f67 | goto label_25; | } 0x00430f3e test rdx, rdx | | if (rdx == 0) { 0x00430f41 je 0x431060 | goto label_26; | } 0x00430f47 xor ecx, ecx | ecx = 0; 0x00430f49 nop dword [rax] | | do { 0x00430f50 movzx edx, byte [rsp + rcx + 0x31] | edx = *((rsp + rcx + 0x31)); 0x00430f55 cmp dl, byte [rsi + rcx] | | if (dl != *((rsi + rcx))) { 0x00430f58 jne 0x430f7d | goto label_24; | } 0x00430f5a inc rcx | rcx++; 0x00430f5d cmp rax, rcx | 0x00430f60 jne 0x430f50 | | } while (rax != rcx); 0x00430f62 jmp 0x431060 | goto label_26; | label_25: 0x00430f67 test rdx, rdx | | if (rdx != 0) { 0x00430f6a je 0x431060 | 0x00430f70 call 0x404900 | eax = bcmp (); 0x00430f75 test eax, eax | | if (eax == 0) { 0x00430f77 je 0x431060 | goto label_26; | } | label_24: 0x00430f7d mov edi, 0x723630 | 0x00430f82 mov esi, 0x4d1b12 | 0x00430f87 mov edx, 8 | 0x00430f8c call 0x43afb0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (obj.std::__1::cout, "EXP_JSON", 8); 0x00430f91 mov esi, 0x4d1289 | 0x00430f96 mov edx, 2 | 0x00430f9b mov rdi, rax | 0x00430f9e call 0x43afb0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x4d1289, 2); 0x00430fa3 movzx edx, byte [rsp + 0x30] | edx = *((rsp + 0x30)); 0x00430fa8 test dl, 1 | | if ((dl & 1) != 0) { 0x00430fab je 0x430fb9 | 0x00430fad mov r15, qword [rsp + 0x40] | r15 = *((rsp + 0x40)); 0x00430fb2 mov rdx, qword [rsp + 0x38] | rdx = *((rsp + 0x38)); 0x00430fb7 jmp 0x430fbc | | } else { 0x00430fb9 shr rdx, 1 | rdx >>= 1; | } 0x00430fbc mov rdi, rax | 0x00430fbf mov rsi, r15 | 0x00430fc2 call 0x43afb0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, r15, rdx); 0x00430fc7 mov esi, 0x4f0f33 | 0x00430fcc mov edx, 1 | 0x00430fd1 mov rdi, rax | 0x00430fd4 call 0x43afb0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x4f0f33, 1); 0x00430fd9 mov esi, 0x4d1e23 | 0x00430fde mov edx, 4 | 0x00430fe3 mov rdi, rax | 0x00430fe6 call 0x43afb0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x4d1e23, 4); 0x00430feb mov esi, 0x4d1289 | 0x00430ff0 mov edx, 2 | 0x00430ff5 mov rdi, rax | 0x00430ff8 call 0x43afb0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x4d1289, 2); 0x00430ffd movzx edx, byte [rsp + 0x10] | edx = *((rsp + 0x10)); 0x00431002 test dl, 1 | | if ((dl & 1) != 0) { 0x00431005 je 0x431013 | 0x00431007 mov rsi, qword [rsp + 0x20] | rsi = *((rsp + 0x20)); 0x0043100c mov rdx, qword [rsp + 0x18] | rdx = *((rsp + 0x18)); 0x00431011 jmp 0x43101b | | } else { 0x00431013 shr rdx, 1 | rdx >>= 1; 0x00431016 lea rsi, [rsp + 0x11] | | } 0x0043101b mov rdi, rax | 0x0043101e call 0x43afb0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, rsp + 0x11, rdx); 0x00431023 mov esi, 0x4f0e70 | 0x00431028 mov edx, 1 | 0x0043102d mov rdi, rax | 0x00431030 call 0x43afb0 | std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x4f0e70, 1); 0x00431035 mov esi, 0x4d1a37 | esi = "EXP_JSON == json"; 0x0043103a mov edi, 1 | edi = 1; 0x0043103f mov edx, 0x307 | edx = 0x307; 0x00431044 call 0x422600 | (anonymousnamespace)::aSsErT(bool,char const*,int) (); 0x00431049 movzx ebp, byte [rsp + 0x10] | ebp = *((rsp + 0x10)); 0x0043104e mov r13, qword [rsp + 0x18] | r13 = *((rsp + 0x18)); 0x00431053 mov r14, qword [rsp + 0x20] | r14 = *((rsp + 0x20)); 0x00431058 mov ebx, ebp | ebx = ebp; 0x0043105a and bl, 1 | bl &= 1; 0x0043105d shr rbp, 1 | rbp >>= 1; | } | label_26: 0x00431060 movabs rax, 0x2000000000000 | rax = 0x2000000000000; 0x0043106a mov qword [rsp + 0x58], rax | *((rsp + 0x58)) = rax; 0x0043106f lea rax, [rsp + 0x138] | rax = rsp + 0x138; 0x00431077 mov qword [rsp + 0x60], rax | *((rsp + 0x60)) = rax; 0x0043107c inc r12 | r12++; 0x0043107f test bl, bl | | if (bl != 0) { 0x00431081 cmovne r12, r14 | r12 = r14; | } | if (bl != 0) { 0x00431085 cmovne rbp, r13 | | } 0x00431089 lea rdi, [rsp + 0x70] | 0x0043108e call 0x43cc00 | BloombergLP::baljsn::DatumDecoderOptions::DatumDecoderOptions() (rsp + 0x70); 0x00431093 lea rdi, [rsp + 0x90] | rdi = rsp + 0x90; 0x0043109b call 0x4048f0 | std::_1::basic_streambuf>::basic_streambuf() (); 0x004310a0 mov qword [rsp + 0x90], 0x4d6270 | *((rsp + 0x90)) = sym.imp.std::__1::basic_streambuf_char__std::__1::char_traits_char___::basic_streambuf__; 0x004310ac mov qword [rsp + 0xd0], r12 | *((rsp + 0xd0)) = r12; 0x004310b4 mov qword [rsp + 0xd8], rbp | *((rsp + 0xd8)) = rbp; 0x004310bc add rbp, r12 | rbp += r12; 0x004310bf mov qword [rsp + 0xa0], r12 | *((rsp + 0xa0)) = r12; 0x004310c7 mov qword [rsp + 0xa8], r12 | *((rsp + 0xa8)) = r12; 0x004310cf mov qword [rsp + 0xb0], rbp | *((rsp + 0xb0)) = rbp; 0x004310d7 lea rdi, [rsp + 0x50] | 0x004310dc lea rdx, [rsp + 0x90] | 0x004310e4 lea rcx, [rsp + 0x70] | 0x004310e9 xor esi, esi | 0x004310eb call 0x43cfd0 | eax = BloombergLP::baljsn::DatumUtil::decode(BloombergLP::bdld::ManagedDatum*,std::_1::basic_ostream>*,std::_1::basic_streambuf>*,BloombergLP::baljsn::DatumDecoderOptionsconst&) (rsp + 0x50, 0, rsp + 0x90, rsp + 0x70, r8, r9); 0x004310f0 lea r14, [rsp + 0x138] | r14 = rsp + 0x138; 0x004310f8 mov ebx, eax | ebx = eax; 0x004310fa lea rdi, [rsp + 0x90] | rdi = rsp + 0x90; 0x00431102 call 0x404630 | std::_1::basic_streambuf>::~basic_streambuf() (); 0x00431107 lea rdi, [rsp + 0x70] | rdi = rsp + 0x70; 0x0043110c call 0x43cc20 | BloombergLP::baljsn::DatumDecoderOptions::~DatumDecoderOptions() (); 0x00431111 test ebx, ebx | | if (ebx != 0) { 0x00431113 je 0x43116b | 0x00431115 mov edi, 0x723630 | 0x0043111a mov esi, 0x4d0a25 | 0x0043111f mov edx, 6 | 0x00431124 call 0x43afb0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (obj.std::__1::cout, 0x4d0a25, 6); 0x00431129 mov esi, 0x4d1289 | 0x0043112e mov edx, 2 | 0x00431133 mov rdi, rax | 0x00431136 call 0x43afb0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x4d1289, 2); 0x0043113b mov rdi, rax | rdi = rax; 0x0043113e mov esi, ebx | esi = ebx; 0x00431140 call 0x404a00 | rax = std::_1::basic_ostream>::operator << (int) (); 0x00431145 mov esi, 0x4f0e70 | 0x0043114a mov edx, 1 | 0x0043114f mov rdi, rax | 0x00431152 call 0x43afb0 | std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x4f0e70, 1); 0x00431157 mov esi, 0x4d0a20 | esi = "0 == result"; 0x0043115c mov edi, 1 | edi = 1; 0x00431161 mov edx, 0x30b | edx = 0x30b; 0x00431166 call 0x422600 | (anonymousnamespace)::aSsErT(bool,char const*,int) (); | } 0x0043116b movsx eax, word [rsp + 0x5e] | eax = *((rsp + 0x5e)); 0x00431170 cmp eax, 1 | | if (eax != 1) { 0x00431173 je 0x4311e9 | 0x00431175 cmp eax, 0x10 | | if (eax == 0x10) { 0x00431178 je 0x4311e9 | goto label_27; | } 0x0043117a mov edi, 0x723630 | 0x0043117f mov esi, 0x4d1b1b | 0x00431184 mov edx, 0x11 | 0x00431189 call 0x43afb0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (obj.std::__1::cout, "other->isDouble()", 0x11); 0x0043118e mov esi, 0x4d1289 | 0x00431193 mov edx, 2 | 0x00431198 mov rdi, rax | 0x0043119b call 0x43afb0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x4d1289, 2); 0x004311a0 movsx rcx, word [rsp + 0x5e] | rcx = *((rsp + 0x5e)); 0x004311a6 mov ecx, ecx | 0x004311a8 cmp rcx, 1 | 0x004311ac sete dl | dl = (rcx == 1) ? 1 : 0; 0x004311af cmp rcx, 0x10 | 0x004311b3 sete cl | cl = (rcx == 0x10) ? 1 : 0; 0x004311b6 or cl, dl | cl |= dl; 0x004311b8 movzx esi, cl | esi = (int32_t) cl; 0x004311bb mov rdi, rax | rdi = rax; 0x004311be call 0x404790 | rax = std::_1::basic_ostream>::operator << (bool) (); 0x004311c3 mov esi, 0x4f0e70 | 0x004311c8 mov edx, 1 | 0x004311cd mov rdi, rax | 0x004311d0 call 0x43afb0 | std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x4f0e70, 1); 0x004311d5 mov esi, 0x4d1b1b | esi = "other->isDouble()"; 0x004311da mov edi, 1 | edi = 1; 0x004311df mov edx, 0x30c | edx = 0x30c; 0x004311e4 call 0x422600 | (anonymousnamespace)::aSsErT(bool,char const*,int) (); | } | label_27: 0x004311e9 movsd xmm0, qword [rsp + 0x50] | xmm0 = *((rsp + 0x50)); 0x004311ef ucomisd xmm0, qword [rip + 0x861f9] | __asm ("ucomisd xmm0, qword [0x004b73f0]"); | if (cl == 0) { 0x004311f7 jne 0x4311ff | | if (cl != 0) { 0x004311f9 jnp 0x43129f | goto label_28; | } | } 0x004311ff mov edi, 0x723630 | 0x00431204 mov esi, 0x4d024b | 0x00431209 mov edx, 3 | 0x0043120e call 0x43afb0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (obj.std::__1::cout, 0x4d024b, 3); 0x00431213 mov esi, 0x4d1289 | 0x00431218 mov edx, 2 | 0x0043121d mov rdi, rax | 0x00431220 call 0x43afb0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x4d1289, 2); 0x00431225 movsd xmm0, qword [rip + 0x861c3] | xmm0 = *(0x004b73f0); 0x0043122d mov rdi, rax | rdi = rax; 0x00431230 call 0x404bc0 | rax = std::_1::basic_ostream>::operator << (double) (); 0x00431235 mov esi, 0x4f0f33 | 0x0043123a mov edx, 1 | 0x0043123f mov rdi, rax | 0x00431242 call 0x43afb0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x4f0f33, 1); 0x00431247 mov esi, 0x4d1b48 | 0x0043124c mov edx, 0x12 | 0x00431251 mov rdi, rax | 0x00431254 call 0x43afb0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x4d1b48, 0x12); 0x00431259 mov esi, 0x4d1289 | 0x0043125e mov edx, 2 | 0x00431263 mov rdi, rax | 0x00431266 call 0x43afb0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x4d1289, 2); 0x0043126b movsd xmm0, qword [rsp + 0x50] | xmm0 = *((rsp + 0x50)); 0x00431271 mov rdi, rax | rdi = rax; 0x00431274 call 0x404bc0 | rax = std::_1::basic_ostream>::operator << (double) (); 0x00431279 mov esi, 0x4f0e70 | 0x0043127e mov edx, 1 | 0x00431283 mov rdi, rax | 0x00431286 call 0x43afb0 | std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x4f0e70, 1); 0x0043128b mov esi, 0x4d1b87 | esi = "obj == other->theDouble()"; 0x00431290 mov edi, 1 | edi = 1; 0x00431295 mov edx, 0x30d | edx = 0x30d; 0x0043129a call 0x422600 | (anonymousnamespace)::aSsErT(bool,char const*,int) (); | label_28: 0x0043129f mov rsi, qword [rsp + 0x60] | 0x004312a4 lea rdi, [rsp + 0x50] | 0x004312a9 call 0x44a760 | BloombergLP::bdld::Datum::destroy(BloombergLP::bdld::Datumconst&,BloombergLP::bslma::Allocator*) (rsp + 0x50, *((rsp + 0x60))); 0x004312ae test byte [rsp + 0x10], 1 | | if ((*((rsp + 0x10)) & 1) != 0) { 0x004312b3 je 0x4312bf | 0x004312b5 mov rdi, qword [rsp + 0x20] | rdi = *((rsp + 0x20)); 0x004312ba call 0x4046c0 | delete (); | } 0x004312bf mov rsi, qword [rsp + 0xf0] | 0x004312c7 lea rdi, [rsp + 0xe0] | 0x004312cf call 0x44a760 | BloombergLP::bdld::Datum::destroy(BloombergLP::bdld::Datumconst&,BloombergLP::bslma::Allocator*) (rsp + 0xe0, *((rsp + 0xf0))); 0x004312d4 test byte [rsp + 0x30], 1 | | if ((*((rsp + 0x30)) & 1) != 0) { 0x004312d9 je 0x4312e5 | 0x004312db mov rdi, qword [rsp + 0x40] | rdi = *((rsp + 0x40)); 0x004312e0 call 0x4046c0 | delete (); | } 0x004312e5 cmp byte [rip + 0x2f23f5], 0 | | if (*(obj.veryVerbose) != 0) { 0x004312ec je 0x4313c6 | 0x004312f2 mov rax, qword [rip + 0x2f2337] | rax = std::__1::cout; 0x004312f9 mov esi, 0x723630 | esi = std::__1::cout; 0x004312fe add rsi, qword [rax - 0x18] | rsi += *((rax - 0x18)); 0x00431302 lea rdi, [rsp + 0x90] | rdi = rsp + 0x90; 0x0043130a call 0x404a70 | std::_1::ios_base::getloc()const (); 0x0043130f lea rdi, [rsp + 0x90] | rdi = rsp + 0x90; 0x00431317 mov esi, 0x723550 | esi = std::__1::ctype::id; 0x0043131c call 0x404b30 | rax = std::_1::locale::use_facet(std::_1::locale::id&)const (); 0x00431321 mov rcx, qword [rax] | rcx = *(rax); 0x00431324 mov rdi, rax | rdi = rax; 0x00431327 mov esi, 0xa | esi = 0xa; 0x0043132c call qword [rcx + 0x38] | eax = uint64_t (*rcx + 0x38)() (); 0x0043132f mov ebx, eax | ebx = eax; 0x00431331 lea rdi, [rsp + 0x90] | rdi = rsp + 0x90; 0x00431339 call 0x404ba0 | std::_1::locale::~locale() (); 0x0043133e movsx esi, bl | esi = (int32_t) bl; 0x00431341 mov edi, 0x723630 | edi = std::__1::cout; 0x00431346 call 0x404850 | std::_1::basic_ostream>::put(char) (); 0x0043134b mov edi, 0x723630 | edi = std::__1::cout; 0x00431350 call 0x404a30 | std::_1::basic_ostream>::flush() (); 0x00431355 mov edi, 0x723630 | 0x0043135a mov esi, 0x4d1ba1 | 0x0043135f mov edx, 0x23 | 0x00431364 call 0x43afb0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (obj.std::__1::cout, "4. Verify we can round-trip 'bool's", 0x23); 0x00431369 mov rbx, rax | rbx = rax; 0x0043136c mov rax, qword [rax] | rax = *(rax); 0x0043136f mov rsi, qword [rax - 0x18] | rsi = *((rax - 0x18)); 0x00431373 add rsi, rbx | rsi += rbx; 0x00431376 lea rdi, [rsp + 0x90] | rdi = rsp + 0x90; 0x0043137e call 0x404a70 | std::_1::ios_base::getloc()const (); 0x00431383 lea rdi, [rsp + 0x90] | rdi = rsp + 0x90; 0x0043138b mov esi, 0x723550 | esi = std::__1::ctype::id; 0x00431390 call 0x404b30 | rax = std::_1::locale::use_facet(std::_1::locale::id&)const (); 0x00431395 mov rcx, qword [rax] | rcx = *(rax); 0x00431398 mov rdi, rax | rdi = rax; 0x0043139b mov esi, 0xa | esi = 0xa; 0x004313a0 call qword [rcx + 0x38] | eax = uint64_t (*rcx + 0x38)() (); 0x004313a3 mov ebp, eax | 0x004313a5 lea rdi, [rsp + 0x90] | rdi = rsp + 0x90; 0x004313ad call 0x404ba0 | std::_1::locale::~locale() (); 0x004313b2 movsx esi, bpl | esi = (int32_t) bpl; 0x004313b6 mov rdi, rbx | rdi = rbx; 0x004313b9 call 0x404850 | std::_1::basic_ostream>::put(char) (); 0x004313be mov rdi, rbx | rdi = rbx; 0x004313c1 call 0x404a30 | std::_1::basic_ostream>::flush() (); | } 0x004313c6 cmp byte [rip + 0x2f2315], 0 | | if (*(obj.veryVeryVerbose) != 0) { 0x004313cd je 0x4314a7 | 0x004313d3 mov rax, qword [rip + 0x2f2256] | rax = std::__1::cout; 0x004313da mov esi, 0x723630 | esi = std::__1::cout; 0x004313df add rsi, qword [rax - 0x18] | rsi += *((rax - 0x18)); 0x004313e3 lea rdi, [rsp + 0x90] | rdi = rsp + 0x90; 0x004313eb call 0x404a70 | std::_1::ios_base::getloc()const (); 0x004313f0 lea rdi, [rsp + 0x90] | rdi = rsp + 0x90; 0x004313f8 mov esi, 0x723550 | esi = std::__1::ctype::id; 0x004313fd call 0x404b30 | rax = std::_1::locale::use_facet(std::_1::locale::id&)const (); 0x00431402 mov rcx, qword [rax] | rcx = *(rax); 0x00431405 mov rdi, rax | rdi = rax; 0x00431408 mov esi, 0xa | esi = 0xa; 0x0043140d call qword [rcx + 0x38] | eax = uint64_t (*rcx + 0x38)() (); 0x00431410 mov ebx, eax | ebx = eax; 0x00431412 lea rdi, [rsp + 0x90] | rdi = rsp + 0x90; 0x0043141a call 0x404ba0 | std::_1::locale::~locale() (); 0x0043141f movsx esi, bl | esi = (int32_t) bl; 0x00431422 mov edi, 0x723630 | edi = std::__1::cout; 0x00431427 call 0x404850 | std::_1::basic_ostream>::put(char) (); 0x0043142c mov edi, 0x723630 | edi = std::__1::cout; 0x00431431 call 0x404a30 | std::_1::basic_ostream>::flush() (); 0x00431436 mov edi, 0x723630 | 0x0043143b mov esi, 0x4d1bc5 | 0x00431440 mov edx, 9 | 0x00431445 call 0x43afb0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (obj.std::__1::cout, "\ta. false", 9); 0x0043144a mov rbx, rax | rbx = rax; 0x0043144d mov rax, qword [rax] | rax = *(rax); 0x00431450 mov rsi, qword [rax - 0x18] | rsi = *((rax - 0x18)); 0x00431454 add rsi, rbx | rsi += rbx; 0x00431457 lea rdi, [rsp + 0x90] | rdi = rsp + 0x90; 0x0043145f call 0x404a70 | std::_1::ios_base::getloc()const (); 0x00431464 lea rdi, [rsp + 0x90] | rdi = rsp + 0x90; 0x0043146c mov esi, 0x723550 | esi = std::__1::ctype::id; 0x00431471 call 0x404b30 | rax = std::_1::locale::use_facet(std::_1::locale::id&)const (); 0x00431476 mov rcx, qword [rax] | rcx = *(rax); 0x00431479 mov rdi, rax | rdi = rax; 0x0043147c mov esi, 0xa | esi = 0xa; 0x00431481 call qword [rcx + 0x38] | eax = uint64_t (*rcx + 0x38)() (); 0x00431484 mov ebp, eax | 0x00431486 lea rdi, [rsp + 0x90] | rdi = rsp + 0x90; 0x0043148e call 0x404ba0 | std::_1::locale::~locale() (); 0x00431493 movsx esi, bpl | esi = (int32_t) bpl; 0x00431497 mov rdi, rbx | rdi = rbx; 0x0043149a call 0x404850 | std::_1::basic_ostream>::put(char) (); 0x0043149f mov rdi, rbx | rdi = rbx; 0x004314a2 call 0x404a30 | std::_1::basic_ostream>::flush() (); | } 0x004314a7 movabs rax, 0x3000000000000 | rax = 0x3000000000000; 0x004314b1 mov byte [rsp + 0x30], 0xa | *((rsp + 0x30)) = 0xa; 0x004314b6 mov dword [rsp + 0x31], 0x736c6166 | *((rsp + 0x31)) = 0x736c6166; 0x004314be mov word [rsp + 0x35], 0x65 | *((rsp + 0x35)) = 0x65; 0x004314c5 mov qword [rsp + 0xe8], rax | *((rsp + 0xe8)) = rax; 0x004314cd mov qword [rsp + 0xf0], r14 | *((rsp + 0xf0)) = r14; 0x004314d5 xorpd xmm0, xmm0 | __asm ("xorpd xmm0, xmm0"); 0x004314d9 movapd xmmword [rsp + 0x10], xmm0 | __asm ("movapd xmmword [rsp + 0x10], xmm0"); 0x004314df mov qword [rsp + 0x20], 0 | *((rsp + 0x20)) = 0; 0x004314e8 lea r13, [rsp + 0x10] | r13 = rsp + 0x10; 0x004314ed lea rsi, [rsp + 0xe0] | 0x004314f5 lea rdx, [rsp + 0x118] | 0x004314fd mov rdi, r13 | 0x00431500 call 0x43dfe0 | eax = BloombergLP::baljsn::DatumUtil::encode(std::_1::basic_string,std::_1::allocator>*,BloombergLP::bdld::Datumconst&,BloombergLP::baljsn::DatumEncoderOptionsconst&) (r13, rsp + 0xe0, rsp + 0x118, rcx, r8, r9); 0x00431505 mov ebp, eax | 0x00431507 test eax, eax | | if (eax != 0) { 0x00431509 je 0x431561 | 0x0043150b mov edi, 0x723630 | 0x00431510 mov esi, 0x4d0a25 | 0x00431515 mov edx, 6 | 0x0043151a call 0x43afb0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (obj.std::__1::cout, 0x4d0a25, 6); 0x0043151f mov esi, 0x4d1289 | 0x00431524 mov edx, 2 | 0x00431529 mov rdi, rax | 0x0043152c call 0x43afb0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x4d1289, 2); 0x00431531 mov rdi, rax | rdi = rax; 0x00431534 mov esi, ebp | esi = ebp; 0x00431536 call 0x404a00 | rax = std::_1::basic_ostream>::operator << (int) (); 0x0043153b mov esi, 0x4f0e70 | 0x00431540 mov edx, 1 | 0x00431545 mov rdi, rax | 0x00431548 call 0x43afb0 | std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x4f0e70, 1); 0x0043154d mov esi, 0x4d0a20 | esi = "0 == result"; 0x00431552 mov edi, 1 | edi = 1; 0x00431557 mov edx, 0x31e | edx = 0x31e; 0x0043155c call 0x422600 | (anonymousnamespace)::aSsErT(bool,char const*,int) (); | } 0x00431561 movzx ecx, byte [rsp + 0x30] | ecx = *((rsp + 0x30)); 0x00431566 mov rax, rcx | rax = rcx; 0x00431569 shr rax, 1 | rax >>= 1; 0x0043156c mov rdx, rax | rdx = rax; 0x0043156f test cl, 1 | | if ((cl & 1) != 0) { 0x00431572 je 0x431579 | 0x00431574 mov rdx, qword [rsp + 0x38] | rdx = *((rsp + 0x38)); | } 0x00431579 lea r15, [rsp + 0x31] | r15 = rsp + 0x31; 0x0043157e movzx ebx, byte [rsp + 0x10] | ebx = *((rsp + 0x10)); 0x00431583 mov rbp, rbx | 0x00431586 shr rbp, 1 | rbp >>= 1; 0x00431589 and bl, 1 | bl &= 1; 0x0043158c mov r14, qword [rsp + 0x18] | r14 = *((rsp + 0x18)); 0x00431591 mov rsi, r14 | rsi = *((rsp + 0x18)); | if (bl == 0) { 0x00431594 cmove rsi, rbp | rsi = rbp; | } 0x00431598 cmp rdx, rsi | | if (rdx != rsi) { 0x0043159b jne 0x4315fd | goto label_29; | } 0x0043159d test bl, bl | 0x0043159f mov r12, qword [rsp + 0x20] | r12 = *((rsp + 0x20)); 0x004315a4 lea rsi, [rsp + 0x11] | rsi = rsp + 0x11; | if (bl != 0) { 0x004315a9 cmovne rsi, r12 | rsi = r12; | } 0x004315ad mov rdi, r15 | rdi = r15; 0x004315b0 test cl, 1 | | if ((cl & 1) != 0) { 0x004315b3 je 0x4315ba | 0x004315b5 mov rdi, qword [rsp + 0x40] | rdi = *((rsp + 0x40)); | } | if ((cl & 1) != 0) { 0x004315ba jne 0x4315e7 | goto label_30; | } 0x004315bc test rdx, rdx | | if (rdx == 0) { 0x004315bf je 0x4316e0 | goto label_31; | } 0x004315c5 xor ecx, ecx | ecx = 0; 0x004315c7 nop word [rax + rax] | | do { 0x004315d0 movzx edx, byte [rsp + rcx + 0x31] | edx = *((rsp + rcx + 0x31)); 0x004315d5 cmp dl, byte [rsi + rcx] | | if (dl != *((rsi + rcx))) { 0x004315d8 jne 0x4315fd | goto label_29; | } 0x004315da inc rcx | rcx++; 0x004315dd cmp rax, rcx | 0x004315e0 jne 0x4315d0 | | } while (rax != rcx); 0x004315e2 jmp 0x4316e0 | goto label_31; | label_30: 0x004315e7 test rdx, rdx | | if (rdx != 0) { 0x004315ea je 0x4316e0 | 0x004315f0 call 0x404900 | eax = bcmp (); 0x004315f5 test eax, eax | | if (eax == 0) { 0x004315f7 je 0x4316e0 | goto label_31; | } | label_29: 0x004315fd mov edi, 0x723630 | 0x00431602 mov esi, 0x4d1b12 | 0x00431607 mov edx, 8 | 0x0043160c call 0x43afb0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (obj.std::__1::cout, "EXP_JSON", 8); 0x00431611 mov esi, 0x4d1289 | 0x00431616 mov edx, 2 | 0x0043161b mov rdi, rax | 0x0043161e call 0x43afb0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x4d1289, 2); 0x00431623 movzx edx, byte [rsp + 0x30] | edx = *((rsp + 0x30)); 0x00431628 test dl, 1 | | if ((dl & 1) != 0) { 0x0043162b je 0x431639 | 0x0043162d mov r15, qword [rsp + 0x40] | r15 = *((rsp + 0x40)); 0x00431632 mov rdx, qword [rsp + 0x38] | rdx = *((rsp + 0x38)); 0x00431637 jmp 0x43163c | | } else { 0x00431639 shr rdx, 1 | rdx >>= 1; | } 0x0043163c mov rdi, rax | 0x0043163f mov rsi, r15 | 0x00431642 call 0x43afb0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, r15, rdx); 0x00431647 mov esi, 0x4f0f33 | 0x0043164c mov edx, 1 | 0x00431651 mov rdi, rax | 0x00431654 call 0x43afb0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x4f0f33, 1); 0x00431659 mov esi, 0x4d1e23 | 0x0043165e mov edx, 4 | 0x00431663 mov rdi, rax | 0x00431666 call 0x43afb0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x4d1e23, 4); 0x0043166b mov esi, 0x4d1289 | 0x00431670 mov edx, 2 | 0x00431675 mov rdi, rax | 0x00431678 call 0x43afb0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x4d1289, 2); 0x0043167d movzx edx, byte [rsp + 0x10] | edx = *((rsp + 0x10)); 0x00431682 test dl, 1 | | if ((dl & 1) != 0) { 0x00431685 je 0x431693 | 0x00431687 mov rsi, qword [rsp + 0x20] | rsi = *((rsp + 0x20)); 0x0043168c mov rdx, qword [rsp + 0x18] | rdx = *((rsp + 0x18)); 0x00431691 jmp 0x43169b | | } else { 0x00431693 shr rdx, 1 | rdx >>= 1; 0x00431696 lea rsi, [rsp + 0x11] | | } 0x0043169b mov rdi, rax | 0x0043169e call 0x43afb0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, rsp + 0x11, rdx); 0x004316a3 mov esi, 0x4f0e70 | 0x004316a8 mov edx, 1 | 0x004316ad mov rdi, rax | 0x004316b0 call 0x43afb0 | std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x4f0e70, 1); 0x004316b5 mov esi, 0x4d1a37 | esi = "EXP_JSON == json"; 0x004316ba mov edi, 1 | edi = 1; 0x004316bf mov edx, 0x31f | edx = 0x31f; 0x004316c4 call 0x422600 | (anonymousnamespace)::aSsErT(bool,char const*,int) (); 0x004316c9 movzx ebp, byte [rsp + 0x10] | ebp = *((rsp + 0x10)); 0x004316ce mov r14, qword [rsp + 0x18] | r14 = *((rsp + 0x18)); 0x004316d3 mov r12, qword [rsp + 0x20] | r12 = *((rsp + 0x20)); 0x004316d8 mov ebx, ebp | ebx = ebp; 0x004316da and bl, 1 | bl &= 1; 0x004316dd shr rbp, 1 | rbp >>= 1; | } | label_31: 0x004316e0 movabs rax, 0x2000000000000 | rax = 0x2000000000000; 0x004316ea mov qword [rsp + 0x58], rax | *((rsp + 0x58)) = rax; 0x004316ef lea rax, [rsp + 0x138] | rax = rsp + 0x138; 0x004316f7 mov qword [rsp + 0x60], rax | *((rsp + 0x60)) = rax; 0x004316fc inc r13 | r13++; 0x004316ff test bl, bl | | if (bl != 0) { 0x00431701 cmovne r13, r12 | r13 = r12; | } | if (bl != 0) { 0x00431705 cmovne rbp, r14 | | } 0x00431709 lea rdi, [rsp + 0x70] | 0x0043170e call 0x43cc00 | BloombergLP::baljsn::DatumDecoderOptions::DatumDecoderOptions() (rsp + 0x70); 0x00431713 lea rdi, [rsp + 0x90] | rdi = rsp + 0x90; 0x0043171b call 0x4048f0 | std::_1::basic_streambuf>::basic_streambuf() (); 0x00431720 mov qword [rsp + 0x90], 0x4d6270 | *((rsp + 0x90)) = sym.imp.std::__1::basic_streambuf_char__std::__1::char_traits_char___::basic_streambuf__; 0x0043172c mov qword [rsp + 0xd0], r13 | *((rsp + 0xd0)) = r13; 0x00431734 mov qword [rsp + 0xd8], rbp | *((rsp + 0xd8)) = rbp; 0x0043173c add rbp, r13 | rbp += r13; 0x0043173f mov qword [rsp + 0xa0], r13 | *((rsp + 0xa0)) = r13; 0x00431747 mov qword [rsp + 0xa8], r13 | *((rsp + 0xa8)) = r13; 0x0043174f mov qword [rsp + 0xb0], rbp | *((rsp + 0xb0)) = rbp; 0x00431757 lea rdi, [rsp + 0x50] | 0x0043175c lea rdx, [rsp + 0x90] | 0x00431764 lea rcx, [rsp + 0x70] | 0x00431769 xor esi, esi | 0x0043176b call 0x43cfd0 | eax = BloombergLP::baljsn::DatumUtil::decode(BloombergLP::bdld::ManagedDatum*,std::_1::basic_ostream>*,std::_1::basic_streambuf>*,BloombergLP::baljsn::DatumDecoderOptionsconst&) (rsp + 0x50, 0, rsp + 0x90, rsp + 0x70, r8, r9); 0x00431770 mov ebx, eax | ebx = eax; 0x00431772 lea rdi, [rsp + 0x90] | rdi = rsp + 0x90; 0x0043177a call 0x404630 | std::_1::basic_streambuf>::~basic_streambuf() (); 0x0043177f lea rdi, [rsp + 0x70] | rdi = rsp + 0x70; 0x00431784 call 0x43cc20 | BloombergLP::baljsn::DatumDecoderOptions::~DatumDecoderOptions() (); 0x00431789 test ebx, ebx | 0x0043178b lea r14, [rsp + 0x138] | r14 = rsp + 0x138; | if (ebx != 0) { 0x00431793 je 0x4317eb | 0x00431795 mov edi, 0x723630 | 0x0043179a mov esi, 0x4d0a25 | 0x0043179f mov edx, 6 | 0x004317a4 call 0x43afb0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (obj.std::__1::cout, 0x4d0a25, 6); 0x004317a9 mov esi, 0x4d1289 | 0x004317ae mov edx, 2 | 0x004317b3 mov rdi, rax | 0x004317b6 call 0x43afb0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x4d1289, 2); 0x004317bb mov rdi, rax | rdi = rax; 0x004317be mov esi, ebx | esi = ebx; 0x004317c0 call 0x404a00 | rax = std::_1::basic_ostream>::operator << (int) (); 0x004317c5 mov esi, 0x4f0e70 | 0x004317ca mov edx, 1 | 0x004317cf mov rdi, rax | 0x004317d2 call 0x43afb0 | std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x4f0e70, 1); 0x004317d7 mov esi, 0x4d0a20 | esi = "0 == result"; 0x004317dc mov edi, 1 | edi = 1; 0x004317e1 mov edx, 0x323 | edx = 0x323; 0x004317e6 call 0x422600 | (anonymousnamespace)::aSsErT(bool,char const*,int) (); | } 0x004317eb cmp word [rsp + 0x5e], 3 | | if (*((rsp + 0x5e)) != 3) { 0x004317f1 je 0x431853 | 0x004317f3 mov edi, 0x723630 | 0x004317f8 mov esi, 0x4d1bcf | 0x004317fd mov edx, 0x12 | 0x00431802 call 0x43afb0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (obj.std::__1::cout, "other->isBoolean()", 0x12); 0x00431807 mov esi, 0x4d1289 | 0x0043180c mov edx, 2 | 0x00431811 mov rdi, rax | 0x00431814 call 0x43afb0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x4d1289, 2); 0x00431819 xor esi, esi | esi = 0; 0x0043181b cmp word [rsp + 0x5e], 3 | 0x00431821 sete sil | sil = (*((rsp + 0x5e)) == 3) ? 1 : 0; 0x00431825 mov rdi, rax | rdi = rax; 0x00431828 call 0x404790 | rax = std::_1::basic_ostream>::operator << (bool) (); 0x0043182d mov esi, 0x4f0e70 | 0x00431832 mov edx, 1 | 0x00431837 mov rdi, rax | 0x0043183a call 0x43afb0 | std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x4f0e70, 1); 0x0043183f mov esi, 0x4d1bcf | esi = "other->isBoolean()"; 0x00431844 mov edi, 1 | edi = 1; 0x00431849 mov edx, 0x324 | edx = 0x324; 0x0043184e call 0x422600 | (anonymousnamespace)::aSsErT(bool,char const*,int) (); | } 0x00431853 cmp dword [rsp + 0x58], 0 | | if (*((rsp + 0x58)) != 0) { 0x00431858 je 0x4318fd | 0x0043185e mov edi, 0x723630 | 0x00431863 mov esi, 0x4d024b | 0x00431868 mov edx, 3 | 0x0043186d call 0x43afb0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (obj.std::__1::cout, 0x4d024b, 3); 0x00431872 mov esi, 0x4d1289 | 0x00431877 mov edx, 2 | 0x0043187c mov rdi, rax | 0x0043187f call 0x43afb0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x4d1289, 2); 0x00431884 mov rdi, rax | rdi = rax; 0x00431887 xor esi, esi | esi = 0; 0x00431889 call 0x404790 | rax = std::_1::basic_ostream>::operator << (bool) (); 0x0043188e mov esi, 0x4f0f33 | 0x00431893 mov edx, 1 | 0x00431898 mov rdi, rax | 0x0043189b call 0x43afb0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x4f0f33, 1); 0x004318a0 mov esi, 0x4d1be9 | 0x004318a5 mov edx, 0x13 | 0x004318aa mov rdi, rax | 0x004318ad call 0x43afb0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x4d1be9, 0x13); 0x004318b2 mov esi, 0x4d1289 | 0x004318b7 mov edx, 2 | 0x004318bc mov rdi, rax | 0x004318bf call 0x43afb0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x4d1289, 2); 0x004318c4 xor esi, esi | esi = 0; 0x004318c6 cmp dword [rsp + 0x58], 0 | 0x004318cb setne sil | sil = (*((rsp + 0x58)) != 0) ? 1 : 0; 0x004318cf mov rdi, rax | rdi = rax; 0x004318d2 call 0x404790 | rax = std::_1::basic_ostream>::operator << (bool) (); 0x004318d7 mov esi, 0x4f0e70 | 0x004318dc mov edx, 1 | 0x004318e1 mov rdi, rax | 0x004318e4 call 0x43afb0 | std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x4f0e70, 1); 0x004318e9 mov esi, 0x4d1be2 | esi = "obj == other->theBoolean()"; 0x004318ee mov edi, 1 | edi = 1; 0x004318f3 mov edx, 0x325 | edx = 0x325; 0x004318f8 call 0x422600 | (anonymousnamespace)::aSsErT(bool,char const*,int) (); | } 0x004318fd mov rsi, qword [rsp + 0x60] | 0x00431902 lea rdi, [rsp + 0x50] | 0x00431907 call 0x44a760 | BloombergLP::bdld::Datum::destroy(BloombergLP::bdld::Datumconst&,BloombergLP::bslma::Allocator*) (rsp + 0x50, *((rsp + 0x60))); 0x0043190c test byte [rsp + 0x10], 1 | | if ((*((rsp + 0x10)) & 1) != 0) { 0x00431911 je 0x43191d | 0x00431913 mov rdi, qword [rsp + 0x20] | rdi = *((rsp + 0x20)); 0x00431918 call 0x4046c0 | delete (); | } 0x0043191d mov rsi, qword [rsp + 0xf0] | 0x00431925 lea rdi, [rsp + 0xe0] | 0x0043192d call 0x44a760 | BloombergLP::bdld::Datum::destroy(BloombergLP::bdld::Datumconst&,BloombergLP::bslma::Allocator*) (rsp + 0xe0, *((rsp + 0xf0))); 0x00431932 test byte [rsp + 0x30], 1 | | /* Beware that this jump is a conditional jump. | * r2dec transformed it as a return, due being the | * last instruction. Please, check 'pdda' output | * for more hints. */ 0x00431937 je 0x431943 | return void (*0x431943)() (); | }