; assembly | /* r2dec pseudo code output */ | /* bdlat_symbolicconverter.t/none @ 0x40f4a0 */ | #include | ; (fcn) method.int_BloombergLP::bdlat_SymbolicConverter::convert_BloombergLP::test::ChoiceA__BloombergLP::test.ChoiceB__BloombergLP::test::ChoiceA__BloombergLP::test::ChoiceB_const_ () | int64_t method_int_BloombergLP::bdlat_SymbolicConverter::convert_BloombergLP::test::ChoiceA_BloombergLP::test_ChoiceB_BloombergLP::test::ChoiceA_BloombergLP::test::ChoiceB_const_ (uint32_t arg2, uint32_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_b0h; | int64_t var_b8h; | rsi = arg2; | rdi = arg1; | /* int BloombergLP::bdlat_SymbolicConverter::convert(BloombergLP::test::ChoiceA*, BloombergLP::test::ChoiceB const&) */ 0x0040f4a0 push rbp | 0x0040f4a1 push r14 | 0x0040f4a3 push rbx | 0x0040f4a4 sub rsp, 0xc0 | 0x0040f4ab mov r14, rsi | r14 = rsi; 0x0040f4ae mov rbx, rdi | rbx = rdi; 0x0040f4b1 lea rbp, [rsp + 0x28] | rbp = rsp + 0x28; 0x0040f4b6 mov qword [rsp + 0x20], 0x64fbc0 | *((rsp + 0x20)) = 0x64fbc0; 0x0040f4bf mov qword [rsp + 0x28], 0x64fbe8 | *((rsp + 0x28)) = 0x64fbe8; 0x0040f4c8 mov rdi, rbp | rdi = rbp; 0x0040f4cb xor esi, esi | esi = 0; 0x0040f4cd call 0x402ea0 | std::_1::ios_base::init(void*) (); 0x0040f4d2 mov qword [rsp + 0xb0], 0 | *((rsp + 0xb0)) = 0; 0x0040f4de mov dword [rsp + 0xb8], 0xffffffff | *((rsp + 0xb8)) = 0xffffffff; 0x0040f4e9 cmp dword [rbx + 0x30], 1 | | if (*((rbx + 0x30)) == 1) { 0x0040f4ed jne 0x40f50b | 0x0040f4ef cmp qword [rbx + 0x20], 0x17 | | if (*((rbx + 0x20)) != 0x17) { 0x0040f4f4 je 0x40f503 | 0x0040f4f6 mov rsi, qword [rbx] | rsi = *(rbx); 0x0040f4f9 mov rdi, qword [rbx + 0x28] | rdi = *((rbx + 0x28)); 0x0040f4fd mov rax, qword [rdi] | rax = *(rdi); 0x0040f500 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x0040f503 mov qword [rbx + 0x18], 0xffffffffffffffff | *((rbx + 0x18)) = 0xffffffffffffffff; | } 0x0040f50b mov dword [rbx + 0x30], 0xffffffff | *((rbx + 0x30)) = 0xffffffff; 0x0040f512 lea rax, [rsp + 0x20] | rax = rsp + 0x20; 0x0040f517 mov qword [rsp + 8], rax | *((rsp + 8)) = rax; 0x0040f51c mov qword [rsp + 0x10], rbx | *((rsp + 0x10)) = rbx; 0x0040f521 lea rax, [rsp + 8] | rax = rsp + 8; 0x0040f526 mov qword [rsp + 0x18], rax | *((rsp + 0x18)) = rax; 0x0040f52b mov eax, dword [r14 + 0x30] | eax = *((r14 + 0x30)); 0x0040f52f cmp eax, 1 | | if (eax != 1) { 0x0040f532 je 0x40f561 | 0x0040f534 test eax, eax | | if (eax != 0) { 0x0040f536 je 0x40f54d | 0x0040f538 mov ebp, 0xffffffff | 0x0040f53d cmp eax, 0xffffffff | | if (eax != 0xffffffff) { 0x0040f540 jne 0x40f575 | goto label_0; | } 0x0040f542 mov dword [rbx + 0x30], 0xffffffff | *((rbx + 0x30)) = 0xffffffff; 0x0040f549 xor ebp, ebp | ebp = 0; 0x0040f54b jmp 0x40f575 | goto label_0; | } 0x0040f54d lea rdi, [rsp + 0x10] | 0x0040f552 mov edx, 0x437830 | 0x0040f557 mov rsi, r14 | 0x0040f55a call 0x4104e0 | intBloombergLP::bdlat_SymbolicConverter_StoreInChoice::operator(),bsl::allocator>,BloombergLP::bdlat_SelectionInfo>(bsl::basic_string,bsl::allocator>const&,BloombergLP::bdlat_SelectionInfoconst&)const (rsp + 0x10, r14, obj.BloombergLP::test::ChoiceB::SELECTION_INFO_ARRAY); 0x0040f55f jmp 0x40f573 | | } else { 0x0040f561 lea rdi, [rsp + 0x10] | 0x0040f566 mov edx, 0x437858 | 0x0040f56b mov rsi, r14 | 0x0040f56e call 0x4103a0 | eax = intBloombergLP::bdlat_SymbolicConverter_StoreInChoice::operator()(intconst&,BloombergLP::bdlat_SelectionInfoconst&)const (rsp + 0x10, r14, 0x437858); | } 0x0040f573 mov ebp, eax | | label_0: 0x0040f575 lea rdi, [rsp + 0x20] | rdi = rsp + 0x20; 0x0040f57a call 0x402e50 | std::_1::basic_ostream>::~basic_ostream() (); 0x0040f57f mov eax, ebp | eax = ebp; 0x0040f581 add rsp, 0xc0 | 0x0040f588 pop rbx | 0x0040f589 pop r14 | 0x0040f58b pop rbp | 0x0040f58c ret | return rax; | }