; assembly | /* r2dec pseudo code output */ | /* baljsn_encoder.t/assume @ 0x4c5b20 */ | #include | ; (fcn) method.bsl::vector_BloombergLP::s_baltst::Choice1__bsl::allocator_BloombergLP::s_baltst::Choice1___.operator_bsl::vector_BloombergLP::s_baltst::Choice1__bsl::allocator_BloombergLP::s_baltst::Choice1____ () | int64_t method_bsl::vector_BloombergLP::s_baltst::Choice1_bsl::allocator_BloombergLP::s_baltst::Choice1_operator_bsl::vector_BloombergLP::s_baltst::Choice1_bsl::allocator_BloombergLP::s_baltst::Choice1_ (uint32_t arg2, uint32_t arg1) { | int64_t var_8h; | uint32_t var_10h; | int64_t var_18h; | uint32_t var_20h; | uint32_t var_28h; | rsi = arg2; | rdi = arg1; | /* bsl::vector >::operator=(bsl::vector >&&) */ 0x004c5b20 push r14 | 0x004c5b22 push rbx | 0x004c5b23 sub rsp, 0x38 | 0x004c5b27 mov rbx, rdi | rbx = rdi; 0x004c5b2a cmp rdi, rsi | | if (rdi != rsi) { 0x004c5b2d je 0x4c5bf6 | 0x004c5b33 mov rax, qword [rbx + 0x18] | rax = *((rbx + 0x18)); 0x004c5b37 cmp rax, qword [rsi + 0x18] | | if (rax != *((rsi + 0x18))) { 0x004c5b3b je 0x4c5b92 | 0x004c5b3d lea rdx, [rbx + 0x18] | 0x004c5b41 lea r14, [rsp + 0x10] | r14 = rsp + 0x10; 0x004c5b46 mov rdi, r14 | 0x004c5b49 call 0x4c5a40 | bsl::vector>::vector(bsl::vector>&&,bsl::allocatorconst&) (r14, rsi, rbx + 0x18); 0x004c5b4e mov rdi, rbx | 0x004c5b51 mov rsi, r14 | 0x004c5b54 call 0x5227f0 | bsl::Vector_Util::swap(void*,void*) (rbx, r14); 0x004c5b59 mov rdi, qword [rsp + 0x10] | rdi = *((rsp + 0x10)); 0x004c5b5e test rdi, rdi | | if (rdi == 0) { 0x004c5b61 je 0x4c5bf6 | goto label_0; | } 0x004c5b67 mov rsi, qword [rsp + 0x18] | 0x004c5b6c mov rax, qword [rsp + 0x28] | rax = *((rsp + 0x28)); 0x004c5b71 mov qword [rsp + 8], rax | *((rsp + 8)) = rax; 0x004c5b76 lea rdx, [rsp + 8] | rdx = rsp + 8; 0x004c5b7b call 0x4c9aa0 | voidBloombergLP::bslalg::ArrayDestructionPrimitives::destroy>(BloombergLP::s_baltst::Choice1*,BloombergLP::s_baltst::Choice1*,bsl::allocator,bsl::integral_constant) (rdi, *((rsp + 0x18))); 0x004c5b80 mov rsi, qword [rsp + 0x10] | rsi = *((rsp + 0x10)); 0x004c5b85 mov rdi, qword [rsp + 0x28] | rdi = *((rsp + 0x28)); 0x004c5b8a mov rax, qword [rdi] | rax = *(rdi); 0x004c5b8d call qword [rax + 0x18] | rax = uint64_t (*rax + 0x18)() (); 0x004c5b90 jmp 0x4c5bf6 | | } else { 0x004c5b92 mov qword [rsp + 0x28], rax | *((rsp + 0x28)) = rax; 0x004c5b97 movups xmm0, xmmword [rsi] | __asm ("movups xmm0, xmmword [rsi]"); 0x004c5b9a movaps xmmword [rsp + 0x10], xmm0 | *((rsp + 0x10)) = xmm0; 0x004c5b9f mov rax, qword [rsi + 0x10] | rax = *((rsi + 0x10)); 0x004c5ba3 mov qword [rsp + 0x20], rax | *((rsp + 0x20)) = rax; 0x004c5ba8 xorps xmm0, xmm0 | __asm ("xorps xmm0, xmm0"); 0x004c5bab movups xmmword [rsi], xmm0 | __asm ("movups xmmword [rsi], xmm0"); 0x004c5bae mov qword [rsi + 0x10], 0 | *((rsi + 0x10)) = 0; 0x004c5bb6 lea rsi, [rsp + 0x10] | 0x004c5bbb mov rdi, rbx | 0x004c5bbe call 0x5227f0 | bsl::Vector_Util::swap(void*,void*) (rbx, rsp + 0x10); 0x004c5bc3 mov rdi, qword [rsp + 0x10] | rdi = *((rsp + 0x10)); 0x004c5bc8 test rdi, rdi | | if (rdi == 0) { 0x004c5bcb je 0x4c5bf6 | goto label_0; | } 0x004c5bcd mov rsi, qword [rsp + 0x18] | 0x004c5bd2 mov rax, qword [rsp + 0x28] | rax = *((rsp + 0x28)); 0x004c5bd7 mov qword [rsp + 8], rax | *((rsp + 8)) = rax; 0x004c5bdc lea rdx, [rsp + 8] | rdx = rsp + 8; 0x004c5be1 call 0x4c9aa0 | voidBloombergLP::bslalg::ArrayDestructionPrimitives::destroy>(BloombergLP::s_baltst::Choice1*,BloombergLP::s_baltst::Choice1*,bsl::allocator,bsl::integral_constant) (rdi, *((rsp + 0x18))); 0x004c5be6 mov rsi, qword [rsp + 0x10] | rsi = *((rsp + 0x10)); 0x004c5beb mov rdi, qword [rsp + 0x28] | rdi = *((rsp + 0x28)); 0x004c5bf0 mov rax, qword [rdi] | rax = *(rdi); 0x004c5bf3 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } | } | label_0: 0x004c5bf6 mov rax, rbx | rax = rbx; 0x004c5bf9 add rsp, 0x38 | 0x004c5bfd pop rbx | 0x004c5bfe pop r14 | 0x004c5c00 ret | return rax; | }