; assembly | /* r2dec pseudo code output */ | /* balb_testmessages.t/assume @ 0x40e340 */ | #include | ; (fcn) method.BloombergLP::balb::Sequence4.Sequence4__ () | int64_t method_BloombergLP::balb::Sequence4_Sequence4_ (uint32_t arg1) { | int64_t var_8h; | rdi = arg1; | /* BloombergLP::balb::Sequence4::~Sequence4() */ 0x0040e340 push r15 | 0x0040e342 push r14 | 0x0040e344 push rbx | 0x0040e345 sub rsp, 0x10 | 0x0040e349 mov r14, rdi | r14 = rdi; 0x0040e34c cmp byte [rdi + 0x1d0], 0 | | if (*((rdi + 0x1d0)) != 0) { 0x0040e353 je 0x40e386 | 0x0040e355 mov byte [r14 + 0x1d0], 0 | *((r14 + 0x1d0)) = 0; 0x0040e35d cmp qword [r14 + 0x1c0], 0x17 | | if (*((r14 + 0x1c0)) != 0x17) { 0x0040e365 je 0x40e37b | 0x0040e367 mov rsi, qword [r14 + 0x1a0] | rsi = *((r14 + 0x1a0)); 0x0040e36e mov rdi, qword [r14 + 0x1c8] | rdi = *((r14 + 0x1c8)); 0x0040e375 mov rax, qword [rdi] | rax = *(rdi); 0x0040e378 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x0040e37b mov qword [r14 + 0x1b8], 0xffffffffffffffff | *((r14 + 0x1b8)) = 0xffffffffffffffff; | } 0x0040e386 cmp byte [r14 + 0x178], 0 | | if (*((r14 + 0x178)) != 0) { 0x0040e38e je 0x40e3b1 | 0x0040e390 mov byte [r14 + 0x178], 0 | *((r14 + 0x178)) = 0; 0x0040e398 mov rsi, qword [r14 + 0x158] | rsi = *((r14 + 0x158)); 0x0040e39f test rsi, rsi | | if (rsi == 0) { 0x0040e3a2 je 0x40e3b1 | goto label_2; | } 0x0040e3a4 mov rdi, qword [r14 + 0x170] | rdi = *((r14 + 0x170)); 0x0040e3ab mov rax, qword [rdi] | rax = *(rdi); 0x0040e3ae call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } | label_2: 0x0040e3b1 cmp qword [r14 + 0x148], 0x17 | | if (*((r14 + 0x148)) != 0x17) { 0x0040e3b9 je 0x40e3cf | 0x0040e3bb mov rsi, qword [r14 + 0x128] | rsi = *((r14 + 0x128)); 0x0040e3c2 mov rdi, qword [r14 + 0x150] | rdi = *((r14 + 0x150)); 0x0040e3c9 mov rax, qword [rdi] | rax = *(rdi); 0x0040e3cc call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x0040e3cf mov qword [r14 + 0x140], 0xffffffffffffffff | *((r14 + 0x140)) = 0xffffffffffffffff; 0x0040e3da mov rdi, qword [r14 + 0x108] | rdi = *((r14 + 0x108)); 0x0040e3e1 test rdi, rdi | | if (rdi != 0) { 0x0040e3e4 je 0x40e417 | 0x0040e3e6 mov rsi, qword [r14 + 0x110] | 0x0040e3ed mov rax, qword [r14 + 0x120] | rax = *((r14 + 0x120)); 0x0040e3f4 mov qword [rsp + 8], rax | *((rsp + 8)) = rax; 0x0040e3f9 lea rdx, [rsp + 8] | rdx = rsp + 8; 0x0040e3fe call 0x419cc0 | voidBloombergLP::bslalg::ArrayDestructionPrimitives::destroy>(BloombergLP::balb::Choice1*,BloombergLP::balb::Choice1*,bsl::allocator,bsl::integral_constant) (rdi, *((r14 + 0x110))); 0x0040e403 mov rsi, qword [r14 + 0x108] | rsi = *((r14 + 0x108)); 0x0040e40a mov rdi, qword [r14 + 0x120] | rdi = *((r14 + 0x120)); 0x0040e411 mov rax, qword [rdi] | rax = *(rdi); 0x0040e414 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x0040e417 mov rbx, qword [r14 + 0xe8] | rbx = *((r14 + 0xe8)); 0x0040e41e test rbx, rbx | | if (rbx == 0) { 0x0040e421 je 0x40e47e | goto label_3; | } 0x0040e423 mov r15, qword [r14 + 0xf0] | r15 = *((r14 + 0xf0)); 0x0040e42a cmp rbx, r15 | | if (rbx != r15) { 0x0040e42d jne 0x40e451 | goto label_4; | } 0x0040e42f jmp 0x40e46e | goto label_5; | do { | label_0: 0x0040e440 mov qword [rbx + 0x18], 0xffffffffffffffff | *((rbx + 0x18)) = 0xffffffffffffffff; 0x0040e448 add rbx, 0x30 | rbx += 0x30; 0x0040e44c cmp r15, rbx | | if (r15 == rbx) { 0x0040e44f je 0x40e467 | goto label_6; | } | label_4: 0x0040e451 cmp qword [rbx + 0x20], 0x17 | 0x0040e456 je 0x40e440 | | } while (*((rbx + 0x20)) == 0x17); 0x0040e458 mov rsi, qword [rbx] | rsi = *(rbx); 0x0040e45b mov rdi, qword [rbx + 0x28] | rdi = *((rbx + 0x28)); 0x0040e45f mov rax, qword [rdi] | rax = *(rdi); 0x0040e462 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); 0x0040e465 jmp 0x40e440 | goto label_0; | label_6: 0x0040e467 mov rbx, qword [r14 + 0xe8] | rbx = *((r14 + 0xe8)); | label_5: 0x0040e46e mov rdi, qword [r14 + 0x100] | rdi = *((r14 + 0x100)); 0x0040e475 mov rax, qword [rdi] | rax = *(rdi); 0x0040e478 mov rsi, rbx | rsi = rbx; 0x0040e47b call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | label_3: 0x0040e47e mov rbx, qword [r14 + 0xc8] | rbx = *((r14 + 0xc8)); 0x0040e485 test rbx, rbx | | if (rbx == 0) { 0x0040e488 je 0x40e4cb | goto label_7; | } 0x0040e48a mov r15, qword [r14 + 0xd0] | r15 = *((r14 + 0xd0)); 0x0040e491 cmp rbx, r15 | | if (rbx == r15) { 0x0040e494 je 0x40e4bb | goto label_8; | } 0x0040e496 nop word cs:[rax + rax] | | do { 0x0040e4a0 mov rdi, rbx | 0x0040e4a3 call 0x406b80 | BloombergLP::balb::Sequence3::~Sequence3() (rbx); 0x0040e4a8 add rbx, 0xb8 | rbx += 0xb8; 0x0040e4af cmp r15, rbx | 0x0040e4b2 jne 0x40e4a0 | | } while (r15 != rbx); 0x0040e4b4 mov rbx, qword [r14 + 0xc8] | rbx = *((r14 + 0xc8)); | label_8: 0x0040e4bb mov rdi, qword [r14 + 0xe0] | rdi = *((r14 + 0xe0)); 0x0040e4c2 mov rax, qword [rdi] | rax = *(rdi); 0x0040e4c5 mov rsi, rbx | rsi = rbx; 0x0040e4c8 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | label_7: 0x0040e4cb mov rsi, qword [r14 + 0xa8] | rsi = *((r14 + 0xa8)); 0x0040e4d2 test rsi, rsi | | if (rsi != 0) { 0x0040e4d5 je 0x40e4e4 | 0x0040e4d7 mov rdi, qword [r14 + 0xc0] | rdi = *((r14 + 0xc0)); 0x0040e4de mov rax, qword [rdi] | rax = *(rdi); 0x0040e4e1 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x0040e4e4 mov rsi, qword [r14 + 0x88] | rsi = *((r14 + 0x88)); 0x0040e4eb test rsi, rsi | | if (rsi != 0) { 0x0040e4ee je 0x40e4fd | 0x0040e4f0 mov rdi, qword [r14 + 0xa0] | rdi = *((r14 + 0xa0)); 0x0040e4f7 mov rax, qword [rdi] | rax = *(rdi); 0x0040e4fa call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x0040e4fd mov rbx, qword [r14 + 0x68] | rbx = *((r14 + 0x68)); 0x0040e501 test rbx, rbx | | if (rbx == 0) { 0x0040e504 je 0x40e551 | goto label_9; | } 0x0040e506 mov r15, qword [r14 + 0x70] | r15 = *((r14 + 0x70)); 0x0040e50a cmp rbx, r15 | | if (rbx != r15) { 0x0040e50d jne 0x40e529 | goto label_10; | } 0x0040e50f jmp 0x40e541 | goto label_11; | do { | label_1: 0x0040e520 add rbx, 0x20 | rbx += 0x20; 0x0040e524 cmp r15, rbx | | if (r15 == rbx) { 0x0040e527 je 0x40e53d | goto label_12; | } | label_10: 0x0040e529 mov rsi, qword [rbx] | rsi = *(rbx); 0x0040e52c test rsi, rsi | 0x0040e52f je 0x40e520 | | } while (rsi == 0); 0x0040e531 mov rdi, qword [rbx + 0x18] | rdi = *((rbx + 0x18)); 0x0040e535 mov rax, qword [rdi] | rax = *(rdi); 0x0040e538 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); 0x0040e53b jmp 0x40e520 | goto label_1; | label_12: 0x0040e53d mov rbx, qword [r14 + 0x68] | rbx = *((r14 + 0x68)); | label_11: 0x0040e541 mov rdi, qword [r14 + 0x80] | rdi = *((r14 + 0x80)); 0x0040e548 mov rax, qword [rdi] | rax = *(rdi); 0x0040e54b mov rsi, rbx | rsi = rbx; 0x0040e54e call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | label_9: 0x0040e551 mov rsi, qword [r14 + 0x48] | rsi = *((r14 + 0x48)); 0x0040e555 test rsi, rsi | | if (rsi != 0) { 0x0040e558 je 0x40e564 | 0x0040e55a mov rdi, qword [r14 + 0x60] | rdi = *((r14 + 0x60)); 0x0040e55e mov rax, qword [rdi] | rax = *(rdi); 0x0040e561 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x0040e564 mov rsi, qword [r14 + 0x28] | rsi = *((r14 + 0x28)); 0x0040e568 test rsi, rsi | | if (rsi != 0) { 0x0040e56b je 0x40e577 | 0x0040e56d mov rdi, qword [r14 + 0x40] | rdi = *((r14 + 0x40)); 0x0040e571 mov rax, qword [rdi] | rax = *(rdi); 0x0040e574 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x0040e577 mov rsi, qword [r14 + 8] | rsi = *((r14 + 8)); 0x0040e57b test rsi, rsi | | if (rsi != 0) { 0x0040e57e je 0x40e58a | 0x0040e580 mov rdi, qword [r14 + 0x20] | rdi = *((r14 + 0x20)); 0x0040e584 mov rax, qword [rdi] | rax = *(rdi); 0x0040e587 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x0040e58a add rsp, 0x10 | 0x0040e58e pop rbx | 0x0040e58f pop r14 | 0x0040e591 pop r15 | 0x0040e593 ret | return rax; | }