; assembly | /* r2dec pseudo code output */ | /* baljsn_decoder.t/none @ 0x4784f0 */ | #include | ; (fcn) method.BloombergLP::balxml::Decoder_NillableContext.parseAttribute_char_const__char_const__unsigned_long__BloombergLP::balxml::Decoder_ () | uint64_t method_BloombergLP::balxml::Decoder_NillableContext_parseAttribute_char_const_char_const_unsigned_long_BloombergLP::balxml::Decoder_ (int64_t arg5, int64_t arg4, int64_t arg3, int64_t arg2, int64_t arg1) { | r8 = arg5; | rcx = arg4; | rdx = arg3; | rsi = arg2; | rdi = arg1; | /* BloombergLP::balxml::Decoder_NillableContext::parseAttribute(char const*, char const*, unsigned long, BloombergLP::balxml::Decoder*) */ 0x004784f0 push r15 | 0x004784f2 push r14 | 0x004784f4 push r13 | 0x004784f6 push r12 | 0x004784f8 push rbx | 0x004784f9 mov r12, r8 | r12 = r8; 0x004784fc mov r14, rcx | r14 = rcx; 0x004784ff mov r15, rdx | r15 = rdx; 0x00478502 mov r13, rsi | r13 = rsi; 0x00478505 mov rbx, rdi | rbx = rdi; 0x00478508 mov edi, 0x61c20c | 0x0047850d call 0x4062c0 | eax = strcmp (0x61c20c, rsi); 0x00478512 test eax, eax | | if (eax == 0) { 0x00478514 jne 0x478527 | 0x00478516 mov edi, 0x619e58 | 0x0047851b mov rsi, r15 | 0x0047851e call 0x4062c0 | eax = strcmp (0x619e58, r15); 0x00478523 test eax, eax | | if (eax == 0) { 0x00478525 je 0x478560 | goto label_0; | } | } 0x00478527 cmp byte [rbx + 0x10], 0 | | if (*((rbx + 0x10)) != 0) { 0x0047852b je 0x47853e | 0x0047852d mov rdi, qword [rbx + 8] | rdi = *((rbx + 8)); 0x00478531 mov rax, qword [rdi] | rax = *(rdi); 0x00478534 mov rsi, r12 | rsi = r12; 0x00478537 call qword [rax + 0x10] | uint64_t (*rax + 0x10)() (); 0x0047853a mov byte [rbx + 0x10], 0 | *((rbx + 0x10)) = 0; | } 0x0047853e mov rdi, qword [rbx + 8] | rdi = *((rbx + 8)); 0x00478542 mov rax, qword [rdi] | rax = *(rdi); 0x00478545 mov rax, qword [rax + 0x28] | rax = *((rax + 0x28)); 0x00478549 mov rsi, r13 | rsi = r13; 0x0047854c mov rdx, r15 | rdx = r15; 0x0047854f mov rcx, r14 | rcx = r14; 0x00478552 mov r8, r12 | r8 = r12; 0x00478555 pop rbx | 0x00478556 pop r12 | 0x00478558 pop r13 | 0x0047855a pop r14 | 0x0047855c pop r15 | 0x0047855e jmp rax | eax = void (*rax)() (); | label_0: 0x00478560 xor eax, eax | eax = 0; 0x00478562 pop rbx | 0x00478563 pop r12 | 0x00478565 pop r13 | 0x00478567 pop r14 | 0x00478569 pop r15 | 0x0047856b ret | return rax; | }