; assembly | /* r2dec pseudo code output */ | /* baljsn_decoder.t/none @ 0x4582c0 */ | #include | ; (fcn) method.int_BloombergLP::balb::SequenceWithAnonymityChoice::manipulateSelection_BloombergLP::baljsn.Decoder_ElementVisitor__BloombergLP::baljsn::Decoder_ElementVisitor_ () | int64_t method_int_BloombergLP::balb::SequenceWithAnonymityChoice::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::SequenceWithAnonymityChoice::manipulateSelection(BloombergLP::baljsn::Decoder_ElementVisitor&) */ 0x004582c0 push rbp | 0x004582c1 push r14 | 0x004582c3 push rbx | 0x004582c4 sub rsp, 0x20 | 0x004582c8 mov eax, dword [rdi + 0x170] | eax = *((rdi + 0x170)); 0x004582ce mov ebp, 0xffffffff | 0x004582d3 cmp rax, 3 | | if (rax > 3) { 0x004582d7 ja 0x458384 | goto label_0; | } 0x004582dd mov rbx, rdi | rbx = rdi; | /* switch table (4 cases) at 0x4f67c8 */ 0x004582e0 jmp qword [rax*8 + 0x4f67c8] | 0x004582e7 mov rdi, qword [rsi] | rdi = *(rsi); 0x004582ea mov edx, dword [rip + 0x1c2960] | edx = .comment; 0x004582f0 mov rsi, rbx | rsi = rbx; 0x004582f3 add rsp, 0x20 | 0x004582f7 pop rbx | 0x004582f8 pop r14 | 0x004582fa pop rbp | 0x004582fb jmp 0x450c10 | void (*0x450c10)() (); 0x00458300 mov r14, qword [rsi] | r14 = *(rsi); 0x00458303 cmp dword [r14 + 0x2300], 7 | | if (*((r14 + 0x2300)) == 7) { 0x0045830b jne 0x458372 | 0x0045830d lea rdi, [r14 + 0x120] | 0x00458314 xorps xmm0, xmm0 | __asm ("xorps xmm0, xmm0"); 0x00458317 movaps xmmword [rsp], xmm0 | *(rsp) = xmm0; 0x0045831b mov rsi, rsp | 0x0045831e call 0x45f8a0 | eax = BloombergLP::baljsn::Tokenizer::value(std::_1::basic_string_view>*)const (r14 + 0x120, rsp); 0x00458323 test eax, eax | | if (eax == 0) { 0x00458325 je 0x45838f | goto label_1; | } 0x00458327 mov esi, 0x613950 | 0x0045832c mov edx, 0x1b | 0x00458331 mov rdi, r14 | 0x00458334 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); 0x00458339 mov ebp, 0xffffffff | 0x0045833e jmp 0x458384 | goto label_0; 0x00458340 mov rdi, qword [rsi] | rdi = *(rsi); 0x00458343 mov edx, dword [rip + 0x1c2957] | edx = *(0x0061aca0); 0x00458349 mov rsi, rbx | rsi = rbx; 0x0045834c add rsp, 0x20 | 0x00458350 pop rbx | 0x00458351 pop r14 | 0x00458353 pop rbp | 0x00458354 jmp 0x4515a0 | void (*0x4515a0)() (); 0x00458359 mov rdi, qword [rsi] | rdi = *(rsi); 0x0045835c mov edx, dword [rip + 0x1c2966] | edx = *(0x0061acc8); 0x00458362 mov rsi, rbx | rsi = rbx; 0x00458365 add rsp, 0x20 | 0x00458369 pop rbx | 0x0045836a pop r14 | 0x0045836c pop rbp | 0x0045836d jmp 0x4517d0 | void (*0x4517d0)() (); | } 0x00458372 mov esi, 0x61392c | 0x00458377 mov edx, 0x23 | 0x0045837c mov rdi, r14 | 0x0045837f 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: 0x00458384 mov eax, ebp | eax = ebp; 0x00458386 add rsp, 0x20 | 0x0045838a pop rbx | 0x0045838b pop r14 | 0x0045838d pop rbp | 0x0045838e ret | return eax; | label_1: 0x0045838f cmp qword [rsp + 8], 0 | | if (*((rsp + 8)) == 0) { 0x00458395 je 0x4583c0 | goto label_2; | } 0x00458397 lea rdi, [rsp + 0x18] | 0x0045839c mov rsi, rsp | 0x0045839f call 0x45e340 | eax = BloombergLP::baljsn::ParserUtil::getUint64(unsigned long long*,std::_1::basic_string_view>const&) (rsp + 0x18, rsp); 0x004583a4 mov ebp, 0xffffffff | 0x004583a9 test eax, eax | 0x004583ab jne 0x458384 | | } while (eax != 0); 0x004583ad mov rax, qword [rsp + 0x18] | rax = *((rsp + 0x18)); 0x004583b2 cmp rax, 0xff | | if (rax > 0xff) { 0x004583b8 ja 0x458384 | goto label_0; | } 0x004583ba mov byte [rbx], al | *(rbx) = al; 0x004583bc xor ebp, ebp | ebp = 0; 0x004583be jmp 0x458384 | goto label_0; | label_2: 0x004583c0 mov ebp, 0xffffffff | 0x004583c5 jmp 0x458384 | goto label_0; | }