; assembly | /* r2dec pseudo code output */ | /* baljsn_encoder.t/none @ 0x4c56b0 */ | #include | ; (fcn) method.bsl::vector_BloombergLP::s_baltst::Choice1__bsl::allocator_BloombergLP::s_baltst::Choice1___.vector__ () | int64_t method_bsl::vector_BloombergLP::s_baltst::Choice1_bsl::allocator_BloombergLP::s_baltst::Choice1_vector_ (int64_t arg1) { | rdi = arg1; | /* bsl::vector >::~vector() */ 0x004c56b0 push rbp | 0x004c56b1 push r15 | 0x004c56b3 push r14 | 0x004c56b5 push r13 | 0x004c56b7 push r12 | 0x004c56b9 push rbx | 0x004c56ba push rax | 0x004c56bb mov rbx, qword [rdi] | rbx = *(rdi); 0x004c56be test rbx, rbx | | if (rbx == 0) { 0x004c56c1 je 0x4c57b5 | goto label_3; | } 0x004c56c7 mov r14, qword [rdi + 8] | r14 = *((rdi + 8)); 0x004c56cb cmp rbx, r14 | | if (rbx == r14) { 0x004c56ce je 0x4c57a8 | goto label_4; | } 0x004c56d4 mov qword [rsp], rdi | *(rsp) = rdi; 0x004c56d8 jmp 0x4c570b | goto label_5; | label_2: 0x004c56da mov qword [r15 + 0x18], 0xffffffffffffffff | *((r15 + 0x18)) = 0xffffffffffffffff; | label_1: 0x004c56e2 mov dword [r15 + 0x30], 0xffffffff | *((r15 + 0x30)) = 0xffffffff; 0x004c56ea mov rax, qword [r12] | rax = *(r12); 0x004c56ee mov rdi, r12 | rdi = r12; 0x004c56f1 mov rsi, r15 | rsi = r15; 0x004c56f4 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | do { | label_0: 0x004c56f7 mov dword [rbx + 8], 0xffffffff | *((rbx + 8)) = 0xffffffff; 0x004c56fe add rbx, 0x18 | rbx += 0x18; 0x004c5702 cmp r14, rbx | | if (r14 == rbx) { 0x004c5705 je 0x4c57a1 | goto label_6; | } | label_5: 0x004c570b mov eax, dword [rbx + 8] | eax = *((rbx + 8)); 0x004c570e cmp eax, 3 | | if (eax == 3) { 0x004c5711 je 0x4c5740 | goto label_7; | } 0x004c5713 cmp eax, 2 | 0x004c5716 jne 0x4c56f7 | | } while (eax != 2); 0x004c5718 mov r15, qword [rbx] | r15 = *(rbx); 0x004c571b test r15, r15 | | if (r15 == 0) { 0x004c571e je 0x4c56f7 | goto label_0; | } 0x004c5720 mov r12, qword [rbx + 0x10] | r12 = *((rbx + 0x10)); 0x004c5724 mov rdi, r15 | 0x004c5727 call 0x4c06a0 | BloombergLP::s_baltst::Sequence4::~Sequence4() (r15); 0x004c572c mov rax, qword [r12] | rax = *(r12); 0x004c5730 mov rdi, r12 | rdi = r12; 0x004c5733 mov rsi, r15 | rsi = r15; 0x004c5736 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); 0x004c5739 jmp 0x4c56f7 | goto label_0; | label_7: 0x004c5740 mov r15, qword [rbx] | r15 = *(rbx); 0x004c5743 test r15, r15 | | if (r15 == 0) { 0x004c5746 je 0x4c56f7 | goto label_0; | } 0x004c5748 mov r12, qword [rbx + 0x10] | r12 = *((rbx + 0x10)); 0x004c574c mov eax, dword [r15 + 0x30] | eax = *((r15 + 0x30)); 0x004c5750 cmp eax, 2 | | if (eax == 2) { 0x004c5753 je 0x4c5777 | goto label_8; | } 0x004c5755 cmp eax, 1 | | if (eax != 1) { 0x004c5758 jne 0x4c56e2 | goto label_1; | } 0x004c575a cmp qword [r15 + 0x20], 0x17 | | if (*((r15 + 0x20)) == 0x17) { 0x004c575f je 0x4c56da | goto label_2; | } 0x004c5765 mov rsi, qword [r15] | rsi = *(r15); 0x004c5768 mov rdi, qword [r15 + 0x28] | rdi = *((r15 + 0x28)); 0x004c576c mov rax, qword [rdi] | rax = *(rdi); 0x004c576f call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); 0x004c5772 jmp 0x4c56da | goto label_2; | label_8: 0x004c5777 mov r13, qword [r15] | r13 = *(r15); 0x004c577a test r13, r13 | | if (r13 == 0) { 0x004c577d je 0x4c56e2 | goto label_1; | } 0x004c5783 mov rbp, qword [r15 + 0x38] | rbp = *((r15 + 0x38)); 0x004c5787 mov rdi, r13 | 0x004c578a call 0x4c9c80 | BloombergLP::s_baltst::Choice1::~Choice1() (r13); 0x004c578f mov rax, qword [rbp] | rax = *(rbp); 0x004c5793 mov rdi, rbp | rdi = rbp; 0x004c5796 mov rsi, r13 | rsi = r13; 0x004c5799 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); 0x004c579c jmp 0x4c56e2 | goto label_1; | label_6: 0x004c57a1 mov rdi, qword [rsp] | rdi = *(rsp); 0x004c57a5 mov rbx, qword [rdi] | rbx = *(rdi); | label_4: 0x004c57a8 mov rdi, qword [rdi + 0x18] | rdi = *((rdi + 0x18)); 0x004c57ac mov rax, qword [rdi] | rax = *(rdi); 0x004c57af mov rsi, rbx | rsi = rbx; 0x004c57b2 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | label_3: 0x004c57b5 add rsp, 8 | 0x004c57b9 pop rbx | 0x004c57ba pop r12 | 0x004c57bc pop r13 | 0x004c57be pop r14 | 0x004c57c0 pop r15 | 0x004c57c2 pop rbp | 0x004c57c3 ret | return rax; | }