; assembly | /* r2dec pseudo code output */ | /* balb_testmessages.t/none @ 0x414be0 */ | #include | ; (fcn) method.bsl::vector_BloombergLP::balb::Choice1__bsl::allocator_BloombergLP::balb::Choice1___.vector__ () | int64_t method_bsl::vector_BloombergLP::balb::Choice1_bsl::allocator_BloombergLP::balb::Choice1_vector_ (int64_t arg1) { | rdi = arg1; | /* bsl::vector >::~vector() */ 0x00414be0 push rbp | 0x00414be1 push r15 | 0x00414be3 push r14 | 0x00414be5 push r13 | 0x00414be7 push r12 | 0x00414be9 push rbx | 0x00414bea push rax | 0x00414beb mov rbx, qword [rdi] | rbx = *(rdi); 0x00414bee test rbx, rbx | | if (rbx == 0) { 0x00414bf1 je 0x414ce5 | goto label_3; | } 0x00414bf7 mov r14, qword [rdi + 8] | r14 = *((rdi + 8)); 0x00414bfb cmp rbx, r14 | | if (rbx == r14) { 0x00414bfe je 0x414cd8 | goto label_4; | } 0x00414c04 mov qword [rsp], rdi | *(rsp) = rdi; 0x00414c08 jmp 0x414c3b | goto label_5; | label_2: 0x00414c0a mov qword [r15 + 0x18], 0xffffffffffffffff | *((r15 + 0x18)) = 0xffffffffffffffff; | label_1: 0x00414c12 mov dword [r15 + 0x30], 0xffffffff | *((r15 + 0x30)) = 0xffffffff; 0x00414c1a mov rax, qword [r12] | rax = *(r12); 0x00414c1e mov rdi, r12 | rdi = r12; 0x00414c21 mov rsi, r15 | rsi = r15; 0x00414c24 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | do { | label_0: 0x00414c27 mov dword [rbx + 8], 0xffffffff | *((rbx + 8)) = 0xffffffff; 0x00414c2e add rbx, 0x18 | rbx += 0x18; 0x00414c32 cmp r14, rbx | | if (r14 == rbx) { 0x00414c35 je 0x414cd1 | goto label_6; | } | label_5: 0x00414c3b mov eax, dword [rbx + 8] | eax = *((rbx + 8)); 0x00414c3e cmp eax, 3 | | if (eax == 3) { 0x00414c41 je 0x414c70 | goto label_7; | } 0x00414c43 cmp eax, 2 | 0x00414c46 jne 0x414c27 | | } while (eax != 2); 0x00414c48 mov r15, qword [rbx] | r15 = *(rbx); 0x00414c4b test r15, r15 | | if (r15 == 0) { 0x00414c4e je 0x414c27 | goto label_0; | } 0x00414c50 mov r12, qword [rbx + 0x10] | r12 = *((rbx + 0x10)); 0x00414c54 mov rdi, r15 | 0x00414c57 call 0x40e240 | BloombergLP::balb::Sequence4::~Sequence4() (r15); 0x00414c5c mov rax, qword [r12] | rax = *(r12); 0x00414c60 mov rdi, r12 | rdi = r12; 0x00414c63 mov rsi, r15 | rsi = r15; 0x00414c66 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); 0x00414c69 jmp 0x414c27 | goto label_0; | label_7: 0x00414c70 mov r15, qword [rbx] | r15 = *(rbx); 0x00414c73 test r15, r15 | | if (r15 == 0) { 0x00414c76 je 0x414c27 | goto label_0; | } 0x00414c78 mov r12, qword [rbx + 0x10] | r12 = *((rbx + 0x10)); 0x00414c7c mov eax, dword [r15 + 0x30] | eax = *((r15 + 0x30)); 0x00414c80 cmp eax, 2 | | if (eax == 2) { 0x00414c83 je 0x414ca7 | goto label_8; | } 0x00414c85 cmp eax, 1 | | if (eax != 1) { 0x00414c88 jne 0x414c12 | goto label_1; | } 0x00414c8a cmp qword [r15 + 0x20], 0x17 | | if (*((r15 + 0x20)) == 0x17) { 0x00414c8f je 0x414c0a | goto label_2; | } 0x00414c95 mov rsi, qword [r15] | rsi = *(r15); 0x00414c98 mov rdi, qword [r15 + 0x28] | rdi = *((r15 + 0x28)); 0x00414c9c mov rax, qword [rdi] | rax = *(rdi); 0x00414c9f call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); 0x00414ca2 jmp 0x414c0a | goto label_2; | label_8: 0x00414ca7 mov r13, qword [r15] | r13 = *(r15); 0x00414caa test r13, r13 | | if (r13 == 0) { 0x00414cad je 0x414c12 | goto label_1; | } 0x00414cb3 mov rbp, qword [r15 + 0x38] | rbp = *((r15 + 0x38)); 0x00414cb7 mov rdi, r13 | 0x00414cba call 0x415670 | BloombergLP::balb::Choice1::~Choice1() (r13); 0x00414cbf mov rax, qword [rbp] | rax = *(rbp); 0x00414cc3 mov rdi, rbp | rdi = rbp; 0x00414cc6 mov rsi, r13 | rsi = r13; 0x00414cc9 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); 0x00414ccc jmp 0x414c12 | goto label_1; | label_6: 0x00414cd1 mov rdi, qword [rsp] | rdi = *(rsp); 0x00414cd5 mov rbx, qword [rdi] | rbx = *(rdi); | label_4: 0x00414cd8 mov rdi, qword [rdi + 0x18] | rdi = *((rdi + 0x18)); 0x00414cdc mov rax, qword [rdi] | rax = *(rdi); 0x00414cdf mov rsi, rbx | rsi = rbx; 0x00414ce2 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | label_3: 0x00414ce5 add rsp, 8 | 0x00414ce9 pop rbx | 0x00414cea pop r12 | 0x00414cec pop r13 | 0x00414cee pop r14 | 0x00414cf0 pop r15 | 0x00414cf2 pop rbp | 0x00414cf3 ret | return rax; | }