; assembly | /* r2dec pseudo code output */ | /* baljsn_encoder.t/assume @ 0x4c5e30 */ | #include | ; (fcn) method.bsl::vector_BloombergLP::s_baltst::Choice3__bsl::allocator_BloombergLP::s_baltst::Choice3___.operator_bsl::vector_BloombergLP::s_baltst::Choice3__bsl::allocator_BloombergLP::s_baltst::Choice3____ () | int64_t method_bsl::vector_BloombergLP::s_baltst::Choice3_bsl::allocator_BloombergLP::s_baltst::Choice3_operator_bsl::vector_BloombergLP::s_baltst::Choice3_bsl::allocator_BloombergLP::s_baltst::Choice3_ (uint32_t arg2, uint32_t arg1) { | int64_t var_8h; | uint32_t var_10h; | int64_t var_18h; | rsi = arg2; | rdi = arg1; | /* bsl::vector >::operator=(bsl::vector >&&) */ 0x004c5e30 push r15 | 0x004c5e32 push r14 | 0x004c5e34 push rbx | 0x004c5e35 sub rsp, 0x20 | 0x004c5e39 mov r14, rdi | r14 = rdi; 0x004c5e3c cmp rdi, rsi | | if (rdi == rsi) { 0x004c5e3f je 0x4c5fa5 | goto label_2; | } 0x004c5e45 mov rax, qword [r14 + 0x18] | rax = *((r14 + 0x18)); 0x004c5e49 cmp rax, qword [rsi + 0x18] | | if (rax == *((rsi + 0x18))) { 0x004c5e4d je 0x4c5ee3 | goto label_3; | } 0x004c5e53 lea rdx, [r14 + 0x18] | 0x004c5e57 mov rbx, rsp | rbx = rsp; 0x004c5e5a mov rdi, rbx | 0x004c5e5d call 0x4c5960 | bsl::vector>::vector(bsl::vector>&&,bsl::allocatorconst&) (rsp, rsi, r14 + 0x18); 0x004c5e62 mov rdi, r14 | 0x004c5e65 mov rsi, rbx | 0x004c5e68 call 0x5227f0 | bsl::Vector_Util::swap(void*,void*) (r14, rbx); 0x004c5e6d mov rbx, qword [rsp] | rbx = *(rsp); 0x004c5e71 test rbx, rbx | | if (rbx == 0) { 0x004c5e74 je 0x4c5fa5 | goto label_2; | } 0x004c5e7a mov r15, qword [rsp + 8] | r15 = *((rsp + 8)); 0x004c5e7f cmp rbx, r15 | | if (rbx != r15) { 0x004c5e82 jne 0x4c5eb2 | goto label_4; | } 0x004c5e84 jmp 0x4c5f83 | goto label_5; 0x004c5e90 mov rdi, rbx | 0x004c5e93 call 0x4c4a50 | BloombergLP::s_baltst::Sequence6::~Sequence6() (rbx); | do { | label_0: 0x004c5e98 mov dword [rbx + 0x170], 0xffffffff | *((rbx + 0x170)) = 0xffffffff; 0x004c5ea2 add rbx, 0x180 | rbx += 0x180; 0x004c5ea9 cmp r15, rbx | | if (r15 == rbx) { 0x004c5eac je 0x4c5f7f | goto label_6; | } | label_4: 0x004c5eb2 mov eax, dword [rbx + 0x170] | eax = *((rbx + 0x170)); 0x004c5eb8 cmp rax, 3 | 0x004c5ebc ja 0x4c5e98 | | } while (rax > 3); | /* switch table (4 cases) at 0x649f00 */ 0x004c5ebe jmp qword [rax*8 + 0x649f00] | 0x004c5ec5 cmp qword [rbx + 0x20], 0x17 | | if (*((rbx + 0x20)) != 0x17) { 0x004c5eca je 0x4c5ed9 | 0x004c5ecc mov rsi, qword [rbx] | rsi = *(rbx); 0x004c5ecf mov rdi, qword [rbx + 0x28] | rdi = *((rbx + 0x28)); 0x004c5ed3 mov rax, qword [rdi] | rax = *(rdi); 0x004c5ed6 call qword [rax + 0x18] | rax = uint64_t (*rax + 0x18)() (); | } 0x004c5ed9 mov qword [rbx + 0x18], 0xffffffffffffffff | *((rbx + 0x18)) = 0xffffffffffffffff; 0x004c5ee1 jmp 0x4c5e98 | goto label_0; | label_3: 0x004c5ee3 mov qword [rsp + 0x18], rax | *((rsp + 0x18)) = rax; 0x004c5ee8 movups xmm0, xmmword [rsi] | __asm ("movups xmm0, xmmword [rsi]"); 0x004c5eeb movaps xmmword [rsp], xmm0 | *(rsp) = xmm0; 0x004c5eef mov rax, qword [rsi + 0x10] | rax = *((rsi + 0x10)); 0x004c5ef3 mov qword [rsp + 0x10], rax | *((rsp + 0x10)) = rax; 0x004c5ef8 xorps xmm0, xmm0 | __asm ("xorps xmm0, xmm0"); 0x004c5efb movups xmmword [rsi], xmm0 | __asm ("movups xmmword [rsi], xmm0"); 0x004c5efe mov qword [rsi + 0x10], 0 | *((rsi + 0x10)) = 0; 0x004c5f06 mov rsi, rsp | 0x004c5f09 mov rdi, r14 | 0x004c5f0c call 0x5227f0 | bsl::Vector_Util::swap(void*,void*) (r14, rsp); 0x004c5f11 mov rbx, qword [rsp] | rbx = *(rsp); 0x004c5f15 test rbx, rbx | | if (rbx == 0) { 0x004c5f18 je 0x4c5fa5 | goto label_2; | } 0x004c5f1e mov r15, qword [rsp + 8] | r15 = *((rsp + 8)); 0x004c5f23 cmp rbx, r15 | | if (rbx != r15) { 0x004c5f26 jne 0x4c5f4e | goto label_7; | } 0x004c5f28 jmp 0x4c5f97 | goto label_8; 0x004c5f30 mov rdi, rbx | 0x004c5f33 call 0x4c4a50 | BloombergLP::s_baltst::Sequence6::~Sequence6() (rbx); | do { | label_1: 0x004c5f38 mov dword [rbx + 0x170], 0xffffffff | *((rbx + 0x170)) = 0xffffffff; 0x004c5f42 add rbx, 0x180 | rbx += 0x180; 0x004c5f49 cmp r15, rbx | | if (r15 == rbx) { 0x004c5f4c je 0x4c5f93 | goto label_9; | } | label_7: 0x004c5f4e mov eax, dword [rbx + 0x170] | eax = *((rbx + 0x170)); 0x004c5f54 cmp rax, 3 | 0x004c5f58 ja 0x4c5f38 | | } while (rax > 3); | /* switch table (4 cases) at 0x649f40 */ 0x004c5f5a jmp qword [rax*8 + 0x649f40] | 0x004c5f61 cmp qword [rbx + 0x20], 0x17 | | if (*((rbx + 0x20)) != 0x17) { 0x004c5f66 je 0x4c5f75 | 0x004c5f68 mov rsi, qword [rbx] | rsi = *(rbx); 0x004c5f6b mov rdi, qword [rbx + 0x28] | rdi = *((rbx + 0x28)); 0x004c5f6f mov rax, qword [rdi] | rax = *(rdi); 0x004c5f72 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x004c5f75 mov qword [rbx + 0x18], 0xffffffffffffffff | *((rbx + 0x18)) = 0xffffffffffffffff; 0x004c5f7d jmp 0x4c5f38 | goto label_1; | label_6: 0x004c5f7f mov rbx, qword [rsp] | rbx = *(rsp); | label_5: 0x004c5f83 mov rdi, qword [rsp + 0x18] | rdi = *((rsp + 0x18)); 0x004c5f88 mov rax, qword [rdi] | rax = *(rdi); 0x004c5f8b mov rsi, rbx | rsi = rbx; 0x004c5f8e call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); 0x004c5f91 jmp 0x4c5fa5 | goto label_2; | label_9: 0x004c5f93 mov rbx, qword [rsp] | rbx = *(rsp); | label_8: 0x004c5f97 mov rdi, qword [rsp + 0x18] | rdi = *((rsp + 0x18)); 0x004c5f9c mov rax, qword [rdi] | rax = *(rdi); 0x004c5f9f mov rsi, rbx | rsi = rbx; 0x004c5fa2 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | label_2: 0x004c5fa5 mov rax, r14 | rax = r14; 0x004c5fa8 add rsp, 0x20 | 0x004c5fac pop rbx | 0x004c5fad pop r14 | 0x004c5faf pop r15 | 0x004c5fb1 ret | return rax; | }