; assembly | /* r2dec pseudo code output */ | /* balb_testmessages.t/none @ 0x40fb10 */ | #include | ; (fcn) method.BloombergLP::balb::Sequence1.operator_BloombergLP::balb::Sequence1_const_ () | int64_t method_BloombergLP::balb::Sequence1_operator_BloombergLP::balb::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::balb::Sequence1::operator=(BloombergLP::balb::Sequence1 const&) */ 0x0040fb10 push rbp | 0x0040fb11 push r15 | 0x0040fb13 push r14 | 0x0040fb15 push r13 | 0x0040fb17 push r12 | 0x0040fb19 push rbx | 0x0040fb1a sub rsp, 0x28 | 0x0040fb1e mov r15, rdi | r15 = rdi; 0x0040fb21 cmp rdi, rsi | | if (rdi == rsi) { 0x0040fb24 je 0x40fcfa | goto label_2; | } 0x0040fb2a mov r14, rsi | r14 = rsi; 0x0040fb2d lea rdi, [r15 + 0x68] | rdi = r15 + 0x68; 0x0040fb31 cmp byte [rsi + 0x1e8], 0 | 0x0040fb38 mov al, byte [r15 + 0x1e8] | al = *((r15 + 0x1e8)); | if (*((rsi + 0x1e8)) != 0) { 0x0040fb3f je 0x40fb50 | 0x0040fb41 lea rsi, [r14 + 0x68] | rsi = r14 + 0x68; 0x0040fb45 test al, al | | if (al != 0) { 0x0040fb47 je 0x40fb73 | 0x0040fb49 call 0x40a210 | al = BloombergLP::balb::Choice3::operator=(BloombergLP::balb::Choice3const&) (rdi, rsi); 0x0040fb4e jmp 0x40fbba | | } else { 0x0040fb50 test al, al | | if (al == 0) { 0x0040fb52 je 0x40fbba | goto label_3; | } 0x0040fb54 mov byte [r15 + 0x1e8], 0 | *((r15 + 0x1e8)) = 0; 0x0040fb5c mov eax, dword [r15 + 0x1d8] | eax = *((r15 + 0x1d8)); 0x0040fb63 cmp eax, 2 | | if (eax != 2) { 0x0040fb66 je 0x40fb89 | 0x0040fb68 test eax, eax | | if (eax != 0) { 0x0040fb6a jne 0x40fbaf | goto label_4; | } 0x0040fb6c call 0x4093b0 | BloombergLP::balb::Sequence6::~Sequence6() (rdi); 0x0040fb71 jmp 0x40fbaf | | } else { 0x0040fb73 mov rdx, qword [r15 + 0x1f0] | 0x0040fb7a call 0x40a0f0 | BloombergLP::balb::Choice3::Choice3(BloombergLP::balb::Choice3const&,BloombergLP::bslma::Allocator*) (rdi, rsi, *((r15 + 0x1f0))); 0x0040fb7f mov byte [r15 + 0x1e8], 1 | *((r15 + 0x1e8)) = 1; 0x0040fb87 jmp 0x40fbba | goto label_3; | } 0x0040fb89 cmp qword [r15 + 0x88], 0x17 | | if (*((r15 + 0x88)) != 0x17) { 0x0040fb91 je 0x40fba4 | 0x0040fb93 mov rsi, qword [r15 + 0x68] | rsi = *((r15 + 0x68)); 0x0040fb97 mov rdi, qword [r15 + 0x90] | rdi = *((r15 + 0x90)); 0x0040fb9e mov rax, qword [rdi] | rax = *(rdi); 0x0040fba1 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x0040fba4 mov qword [r15 + 0x80], 0xffffffffffffffff | *((r15 + 0x80)) = 0xffffffffffffffff; | } | label_4: 0x0040fbaf mov dword [r15 + 0x1d8], 0xffffffff | *((r15 + 0x1d8)) = 0xffffffff; | } | label_3: 0x0040fbba lea r12, [r15 + 0x48] | r12 = r15 + 0x48; 0x0040fbbe mov rbx, qword [r15 + 0x48] | rbx = *((r15 + 0x48)); 0x0040fbc2 mov r13, qword [r15 + 0x50] | r13 = *((r15 + 0x50)); 0x0040fbc6 cmp r13, rbx | | if (r13 != rbx) { 0x0040fbc9 je 0x40fbef | 0x0040fbcb mov rax, qword [r15 + 0x60] | rax = *((r15 + 0x60)); 0x0040fbcf mov qword [rsp + 0x20], rax | *((rsp + 0x20)) = rax; 0x0040fbd4 lea rdx, [rsp + 0x20] | rdx = rsp + 0x20; 0x0040fbd9 mov rdi, rbx | 0x0040fbdc mov rsi, r13 | 0x0040fbdf call 0x419d40 | voidBloombergLP::bslalg::ArrayDestructionPrimitives::destroy>(BloombergLP::balb::Choice1*,BloombergLP::balb::Choice1*,bsl::allocator) (rbx, r13); 0x0040fbe4 sub rbx, r13 | rbx -= r13; 0x0040fbe7 add qword [r15 + 0x50], rbx | *((r15 + 0x50)) += rbx; 0x0040fbeb mov r13, qword [r15 + 0x48] | r13 = *((r15 + 0x48)); | } 0x0040fbef mov rdx, qword [r14 + 0x48] | 0x0040fbf3 mov rcx, qword [r14 + 0x50] | 0x0040fbf7 lea r8, [rsp + 8] | r8 = rsp + 8; 0x0040fbfc mov rdi, r12 | 0x0040fbff mov rsi, r13 | 0x0040fc02 call 0x41a3c0 | voidbsl::vector>::privateInsert(BloombergLP::balb::Choice1const*,BloombergLP::balb::Choice1const*,BloombergLP::balb::Choice1const*,std::_1::forward_iterator_tagconst&) (r12, r13, *((r14 + 0x48)), *((r14 + 0x50))); 0x0040fc07 mov rsi, qword [r14 + 0x1f8] | 0x0040fc0e mov rdi, qword [r15 + 0x1f8] | 0x0040fc15 call 0x40c580 | BloombergLP::balb::Choice2::operator=(BloombergLP::balb::Choice2const&) (*((r15 + 0x1f8)), *((r14 + 0x1f8))); 0x0040fc1a lea r12, [r15 + 8] | r12 = r15 + 8; 0x0040fc1e mov rbp, qword [r15 + 8] | rbp = *((r15 + 8)); 0x0040fc22 mov r13, qword [r15 + 0x10] | r13 = *((r15 + 0x10)); 0x0040fc26 cmp r13, rbp | | if (r13 == rbp) { 0x0040fc29 je 0x40fc4c | goto label_5; | } 0x0040fc2b mov rbx, rbp | rbx = rbp; 0x0040fc2e nop | | do { 0x0040fc30 mov rdi, rbx | 0x0040fc33 call 0x415580 | BloombergLP::bslstl::Optional_DataImp::reset() (rbx); 0x0040fc38 add rbx, 0x28 | rbx += 0x28; 0x0040fc3c cmp r13, rbx | 0x0040fc3f jne 0x40fc30 | | } while (r13 != rbx); 0x0040fc41 sub rbp, r13 | rbp -= r13; 0x0040fc44 add qword [r15 + 0x10], rbp | *((r15 + 0x10)) += rbp; 0x0040fc48 mov r13, qword [r15 + 8] | r13 = *((r15 + 8)); | label_5: 0x0040fc4c mov rdx, qword [r14 + 8] | 0x0040fc50 mov rcx, qword [r14 + 0x10] | 0x0040fc54 lea r8, [rsp + 0x10] | r8 = rsp + 0x10; 0x0040fc59 mov rdi, r12 | 0x0040fc5c mov rsi, r13 | 0x0040fc5f call 0x41b350 | 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))); 0x0040fc64 mov r13, qword [r15 + 0x28] | r13 = *((r15 + 0x28)); 0x0040fc68 mov r12, qword [r15 + 0x30] | r12 = *((r15 + 0x30)); 0x0040fc6c cmp r12, r13 | | if (r12 == r13) { 0x0040fc6f je 0x40fce1 | goto label_6; | } 0x0040fc71 mov rbx, r13 | rbx = r13; 0x0040fc74 jmp 0x40fc9e | goto label_7; | label_1: 0x0040fc80 mov qword [rbx + 0x18], 0xffffffffffffffff | *((rbx + 0x18)) = 0xffffffffffffffff; | do { | label_0: 0x0040fc88 mov dword [rbx + 0x170], 0xffffffff | *((rbx + 0x170)) = 0xffffffff; 0x0040fc92 add rbx, 0x180 | rbx += 0x180; 0x0040fc99 cmp r12, rbx | | if (r12 == rbx) { 0x0040fc9c je 0x40fcd6 | goto label_8; | } | label_7: 0x0040fc9e mov eax, dword [rbx + 0x170] | eax = *((rbx + 0x170)); 0x0040fca4 cmp eax, 2 | | if (eax == 2) { 0x0040fca7 je 0x40fcc0 | goto label_9; | } 0x0040fca9 test eax, eax | 0x0040fcab jne 0x40fc88 | | } while (eax != 0); 0x0040fcad mov rdi, rbx | 0x0040fcb0 call 0x4093b0 | BloombergLP::balb::Sequence6::~Sequence6() (rbx); 0x0040fcb5 jmp 0x40fc88 | goto label_0; | label_9: 0x0040fcc0 cmp qword [rbx + 0x20], 0x17 | | if (*((rbx + 0x20)) == 0x17) { 0x0040fcc5 je 0x40fc80 | goto label_1; | } 0x0040fcc7 mov rsi, qword [rbx] | rsi = *(rbx); 0x0040fcca mov rdi, qword [rbx + 0x28] | rdi = *((rbx + 0x28)); 0x0040fcce mov rax, qword [rdi] | rax = *(rdi); 0x0040fcd1 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); 0x0040fcd4 jmp 0x40fc80 | goto label_1; | label_8: 0x0040fcd6 sub r13, r12 | r13 -= r12; 0x0040fcd9 add qword [r15 + 0x30], r13 | *((r15 + 0x30)) += r13; 0x0040fcdd mov r12, qword [r15 + 0x28] | r12 = *((r15 + 0x28)); | label_6: 0x0040fce1 lea rdi, [r15 + 0x28] | 0x0040fce5 mov rdx, qword [r14 + 0x28] | 0x0040fce9 mov rcx, qword [r14 + 0x30] | 0x0040fced lea r8, [rsp + 0x18] | r8 = rsp + 0x18; 0x0040fcf2 mov rsi, r12 | 0x0040fcf5 call 0x41b870 | voidbsl::vector>::privateInsert(BloombergLP::balb::Choice3const*,BloombergLP::balb::Choice3const*,BloombergLP::balb::Choice3const*,std::_1::forward_iterator_tagconst&) (r15 + 0x28, r12, *((r14 + 0x28)), *((r14 + 0x30))); | label_2: 0x0040fcfa mov rax, r15 | rax = r15; 0x0040fcfd add rsp, 0x28 | 0x0040fd01 pop rbx | 0x0040fd02 pop r12 | 0x0040fd04 pop r13 | 0x0040fd06 pop r14 | 0x0040fd08 pop r15 | 0x0040fd0a pop rbp | 0x0040fd0b ret | return rax; | }