; assembly | /* r2dec pseudo code output */ | /* baljsn_encoder.t/none @ 0x4b9bb0 */ | #include | ; (fcn) method.BloombergLP::s_baltst::Choice3.makeSelection_int_ () | int64_t method_BloombergLP::s_baltst::Choice3_makeSelection_int_ (uint32_t arg2, int64_t arg1) { | rsi = arg2; | rdi = arg1; | /* BloombergLP::s_baltst::Choice3::makeSelection(int) */ 0x004b9bb0 push r14 | 0x004b9bb2 push rbx | 0x004b9bb3 push rax | 0x004b9bb4 inc esi | esi++; 0x004b9bb6 cmp esi, 4 | | if (esi <= 4) { 0x004b9bb9 ja 0x4b9c17 | 0x004b9bbb mov r14, rdi | r14 = rdi; | /* switch table (5 cases) at 0x648f40 */ 0x004b9bbe jmp qword [rsi*8 + 0x648f40] | 0x004b9bc5 mov eax, dword [r14 + 0x170] | eax = *((r14 + 0x170)); 0x004b9bcc cmp eax, 2 | | if (eax != 2) { 0x004b9bcf je 0x4b9ca0 | 0x004b9bd5 test eax, eax | | if (eax != 0) { 0x004b9bd7 jne 0x4b9cbc | goto label_0; | } 0x004b9bdd mov rdi, r14 | 0x004b9be0 call 0x4c4be0 | BloombergLP::s_baltst::Sequence6::~Sequence6() (r14); 0x004b9be5 jmp 0x4b9cbc | goto label_0; 0x004b9bea mov eax, dword [r14 + 0x170] | eax = *((r14 + 0x170)); 0x004b9bf1 test eax, eax | | if (eax == 0) { 0x004b9bf3 je 0x4b9d6a | goto label_1; | } 0x004b9bf9 cmp eax, 2 | | if (eax == 2) { 0x004b9bfc je 0x4b9d74 | goto label_2; | } 0x004b9c02 cmp eax, 3 | | if (eax != 3) { 0x004b9c05 jne 0x4b9d90 | goto label_3; | } 0x004b9c0b mov dword [r14], 0 | *(r14) = 0; 0x004b9c12 jmp 0x4b9dd9 | | } else { 0x004b9c17 mov ebx, 0xffffffff | ebx = 0xffffffff; 0x004b9c1c jmp 0x4b9ddb | goto label_4; 0x004b9c21 mov eax, dword [r14 + 0x170] | eax = *((r14 + 0x170)); 0x004b9c28 cmp eax, 2 | | if (eax == 2) { 0x004b9c2b je 0x4b9ccc | goto label_5; | } 0x004b9c31 test eax, eax | | if (eax != 0) { 0x004b9c33 jne 0x4b9ce8 | goto label_6; | } 0x004b9c39 mov rdi, r14 | 0x004b9c3c call 0x4c4d80 | BloombergLP::s_baltst::Sequence6::reset() (r14); 0x004b9c41 jmp 0x4b9dd9 | goto label_7; 0x004b9c46 mov eax, dword [r14 + 0x170] | eax = *((r14 + 0x170)); 0x004b9c4d test eax, eax | | if (eax == 0) { 0x004b9c4f je 0x4b9da4 | goto label_8; | } 0x004b9c55 cmp eax, 2 | | if (eax == 2) { 0x004b9c58 je 0x4b9dae | goto label_9; | } 0x004b9c5e cmp eax, 1 | | if (eax != 1) { 0x004b9c61 jne 0x4b9dca | goto label_10; | } 0x004b9c67 mov byte [r14], 0 | *(r14) = 0; 0x004b9c6b jmp 0x4b9dd9 | goto label_7; 0x004b9c70 mov eax, dword [r14 + 0x170] | eax = *((r14 + 0x170)); 0x004b9c77 test eax, eax | | if (eax == 0) { 0x004b9c79 je 0x4b9d12 | goto label_11; | } 0x004b9c7f cmp eax, 2 | | if (eax != 2) { 0x004b9c82 jne 0x4b9d1a | goto label_12; | } 0x004b9c88 xor ebx, ebx | ebx = 0; 0x004b9c8a mov rdi, r14 | 0x004b9c8d xor esi, esi | 0x004b9c8f mov rdx, 0xffffffffffffffff | 0x004b9c96 call 0x51d460 | bsl::basic_string,bsl::allocator>::erase(unsigned long,unsigned long) (r14, 0, 0xffffffffffffffff); 0x004b9c9b jmp 0x4b9ddb | goto label_4; | } 0x004b9ca0 cmp qword [r14 + 0x20], 0x17 | | if (*((r14 + 0x20)) != 0x17) { 0x004b9ca5 je 0x4b9cb4 | 0x004b9ca7 mov rsi, qword [r14] | rsi = *(r14); 0x004b9caa mov rdi, qword [r14 + 0x28] | rdi = *((r14 + 0x28)); 0x004b9cae mov rax, qword [rdi] | rax = *(rdi); 0x004b9cb1 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x004b9cb4 mov qword [r14 + 0x18], 0xffffffffffffffff | *((r14 + 0x18)) = 0xffffffffffffffff; | label_0: 0x004b9cbc mov dword [r14 + 0x170], 0xffffffff | *((r14 + 0x170)) = 0xffffffff; 0x004b9cc7 jmp 0x4b9dd9 | goto label_7; | label_5: 0x004b9ccc cmp qword [r14 + 0x20], 0x17 | | if (*((r14 + 0x20)) != 0x17) { 0x004b9cd1 je 0x4b9ce0 | 0x004b9cd3 mov rsi, qword [r14] | rsi = *(r14); 0x004b9cd6 mov rdi, qword [r14 + 0x28] | rdi = *((r14 + 0x28)); 0x004b9cda mov rax, qword [rdi] | rax = *(rdi); 0x004b9cdd call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x004b9ce0 mov qword [r14 + 0x18], 0xffffffffffffffff | *((r14 + 0x18)) = 0xffffffffffffffff; | label_6: 0x004b9ce8 mov dword [r14 + 0x170], 0xffffffff | *((r14 + 0x170)) = 0xffffffff; 0x004b9cf3 mov rsi, qword [r14 + 0x178] | 0x004b9cfa mov rdi, r14 | 0x004b9cfd call 0x4c32d0 | BloombergLP::s_baltst::Sequence6::Sequence6(BloombergLP::bslma::Allocator*) (r14, *((r14 + 0x178))); 0x004b9d02 mov dword [r14 + 0x170], 0 | *((r14 + 0x170)) = 0; 0x004b9d0d jmp 0x4b9dd9 | goto label_7; | label_11: 0x004b9d12 mov rdi, r14 | 0x004b9d15 call 0x4c4be0 | BloombergLP::s_baltst::Sequence6::~Sequence6() (r14); | label_12: 0x004b9d1a mov dword [r14 + 0x170], 0xffffffff | *((r14 + 0x170)) = 0xffffffff; 0x004b9d25 mov rax, qword [r14 + 0x178] | rax = *((r14 + 0x178)); 0x004b9d2c test rax, rax | | if (rax == 0) { 0x004b9d2f jne 0x4b9d42 | 0x004b9d31 mov rax, qword [rip + 0x413370] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x004b9d38 test rax, rax | | if (rax != 0) { 0x004b9d3b jne 0x4b9d42 | goto label_13; | } 0x004b9d3d call 0x518150 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); | } | label_13: 0x004b9d42 mov qword [r14], 0 | *(r14) = 0; 0x004b9d49 movaps xmm0, xmmword [rip + 0x838e0] | xmm0 = .comment; 0x004b9d50 movups xmmword [r14 + 0x18], xmm0 | __asm ("movups xmmword [r14 + 0x18], xmm0"); 0x004b9d55 mov qword [r14 + 0x28], rax | *((r14 + 0x28)) = rax; 0x004b9d59 mov byte [r14], 0 | *(r14) = 0; 0x004b9d5d mov dword [r14 + 0x170], 2 | *((r14 + 0x170)) = 2; 0x004b9d68 jmp 0x4b9dd9 | goto label_7; | label_1: 0x004b9d6a mov rdi, r14 | 0x004b9d6d call 0x4c4be0 | BloombergLP::s_baltst::Sequence6::~Sequence6() (r14); 0x004b9d72 jmp 0x4b9d90 | goto label_3; | label_2: 0x004b9d74 cmp qword [r14 + 0x20], 0x17 | | if (*((r14 + 0x20)) != 0x17) { 0x004b9d79 je 0x4b9d88 | 0x004b9d7b mov rsi, qword [r14] | rsi = *(r14); 0x004b9d7e mov rdi, qword [r14 + 0x28] | rdi = *((r14 + 0x28)); 0x004b9d82 mov rax, qword [rdi] | rax = *(rdi); 0x004b9d85 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x004b9d88 mov qword [r14 + 0x18], 0xffffffffffffffff | *((r14 + 0x18)) = 0xffffffffffffffff; | label_3: 0x004b9d90 mov dword [r14], 0 | *(r14) = 0; 0x004b9d97 mov dword [r14 + 0x170], 3 | *((r14 + 0x170)) = 3; 0x004b9da2 jmp 0x4b9dd9 | goto label_7; | label_8: 0x004b9da4 mov rdi, r14 | 0x004b9da7 call 0x4c4be0 | BloombergLP::s_baltst::Sequence6::~Sequence6() (r14); 0x004b9dac jmp 0x4b9dca | goto label_10; | label_9: 0x004b9dae cmp qword [r14 + 0x20], 0x17 | | if (*((r14 + 0x20)) != 0x17) { 0x004b9db3 je 0x4b9dc2 | 0x004b9db5 mov rsi, qword [r14] | rsi = *(r14); 0x004b9db8 mov rdi, qword [r14 + 0x28] | rdi = *((r14 + 0x28)); 0x004b9dbc mov rax, qword [rdi] | rax = *(rdi); 0x004b9dbf call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x004b9dc2 mov qword [r14 + 0x18], 0xffffffffffffffff | *((r14 + 0x18)) = 0xffffffffffffffff; | label_10: 0x004b9dca mov byte [r14], 0 | *(r14) = 0; 0x004b9dce mov dword [r14 + 0x170], 1 | *((r14 + 0x170)) = 1; | } | label_7: 0x004b9dd9 xor ebx, ebx | ebx = 0; | label_4: 0x004b9ddb mov eax, ebx | eax = ebx; 0x004b9ddd add rsp, 8 | 0x004b9de1 pop rbx | 0x004b9de2 pop r14 | 0x004b9de4 ret | return rax; | }