; assembly | /* r2dec pseudo code output */ | /* baljsn_encoder.t/none @ 0x4baad0 */ | #include | ; (fcn) method.BloombergLP::s_baltst::Sequence1.Sequence1_BloombergLP::s_baltst::Sequence1_const__BloombergLP::bslma::Allocator_ () | int64_t method_BloombergLP::s_baltst::Sequence1_Sequence1_BloombergLP::s_baltst::Sequence1_const_BloombergLP::bslma::Allocator_ (int64_t arg3, int64_t arg2, int64_t arg1) { | int64_t var_10h; | int64_t var_18h; | int64_t var_20h; | rdx = arg3; | rsi = arg2; | rdi = arg1; | /* BloombergLP::s_baltst::Sequence1::Sequence1(BloombergLP::s_baltst::Sequence1 const&, BloombergLP::bslma::Allocator*) */ 0x004baad0 push rbp | 0x004baad1 push r15 | 0x004baad3 push r14 | 0x004baad5 push r13 | 0x004baad7 push r12 | 0x004baad9 push rbx | 0x004baada sub rsp, 0x28 | 0x004baade mov rbp, rdx | 0x004baae1 mov rbx, rsi | rbx = rsi; 0x004baae4 mov r12, rdi | r12 = rdi; 0x004baae7 test rdx, rdx | | if (rdx != 0) { 0x004baaea je 0x4baaf5 | 0x004baaec mov qword [r12], rbp | *(r12) = rbp; 0x004baaf0 mov rax, rbp | rax = rbp; 0x004baaf3 jmp 0x4bab1b | | } else { 0x004baaf5 mov rax, qword [rip + 0x4125ac] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x004baafc test rax, rax | | if (rax == 0) { 0x004baaff jne 0x4bab06 | 0x004bab01 call 0x518150 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); | } 0x004bab06 mov qword [r12], rax | *(r12) = rax; 0x004bab0a mov rax, qword [rip + 0x412597] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x004bab11 test rax, rax | | if (rax != 0) { 0x004bab14 jne 0x4bab1b | goto label_0; | } 0x004bab16 call 0x518150 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); | } | label_0: 0x004bab1b lea rdi, [r12 + 8] | 0x004bab20 lea rsi, [rbx + 8] | 0x004bab24 mov qword [rsp + 0x10], rax | *((rsp + 0x10)) = rax; 0x004bab29 lea rdx, [rsp + 0x10] | 0x004bab2e mov qword [rsp + 0x20], rdi | *((rsp + 0x20)) = rdi; 0x004bab33 call 0x4c58e0 | bsl::vector,bsl::allocator>>::vector(bsl::vector,bsl::allocator>>const&,bsl::allocator>const&) (r12 + 8, rbx + 8, rsp + 0x10); 0x004bab38 mov rax, rbp | rax = rbp; 0x004bab3b test rbp, rbp | | if (rbp == 0) { 0x004bab3e jne 0x4bab51 | 0x004bab40 mov rax, qword [rip + 0x412561] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x004bab47 test rax, rax | | if (rax != 0) { 0x004bab4a jne 0x4bab51 | goto label_1; | } 0x004bab4c call 0x518150 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); | } | label_1: 0x004bab51 lea rdi, [r12 + 0x28] | 0x004bab56 mov qword [rsp + 0x10], rax | *((rsp + 0x10)) = rax; 0x004bab5b lea rsi, [rbx + 0x28] | 0x004bab5f lea rdx, [rsp + 0x10] | 0x004bab64 mov qword [rsp + 0x18], rdi | *((rsp + 0x18)) = rdi; 0x004bab69 call 0x4c5990 | bsl::vector>::vector(bsl::vector>const&,bsl::allocatorconst&) (r12 + 0x28, rbx + 0x28, rsp + 0x10); 0x004bab6e mov rax, rbp | rax = rbp; 0x004bab71 test rbp, rbp | | if (rbp == 0) { 0x004bab74 jne 0x4bab87 | 0x004bab76 mov rax, qword [rip + 0x41252b] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x004bab7d test rax, rax | | if (rax != 0) { 0x004bab80 jne 0x4bab87 | goto label_2; | } 0x004bab82 call 0x518150 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); | } | label_2: 0x004bab87 lea r13, [r12 + 0x48] | r13 = r12 + 0x48; 0x004bab8c mov qword [rsp + 0x10], rax | *((rsp + 0x10)) = rax; 0x004bab91 lea rsi, [rbx + 0x48] | 0x004bab95 lea rdx, [rsp + 0x10] | 0x004bab9a mov rdi, r13 | 0x004bab9d call 0x4c5b00 | bsl::vector>::vector(bsl::vector>const&,bsl::allocatorconst&) (r13, rbx + 0x48, rsp + 0x10); 0x004baba2 test rbp, rbp | | if (rbp == 0) { 0x004baba5 jne 0x4babbb | 0x004baba7 mov rbp, qword [rip + 0x4124fa] | rbp = BloombergLP::bslma::Default::s_defaultAllocator; 0x004babae test rbp, rbp | | if (rbp != 0) { 0x004babb1 jne 0x4babbb | goto label_3; | } 0x004babb3 call 0x518150 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); 0x004babb8 mov rbp, rax | | } | label_3: 0x004babbb lea r14, [r12 + 0x68] | r14 = r12 + 0x68; 0x004babc0 mov byte [r12 + 0x1e8], 0 | *((r12 + 0x1e8)) = 0; 0x004babc9 mov qword [r12 + 0x1f0], rbp | *((r12 + 0x1f0)) = rbp; 0x004babd1 cmp byte [rbx + 0x1e8], 0 | | if (*((rbx + 0x1e8)) != 0) { 0x004babd8 je 0x4babf2 | 0x004babda lea rsi, [rbx + 0x68] | 0x004babde mov rdi, r14 | 0x004babe1 mov rdx, rbp | 0x004babe4 call 0x4b8f60 | BloombergLP::s_baltst::Choice3::Choice3(BloombergLP::s_baltst::Choice3const&,BloombergLP::bslma::Allocator*) (r14, rbx + 0x68, rbp); 0x004babe9 mov byte [r12 + 0x1e8], 1 | *((r12 + 0x1e8)) = 1; | } 0x004babf2 mov rbp, qword [r12] | rbp = *(r12); 0x004babf6 mov rax, qword [rbp] | rax = *(rbp); 0x004babfa mov esi, 0x40 | esi = 0x40; 0x004babff mov rdi, rbp | rdi = rbp; 0x004bac02 call qword [rax + 0x10] | rax = uint64_t (*rax + 0x10)() (); 0x004bac05 mov r15, rax | r15 = rax; 0x004bac08 mov rsi, qword [rbx + 0x1f8] | 0x004bac0f mov rdx, qword [r12] | 0x004bac13 mov rdi, rax | 0x004bac16 call 0x4b80d0 | BloombergLP::s_baltst::Choice2::Choice2(BloombergLP::s_baltst::Choice2const&,BloombergLP::bslma::Allocator*) (rax, *((rbx + 0x1f8)), *(r12)); 0x004bac1b mov qword [r12 + 0x1f8], r15 | *((r12 + 0x1f8)) = r15; 0x004bac23 add rsp, 0x28 | 0x004bac27 pop rbx | 0x004bac28 pop r12 | 0x004bac2a pop r13 | 0x004bac2c pop r14 | 0x004bac2e pop r15 | 0x004bac30 pop rbp | 0x004bac31 ret | return rax; | }