; assembly | /* r2dec pseudo code output */ | /* baljsn_encoder.t/none @ 0x4bb590 */ | #include | ; (fcn) method.BloombergLP::s_baltst::Sequence1.operator_BloombergLP::s_baltst::Sequence1_const_ () | int64_t method_BloombergLP::s_baltst::Sequence1_operator_BloombergLP::s_baltst::Sequence1_const_ (uint32_t arg2, uint32_t arg1) { | int64_t var_8h; | int64_t var_10h; | int64_t var_18h; | int64_t var_20h; | rsi = arg2; | rdi = arg1; | /* BloombergLP::s_baltst::Sequence1::operator=(BloombergLP::s_baltst::Sequence1 const&) */ 0x004bb590 push rbp | 0x004bb591 push r15 | 0x004bb593 push r14 | 0x004bb595 push r13 | 0x004bb597 push r12 | 0x004bb599 push rbx | 0x004bb59a sub rsp, 0x28 | 0x004bb59e mov r15, rdi | r15 = rdi; 0x004bb5a1 cmp rdi, rsi | | if (rdi == rsi) { 0x004bb5a4 je 0x4bb77a | goto label_2; | } 0x004bb5aa mov r14, rsi | r14 = rsi; 0x004bb5ad lea rdi, [r15 + 0x68] | rdi = r15 + 0x68; 0x004bb5b1 cmp byte [rsi + 0x1e8], 0 | 0x004bb5b8 mov al, byte [r15 + 0x1e8] | al = *((r15 + 0x1e8)); | if (*((rsi + 0x1e8)) != 0) { 0x004bb5bf je 0x4bb5d0 | 0x004bb5c1 lea rsi, [r14 + 0x68] | rsi = r14 + 0x68; 0x004bb5c5 test al, al | | if (al != 0) { 0x004bb5c7 je 0x4bb5f3 | 0x004bb5c9 call 0x4b92e0 | al = BloombergLP::s_baltst::Choice3::operator=(BloombergLP::s_baltst::Choice3const&) (rdi, rsi); 0x004bb5ce jmp 0x4bb63a | | } else { 0x004bb5d0 test al, al | | if (al == 0) { 0x004bb5d2 je 0x4bb63a | goto label_3; | } 0x004bb5d4 mov byte [r15 + 0x1e8], 0 | *((r15 + 0x1e8)) = 0; 0x004bb5dc mov eax, dword [r15 + 0x1d8] | eax = *((r15 + 0x1d8)); 0x004bb5e3 cmp eax, 2 | | if (eax != 2) { 0x004bb5e6 je 0x4bb609 | 0x004bb5e8 test eax, eax | | if (eax != 0) { 0x004bb5ea jne 0x4bb62f | goto label_4; | } 0x004bb5ec call 0x4c4be0 | BloombergLP::s_baltst::Sequence6::~Sequence6() (rdi); 0x004bb5f1 jmp 0x4bb62f | | } else { 0x004bb5f3 mov rdx, qword [r15 + 0x1f0] | 0x004bb5fa call 0x4b8f60 | BloombergLP::s_baltst::Choice3::Choice3(BloombergLP::s_baltst::Choice3const&,BloombergLP::bslma::Allocator*) (rdi, rsi, *((r15 + 0x1f0))); 0x004bb5ff mov byte [r15 + 0x1e8], 1 | *((r15 + 0x1e8)) = 1; 0x004bb607 jmp 0x4bb63a | goto label_3; | } 0x004bb609 cmp qword [r15 + 0x88], 0x17 | | if (*((r15 + 0x88)) != 0x17) { 0x004bb611 je 0x4bb624 | 0x004bb613 mov rsi, qword [r15 + 0x68] | rsi = *((r15 + 0x68)); 0x004bb617 mov rdi, qword [r15 + 0x90] | rdi = *((r15 + 0x90)); 0x004bb61e mov rax, qword [rdi] | rax = *(rdi); 0x004bb621 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x004bb624 mov qword [r15 + 0x80], 0xffffffffffffffff | *((r15 + 0x80)) = 0xffffffffffffffff; | } | label_4: 0x004bb62f mov dword [r15 + 0x1d8], 0xffffffff | *((r15 + 0x1d8)) = 0xffffffff; | } | label_3: 0x004bb63a lea r12, [r15 + 0x48] | r12 = r15 + 0x48; 0x004bb63e mov rbx, qword [r15 + 0x48] | rbx = *((r15 + 0x48)); 0x004bb642 mov r13, qword [r15 + 0x50] | r13 = *((r15 + 0x50)); 0x004bb646 cmp r13, rbx | | if (r13 != rbx) { 0x004bb649 je 0x4bb66f | 0x004bb64b mov rax, qword [r15 + 0x60] | rax = *((r15 + 0x60)); 0x004bb64f mov qword [rsp + 0x20], rax | *((rsp + 0x20)) = rax; 0x004bb654 lea rdx, [rsp + 0x20] | rdx = rsp + 0x20; 0x004bb659 mov rdi, rbx | 0x004bb65c mov rsi, r13 | 0x004bb65f call 0x4c9d60 | voidBloombergLP::bslalg::ArrayDestructionPrimitives::destroy>(BloombergLP::s_baltst::Choice1*,BloombergLP::s_baltst::Choice1*,bsl::allocator) (rbx, r13); 0x004bb664 sub rbx, r13 | rbx -= r13; 0x004bb667 add qword [r15 + 0x50], rbx | *((r15 + 0x50)) += rbx; 0x004bb66b mov r13, qword [r15 + 0x48] | r13 = *((r15 + 0x48)); | } 0x004bb66f mov rdx, qword [r14 + 0x48] | 0x004bb673 mov rcx, qword [r14 + 0x50] | 0x004bb677 lea r8, [rsp + 8] | r8 = rsp + 8; 0x004bb67c mov rdi, r12 | 0x004bb67f mov rsi, r13 | 0x004bb682 call 0x4ca190 | voidbsl::vector>::privateInsert(BloombergLP::s_baltst::Choice1const*,BloombergLP::s_baltst::Choice1const*,BloombergLP::s_baltst::Choice1const*,std::_1::forward_iterator_tagconst&) (r12, r13, *((r14 + 0x48)), *((r14 + 0x50))); 0x004bb687 mov rsi, qword [r14 + 0x1f8] | 0x004bb68e mov rdi, qword [r15 + 0x1f8] | 0x004bb695 call 0x4b7ca0 | BloombergLP::s_baltst::Choice2::operator=(BloombergLP::s_baltst::Choice2const&) (*((r15 + 0x1f8)), *((r14 + 0x1f8))); 0x004bb69a lea r12, [r15 + 8] | r12 = r15 + 8; 0x004bb69e mov rbp, qword [r15 + 8] | rbp = *((r15 + 8)); 0x004bb6a2 mov r13, qword [r15 + 0x10] | r13 = *((r15 + 0x10)); 0x004bb6a6 cmp r13, rbp | | if (r13 == rbp) { 0x004bb6a9 je 0x4bb6cc | goto label_5; | } 0x004bb6ab mov rbx, rbp | rbx = rbp; 0x004bb6ae nop | | do { 0x004bb6b0 mov rdi, rbx | 0x004bb6b3 call 0x4c9b90 | BloombergLP::bslstl::Optional_DataImp::reset() (rbx); 0x004bb6b8 add rbx, 0x28 | rbx += 0x28; 0x004bb6bc cmp r13, rbx | 0x004bb6bf jne 0x4bb6b0 | | } while (r13 != rbx); 0x004bb6c1 sub rbp, r13 | rbp -= r13; 0x004bb6c4 add qword [r15 + 0x10], rbp | *((r15 + 0x10)) += rbp; 0x004bb6c8 mov r13, qword [r15 + 8] | r13 = *((r15 + 8)); | label_5: 0x004bb6cc mov rdx, qword [r14 + 8] | 0x004bb6d0 mov rcx, qword [r14 + 0x10] | 0x004bb6d4 lea r8, [rsp + 0x10] | r8 = rsp + 0x10; 0x004bb6d9 mov rdi, r12 | 0x004bb6dc mov rsi, r13 | 0x004bb6df call 0x4ca690 | voidbsl::vector,bsl::allocator>>::privateInsertconst*>(BloombergLP::bdlb::NullableValueconst*,BloombergLP::bdlb::NullableValueconst*,BloombergLP::bdlb::NullableValueconst*,std::_1::forward_iterator_tagconst&) (r12, r13, *((r14 + 8)), *((r14 + 0x10))); 0x004bb6e4 mov r13, qword [r15 + 0x28] | r13 = *((r15 + 0x28)); 0x004bb6e8 mov r12, qword [r15 + 0x30] | r12 = *((r15 + 0x30)); 0x004bb6ec cmp r12, r13 | | if (r12 == r13) { 0x004bb6ef je 0x4bb761 | goto label_6; | } 0x004bb6f1 mov rbx, r13 | rbx = r13; 0x004bb6f4 jmp 0x4bb71e | goto label_7; | label_1: 0x004bb700 mov qword [rbx + 0x18], 0xffffffffffffffff | *((rbx + 0x18)) = 0xffffffffffffffff; | do { | label_0: 0x004bb708 mov dword [rbx + 0x170], 0xffffffff | *((rbx + 0x170)) = 0xffffffff; 0x004bb712 add rbx, 0x180 | rbx += 0x180; 0x004bb719 cmp r12, rbx | | if (r12 == rbx) { 0x004bb71c je 0x4bb756 | goto label_8; | } | label_7: 0x004bb71e mov eax, dword [rbx + 0x170] | eax = *((rbx + 0x170)); 0x004bb724 cmp eax, 2 | | if (eax == 2) { 0x004bb727 je 0x4bb740 | goto label_9; | } 0x004bb729 test eax, eax | 0x004bb72b jne 0x4bb708 | | } while (eax != 0); 0x004bb72d mov rdi, rbx | 0x004bb730 call 0x4c4be0 | BloombergLP::s_baltst::Sequence6::~Sequence6() (rbx); 0x004bb735 jmp 0x4bb708 | goto label_0; | label_9: 0x004bb740 cmp qword [rbx + 0x20], 0x17 | | if (*((rbx + 0x20)) == 0x17) { 0x004bb745 je 0x4bb700 | goto label_1; | } 0x004bb747 mov rsi, qword [rbx] | rsi = *(rbx); 0x004bb74a mov rdi, qword [rbx + 0x28] | rdi = *((rbx + 0x28)); 0x004bb74e mov rax, qword [rdi] | rax = *(rdi); 0x004bb751 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); 0x004bb754 jmp 0x4bb700 | goto label_1; | label_8: 0x004bb756 sub r13, r12 | r13 -= r12; 0x004bb759 add qword [r15 + 0x30], r13 | *((r15 + 0x30)) += r13; 0x004bb75d mov r12, qword [r15 + 0x28] | r12 = *((r15 + 0x28)); | label_6: 0x004bb761 lea rdi, [r15 + 0x28] | 0x004bb765 mov rdx, qword [r14 + 0x28] | 0x004bb769 mov rcx, qword [r14 + 0x30] | 0x004bb76d lea r8, [rsp + 0x18] | r8 = rsp + 0x18; 0x004bb772 mov rsi, r12 | 0x004bb775 call 0x4cabb0 | voidbsl::vector>::privateInsert(BloombergLP::s_baltst::Choice3const*,BloombergLP::s_baltst::Choice3const*,BloombergLP::s_baltst::Choice3const*,std::_1::forward_iterator_tagconst&) (r15 + 0x28, r12, *((r14 + 0x28)), *((r14 + 0x30))); | label_2: 0x004bb77a mov rax, r15 | rax = r15; 0x004bb77d add rsp, 0x28 | 0x004bb781 pop rbx | 0x004bb782 pop r12 | 0x004bb784 pop r13 | 0x004bb786 pop r14 | 0x004bb788 pop r15 | 0x004bb78a pop rbp | 0x004bb78b ret | return rax; | }