; assembly | /* r2dec pseudo code output */ | /* baljsn_encoder.t/assume @ 0x47ee60 */ | #include | ; (fcn) method.int_BloombergLP::s_baltst::SequenceWithAnonymityChoice1::accessSelection_BloombergLP::baljsn.Encoder_SelectionVisitor__BloombergLP::baljsn::Encoder_SelectionVisitor__const () | int64_t method_int_BloombergLP::s_baltst::SequenceWithAnonymityChoice1::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::s_baltst::SequenceWithAnonymityChoice1::accessSelection(BloombergLP::baljsn::Encoder_SelectionVisitor&) const */ 0x0047ee60 push rbx | 0x0047ee61 sub rsp, 0x40 | 0x0047ee65 mov rbx, rsi | rbx = rsi; 0x0047ee68 mov r8, rdi | r8 = rdi; 0x0047ee6b mov eax, dword [rdi + 0x30] | eax = *((rdi + 0x30)); 0x0047ee6e cmp eax, 1 | | if (eax != 1) { 0x0047ee71 je 0x47eecd | 0x0047ee73 test eax, eax | | if (eax != 0) { 0x0047ee75 jne 0x47ef37 | goto label_0; | } 0x0047ee7b movups xmm0, xmmword [rbx + 8] | __asm ("movups xmm0, xmmword [rbx + 8]"); 0x0047ee7f mov rax, qword [rip + 0x1cb832] | rax = *(str.selection5); 0x0047ee86 movsxd rcx, dword [rip + 0x1cb833] | rcx = *(0x0064a6c0); 0x0047ee8d mov edx, dword [rip + 0x1cb83d] | edx = *(0x0064a6d0); 0x0047ee93 mov rsi, qword [rbx + 0x18] | rsi = *((rbx + 0x18)); 0x0047ee97 mov dil, byte [rbx + 0x20] | dil = *((rbx + 0x20)); 0x0047ee9b mov byte [rsp], 0 | *(rsp) = 0; 0x0047ee9f movups xmmword [rsp + 8], xmm0 | __asm ("movups xmmword [rsp + 8], xmm0"); 0x0047eea4 mov qword [rsp + 0x18], rax | *((rsp + 0x18)) = rax; 0x0047eea9 mov qword [rsp + 0x20], rcx | *((rsp + 0x20)) = rcx; 0x0047eeae mov dword [rsp + 0x28], edx | *((rsp + 0x28)) = edx; 0x0047eeb2 mov qword [rsp + 0x30], rsi | *((rsp + 0x30)) = rsi; 0x0047eeb7 mov byte [rsp + 0x38], dil | *((rsp + 0x38)) = dil; 0x0047eebc mov rsi, rsp | 0x0047eebf mov rdi, r8 | 0x0047eec2 call 0x47c780 | eax = intBloombergLP::bdlat_TypeCategoryUtil::accessByCategory(boolconst&,BloombergLP::baljsn::Encoder_SelectionDispatcher&) (r8, rsp); 0x0047eec7 test eax, eax | | if (eax != 0) { 0x0047eec9 jne 0x47ef3c | goto label_1; | } 0x0047eecb jmp 0x47ef30 | | } else { 0x0047eecd mov rsi, qword [rbx + 8] | rsi = *((rbx + 8)); 0x0047eed1 mov rdx, qword [rbx + 0x10] | rdx = *((rbx + 0x10)); 0x0047eed5 mov r10, qword [rip + 0x1cb804] | r10 = *(str.selection6); 0x0047eedc movsxd rdi, dword [rip + 0x1cb805] | rdi = *(0x0064a6e8); 0x0047eee3 mov r9d, dword [rip + 0x1cb80e] | r9d = *(0x0064a6f8); 0x0047eeea mov r11, qword [rbx + 0x18] | r11 = *((rbx + 0x18)); 0x0047eeee movzx eax, byte [rbx + 0x20] | eax = *((rbx + 0x20)); 0x0047eef2 mov byte [rsp], 0 | *(rsp) = 0; 0x0047eef6 mov qword [rsp + 8], rsi | *((rsp + 8)) = rsi; 0x0047eefb mov qword [rsp + 0x10], rdx | *((rsp + 0x10)) = rdx; 0x0047ef00 lea rcx, [rsp + 0x18] | rcx = rsp + 0x18; 0x0047ef05 mov qword [rsp + 0x18], r10 | *((rsp + 0x18)) = r10; 0x0047ef0a mov qword [rsp + 0x20], rdi | *((rsp + 0x20)) = rdi; 0x0047ef0f mov dword [rsp + 0x28], r9d | *((rsp + 0x28)) = r9d; 0x0047ef14 mov qword [rsp + 0x30], r11 | *((rsp + 0x30)) = r11; 0x0047ef19 mov byte [rsp + 0x38], al | *((rsp + 0x38)) = al; 0x0047ef1d mov rdi, rsp | rdi = rsp; 0x0047ef20 push rax | 0x0047ef21 push r11 | 0x0047ef23 call 0x464a80 | eax = _ZN11BloombergLP6baljsn22Encoder_EncodeImplUtil12encodeMemberIN3bsl12basic_stringIcNSt3_111char_traitsIcEENS3_9allocatorIcEEEENS_18bdlat_TypeCategory6SimpleEEEiPbPNS0_9FormatterEPNS5_13basic_ostreamIcS7_EERKNS5_17basic_string_viewIcS7_EERKT_iRKNS0_14Enc (); 0x0047ef28 add rsp, 0x10 | 0x0047ef2c test eax, eax | | if (eax != 0) { 0x0047ef2e jne 0x47ef3c | goto label_1; | } | } 0x0047ef30 mov cl, byte [rsp] | cl = *(rsp); 0x0047ef33 mov byte [rbx], cl | *(rbx) = cl; 0x0047ef35 jmp 0x47ef3c | goto label_1; | label_0: 0x0047ef37 mov eax, 0xffffffff | eax = 0xffffffff; | label_1: 0x0047ef3c add rsp, 0x40 | 0x0047ef40 pop rbx | 0x0047ef41 ret | return rax; | }