; assembly | /* r2dec pseudo code output */ | /* baljsn_encoder.t/none @ 0x4baff0 */ | #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_10h; | 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*) */ 0x004baff0 push rbp | 0x004baff1 push r15 | 0x004baff3 push r14 | 0x004baff5 push r13 | 0x004baff7 push r12 | 0x004baff9 push rbx | 0x004baffa sub rsp, 0x28 | 0x004baffe mov rbp, rdx | 0x004bb001 mov rbx, rsi | rbx = rsi; 0x004bb004 mov r12, rdi | r12 = rdi; 0x004bb007 test rdx, rdx | | if (rdx != 0) { 0x004bb00a je 0x4bb015 | 0x004bb00c mov qword [r12], rbp | *(r12) = rbp; 0x004bb010 mov rax, rbp | rax = rbp; 0x004bb013 jmp 0x4bb03b | | } else { 0x004bb015 mov rax, qword [rip + 0x41208c] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x004bb01c test rax, rax | | if (rax == 0) { 0x004bb01f jne 0x4bb026 | 0x004bb021 call 0x518150 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); | } 0x004bb026 mov qword [r12], rax | *(r12) = rax; 0x004bb02a mov rax, qword [rip + 0x412077] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x004bb031 test rax, rax | | if (rax != 0) { 0x004bb034 jne 0x4bb03b | goto label_0; | } 0x004bb036 call 0x518150 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); | } | label_0: 0x004bb03b lea r15, [r12 + 8] | r15 = r12 + 8; 0x004bb040 lea rsi, [rbx + 8] | rsi = rbx + 8; 0x004bb044 mov qword [rsp + 0x18], rax | *((rsp + 0x18)) = rax; 0x004bb049 lea rdx, [rsp + 0x18] | rdx = rsp + 0x18; 0x004bb04e mov rdi, r15 | rdi = r15; 0x004bb051 call 0x4c5bb0 | bsl::vector,bsl::allocator>>::vector(bsl::vector,bsl::allocator>>&&,bsl::allocator>const&) (); 0x004bb056 mov rax, rbp | rax = rbp; 0x004bb059 test rbp, rbp | | if (rbp == 0) { 0x004bb05c jne 0x4bb06f | 0x004bb05e mov rax, qword [rip + 0x412043] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x004bb065 test rax, rax | | if (rax != 0) { 0x004bb068 jne 0x4bb06f | goto label_1; | } 0x004bb06a call 0x518150 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); | } | label_1: 0x004bb06f lea rdi, [r12 + 0x28] | 0x004bb074 lea rsi, [rbx + 0x28] | 0x004bb078 mov qword [rsp + 0x18], rax | *((rsp + 0x18)) = rax; 0x004bb07d lea rdx, [rsp + 0x18] | 0x004bb082 mov qword [rsp + 0x20], rdi | *((rsp + 0x20)) = rdi; 0x004bb087 call 0x4c5c90 | bsl::vector>::vector(bsl::vector>&&,bsl::allocatorconst&) (r12 + 0x28, rbx + 0x28, rsp + 0x18); 0x004bb08c mov rax, rbp | rax = rbp; 0x004bb08f test rbp, rbp | | if (rbp == 0) { 0x004bb092 jne 0x4bb0a5 | 0x004bb094 mov rax, qword [rip + 0x41200d] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x004bb09b test rax, rax | | if (rax != 0) { 0x004bb09e jne 0x4bb0a5 | goto label_2; | } 0x004bb0a0 call 0x518150 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); | } | label_2: 0x004bb0a5 lea r13, [r12 + 0x48] | r13 = r12 + 0x48; 0x004bb0aa lea rsi, [rbx + 0x48] | 0x004bb0ae mov qword [rsp + 0x18], rax | *((rsp + 0x18)) = rax; 0x004bb0b3 lea rdx, [rsp + 0x18] | 0x004bb0b8 mov rdi, r13 | 0x004bb0bb call 0x4c5e10 | bsl::vector>::vector(bsl::vector>&&,bsl::allocatorconst&) (r13, rbx + 0x48, rsp + 0x18); 0x004bb0c0 test rbp, rbp | | if (rbp == 0) { 0x004bb0c3 jne 0x4bb0d9 | 0x004bb0c5 mov rbp, qword [rip + 0x411fdc] | rbp = BloombergLP::bslma::Default::s_defaultAllocator; 0x004bb0cc test rbp, rbp | | if (rbp != 0) { 0x004bb0cf jne 0x4bb0d9 | goto label_3; | } 0x004bb0d1 call 0x518150 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); 0x004bb0d6 mov rbp, rax | | } | label_3: 0x004bb0d9 lea r14, [r12 + 0x68] | r14 = r12 + 0x68; 0x004bb0de mov byte [r12 + 0x1e8], 0 | *((r12 + 0x1e8)) = 0; 0x004bb0e7 mov qword [r12 + 0x1f0], rbp | *((r12 + 0x1f0)) = rbp; 0x004bb0ef cmp byte [rbx + 0x1e8], 0 | | if (*((rbx + 0x1e8)) != 0) { 0x004bb0f6 je 0x4bb110 | 0x004bb0f8 lea rsi, [rbx + 0x68] | 0x004bb0fc mov rdi, r14 | 0x004bb0ff mov rdx, rbp | 0x004bb102 call 0x4b91a0 | BloombergLP::s_baltst::Choice3::Choice3(BloombergLP::s_baltst::Choice3&&,BloombergLP::bslma::Allocator*) (r14, rbx + 0x68, rbp); 0x004bb107 mov byte [r12 + 0x1e8], 1 | *((r12 + 0x1e8)) = 1; | } 0x004bb110 mov rbp, qword [r12] | rbp = *(r12); 0x004bb114 cmp rbp, qword [rbx] | | if (rbp != *(rbx)) { 0x004bb117 je 0x4bb14d | 0x004bb119 mov qword [rsp + 0x10], r15 | *((rsp + 0x10)) = r15; 0x004bb11e mov rax, qword [rbp] | rax = *(rbp); 0x004bb122 mov esi, 0x40 | esi = 0x40; 0x004bb127 mov rdi, rbp | rdi = rbp; 0x004bb12a call qword [rax + 0x10] | rax = uint64_t (*rax + 0x10)() (); 0x004bb12d mov r15, rax | r15 = rax; 0x004bb130 mov rsi, qword [rbx + 0x1f8] | 0x004bb137 mov rdx, qword [r12] | 0x004bb13b mov rdi, rax | 0x004bb13e call 0x4b8340 | BloombergLP::s_baltst::Choice2::Choice2(BloombergLP::s_baltst::Choice2&&,BloombergLP::bslma::Allocator*) (rax, *((rbx + 0x1f8)), *(r12)); 0x004bb143 mov qword [r12 + 0x1f8], r15 | *((r12 + 0x1f8)) = r15; 0x004bb14b jmp 0x4bb167 | | } else { 0x004bb14d mov rax, qword [rbx + 0x1f8] | rax = *((rbx + 0x1f8)); 0x004bb154 mov qword [r12 + 0x1f8], rax | *((r12 + 0x1f8)) = rax; 0x004bb15c mov qword [rbx + 0x1f8], 0 | *((rbx + 0x1f8)) = 0; | } 0x004bb167 add rsp, 0x28 | 0x004bb16b pop rbx | 0x004bb16c pop r12 | 0x004bb16e pop r13 | 0x004bb170 pop r14 | 0x004bb172 pop r15 | 0x004bb174 pop rbp | 0x004bb175 ret | return rax; | }