; assembly | /* r2dec pseudo code output */ | /* baljsn_encoder.t/assume @ 0x4d0330 */ | #include | ; (fcn) method.BloombergLP::s_baltst::SequenceWithAnonymityChoice.makeSelection_int_ () | int64_t method_BloombergLP::s_baltst::SequenceWithAnonymityChoice_makeSelection_int_ (uint32_t arg2, int64_t arg1) { | rsi = arg2; | rdi = arg1; | /* BloombergLP::s_baltst::SequenceWithAnonymityChoice::makeSelection(int) */ 0x004d0330 push r14 | 0x004d0332 push rbx | 0x004d0333 push rax | 0x004d0334 inc esi | esi++; 0x004d0336 cmp esi, 4 | | if (esi <= 4) { 0x004d0339 ja 0x4d038f | 0x004d033b mov r14, rdi | r14 = rdi; | /* switch table (5 cases) at 0x64a420 */ 0x004d033e jmp qword [rsi*8 + 0x64a420] | 0x004d0345 mov eax, dword [r14 + 0x170] | eax = *((r14 + 0x170)); 0x004d034c cmp rax, 3 | | if (rax > 3) { 0x004d0350 ja 0x4d04f8 | goto label_0; | } | /* switch table (4 cases) at 0x64a448 */ 0x004d0356 jmp qword [rax*8 + 0x64a448] | 0x004d035d mov rdi, r14 | 0x004d0360 call 0x4c4a50 | BloombergLP::s_baltst::Sequence6::~Sequence6() (r14); 0x004d0365 jmp 0x4d04f8 | goto label_0; 0x004d036a mov eax, dword [r14 + 0x170] | eax = *((r14 + 0x170)); 0x004d0371 cmp rax, 3 | | if (rax > 3) { 0x004d0375 ja 0x4d046e | goto label_1; | } | /* switch table (4 cases) at 0x64a468 */ 0x004d037b jmp qword [rax*8 + 0x64a468] | 0x004d0382 mov rdi, r14 | 0x004d0385 call 0x4c4a50 | BloombergLP::s_baltst::Sequence6::~Sequence6() (r14); 0x004d038a jmp 0x4d046e | | } else { 0x004d038f mov ebx, 0xffffffff | ebx = 0xffffffff; 0x004d0394 jmp 0x4d0548 | goto label_2; 0x004d0399 mov eax, dword [r14 + 0x170] | eax = *((r14 + 0x170)); 0x004d03a0 cmp rax, 3 | | if (rax > 3) { 0x004d03a4 ja 0x4d0521 | goto label_3; | } | /* switch table (4 cases) at 0x64a4c8 */ 0x004d03aa jmp qword [rax*8 + 0x64a4c8] | 0x004d03b1 mov rdi, r14 | 0x004d03b4 call 0x4c4bf0 | BloombergLP::s_baltst::Sequence6::reset() (r14); 0x004d03b9 jmp 0x4d0546 | goto label_4; 0x004d03be mov eax, dword [r14 + 0x170] | eax = *((r14 + 0x170)); 0x004d03c5 cmp rax, 3 | | if (rax > 3) { 0x004d03c9 ja 0x4d04b6 | goto label_5; | } | /* switch table (4 cases) at 0x64a4a8 */ 0x004d03cf jmp qword [rax*8 + 0x64a4a8] | 0x004d03d6 mov rdi, r14 | 0x004d03d9 call 0x4c4a50 | BloombergLP::s_baltst::Sequence6::~Sequence6() (r14); 0x004d03de jmp 0x4d04b6 | goto label_5; 0x004d03e3 mov eax, dword [r14 + 0x170] | eax = *((r14 + 0x170)); 0x004d03ea cmp rax, 3 | | if (rax <= 3) { 0x004d03ee ja 0x4d03ff | | /* switch table (4 cases) at 0x64a488 */ 0x004d03f0 jmp qword [rax*8 + 0x64a488] | 0x004d03f7 mov rdi, r14 | 0x004d03fa call 0x4c4a50 | BloombergLP::s_baltst::Sequence6::~Sequence6() (r14); | } 0x004d03ff mov dword [r14 + 0x170], 0xffffffff | *((r14 + 0x170)) = 0xffffffff; 0x004d040a mov rax, qword [r14 + 0x178] | rax = *((r14 + 0x178)); 0x004d0411 test rax, rax | | if (rax == 0) { 0x004d0414 jne 0x4d0427 | 0x004d0416 mov rax, qword [rip + 0x3fcc8b] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x004d041d test rax, rax | | if (rax != 0) { 0x004d0420 jne 0x4d0427 | goto label_6; | } 0x004d0422 call 0x517520 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); | } | label_6: 0x004d0427 mov qword [r14], 0 | *(r14) = 0; 0x004d042e movaps xmm0, xmmword [rip + 0x6c5db] | xmm0 = .comment; 0x004d0435 movups xmmword [r14 + 0x18], xmm0 | __asm ("movups xmmword [r14 + 0x18], xmm0"); 0x004d043a mov qword [r14 + 0x28], rax | *((r14 + 0x28)) = rax; 0x004d043e mov byte [r14], 0 | *(r14) = 0; 0x004d0442 mov dword [r14 + 0x170], 2 | *((r14 + 0x170)) = 2; 0x004d044d jmp 0x4d0546 | goto label_4; 0x004d0452 cmp qword [r14 + 0x20], 0x17 | | if (*((r14 + 0x20)) != 0x17) { 0x004d0457 je 0x4d0466 | 0x004d0459 mov rsi, qword [r14] | rsi = *(r14); 0x004d045c mov rdi, qword [r14 + 0x28] | rdi = *((r14 + 0x28)); 0x004d0460 mov rax, qword [rdi] | rax = *(rdi); 0x004d0463 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x004d0466 mov qword [r14 + 0x18], 0xffffffffffffffff | *((r14 + 0x18)) = 0xffffffffffffffff; | } | label_1: 0x004d046e mov dword [r14], 0 | *(r14) = 0; 0x004d0475 mov dword [r14 + 0x170], 3 | *((r14 + 0x170)) = 3; 0x004d0480 jmp 0x4d0546 | goto label_4; 0x004d0485 mov dword [r14], 0 | *(r14) = 0; 0x004d048c jmp 0x4d0546 | goto label_4; 0x004d0491 mov byte [r14], 0 | *(r14) = 0; 0x004d0495 jmp 0x4d0546 | goto label_4; 0x004d049a cmp qword [r14 + 0x20], 0x17 | | if (*((r14 + 0x20)) != 0x17) { 0x004d049f je 0x4d04ae | 0x004d04a1 mov rsi, qword [r14] | rsi = *(r14); 0x004d04a4 mov rdi, qword [r14 + 0x28] | rdi = *((r14 + 0x28)); 0x004d04a8 mov rax, qword [rdi] | rax = *(rdi); 0x004d04ab call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x004d04ae mov qword [r14 + 0x18], 0xffffffffffffffff | *((r14 + 0x18)) = 0xffffffffffffffff; | label_5: 0x004d04b6 mov byte [r14], 0 | *(r14) = 0; 0x004d04ba mov dword [r14 + 0x170], 1 | *((r14 + 0x170)) = 1; 0x004d04c5 jmp 0x4d0546 | goto label_4; 0x004d04c7 xor ebx, ebx | ebx = 0; 0x004d04c9 mov rdi, r14 | 0x004d04cc xor esi, esi | 0x004d04ce mov rdx, 0xffffffffffffffff | 0x004d04d5 call 0x51c820 | bsl::basic_string,bsl::allocator>::erase(unsigned long,unsigned long) (r14, 0, 0xffffffffffffffff); 0x004d04da jmp 0x4d0548 | goto label_2; 0x004d04dc cmp qword [r14 + 0x20], 0x17 | | if (*((r14 + 0x20)) != 0x17) { 0x004d04e1 je 0x4d04f0 | 0x004d04e3 mov rsi, qword [r14] | rsi = *(r14); 0x004d04e6 mov rdi, qword [r14 + 0x28] | rdi = *((r14 + 0x28)); 0x004d04ea mov rax, qword [rdi] | rax = *(rdi); 0x004d04ed call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x004d04f0 mov qword [r14 + 0x18], 0xffffffffffffffff | *((r14 + 0x18)) = 0xffffffffffffffff; | label_0: 0x004d04f8 mov dword [r14 + 0x170], 0xffffffff | *((r14 + 0x170)) = 0xffffffff; 0x004d0503 jmp 0x4d0546 | goto label_4; 0x004d0505 cmp qword [r14 + 0x20], 0x17 | | if (*((r14 + 0x20)) != 0x17) { 0x004d050a je 0x4d0519 | 0x004d050c mov rsi, qword [r14] | rsi = *(r14); 0x004d050f mov rdi, qword [r14 + 0x28] | rdi = *((r14 + 0x28)); 0x004d0513 mov rax, qword [rdi] | rax = *(rdi); 0x004d0516 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x004d0519 mov qword [r14 + 0x18], 0xffffffffffffffff | *((r14 + 0x18)) = 0xffffffffffffffff; | label_3: 0x004d0521 mov dword [r14 + 0x170], 0xffffffff | *((r14 + 0x170)) = 0xffffffff; 0x004d052c mov rsi, qword [r14 + 0x178] | 0x004d0533 mov rdi, r14 | 0x004d0536 call 0x4c3140 | BloombergLP::s_baltst::Sequence6::Sequence6(BloombergLP::bslma::Allocator*) (r14, *((r14 + 0x178))); 0x004d053b mov dword [r14 + 0x170], 0 | *((r14 + 0x170)) = 0; | label_4: 0x004d0546 xor ebx, ebx | ebx = 0; | label_2: 0x004d0548 mov eax, ebx | eax = ebx; 0x004d054a add rsp, 8 | 0x004d054e pop rbx | 0x004d054f pop r14 | 0x004d0551 ret | return rax; | }