; assembly | /* r2dec pseudo code output */ | /* baljsn_decoder.t/assume @ 0x4783a0 */ | #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*) */ 0x004783a0 push rbp | 0x004783a1 push r15 | 0x004783a3 push r14 | 0x004783a5 push r13 | 0x004783a7 push r12 | 0x004783a9 push rbx | 0x004783aa push rax | 0x004783ab mov r12, r8 | r12 = r8; 0x004783ae mov r14, rcx | r14 = rcx; 0x004783b1 mov r15, rdx | r15 = rdx; 0x004783b4 mov r13, rsi | r13 = rsi; 0x004783b7 mov rbp, rdi | 0x004783ba mov rbx, qword [rdi + 8] | rbx = *((rdi + 8)); 0x004783be mov edi, 0x61c33c | 0x004783c3 call 0x4062c0 | eax = strcmp (0x61c33c, rsi); 0x004783c8 test eax, eax | | if (eax == 0) { 0x004783ca jne 0x4783dd | 0x004783cc mov edi, 0x6196e8 | 0x004783d1 mov rsi, r15 | 0x004783d4 call 0x4062c0 | eax = strcmp (0x6196e8, r15); 0x004783d9 test eax, eax | | if (eax == 0) { 0x004783db je 0x47841d | goto label_0; | } | } 0x004783dd cmp byte [rbp + 0x10], 0 | | if (*((rbp + 0x10)) != 0) { 0x004783e1 je 0x4783f7 | 0x004783e3 mov rax, qword [rbx] | rax = *(rbx); 0x004783e6 mov rdi, rbx | rdi = rbx; 0x004783e9 mov rsi, r12 | rsi = r12; 0x004783ec call qword [rax + 0x10] | uint64_t (*rax + 0x10)() (); 0x004783ef mov byte [rbp + 0x10], 0 | *((rbp + 0x10)) = 0; 0x004783f3 mov rbx, qword [rbp + 8] | rbx = *((rbp + 8)); | } 0x004783f7 mov rax, qword [rbx] | rax = *(rbx); 0x004783fa mov rax, qword [rax + 0x28] | rax = *((rax + 0x28)); 0x004783fe mov rdi, rbx | rdi = rbx; 0x00478401 mov rsi, r13 | rsi = r13; 0x00478404 mov rdx, r15 | rdx = r15; 0x00478407 mov rcx, r14 | rcx = r14; 0x0047840a mov r8, r12 | r8 = r12; 0x0047840d add rsp, 8 | 0x00478411 pop rbx | 0x00478412 pop r12 | 0x00478414 pop r13 | 0x00478416 pop r14 | 0x00478418 pop r15 | 0x0047841a pop rbp | 0x0047841b jmp rax | eax = void (*rax)() (); | label_0: 0x0047841d xor eax, eax | eax = 0; 0x0047841f add rsp, 8 | 0x00478423 pop rbx | 0x00478424 pop r12 | 0x00478426 pop r13 | 0x00478428 pop r14 | 0x0047842a pop r15 | 0x0047842c pop rbp | 0x0047842d ret | return rax; | }