; assembly | /* r2dec pseudo code output */ | /* balb_testmessages.t/none @ 0x40e240 */ | #include | ; (fcn) method.BloombergLP::balb::Sequence4.Sequence4__ () | int64_t method_BloombergLP::balb::Sequence4_Sequence4_ (uint32_t arg1) { | rdi = arg1; | /* BloombergLP::balb::Sequence4::~Sequence4() */ | label_1: 0x0040e240 push rbp | 0x0040e241 push r15 | 0x0040e243 push r14 | 0x0040e245 push r13 | 0x0040e247 push r12 | 0x0040e249 push rbx | 0x0040e24a push rax | 0x0040e24b mov r14, rdi | r14 = rdi; 0x0040e24e cmp byte [rdi + 0x1d0], 0 | | if (*((rdi + 0x1d0)) != 0) { 0x0040e255 je 0x40e288 | 0x0040e257 mov byte [r14 + 0x1d0], 0 | *((r14 + 0x1d0)) = 0; 0x0040e25f cmp qword [r14 + 0x1c0], 0x17 | | if (*((r14 + 0x1c0)) != 0x17) { 0x0040e267 je 0x40e27d | 0x0040e269 mov rsi, qword [r14 + 0x1a0] | rsi = *((r14 + 0x1a0)); 0x0040e270 mov rdi, qword [r14 + 0x1c8] | rdi = *((r14 + 0x1c8)); 0x0040e277 mov rax, qword [rdi] | rax = *(rdi); 0x0040e27a call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x0040e27d mov qword [r14 + 0x1b8], 0xffffffffffffffff | *((r14 + 0x1b8)) = 0xffffffffffffffff; | } 0x0040e288 cmp byte [r14 + 0x178], 0 | | if (*((r14 + 0x178)) != 0) { 0x0040e290 je 0x40e2b3 | 0x0040e292 mov byte [r14 + 0x178], 0 | *((r14 + 0x178)) = 0; 0x0040e29a mov rsi, qword [r14 + 0x158] | rsi = *((r14 + 0x158)); 0x0040e2a1 test rsi, rsi | | if (rsi == 0) { 0x0040e2a4 je 0x40e2b3 | goto label_6; | } 0x0040e2a6 mov rdi, qword [r14 + 0x170] | rdi = *((r14 + 0x170)); 0x0040e2ad mov rax, qword [rdi] | rax = *(rdi); 0x0040e2b0 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } | label_6: 0x0040e2b3 cmp qword [r14 + 0x148], 0x17 | | if (*((r14 + 0x148)) != 0x17) { 0x0040e2bb je 0x40e2d1 | 0x0040e2bd mov rsi, qword [r14 + 0x128] | rsi = *((r14 + 0x128)); 0x0040e2c4 mov rdi, qword [r14 + 0x150] | rdi = *((r14 + 0x150)); 0x0040e2cb mov rax, qword [rdi] | rax = *(rdi); 0x0040e2ce call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x0040e2d1 mov qword [r14 + 0x140], 0xffffffffffffffff | *((r14 + 0x140)) = 0xffffffffffffffff; 0x0040e2dc mov rbx, qword [r14 + 0x108] | rbx = *((r14 + 0x108)); 0x0040e2e3 test rbx, rbx | | if (rbx == 0) { 0x0040e2e6 je 0x40e3dc | goto label_7; | } 0x0040e2ec mov rbp, qword [r14 + 0x110] | rbp = *((r14 + 0x110)); 0x0040e2f3 cmp rbx, rbp | | if (rbx != rbp) { 0x0040e2f6 jne 0x40e32e | goto label_8; | } 0x0040e2f8 jmp 0x40e3cc | goto label_9; | label_3: 0x0040e2fd mov qword [r15 + 0x18], 0xffffffffffffffff | *((r15 + 0x18)) = 0xffffffffffffffff; | label_2: 0x0040e305 mov dword [r15 + 0x30], 0xffffffff | *((r15 + 0x30)) = 0xffffffff; 0x0040e30d mov rax, qword [r12] | rax = *(r12); 0x0040e311 mov rdi, r12 | rdi = r12; 0x0040e314 mov rsi, r15 | rsi = r15; 0x0040e317 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | do { | label_0: 0x0040e31a mov dword [rbx + 8], 0xffffffff | *((rbx + 8)) = 0xffffffff; 0x0040e321 add rbx, 0x18 | rbx += 0x18; 0x0040e325 cmp rbp, rbx | | if (rbp == rbx) { 0x0040e328 je 0x40e3c5 | goto label_10; | } | label_8: 0x0040e32e mov eax, dword [rbx + 8] | eax = *((rbx + 8)); 0x0040e331 cmp eax, 3 | | if (eax == 3) { 0x0040e334 je 0x40e360 | goto label_11; | } 0x0040e336 cmp eax, 2 | 0x0040e339 jne 0x40e31a | | } while (eax != 2); 0x0040e33b mov r15, qword [rbx] | r15 = *(rbx); 0x0040e33e test r15, r15 | | if (r15 == 0) { 0x0040e341 je 0x40e31a | goto label_0; | } 0x0040e343 mov r12, qword [rbx + 0x10] | r12 = *((rbx + 0x10)); 0x0040e347 mov rdi, r15 | 0x0040e34a call 0x40e240 | BloombergLP::balb::Sequence4::~Sequence4() (r15); | goto label_1; 0x0040e34f mov rax, qword [r12] | rax = *(r12); 0x0040e353 mov rdi, r12 | rdi = r12; 0x0040e356 mov rsi, r15 | rsi = r15; 0x0040e359 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); 0x0040e35c jmp 0x40e31a | goto label_0; | label_11: 0x0040e360 mov r15, qword [rbx] | r15 = *(rbx); 0x0040e363 test r15, r15 | | if (r15 == 0) { 0x0040e366 je 0x40e31a | goto label_0; | } 0x0040e368 mov r12, qword [rbx + 0x10] | r12 = *((rbx + 0x10)); 0x0040e36c mov eax, dword [r15 + 0x30] | eax = *((r15 + 0x30)); 0x0040e370 cmp eax, 2 | | if (eax == 2) { 0x0040e373 je 0x40e397 | goto label_12; | } 0x0040e375 cmp eax, 1 | | if (eax != 1) { 0x0040e378 jne 0x40e305 | goto label_2; | } 0x0040e37a cmp qword [r15 + 0x20], 0x17 | | if (*((r15 + 0x20)) == 0x17) { 0x0040e37f je 0x40e2fd | goto label_3; | } 0x0040e385 mov rsi, qword [r15] | rsi = *(r15); 0x0040e388 mov rdi, qword [r15 + 0x28] | rdi = *((r15 + 0x28)); 0x0040e38c mov rax, qword [rdi] | rax = *(rdi); 0x0040e38f call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); 0x0040e392 jmp 0x40e2fd | goto label_3; | label_12: 0x0040e397 mov r13, qword [r15] | r13 = *(r15); 0x0040e39a test r13, r13 | | if (r13 == 0) { 0x0040e39d je 0x40e305 | goto label_2; | } 0x0040e3a3 mov rax, qword [r15 + 0x38] | rax = *((r15 + 0x38)); 0x0040e3a7 mov qword [rsp], rax | *(rsp) = rax; 0x0040e3ab mov rdi, r13 | 0x0040e3ae call 0x415670 | BloombergLP::balb::Choice1::~Choice1() (r13); 0x0040e3b3 mov rdi, qword [rsp] | rdi = *(rsp); 0x0040e3b7 mov rax, qword [rdi] | rax = *(rdi); 0x0040e3ba mov rsi, r13 | rsi = r13; 0x0040e3bd call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); 0x0040e3c0 jmp 0x40e305 | goto label_2; | label_10: 0x0040e3c5 mov rbx, qword [r14 + 0x108] | rbx = *((r14 + 0x108)); | label_9: 0x0040e3cc mov rdi, qword [r14 + 0x120] | rdi = *((r14 + 0x120)); 0x0040e3d3 mov rax, qword [rdi] | rax = *(rdi); 0x0040e3d6 mov rsi, rbx | rsi = rbx; 0x0040e3d9 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | label_7: 0x0040e3dc mov rbx, qword [r14 + 0xe8] | rbx = *((r14 + 0xe8)); 0x0040e3e3 test rbx, rbx | | if (rbx == 0) { 0x0040e3e6 je 0x40e43e | goto label_13; | } 0x0040e3e8 mov rbp, qword [r14 + 0xf0] | rbp = *((r14 + 0xf0)); 0x0040e3ef cmp rbx, rbp | | if (rbx != rbp) { 0x0040e3f2 jne 0x40e411 | goto label_14; | } 0x0040e3f4 jmp 0x40e42e | goto label_15; | do { | label_4: 0x0040e400 mov qword [rbx + 0x18], 0xffffffffffffffff | *((rbx + 0x18)) = 0xffffffffffffffff; 0x0040e408 add rbx, 0x30 | rbx += 0x30; 0x0040e40c cmp rbp, rbx | | if (rbp == rbx) { 0x0040e40f je 0x40e427 | goto label_16; | } | label_14: 0x0040e411 cmp qword [rbx + 0x20], 0x17 | 0x0040e416 je 0x40e400 | | } while (*((rbx + 0x20)) == 0x17); 0x0040e418 mov rsi, qword [rbx] | rsi = *(rbx); 0x0040e41b mov rdi, qword [rbx + 0x28] | rdi = *((rbx + 0x28)); 0x0040e41f mov rax, qword [rdi] | rax = *(rdi); 0x0040e422 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); 0x0040e425 jmp 0x40e400 | goto label_4; | label_16: 0x0040e427 mov rbx, qword [r14 + 0xe8] | rbx = *((r14 + 0xe8)); | label_15: 0x0040e42e mov rdi, qword [r14 + 0x100] | rdi = *((r14 + 0x100)); 0x0040e435 mov rax, qword [rdi] | rax = *(rdi); 0x0040e438 mov rsi, rbx | rsi = rbx; 0x0040e43b call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | label_13: 0x0040e43e mov rbx, qword [r14 + 0xc8] | rbx = *((r14 + 0xc8)); 0x0040e445 test rbx, rbx | | if (rbx == 0) { 0x0040e448 je 0x40e48b | goto label_17; | } 0x0040e44a mov rbp, qword [r14 + 0xd0] | rbp = *((r14 + 0xd0)); 0x0040e451 cmp rbx, rbp | | if (rbx == rbp) { 0x0040e454 je 0x40e47b | goto label_18; | } 0x0040e456 nop word cs:[rax + rax] | | do { 0x0040e460 mov rdi, rbx | 0x0040e463 call 0x406b30 | BloombergLP::balb::Sequence3::~Sequence3() (rbx); 0x0040e468 add rbx, 0xb8 | rbx += 0xb8; 0x0040e46f cmp rbp, rbx | 0x0040e472 jne 0x40e460 | | } while (rbp != rbx); 0x0040e474 mov rbx, qword [r14 + 0xc8] | rbx = *((r14 + 0xc8)); | label_18: 0x0040e47b mov rdi, qword [r14 + 0xe0] | rdi = *((r14 + 0xe0)); 0x0040e482 mov rax, qword [rdi] | rax = *(rdi); 0x0040e485 mov rsi, rbx | rsi = rbx; 0x0040e488 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | label_17: 0x0040e48b mov rsi, qword [r14 + 0xa8] | rsi = *((r14 + 0xa8)); 0x0040e492 test rsi, rsi | | if (rsi != 0) { 0x0040e495 je 0x40e4a4 | 0x0040e497 mov rdi, qword [r14 + 0xc0] | rdi = *((r14 + 0xc0)); 0x0040e49e mov rax, qword [rdi] | rax = *(rdi); 0x0040e4a1 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x0040e4a4 mov rsi, qword [r14 + 0x88] | rsi = *((r14 + 0x88)); 0x0040e4ab test rsi, rsi | | if (rsi != 0) { 0x0040e4ae je 0x40e4bd | 0x0040e4b0 mov rdi, qword [r14 + 0xa0] | rdi = *((r14 + 0xa0)); 0x0040e4b7 mov rax, qword [rdi] | rax = *(rdi); 0x0040e4ba call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x0040e4bd mov rbx, qword [r14 + 0x68] | rbx = *((r14 + 0x68)); 0x0040e4c1 test rbx, rbx | | if (rbx == 0) { 0x0040e4c4 je 0x40e511 | goto label_19; | } 0x0040e4c6 mov rbp, qword [r14 + 0x70] | rbp = *((r14 + 0x70)); 0x0040e4ca cmp rbx, rbp | | if (rbx != rbp) { 0x0040e4cd jne 0x40e4e9 | goto label_20; | } 0x0040e4cf jmp 0x40e501 | goto label_21; | do { | label_5: 0x0040e4e0 add rbx, 0x20 | rbx += 0x20; 0x0040e4e4 cmp rbp, rbx | | if (rbp == rbx) { 0x0040e4e7 je 0x40e4fd | goto label_22; | } | label_20: 0x0040e4e9 mov rsi, qword [rbx] | rsi = *(rbx); 0x0040e4ec test rsi, rsi | 0x0040e4ef je 0x40e4e0 | | } while (rsi == 0); 0x0040e4f1 mov rdi, qword [rbx + 0x18] | rdi = *((rbx + 0x18)); 0x0040e4f5 mov rax, qword [rdi] | rax = *(rdi); 0x0040e4f8 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); 0x0040e4fb jmp 0x40e4e0 | goto label_5; | label_22: 0x0040e4fd mov rbx, qword [r14 + 0x68] | rbx = *((r14 + 0x68)); | label_21: 0x0040e501 mov rdi, qword [r14 + 0x80] | rdi = *((r14 + 0x80)); 0x0040e508 mov rax, qword [rdi] | rax = *(rdi); 0x0040e50b mov rsi, rbx | rsi = rbx; 0x0040e50e call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | label_19: 0x0040e511 mov rsi, qword [r14 + 0x48] | rsi = *((r14 + 0x48)); 0x0040e515 test rsi, rsi | | if (rsi != 0) { 0x0040e518 je 0x40e524 | 0x0040e51a mov rdi, qword [r14 + 0x60] | rdi = *((r14 + 0x60)); 0x0040e51e mov rax, qword [rdi] | rax = *(rdi); 0x0040e521 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x0040e524 mov rsi, qword [r14 + 0x28] | rsi = *((r14 + 0x28)); 0x0040e528 test rsi, rsi | | if (rsi != 0) { 0x0040e52b je 0x40e537 | 0x0040e52d mov rdi, qword [r14 + 0x40] | rdi = *((r14 + 0x40)); 0x0040e531 mov rax, qword [rdi] | rax = *(rdi); 0x0040e534 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x0040e537 mov rsi, qword [r14 + 8] | rsi = *((r14 + 8)); 0x0040e53b test rsi, rsi | | if (rsi != 0) { 0x0040e53e je 0x40e54a | 0x0040e540 mov rdi, qword [r14 + 0x20] | rdi = *((r14 + 0x20)); 0x0040e544 mov rax, qword [rdi] | rax = *(rdi); 0x0040e547 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x0040e54a add rsp, 8 | 0x0040e54e pop rbx | 0x0040e54f pop r12 | 0x0040e551 pop r13 | 0x0040e553 pop r14 | 0x0040e555 pop r15 | 0x0040e557 pop rbp | 0x0040e558 ret | return rax; | }