; assembly | /* r2dec pseudo code output */ | /* baljsn_decoder.t/none @ 0x450b00 */ | #include | ; (fcn) method.int_BloombergLP::balb::Choice3::manipulateSelection_BloombergLP::baljsn.Decoder_ElementVisitor__BloombergLP::baljsn::Decoder_ElementVisitor_ () | int64_t method_int_BloombergLP::balb::Choice3::manipulateSelection_BloombergLP::baljsn_Decoder_ElementVisitor_BloombergLP::baljsn::Decoder_ElementVisitor_ (uint32_t arg_8h, int64_t arg_18h, int64_t arg2, int64_t arg1) { | rsi = arg2; | rdi = arg1; | /* int BloombergLP::balb::Choice3::manipulateSelection(BloombergLP::baljsn::Decoder_ElementVisitor&) */ 0x00450b00 push rbp | 0x00450b01 push r14 | 0x00450b03 push rbx | 0x00450b04 sub rsp, 0x20 | 0x00450b08 mov eax, dword [rdi + 0x170] | eax = *((rdi + 0x170)); 0x00450b0e mov ebp, 0xffffffff | 0x00450b13 cmp rax, 3 | | if (rax > 3) { 0x00450b17 ja 0x450bc4 | goto label_0; | } 0x00450b1d mov rbx, rdi | rbx = rdi; | /* switch table (4 cases) at 0x4f6588 */ 0x00450b20 jmp qword [rax*8 + 0x4f6588] | 0x00450b27 mov rdi, qword [rsi] | rdi = *(rsi); 0x00450b2a mov edx, dword [rip + 0x1ca060] | edx = .comment; 0x00450b30 mov rsi, rbx | rsi = rbx; 0x00450b33 add rsp, 0x20 | 0x00450b37 pop rbx | 0x00450b38 pop r14 | 0x00450b3a pop rbp | 0x00450b3b jmp 0x450c10 | void (*0x450c10)() (); 0x00450b40 mov r14, qword [rsi] | r14 = *(rsi); 0x00450b43 cmp dword [r14 + 0x2300], 7 | | if (*((r14 + 0x2300)) == 7) { 0x00450b4b jne 0x450bb2 | 0x00450b4d lea rdi, [r14 + 0x120] | 0x00450b54 xorps xmm0, xmm0 | __asm ("xorps xmm0, xmm0"); 0x00450b57 movaps xmmword [rsp], xmm0 | *(rsp) = xmm0; 0x00450b5b mov rsi, rsp | 0x00450b5e call 0x45f8a0 | eax = BloombergLP::baljsn::Tokenizer::value(std::_1::basic_string_view>*)const (r14 + 0x120, rsp); 0x00450b63 test eax, eax | | if (eax == 0) { 0x00450b65 je 0x450bcf | goto label_1; | } 0x00450b67 mov esi, 0x613950 | 0x00450b6c mov edx, 0x1b | 0x00450b71 mov rdi, r14 | 0x00450b74 call 0x417b80 | std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (r14, "Error reading simple value\n", 0x1b); 0x00450b79 mov ebp, 0xffffffff | 0x00450b7e jmp 0x450bc4 | goto label_0; 0x00450b80 mov rdi, qword [rsi] | rdi = *(rsi); 0x00450b83 mov edx, dword [rip + 0x1ca057] | edx = *(0x0061abe0); 0x00450b89 mov rsi, rbx | rsi = rbx; 0x00450b8c add rsp, 0x20 | 0x00450b90 pop rbx | 0x00450b91 pop r14 | 0x00450b93 pop rbp | 0x00450b94 jmp 0x4515a0 | void (*0x4515a0)() (); 0x00450b99 mov rdi, qword [rsi] | rdi = *(rsi); 0x00450b9c mov edx, dword [rip + 0x1ca066] | edx = *(0x0061ac08); 0x00450ba2 mov rsi, rbx | rsi = rbx; 0x00450ba5 add rsp, 0x20 | 0x00450ba9 pop rbx | 0x00450baa pop r14 | 0x00450bac pop rbp | 0x00450bad jmp 0x4517d0 | void (*0x4517d0)() (); | } 0x00450bb2 mov esi, 0x61392c | 0x00450bb7 mov edx, 0x23 | 0x00450bbc mov rdi, r14 | 0x00450bbf call 0x417b80 | std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (r14, "Simple element value was not found\n", 0x23); | do { | label_0: 0x00450bc4 mov eax, ebp | eax = ebp; 0x00450bc6 add rsp, 0x20 | 0x00450bca pop rbx | 0x00450bcb pop r14 | 0x00450bcd pop rbp | 0x00450bce ret | return eax; | label_1: 0x00450bcf cmp qword [rsp + 8], 0 | | if (*((rsp + 8)) == 0) { 0x00450bd5 je 0x450c00 | goto label_2; | } 0x00450bd7 lea rdi, [rsp + 0x18] | 0x00450bdc mov rsi, rsp | 0x00450bdf call 0x45e340 | eax = BloombergLP::baljsn::ParserUtil::getUint64(unsigned long long*,std::_1::basic_string_view>const&) (rsp + 0x18, rsp); 0x00450be4 mov ebp, 0xffffffff | 0x00450be9 test eax, eax | 0x00450beb jne 0x450bc4 | | } while (eax != 0); 0x00450bed mov rax, qword [rsp + 0x18] | rax = *((rsp + 0x18)); 0x00450bf2 cmp rax, 0xff | | if (rax > 0xff) { 0x00450bf8 ja 0x450bc4 | goto label_0; | } 0x00450bfa mov byte [rbx], al | *(rbx) = al; 0x00450bfc xor ebp, ebp | ebp = 0; 0x00450bfe jmp 0x450bc4 | goto label_0; | label_2: 0x00450c00 mov ebp, 0xffffffff | 0x00450c05 jmp 0x450bc4 | goto label_0; | }