; assembly | /* r2dec pseudo code output */ | /* baljsn_encoder.t/none @ 0x4c6110 */ | #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 >&&) */ 0x004c6110 push r15 | 0x004c6112 push r14 | 0x004c6114 push rbx | 0x004c6115 sub rsp, 0x20 | 0x004c6119 mov r14, rdi | r14 = rdi; 0x004c611c cmp rdi, rsi | | if (rdi == rsi) { 0x004c611f je 0x4c628c | goto label_4; | } 0x004c6125 mov rax, qword [r14 + 0x18] | rax = *((r14 + 0x18)); 0x004c6129 cmp rax, qword [rsi + 0x18] | | if (rax == *((rsi + 0x18))) { 0x004c612d je 0x4c61c6 | goto label_5; | } 0x004c6133 lea rdx, [r14 + 0x18] | 0x004c6137 mov rbx, rsp | rbx = rsp; 0x004c613a mov rdi, rbx | 0x004c613d call 0x4c5c90 | bsl::vector>::vector(bsl::vector>&&,bsl::allocatorconst&) (rsp, rsi, r14 + 0x18); 0x004c6142 mov rdi, r14 | 0x004c6145 mov rsi, rbx | 0x004c6148 call 0x523430 | bsl::Vector_Util::swap(void*,void*) (r14, rbx); 0x004c614d mov rbx, qword [rsp] | rbx = *(rsp); 0x004c6151 test rbx, rbx | | if (rbx == 0) { 0x004c6154 je 0x4c628c | goto label_4; | } 0x004c615a mov r15, qword [rsp + 8] | r15 = *((rsp + 8)); 0x004c615f cmp rbx, r15 | | if (rbx != r15) { 0x004c6162 jne 0x4c6192 | goto label_6; | } 0x004c6164 jmp 0x4c626a | goto label_7; | label_1: 0x004c6170 mov qword [rbx + 0x18], 0xffffffffffffffff | *((rbx + 0x18)) = 0xffffffffffffffff; | do { | label_0: 0x004c6178 mov dword [rbx + 0x170], 0xffffffff | *((rbx + 0x170)) = 0xffffffff; 0x004c6182 add rbx, 0x180 | rbx += 0x180; 0x004c6189 cmp r15, rbx | | if (r15 == rbx) { 0x004c618c je 0x4c6266 | goto label_8; | } | label_6: 0x004c6192 mov eax, dword [rbx + 0x170] | eax = *((rbx + 0x170)); 0x004c6198 cmp eax, 2 | | if (eax == 2) { 0x004c619b je 0x4c61b0 | goto label_9; | } 0x004c619d test eax, eax | 0x004c619f jne 0x4c6178 | | } while (eax != 0); 0x004c61a1 mov rdi, rbx | 0x004c61a4 call 0x4c4be0 | BloombergLP::s_baltst::Sequence6::~Sequence6() (rbx); 0x004c61a9 jmp 0x4c6178 | goto label_0; | label_9: 0x004c61b0 cmp qword [rbx + 0x20], 0x17 | | if (*((rbx + 0x20)) == 0x17) { 0x004c61b5 je 0x4c6170 | goto label_1; | } 0x004c61b7 mov rsi, qword [rbx] | rsi = *(rbx); 0x004c61ba mov rdi, qword [rbx + 0x28] | rdi = *((rbx + 0x28)); 0x004c61be mov rax, qword [rdi] | rax = *(rdi); 0x004c61c1 call qword [rax + 0x18] | rax = uint64_t (*rax + 0x18)() (); 0x004c61c4 jmp 0x4c6170 | goto label_1; | label_5: 0x004c61c6 mov qword [rsp + 0x18], rax | *((rsp + 0x18)) = rax; 0x004c61cb movups xmm0, xmmword [rsi] | __asm ("movups xmm0, xmmword [rsi]"); 0x004c61ce movaps xmmword [rsp], xmm0 | *(rsp) = xmm0; 0x004c61d2 mov rax, qword [rsi + 0x10] | rax = *((rsi + 0x10)); 0x004c61d6 mov qword [rsp + 0x10], rax | *((rsp + 0x10)) = rax; 0x004c61db xorps xmm0, xmm0 | __asm ("xorps xmm0, xmm0"); 0x004c61de movups xmmword [rsi], xmm0 | __asm ("movups xmmword [rsi], xmm0"); 0x004c61e1 mov qword [rsi + 0x10], 0 | *((rsi + 0x10)) = 0; 0x004c61e9 mov rsi, rsp | 0x004c61ec mov rdi, r14 | 0x004c61ef call 0x523430 | bsl::Vector_Util::swap(void*,void*) (r14, rsp); 0x004c61f4 mov rbx, qword [rsp] | rbx = *(rsp); 0x004c61f8 test rbx, rbx | | if (rbx == 0) { 0x004c61fb je 0x4c628c | goto label_4; | } 0x004c6201 mov r15, qword [rsp + 8] | r15 = *((rsp + 8)); 0x004c6206 cmp rbx, r15 | | if (rbx != r15) { 0x004c6209 jne 0x4c622e | goto label_10; | } 0x004c620b jmp 0x4c627e | goto label_11; | label_3: 0x004c6210 mov qword [rbx + 0x18], 0xffffffffffffffff | *((rbx + 0x18)) = 0xffffffffffffffff; | do { | label_2: 0x004c6218 mov dword [rbx + 0x170], 0xffffffff | *((rbx + 0x170)) = 0xffffffff; 0x004c6222 add rbx, 0x180 | rbx += 0x180; 0x004c6229 cmp r15, rbx | | if (r15 == rbx) { 0x004c622c je 0x4c627a | goto label_12; | } | label_10: 0x004c622e mov eax, dword [rbx + 0x170] | eax = *((rbx + 0x170)); 0x004c6234 cmp eax, 2 | | if (eax == 2) { 0x004c6237 je 0x4c6250 | goto label_13; | } 0x004c6239 test eax, eax | 0x004c623b jne 0x4c6218 | | } while (eax != 0); 0x004c623d mov rdi, rbx | 0x004c6240 call 0x4c4be0 | BloombergLP::s_baltst::Sequence6::~Sequence6() (rbx); 0x004c6245 jmp 0x4c6218 | goto label_2; | label_13: 0x004c6250 cmp qword [rbx + 0x20], 0x17 | | if (*((rbx + 0x20)) == 0x17) { 0x004c6255 je 0x4c6210 | goto label_3; | } 0x004c6257 mov rsi, qword [rbx] | rsi = *(rbx); 0x004c625a mov rdi, qword [rbx + 0x28] | rdi = *((rbx + 0x28)); 0x004c625e mov rax, qword [rdi] | rax = *(rdi); 0x004c6261 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); 0x004c6264 jmp 0x4c6210 | goto label_3; | label_8: 0x004c6266 mov rbx, qword [rsp] | rbx = *(rsp); | label_7: 0x004c626a mov rdi, qword [rsp + 0x18] | rdi = *((rsp + 0x18)); 0x004c626f mov rax, qword [rdi] | rax = *(rdi); 0x004c6272 mov rsi, rbx | rsi = rbx; 0x004c6275 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); 0x004c6278 jmp 0x4c628c | goto label_4; | label_12: 0x004c627a mov rbx, qword [rsp] | rbx = *(rsp); | label_11: 0x004c627e mov rdi, qword [rsp + 0x18] | rdi = *((rsp + 0x18)); 0x004c6283 mov rax, qword [rdi] | rax = *(rdi); 0x004c6286 mov rsi, rbx | rsi = rbx; 0x004c6289 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | label_4: 0x004c628c mov rax, r14 | rax = r14; 0x004c628f add rsp, 0x20 | 0x004c6293 pop rbx | 0x004c6294 pop r14 | 0x004c6296 pop r15 | 0x004c6298 ret | return rax; | }