; assembly | /* r2dec pseudo code output */ | /* baljsn_encoder.t/assume @ 0x4badd0 */ | #include | ; (fcn) method.BloombergLP::s_baltst::Sequence1.Sequence1_BloombergLP::s_baltst::Sequence1__BloombergLP::bslma::Allocator_ () | int64_t method_BloombergLP::s_baltst::Sequence1_Sequence1_BloombergLP::s_baltst::Sequence1_BloombergLP::bslma::Allocator_ (int64_t arg3, int64_t arg2, int64_t arg1) { | int64_t var_8h; | int64_t var_18h; | int64_t var_20h; | rdx = arg3; | rsi = arg2; | rdi = arg1; | /* BloombergLP::s_baltst::Sequence1::Sequence1(BloombergLP::s_baltst::Sequence1&&, BloombergLP::bslma::Allocator*) */ 0x004badd0 push rbp | 0x004badd1 push r15 | 0x004badd3 push r14 | 0x004badd5 push r13 | 0x004badd7 push r12 | 0x004badd9 push rbx | 0x004badda sub rsp, 0x28 | 0x004badde mov rbp, rdx | 0x004bade1 mov rbx, rsi | rbx = rsi; 0x004bade4 mov r12, rdi | r12 = rdi; 0x004bade7 test rdx, rdx | | if (rdx != 0) { 0x004badea je 0x4badf5 | 0x004badec mov qword [r12], rbp | *(r12) = rbp; 0x004badf0 mov rax, rbp | rax = rbp; 0x004badf3 jmp 0x4bae1b | | } else { 0x004badf5 mov rax, qword [rip + 0x4122ac] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x004badfc test rax, rax | | if (rax == 0) { 0x004badff jne 0x4bae06 | 0x004bae01 call 0x517520 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); | } 0x004bae06 mov qword [r12], rax | *(r12) = rax; 0x004bae0a mov rax, qword [rip + 0x412297] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x004bae11 test rax, rax | | if (rax != 0) { 0x004bae14 jne 0x4bae1b | goto label_0; | } 0x004bae16 call 0x517520 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); | } | label_0: 0x004bae1b lea r15, [r12 + 8] | r15 = r12 + 8; 0x004bae20 lea rsi, [rbx + 8] | rsi = rbx + 8; 0x004bae24 mov qword [rsp + 8], rax | *((rsp + 8)) = rax; 0x004bae29 lea rdx, [rsp + 8] | rdx = rsp + 8; 0x004bae2e mov rdi, r15 | rdi = r15; 0x004bae31 call 0x4c5880 | bsl::vector,bsl::allocator>>::vector(bsl::vector,bsl::allocator>>&&,bsl::allocator>const&) (); 0x004bae36 mov rax, rbp | rax = rbp; 0x004bae39 test rbp, rbp | | if (rbp == 0) { 0x004bae3c jne 0x4bae4f | 0x004bae3e mov rax, qword [rip + 0x412263] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x004bae45 test rax, rax | | if (rax != 0) { 0x004bae48 jne 0x4bae4f | goto label_1; | } 0x004bae4a call 0x517520 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); | } | label_1: 0x004bae4f lea rdi, [r12 + 0x28] | 0x004bae54 lea rsi, [rbx + 0x28] | 0x004bae58 mov qword [rsp + 8], rax | *((rsp + 8)) = rax; 0x004bae5d lea rdx, [rsp + 8] | 0x004bae62 mov qword [rsp + 0x20], rdi | *((rsp + 0x20)) = rdi; 0x004bae67 call 0x4c5960 | bsl::vector>::vector(bsl::vector>&&,bsl::allocatorconst&) (r12 + 0x28, rbx + 0x28, rsp + 8); 0x004bae6c mov rax, rbp | rax = rbp; 0x004bae6f test rbp, rbp | | if (rbp == 0) { 0x004bae72 jne 0x4bae85 | 0x004bae74 mov rax, qword [rip + 0x41222d] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x004bae7b test rax, rax | | if (rax != 0) { 0x004bae7e jne 0x4bae85 | goto label_2; | } 0x004bae80 call 0x517520 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); | } | label_2: 0x004bae85 lea r13, [r12 + 0x48] | r13 = r12 + 0x48; 0x004bae8a lea rsi, [rbx + 0x48] | 0x004bae8e mov qword [rsp + 8], rax | *((rsp + 8)) = rax; 0x004bae93 lea rdx, [rsp + 8] | 0x004bae98 mov rdi, r13 | 0x004bae9b call 0x4c5a40 | bsl::vector>::vector(bsl::vector>&&,bsl::allocatorconst&) (r13, rbx + 0x48, rsp + 8); 0x004baea0 test rbp, rbp | | if (rbp == 0) { 0x004baea3 jne 0x4baeb9 | 0x004baea5 mov rbp, qword [rip + 0x4121fc] | rbp = BloombergLP::bslma::Default::s_defaultAllocator; 0x004baeac test rbp, rbp | | if (rbp != 0) { 0x004baeaf jne 0x4baeb9 | goto label_3; | } 0x004baeb1 call 0x517520 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); 0x004baeb6 mov rbp, rax | | } | label_3: 0x004baeb9 lea r14, [r12 + 0x68] | r14 = r12 + 0x68; 0x004baebe mov byte [r12 + 0x1e8], 0 | *((r12 + 0x1e8)) = 0; 0x004baec7 mov qword [r12 + 0x1f0], rbp | *((r12 + 0x1f0)) = rbp; 0x004baecf cmp byte [rbx + 0x1e8], 0 | | if (*((rbx + 0x1e8)) != 0) { 0x004baed6 je 0x4baef0 | 0x004baed8 lea rsi, [rbx + 0x68] | 0x004baedc mov rdi, r14 | 0x004baedf mov rdx, rbp | 0x004baee2 call 0x4b8f00 | BloombergLP::s_baltst::Choice3::Choice3(BloombergLP::s_baltst::Choice3&&,BloombergLP::bslma::Allocator*) (r14, rbx + 0x68, rbp); 0x004baee7 mov byte [r12 + 0x1e8], 1 | *((r12 + 0x1e8)) = 1; | } 0x004baef0 mov rbp, qword [r12] | rbp = *(r12); 0x004baef4 cmp rbp, qword [rbx] | | if (rbp != *(rbx)) { 0x004baef7 je 0x4baf2d | 0x004baef9 mov qword [rsp + 0x18], r15 | *((rsp + 0x18)) = r15; 0x004baefe mov rax, qword [rbp] | rax = *(rbp); 0x004baf02 mov esi, 0x40 | esi = 0x40; 0x004baf07 mov rdi, rbp | rdi = rbp; 0x004baf0a call qword [rax + 0x10] | rax = uint64_t (*rax + 0x10)() (); 0x004baf0d mov r15, rax | r15 = rax; 0x004baf10 mov rsi, qword [rbx + 0x1f8] | 0x004baf17 mov rdx, qword [r12] | 0x004baf1b mov rdi, rax | 0x004baf1e call 0x4b8090 | BloombergLP::s_baltst::Choice2::Choice2(BloombergLP::s_baltst::Choice2&&,BloombergLP::bslma::Allocator*) (rax, *((rbx + 0x1f8)), *(r12)); 0x004baf23 mov qword [r12 + 0x1f8], r15 | *((r12 + 0x1f8)) = r15; 0x004baf2b jmp 0x4baf47 | | } else { 0x004baf2d mov rax, qword [rbx + 0x1f8] | rax = *((rbx + 0x1f8)); 0x004baf34 mov qword [r12 + 0x1f8], rax | *((r12 + 0x1f8)) = rax; 0x004baf3c mov qword [rbx + 0x1f8], 0 | *((rbx + 0x1f8)) = 0; | } 0x004baf47 add rsp, 0x28 | 0x004baf4b pop rbx | 0x004baf4c pop r12 | 0x004baf4e pop r13 | 0x004baf50 pop r14 | 0x004baf52 pop r15 | 0x004baf54 pop rbp | 0x004baf55 ret | return rax; | }