; assembly | /* r2dec pseudo code output */ | /* baljsn_encoder.t/none @ 0x4c5c90 */ | #include | ; (fcn) method.bsl::vector_BloombergLP::s_baltst::Choice3__bsl::allocator_BloombergLP::s_baltst::Choice3___.vector_bsl::vector_BloombergLP::s_baltst::Choice3__bsl::allocator_BloombergLP::s_baltst::Choice3_____bsl::allocator_BloombergLP::s_baltst::Choice3__cons () | int64_t method_bsl::vector_BloombergLP::s_baltst::Choice3_bsl::allocator_BloombergLP::s_baltst::Choice3_vector_bsl::vector_BloombergLP::s_baltst::Choice3_bsl::allocator_BloombergLP::s_baltst::Choice3_bsl::allocator_BloombergLP::s_baltst::Choice3_cons (int64_t arg3, uint32_t arg2, int64_t arg1) { | rdx = arg3; | rsi = arg2; | rdi = arg1; | /* bsl::vector >::vector(bsl::vector >&&, bsl::allocator const&) */ 0x004c5c90 push rbp | 0x004c5c91 push r15 | 0x004c5c93 push r14 | 0x004c5c95 push r13 | 0x004c5c97 push r12 | 0x004c5c99 push rbx | 0x004c5c9a push rax | 0x004c5c9b mov rbx, rsi | rbx = rsi; 0x004c5c9e mov r15, rdi | r15 = rdi; 0x004c5ca1 xorps xmm0, xmm0 | __asm ("xorps xmm0, xmm0"); 0x004c5ca4 movups xmmword [rdi], xmm0 | __asm ("movups xmmword [rdi], xmm0"); 0x004c5ca7 mov qword [rdi + 0x10], 0 | *((rdi + 0x10)) = 0; 0x004c5caf mov rdi, qword [rdx] | rdi = *(rdx); 0x004c5cb2 mov qword [r15 + 0x18], rdi | *((r15 + 0x18)) = rdi; 0x004c5cb6 cmp rdi, qword [rsi + 0x18] | | if (rdi != *((rsi + 0x18))) { 0x004c5cba jne 0x4c5cec | goto label_1; | } 0x004c5cbc mov rax, qword [rbx] | rax = *(rbx); 0x004c5cbf mov qword [r15], rax | *(r15) = rax; 0x004c5cc2 mov rax, qword [rbx + 8] | rax = *((rbx + 8)); 0x004c5cc6 mov qword [r15 + 8], rax | *((r15 + 8)) = rax; 0x004c5cca mov rax, qword [rbx + 0x10] | rax = *((rbx + 0x10)); 0x004c5cce mov qword [r15 + 0x10], rax | *((r15 + 0x10)) = rax; 0x004c5cd2 movups xmmword [rbx], xmm0 | __asm ("movups xmmword [rbx], xmm0"); 0x004c5cd5 mov qword [rbx + 0x10], 0 | *((rbx + 0x10)) = 0; | do { | label_0: 0x004c5cdd add rsp, 8 | 0x004c5ce1 pop rbx | 0x004c5ce2 pop r12 | 0x004c5ce4 pop r13 | 0x004c5ce6 pop r14 | 0x004c5ce8 pop r15 | 0x004c5cea pop rbp | 0x004c5ceb ret | return rax; | label_1: 0x004c5cec mov rsi, qword [rbx + 8] | rsi = *((rbx + 8)); 0x004c5cf0 sub rsi, qword [rbx] | rsi -= *(rbx); 0x004c5cf3 je 0x4c5cdd | | } while (rsi == 0); 0x004c5cf5 mov rax, rsi | rax = rsi; 0x004c5cf8 sar rax, 7 | rax >>= 7; 0x004c5cfc movabs rbp, 0xaaaaaaaaaaaaaaab | 0x004c5d06 imul rbp, rax | rbp *= rax; 0x004c5d0a mov rax, qword [rdi] | rax = *(rdi); 0x004c5d0d call qword [rax + 0x10] | rax = uint64_t (*rax + 0x10)() (); 0x004c5d10 mov rcx, rax | rcx = rax; 0x004c5d13 mov qword [r15 + 8], rax | *((r15 + 8)) = rax; 0x004c5d17 mov qword [r15], rax | *(r15) = rax; 0x004c5d1a mov qword [r15 + 0x10], rbp | *((r15 + 0x10)) = rbp; 0x004c5d1e mov rdx, qword [rbx] | rdx = *(rbx); 0x004c5d21 mov r14, qword [rbx + 8] | r14 = *((rbx + 8)); 0x004c5d25 cmp rdx, r14 | | if (rdx == r14) { 0x004c5d28 je 0x4c5d6e | goto label_2; | } 0x004c5d2a mov rax, qword [r15 + 0x18] | rax = *((r15 + 0x18)); 0x004c5d2e mov qword [rsp], rax | *(rsp) = rax; 0x004c5d32 sub r14, rdx | r14 -= rdx; 0x004c5d35 xor r13d, r13d | r13d = 0; | do { 0x004c5d38 mov r12, rdx | r12 = rdx; 0x004c5d3b lea rsi, [rdx + r13] | 0x004c5d3f mov rbp, rcx | 0x004c5d42 lea rdi, [rcx + r13] | 0x004c5d46 mov rdx, qword [rsp] | 0x004c5d4a call 0x4b91a0 | BloombergLP::s_baltst::Choice3::Choice3(BloombergLP::s_baltst::Choice3&&,BloombergLP::bslma::Allocator*) (rcx + r13, rdx + r13, *(rsp)); 0x004c5d4f add r13, 0x180 | r13 += 0x180; 0x004c5d56 cmp r14, r13 | 0x004c5d59 mov rcx, rbp | rcx = rbp; 0x004c5d5c mov rdx, r12 | rdx = r12; 0x004c5d5f jne 0x4c5d38 | | } while (r14 != r13); 0x004c5d61 mov rdx, qword [rbx] | rdx = *(rbx); 0x004c5d64 mov rax, qword [rbx + 8] | rax = *((rbx + 8)); 0x004c5d68 mov rcx, qword [r15 + 8] | rcx = *((r15 + 8)); 0x004c5d6c jmp 0x4c5d71 | goto label_3; | label_2: 0x004c5d6e mov rax, rdx | rax = rdx; | label_3: 0x004c5d71 sub rax, rdx | rax -= rdx; 0x004c5d74 add rax, rcx | rax += rcx; 0x004c5d77 mov qword [r15 + 8], rax | *((r15 + 8)) = rax; 0x004c5d7b jmp 0x4c5cdd | goto label_0; | }