; assembly | /* r2dec pseudo code output */ | /* balb_testmessages.t/none @ 0x40a210 */ | #include | ; (fcn) method.BloombergLP::balb::Choice3.operator_BloombergLP::balb::Choice3_const_ () | int64_t method_BloombergLP::balb::Choice3_operator_BloombergLP::balb::Choice3_const_ (int64_t arg2, uint32_t arg1) { | rsi = arg2; | rdi = arg1; | /* BloombergLP::balb::Choice3::operator=(BloombergLP::balb::Choice3 const&) */ 0x0040a210 push r14 | 0x0040a212 push rbx | 0x0040a213 push rax | 0x0040a214 mov r14, rdi | r14 = rdi; 0x0040a217 cmp rdi, rsi | | if (rdi != rsi) { 0x0040a21a je 0x40a3d2 | 0x0040a220 mov rbx, rsi | rbx = rsi; 0x0040a223 mov eax, dword [rsi + 0x170] | eax = *((rsi + 0x170)); 0x0040a229 cmp rax, 3 | | if (rax <= 3) { 0x0040a22d ja 0x40a26e | | /* switch table (4 cases) at 0x4461f0 */ 0x0040a22f jmp qword [rax*8 + 0x4461f0] | 0x0040a236 mov eax, dword [r14 + 0x170] | eax = *((r14 + 0x170)); 0x0040a23d cmp eax, 2 | | if (eax != 2) { 0x0040a240 je 0x40a2e9 | 0x0040a246 test eax, eax | | if (eax == 0) { 0x0040a248 jne 0x40a305 | 0x0040a24e mov rdi, r14 | 0x0040a251 mov rsi, rbx | 0x0040a254 call 0x409550 | BloombergLP::balb::Sequence6::operator=(BloombergLP::balb::Sequence6const&) (r14, rbx); 0x0040a259 jmp 0x40a3d2 | goto label_0; 0x0040a25e mov rdi, r14 | 0x0040a261 mov rsi, rbx | 0x0040a264 call 0x40a4f0 | BloombergLP::balb::Choice3::makeSelection3(BloombergLP::balb::CustomStringconst&) (r14, rbx); 0x0040a269 jmp 0x40a3d2 | | } else { 0x0040a26e mov eax, dword [r14 + 0x170] | eax = *((r14 + 0x170)); 0x0040a275 cmp eax, 2 | | if (eax == 2) { 0x0040a278 je 0x40a332 | goto label_1; | } 0x0040a27e test eax, eax | | if (eax != 0) { 0x0040a280 jne 0x40a34e | goto label_2; | } 0x0040a286 mov rdi, r14 | 0x0040a289 call 0x4093b0 | BloombergLP::balb::Sequence6::~Sequence6() (r14); 0x0040a28e jmp 0x40a34e | goto label_2; 0x0040a293 mov bl, byte [rbx] | bl = *(rbx); 0x0040a295 mov eax, dword [r14 + 0x170] | eax = *((r14 + 0x170)); 0x0040a29c test eax, eax | | if (eax == 0) { 0x0040a29e je 0x40a379 | goto label_3; | } 0x0040a2a4 cmp eax, 2 | | if (eax == 2) { 0x0040a2a7 je 0x40a383 | goto label_4; | } 0x0040a2ad cmp eax, 1 | | if (eax != 1) { 0x0040a2b0 jne 0x40a39f | goto label_5; | } 0x0040a2b6 mov byte [r14], bl | *(r14) = bl; 0x0040a2b9 jmp 0x40a3d2 | goto label_0; 0x0040a2be mov eax, dword [r14 + 0x170] | eax = *((r14 + 0x170)); 0x0040a2c5 test eax, eax | | if (eax == 0) { 0x0040a2c7 je 0x40a3af | goto label_6; | } 0x0040a2cd cmp eax, 2 | | if (eax == 2) { 0x0040a2d0 je 0x40a35b | goto label_7; | } 0x0040a2d6 cmp eax, 3 | | if (eax != 3) { 0x0040a2d9 jne 0x40a3b7 | goto label_8; | } 0x0040a2df mov eax, dword [rbx] | eax = *(rbx); 0x0040a2e1 mov dword [r14], eax | *(r14) = eax; 0x0040a2e4 jmp 0x40a3d2 | | } else { 0x0040a2e9 cmp qword [r14 + 0x20], 0x17 | | } | } | if (*((r14 + 0x20)) != 0x17) { 0x0040a2ee je 0x40a2fd | 0x0040a2f0 mov rsi, qword [r14] | rsi = *(r14); 0x0040a2f3 mov rdi, qword [r14 + 0x28] | rdi = *((r14 + 0x28)); 0x0040a2f7 mov rax, qword [rdi] | rax = *(rdi); 0x0040a2fa call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x0040a2fd mov qword [r14 + 0x18], 0xffffffffffffffff | *((r14 + 0x18)) = 0xffffffffffffffff; 0x0040a305 mov dword [r14 + 0x170], 0xffffffff | *((r14 + 0x170)) = 0xffffffff; 0x0040a310 mov rdx, qword [r14 + 0x178] | 0x0040a317 mov rdi, r14 | 0x0040a31a mov rsi, rbx | 0x0040a31d call 0x408bf0 | BloombergLP::balb::Sequence6::Sequence6(BloombergLP::balb::Sequence6const&,BloombergLP::bslma::Allocator*) (r14, rbx, *((r14 + 0x178))); 0x0040a322 mov dword [r14 + 0x170], 0 | *((r14 + 0x170)) = 0; 0x0040a32d jmp 0x40a3d2 | goto label_0; | label_1: 0x0040a332 cmp qword [r14 + 0x20], 0x17 | | if (*((r14 + 0x20)) != 0x17) { 0x0040a337 je 0x40a346 | 0x0040a339 mov rsi, qword [r14] | rsi = *(r14); 0x0040a33c mov rdi, qword [r14 + 0x28] | rdi = *((r14 + 0x28)); 0x0040a340 mov rax, qword [rdi] | rax = *(rdi); 0x0040a343 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x0040a346 mov qword [r14 + 0x18], 0xffffffffffffffff | *((r14 + 0x18)) = 0xffffffffffffffff; | label_2: 0x0040a34e mov dword [r14 + 0x170], 0xffffffff | *((r14 + 0x170)) = 0xffffffff; 0x0040a359 jmp 0x40a3d2 | goto label_0; | label_7: 0x0040a35b cmp qword [r14 + 0x20], 0x17 | | if (*((r14 + 0x20)) != 0x17) { 0x0040a360 je 0x40a36f | 0x0040a362 mov rsi, qword [r14] | rsi = *(r14); 0x0040a365 mov rdi, qword [r14 + 0x28] | rdi = *((r14 + 0x28)); 0x0040a369 mov rax, qword [rdi] | rax = *(rdi); 0x0040a36c call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x0040a36f mov qword [r14 + 0x18], 0xffffffffffffffff | *((r14 + 0x18)) = 0xffffffffffffffff; 0x0040a377 jmp 0x40a3b7 | goto label_8; | label_3: 0x0040a379 mov rdi, r14 | 0x0040a37c call 0x4093b0 | BloombergLP::balb::Sequence6::~Sequence6() (r14); 0x0040a381 jmp 0x40a39f | goto label_5; | label_4: 0x0040a383 cmp qword [r14 + 0x20], 0x17 | | if (*((r14 + 0x20)) != 0x17) { 0x0040a388 je 0x40a397 | 0x0040a38a mov rsi, qword [r14] | rsi = *(r14); 0x0040a38d mov rdi, qword [r14 + 0x28] | rdi = *((r14 + 0x28)); 0x0040a391 mov rax, qword [rdi] | rax = *(rdi); 0x0040a394 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x0040a397 mov qword [r14 + 0x18], 0xffffffffffffffff | *((r14 + 0x18)) = 0xffffffffffffffff; | label_5: 0x0040a39f mov byte [r14], bl | *(r14) = bl; 0x0040a3a2 mov dword [r14 + 0x170], 1 | *((r14 + 0x170)) = 1; 0x0040a3ad jmp 0x40a3d2 | goto label_0; | label_6: 0x0040a3af mov rdi, r14 | 0x0040a3b2 call 0x4093b0 | BloombergLP::balb::Sequence6::~Sequence6() (r14); | label_8: 0x0040a3b7 mov dword [r14 + 0x170], 0xffffffff | *((r14 + 0x170)) = 0xffffffff; 0x0040a3c2 mov eax, dword [rbx] | eax = *(rbx); 0x0040a3c4 mov dword [r14], eax | *(r14) = eax; 0x0040a3c7 mov dword [r14 + 0x170], 3 | *((r14 + 0x170)) = 3; | } | } | label_0: 0x0040a3d2 mov rax, r14 | rax = r14; 0x0040a3d5 add rsp, 8 | 0x0040a3d9 pop rbx | 0x0040a3da pop r14 | 0x0040a3dc ret | return rax; | }