; assembly | /* r2dec pseudo code output */ | /* balber_berdecoder.t/none @ 0x445480 */ | #include | ; (fcn) method.int_BloombergLP::s_baltst::MyChoiceWithDefaultValues::accessSelection_BloombergLP::balber.BerEncoder_Visitor__BloombergLP::balber::BerEncoder_Visitor__const () | int64_t method_int_BloombergLP::s_baltst::MyChoiceWithDefaultValues::accessSelection_BloombergLP::balber_BerEncoder_Visitor_BloombergLP::balber::BerEncoder_Visitor_const (int64_t arg2, int64_t arg1) { | int64_t var_4h; | uint32_t var_8h; | int64_t var_10h; | rsi = arg2; | rdi = arg1; | /* int BloombergLP::s_baltst::MyChoiceWithDefaultValues::accessSelection(BloombergLP::balber::BerEncoder_Visitor&) const */ 0x00445480 push rbp | 0x00445481 push r15 | 0x00445483 push r14 | 0x00445485 push r13 | 0x00445487 push r12 | 0x00445489 push rbx | 0x0044548a sub rsp, 0x18 | 0x0044548e mov r14, rsi | r14 = rsi; 0x00445491 mov rbx, rdi | rbx = rdi; 0x00445494 mov eax, dword [rdi + 0x30] | eax = *((rdi + 0x30)); 0x00445497 cmp eax, 2 | | if (eax != 2) { 0x0044549a je 0x4454e9 | 0x0044549c cmp eax, 1 | | if (eax == 1) { 0x0044549f je 0x445533 | goto label_0; | } 0x004454a5 mov r13d, 0xffffffff | r13d = 0xffffffff; 0x004454ab test eax, eax | | if (eax != 0) { 0x004454ad jne 0x4455d5 | goto label_1; | } 0x004454b3 mov rdi, qword [r14] | 0x004454b6 xor r13d, r13d | r13d = 0; 0x004454b9 mov rsi, rbx | 0x004454bc mov edx, 0x80 | 0x004454c1 xor ecx, ecx | 0x004454c3 mov r8d, 1 | r8d = 1; 0x004454c9 call 0x444ae0 | eax = intBloombergLP::balber::BerEncoder::encodeImpl(intconst&,BloombergLP::balber::BerConstants::TagClass,int,int,BloombergLP::bdlat_TypeCategory::Simple) (*(r14), rbx, 0x80, 0); 0x004454ce test eax, eax | | if (eax == 0) { 0x004454d0 je 0x4455d5 | goto label_1; | } 0x004454d6 mov ebx, eax | ebx = eax; 0x004454d8 mov rdi, qword [r14] | rdi = *(r14); 0x004454db mov ecx, 0x497bf0 | ecx = "selection0"; 0x004454e0 mov esi, 0x80 | esi = 0x80; 0x004454e5 xor edx, edx | edx = 0; 0x004454e7 jmp 0x445520 | | } else { 0x004454e9 mov rdi, qword [r14] | 0x004454ec xor r13d, r13d | r13d = 0; 0x004454ef mov rsi, rbx | 0x004454f2 mov edx, 0x80 | 0x004454f7 mov ecx, 2 | 0x004454fc xor r8d, r8d | r8d = 0; 0x004454ff call 0x4455f0 | eax = intBloombergLP::balber::BerEncoder::encodeImpl(BloombergLP::s_baltst::MyEnumeration::Valueconst&,BloombergLP::balber::BerConstants::TagClass,int,int,BloombergLP::bdlat_TypeCategory::Enumeration) (*(r14), rbx, 0x80, 2); 0x00445504 test eax, eax | | if (eax == 0) { 0x00445506 je 0x4455d5 | goto label_1; | } 0x0044550c mov ebx, eax | ebx = eax; 0x0044550e mov rdi, qword [r14] | 0x00445511 mov ecx, 0x497c06 | 0x00445516 mov esi, 0x80 | 0x0044551b mov edx, 2 | | } 0x00445520 mov r8d, 0xffffffff | 0x00445526 call 0x4526d0 | BloombergLP::balber::BerEncoder::logError(BloombergLP::balber::BerConstants::TagClass,int,char const*,int) (*(r14), 0x80, 2, "selection2", 0xffffffff); 0x0044552b mov r13d, ebx | r13d = ebx; 0x0044552e jmp 0x4455d5 | goto label_1; | label_0: 0x00445533 mov rbp, qword [r14] | rbp = *(r14); 0x00445536 mov rdi, qword [rbp + 0x108] | 0x0044553d xor r13d, r13d | r13d = 0; 0x00445540 mov esi, 0x80 | 0x00445545 xor edx, edx | 0x00445547 mov ecx, 1 | 0x0044554c call 0x453ae0 | eax = BloombergLP::balber::BerUtil::putIdentifierOctets(std::_1::basic_streambuf>*,BloombergLP::balber::BerConstants::TagClass,BloombergLP::balber::BerConstants::TagType,int) (*((rbp + 0x108)), 0x80, 0, 1); 0x00445551 mov dword [rsp + 4], eax | *((rsp + 4)) = eax; 0x00445555 mov r12, qword [rbp + 0x108] | r12 = *((rbp + 0x108)); 0x0044555c mov rax, qword [rbx + 0x20] | rax = *((rbx + 0x20)); 0x00445560 mov qword [rsp + 8], rax | *((rsp + 8)) = rax; 0x00445565 mov rax, qword [rbx] | rax = *(rbx); 0x00445568 mov qword [rsp + 0x10], rax | *((rsp + 0x10)) = rax; 0x0044556d mov r15, qword [rbx + 0x18] | r15 = *((rbx + 0x18)); 0x00445571 mov rdi, r12 | 0x00445574 mov esi, r15d | 0x00445577 call 0x453da0 | eax = BloombergLP::balber::BerUtil_LengthImpUtil::putLength(std::_1::basic_streambuf>*,int) (r12, r15d); 0x0044557c mov ebp, 0xffffffff | 0x00445581 test eax, eax | | if (eax == 0) { 0x00445583 jne 0x4455af | 0x00445585 cmp qword [rsp + 8], 0x17 | 0x0044558b mov rsi, qword [rsp + 0x10] | rsi = *((rsp + 0x10)); | if (*((rsp + 8)) == 0x17) { 0x00445590 cmove rsi, rbx | rsi = rbx; | } 0x00445594 movsxd rbx, r15d | rbx = (int64_t) r15d; 0x00445597 mov rax, qword [r12] | rax = *(r12); 0x0044559b mov rdi, r12 | rdi = r12; 0x0044559e mov rdx, rbx | rdx = rbx; 0x004455a1 call qword [rax + 0x60] | rax = uint64_t (*rax + 0x60)() (); 0x004455a4 xor ebp, ebp | ebp = 0; 0x004455a6 cmp rax, rbx | 0x004455a9 setne bpl | bpl = (rax != rbx) ? 1 : 0; 0x004455ad neg ebp | ebp = -ebp; | } 0x004455af or ebp, dword [rsp + 4] | ebp |= *((rsp + 4)); | if (ebp != 0) { 0x004455b3 je 0x4455d5 | 0x004455b5 mov rdi, qword [r14] | 0x004455b8 mov ecx, 0x497bfb | 0x004455bd mov esi, 0x80 | 0x004455c2 mov edx, 1 | 0x004455c7 mov r8d, 0xffffffff | 0x004455cd call 0x4526d0 | BloombergLP::balber::BerEncoder::logError(BloombergLP::balber::BerConstants::TagClass,int,char const*,int) (*(r14), 0x80, 1, "selection1", 0xffffffff); 0x004455d2 mov r13d, ebp | r13d = ebp; | } | label_1: 0x004455d5 mov eax, r13d | eax = ebp; 0x004455d8 add rsp, 0x18 | 0x004455dc pop rbx | 0x004455dd pop r12 | 0x004455df pop r13 | 0x004455e1 pop r14 | 0x004455e3 pop r15 | 0x004455e5 pop rbp | 0x004455e6 ret | return rax; | }