; assembly | /* r2dec pseudo code output */ | /* balber_berdecoder.t/assume @ 0x45cd70 */ | #include | ; (fcn) method.BloombergLP::s_baltst::MySequenceWithAnonymousChoiceChoice.makeSelection_int_ () | int64_t method_BloombergLP::s_baltst::MySequenceWithAnonymousChoiceChoice_makeSelection_int_ (uint32_t arg2, int64_t arg1) { | rsi = arg2; | rdi = arg1; | /* BloombergLP::s_baltst::MySequenceWithAnonymousChoiceChoice::makeSelection(int) */ 0x0045cd70 push r14 | 0x0045cd72 push rbx | 0x0045cd73 push rax | 0x0045cd74 mov r14, rdi | r14 = rdi; 0x0045cd77 cmp esi, 0xffffffff | | if (esi != 0xffffffff) { 0x0045cd7a je 0x45cdd4 | 0x0045cd7c cmp esi, 1 | | if (esi != 1) { 0x0045cd7f je 0x45cdaf | 0x0045cd81 mov ebx, 0xffffffff | ebx = 0xffffffff; 0x0045cd86 test esi, esi | | if (esi != 0) { 0x0045cd88 jne 0x45ce7b | goto label_0; | } 0x0045cd8e mov eax, dword [r14 + 0x30] | eax = *((r14 + 0x30)); 0x0045cd92 cmp eax, 1 | | if (eax != 1) { 0x0045cd95 je 0x45ce4e | 0x0045cd9b test eax, eax | | if (eax == 0) { 0x0045cd9d jne 0x45ce6a | 0x0045cda3 mov dword [r14], 0 | *(r14) = 0; 0x0045cdaa jmp 0x45ce79 | | } else { 0x0045cdaf mov eax, dword [r14 + 0x30] | eax = *((r14 + 0x30)); 0x0045cdb3 test eax, eax | | if (eax != 0) { 0x0045cdb5 je 0x45ce07 | 0x0045cdb7 cmp eax, 1 | | if (eax != 1) { 0x0045cdba jne 0x45ce07 | goto label_1; | } 0x0045cdbc xor ebx, ebx | ebx = 0; 0x0045cdbe mov rdi, r14 | 0x0045cdc1 xor esi, esi | 0x0045cdc3 mov rdx, 0xffffffffffffffff | 0x0045cdca call 0x473910 | bsl::basic_string,bsl::allocator>::erase(unsigned long,unsigned long) (r14, 0, 0xffffffffffffffff); 0x0045cdcf jmp 0x45ce7b | | } else { 0x0045cdd4 mov eax, dword [r14 + 0x30] | eax = *((r14 + 0x30)); 0x0045cdd8 test eax, eax | | if (eax != 0) { 0x0045cdda je 0x45cdfd | 0x0045cddc cmp eax, 1 | | if (eax != 1) { 0x0045cddf jne 0x45cdfd | goto label_2; | } 0x0045cde1 cmp qword [r14 + 0x20], 0x17 | | if (*((r14 + 0x20)) != 0x17) { 0x0045cde6 je 0x45cdf5 | 0x0045cde8 mov rsi, qword [r14] | rsi = *(r14); 0x0045cdeb mov rdi, qword [r14 + 0x28] | rdi = *((r14 + 0x28)); 0x0045cdef mov rax, qword [rdi] | rax = *(rdi); 0x0045cdf2 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x0045cdf5 mov qword [r14 + 0x18], 0xffffffffffffffff | *((r14 + 0x18)) = 0xffffffffffffffff; | } | label_2: 0x0045cdfd mov dword [r14 + 0x30], 0xffffffff | *((r14 + 0x30)) = 0xffffffff; 0x0045ce05 jmp 0x45ce79 | goto label_3; | } | label_1: 0x0045ce07 mov dword [r14 + 0x30], 0xffffffff | *((r14 + 0x30)) = 0xffffffff; 0x0045ce0f mov rax, qword [r14 + 0x38] | rax = *((r14 + 0x38)); 0x0045ce13 test rax, rax | | if (rax == 0) { 0x0045ce16 jne 0x45ce29 | 0x0045ce18 mov rax, qword [rip + 0x29a5d1] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x0045ce1f test rax, rax | | if (rax != 0) { 0x0045ce22 jne 0x45ce29 | goto label_4; | } 0x0045ce24 call 0x46d200 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); | } | label_4: 0x0045ce29 mov qword [r14], 0 | *(r14) = 0; 0x0045ce30 movaps xmm0, xmmword [rip + 0x3a8e9] | xmm0 = .comment; 0x0045ce37 movups xmmword [r14 + 0x18], xmm0 | __asm ("movups xmmword [r14 + 0x18], xmm0"); 0x0045ce3c mov qword [r14 + 0x28], rax | *((r14 + 0x28)) = rax; 0x0045ce40 mov byte [r14], 0 | *(r14) = 0; 0x0045ce44 mov dword [r14 + 0x30], 1 | *((r14 + 0x30)) = 1; 0x0045ce4c jmp 0x45ce79 | | } else { 0x0045ce4e cmp qword [r14 + 0x20], 0x17 | | } | } | if (*((r14 + 0x20)) != 0x17) { 0x0045ce53 je 0x45ce62 | 0x0045ce55 mov rsi, qword [r14] | rsi = *(r14); 0x0045ce58 mov rdi, qword [r14 + 0x28] | rdi = *((r14 + 0x28)); 0x0045ce5c mov rax, qword [rdi] | rax = *(rdi); 0x0045ce5f call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x0045ce62 mov qword [r14 + 0x18], 0xffffffffffffffff | *((r14 + 0x18)) = 0xffffffffffffffff; 0x0045ce6a mov dword [r14], 0 | *(r14) = 0; 0x0045ce71 mov dword [r14 + 0x30], 0 | *((r14 + 0x30)) = 0; | } | label_3: 0x0045ce79 xor ebx, ebx | ebx = 0; | } | label_0: 0x0045ce7b mov eax, ebx | eax = ebx; 0x0045ce7d add rsp, 8 | 0x0045ce81 pop rbx | 0x0045ce82 pop r14 | 0x0045ce84 ret | return rax; | }