; assembly | /* r2dec pseudo code output */ | /* bdlat_symbolicconverter.t/assume @ 0x411020 */ | #include | ; (fcn) method.int_BloombergLP::bdlat_SymbolicConverter_Imp::convert_BloombergLP::test::EnumerationA::Value__BloombergLP::test::EnumerationB.Value__BloombergLP::test::EnumerationA::Value__BloombergLP::bdlat_TypeCategory::Enumeration__BloombergLP::test::Enumerat () | int64_t method_int_BloombergLP::bdlat_SymbolicConverter_Imp::convert_BloombergLP::test::EnumerationA::Value_BloombergLP::test::EnumerationB_Value_BloombergLP::test::EnumerationA::Value_BloombergLP::bdlat_TypeCategory::Enumeration_BloombergLP::test::Enumerat (int64_t arg3, int64_t arg2) { | uint32_t var_8h; | uint32_t var_20h; | uint32_t var_28h; | int64_t var_30h; | rdx = arg3; | rsi = arg2; | /* int BloombergLP::bdlat_SymbolicConverter_Imp::convert(BloombergLP::test::EnumerationA::Value*, BloombergLP::bdlat_TypeCategory::Enumeration, BloombergLP::test::EnumerationB::Value const&, BloombergLP::bdlat_TypeCategory::Enumeration) */ 0x00411020 push rbp | 0x00411021 push r15 | 0x00411023 push r14 | 0x00411025 push r13 | 0x00411027 push r12 | 0x00411029 push rbx | 0x0041102a sub rsp, 0x38 | 0x0041102e mov rbx, rdx | rbx = rdx; 0x00411031 mov r14, rsi | r14 = rsi; 0x00411034 mov qword [rsp + 8], 0 | *((rsp + 8)) = 0; 0x0041103d movaps xmm0, xmmword [rip + 0x2672c] | xmm0 = .comment; 0x00411044 movups xmmword [rsp + 0x20], xmm0 | __asm ("movups xmmword [rsp + 0x20], xmm0"); 0x00411049 mov rax, qword [rip + 0x23f6f0] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x00411050 test rax, rax | | if (rax != 0) { 0x00411053 je 0x411061 | 0x00411055 lea rcx, [rsp + 8] | rcx = rsp + 8; 0x0041105a mov qword [rsp + 0x30], rax | *((rsp + 0x30)) = rax; 0x0041105f jmp 0x41107f | | } else { 0x00411061 call 0x411f30 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); 0x00411066 cmp qword [rsp + 0x28], 0x17 | 0x0041106c mov qword [rsp + 0x30], rax | *((rsp + 0x30)) = rax; | if (*((rsp + 0x28)) != 0x17) { 0x00411071 je 0x41107a | 0x00411073 mov rcx, qword [rsp + 8] | rcx = *((rsp + 8)); 0x00411078 jmp 0x41107f | | } else { 0x0041107a lea rcx, [rsp + 8] | rcx = rsp + 8; | } | } 0x0041107f mov byte [rcx], 0 | *(rcx) = 0; 0x00411082 cmp dword [rbx], 2 | 0x00411085 mov eax, 0x437e97 | eax = "VALUE1"; 0x0041108a mov esi, 0x437e9e | esi = "VALUE2"; | if (*(rbx) == 2) { 0x0041108f cmove rsi, rax | rsi = rax; | } 0x00411093 mov rbx, qword [rsp + 0x20] | rbx = *((rsp + 0x20)); 0x00411098 mov qword [rsp + 0x20], 0 | *((rsp + 0x20)) = 0; 0x004110a1 lea rbp, [rsp + 8] | rbp = rsp + 8; 0x004110a6 mov edx, 6 | 0x004110ab mov ecx, 0x438d63 | 0x004110b0 mov rdi, rbp | 0x004110b3 call 0x414040 | bsl::basic_string,bsl::allocator>::privateAppend(char const*,unsigned long,char const*) (rbp, rsi, 6, "string<...>::assign(char*...): string too long"); 0x004110b8 mov r13, qword [rsp + 0x28] | r13 = *((rsp + 0x28)); 0x004110bd mov r12, qword [rsp + 8] | r12 = *((rsp + 8)); 0x004110c2 mov r15d, 1 | r15d = 1; 0x004110c8 cmp dword [rsp + 0x20], 6 | | if (*((rsp + 0x20)) == 6) { 0x004110cd jne 0x411179 | 0x004110d3 cmp r13, 0x17 | 0x004110d7 mov rax, r12 | rax = r12; | if (r13 == 0x17) { 0x004110da cmove rax, rbp | rax = rbp; | } 0x004110de movsx rbx, byte [rax] | rbx = *(rax); 0x004110e2 call 0x402ed0 | rax = ctype_toupper_loc (); 0x004110e7 mov rax, qword [rax] | rax = *(rax); 0x004110ea cmp dword [rax + rbx*4], 0x56 | | if (*((rax + rbx*4)) != 0x56) { 0x004110ee jne 0x411179 | goto label_0; | } 0x004110f4 cmp r13, 0x17 | 0x004110f8 mov rcx, r12 | rcx = r12; | if (r13 == 0x17) { 0x004110fb cmove rcx, rbp | rcx = rbp; | } 0x004110ff movsx rcx, byte [rcx + 1] | rcx = *((rcx + 1)); 0x00411104 cmp dword [rax + rcx*4], 0x41 | | if (*((rax + rcx*4)) != 0x41) { 0x00411108 jne 0x411179 | goto label_0; | } 0x0041110a cmp r13, 0x17 | 0x0041110e mov rcx, r12 | rcx = r12; | if (r13 == 0x17) { 0x00411111 cmove rcx, rbp | rcx = rbp; | } 0x00411115 movsx rcx, byte [rcx + 2] | rcx = *((rcx + 2)); 0x0041111a cmp dword [rax + rcx*4], 0x4c | | if (*((rax + rcx*4)) != 0x4c) { 0x0041111e jne 0x411179 | goto label_0; | } 0x00411120 cmp r13, 0x17 | 0x00411124 mov rcx, r12 | rcx = r12; | if (r13 == 0x17) { 0x00411127 cmove rcx, rbp | rcx = rbp; | } 0x0041112b movsx rcx, byte [rcx + 3] | rcx = *((rcx + 3)); 0x00411130 cmp dword [rax + rcx*4], 0x55 | | if (*((rax + rcx*4)) != 0x55) { 0x00411134 jne 0x411179 | goto label_0; | } 0x00411136 cmp r13, 0x17 | 0x0041113a mov rcx, r12 | rcx = r12; | if (r13 == 0x17) { 0x0041113d cmove rcx, rbp | rcx = rbp; | } 0x00411141 movsx rcx, byte [rcx + 4] | rcx = *((rcx + 4)); 0x00411146 cmp dword [rax + rcx*4], 0x45 | | if (*((rax + rcx*4)) != 0x45) { 0x0041114a jne 0x411179 | goto label_0; | } 0x0041114c cmp r13, 0x17 | | if (r13 != 0x17) { 0x00411150 cmovne rbp, r12 | | } 0x00411154 movsx rcx, byte [rbp + 5] | rcx = *((rbp + 5)); 0x00411159 mov eax, dword [rax + rcx*4] | eax = *((rax + rcx*4)); 0x0041115c cmp eax, 0x32 | | if (eax != 0x32) { 0x0041115f je 0x41116f | 0x00411161 cmp eax, 0x31 | | if (eax != 0x31) { 0x00411164 jne 0x411179 | goto label_0; | } 0x00411166 mov dword [r14], 1 | *(r14) = 1; 0x0041116d jmp 0x411176 | | } else { 0x0041116f mov dword [r14], 2 | *(r14) = 2; | } 0x00411176 xor r15d, r15d | r15d = 0; | } | label_0: 0x00411179 cmp r13, 0x17 | | if (r13 != 0x17) { 0x0041117d je 0x41118d | 0x0041117f mov rdi, qword [rsp + 0x30] | rdi = *((rsp + 0x30)); 0x00411184 mov rax, qword [rdi] | rax = *(rdi); 0x00411187 mov rsi, r12 | rsi = r12; 0x0041118a call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x0041118d mov eax, r15d | eax = r15d; 0x00411190 add rsp, 0x38 | 0x00411194 pop rbx | 0x00411195 pop r12 | 0x00411197 pop r13 | 0x00411199 pop r14 | 0x0041119b pop r15 | 0x0041119d pop rbp | 0x0041119e ret | return rax; | }