; assembly | /* r2dec pseudo code output */ | /* baljsn_encoder.t/assume @ 0x482920 */ | #include | ; (fcn) method.int_BloombergLP::balb::Choice4::accessSelection_BloombergLP::baljsn.Encoder_SelectionVisitor__BloombergLP::baljsn::Encoder_SelectionVisitor__const () | int64_t method_int_BloombergLP::balb::Choice4::accessSelection_BloombergLP::baljsn_Encoder_SelectionVisitor_BloombergLP::baljsn::Encoder_SelectionVisitor_const (int64_t arg2, int64_t arg1) { | int64_t var_8h; | int64_t var_10h; | int64_t var_18h; | int64_t var_20h; | int64_t var_28h; | int64_t var_30h; | int64_t var_38h; | rsi = arg2; | rdi = arg1; | /* int BloombergLP::balb::Choice4::accessSelection(BloombergLP::baljsn::Encoder_SelectionVisitor&) const */ 0x00482920 push rbx | 0x00482921 sub rsp, 0x40 | 0x00482925 mov rbx, rsi | rbx = rsi; 0x00482928 mov r8, rdi | r8 = rdi; 0x0048292b mov eax, dword [rdi + 0x20] | eax = *((rdi + 0x20)); 0x0048292e cmp eax, 1 | | if (eax != 1) { 0x00482931 je 0x4829a0 | 0x00482933 test eax, eax | | if (eax != 0) { 0x00482935 jne 0x4829f7 | goto label_0; | } 0x0048293b mov rsi, qword [rbx + 8] | rsi = *((rbx + 8)); 0x0048293f mov rdx, qword [rbx + 0x10] | rdx = *((rbx + 0x10)); 0x00482943 mov r10, qword [rip + 0xcad2e] | r10 = *(str.selection1); 0x0048294a movsxd rdi, dword [rip + 0xcad2f] | rdi = *(0x0054d680); 0x00482951 mov r9d, dword [rip + 0xcad38] | r9d = *(0x0054d690); 0x00482958 mov r11, qword [rbx + 0x18] | r11 = *((rbx + 0x18)); 0x0048295c movzx eax, byte [rbx + 0x20] | eax = *((rbx + 0x20)); 0x00482960 mov byte [rsp], 0 | *(rsp) = 0; 0x00482964 mov qword [rsp + 8], rsi | *((rsp + 8)) = rsi; 0x00482969 mov qword [rsp + 0x10], rdx | *((rsp + 0x10)) = rdx; 0x0048296e lea rcx, [rsp + 0x18] | rcx = rsp + 0x18; 0x00482973 mov qword [rsp + 0x18], r10 | *((rsp + 0x18)) = r10; 0x00482978 mov qword [rsp + 0x20], rdi | *((rsp + 0x20)) = rdi; 0x0048297d mov dword [rsp + 0x28], r9d | *((rsp + 0x28)) = r9d; 0x00482982 mov qword [rsp + 0x30], r11 | *((rsp + 0x30)) = r11; 0x00482987 mov byte [rsp + 0x38], al | *((rsp + 0x38)) = al; 0x0048298b mov rdi, rsp | rdi = rsp; 0x0048298e push rax | 0x0048298f push r11 | 0x00482991 call 0x4731d0 | eax = _ZN11BloombergLP6baljsn22Encoder_EncodeImplUtil12encodeMemberIN3bsl6vectorINS3_12basic_stringIcNSt3_111char_traitsIcEENS3_9allocatorIcEEEENS9_ISB_EEEEEEiPbPNS0_9FormatterEPNS6_13basic_ostreamIcS8_EERKNS6_17basic_string_viewIcS8_EERKT_iRKNS0_14EncoderOpt (); 0x00482996 add rsp, 0x10 | 0x0048299a test eax, eax | | if (eax != 0) { 0x0048299c jne 0x4829fc | goto label_1; | } 0x0048299e jmp 0x4829f0 | | } else { 0x004829a0 movups xmm0, xmmword [rbx + 8] | __asm ("movups xmm0, xmmword [rbx + 8]"); 0x004829a4 mov rax, qword [rip + 0xcacf5] | rax = *(str.selection2); 0x004829ab movsxd rcx, dword [rip + 0xcacf6] | rcx = *(0x0054d6a8); 0x004829b2 mov edx, dword [rip + 0xcad00] | edx = *(0x0054d6b8); 0x004829b8 mov rsi, qword [rbx + 0x18] | rsi = *((rbx + 0x18)); 0x004829bc mov dil, byte [rbx + 0x20] | dil = *((rbx + 0x20)); 0x004829c0 mov byte [rsp], 0 | *(rsp) = 0; 0x004829c4 movups xmmword [rsp + 8], xmm0 | __asm ("movups xmmword [rsp + 8], xmm0"); 0x004829c9 mov qword [rsp + 0x18], rax | *((rsp + 0x18)) = rax; 0x004829ce mov qword [rsp + 0x20], rcx | *((rsp + 0x20)) = rcx; 0x004829d3 mov dword [rsp + 0x28], edx | *((rsp + 0x28)) = edx; 0x004829d7 mov qword [rsp + 0x30], rsi | *((rsp + 0x30)) = rsi; 0x004829dc mov byte [rsp + 0x38], dil | *((rsp + 0x38)) = dil; 0x004829e1 mov rsi, rsp | 0x004829e4 mov rdi, r8 | 0x004829e7 call 0x4643d0 | eax = intBloombergLP::bdlat_TypeCategoryUtil::accessByCategory(intconst&,BloombergLP::baljsn::Encoder_SelectionDispatcher&) (r8, rsp); 0x004829ec test eax, eax | | if (eax != 0) { 0x004829ee jne 0x4829fc | goto label_1; | } | } 0x004829f0 mov cl, byte [rsp] | cl = *(rsp); 0x004829f3 mov byte [rbx], cl | *(rbx) = cl; 0x004829f5 jmp 0x4829fc | goto label_1; | label_0: 0x004829f7 mov eax, 0xffffffff | eax = 0xffffffff; | label_1: 0x004829fc add rsp, 0x40 | 0x00482a00 pop rbx | 0x00482a01 ret | return rax; | }