; assembly | /* r2dec pseudo code output */ | /* bdlat_symbolicconverter.t/none @ 0x411000 */ | #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) */ 0x00411000 push rbp | 0x00411001 push r15 | 0x00411003 push r14 | 0x00411005 push r13 | 0x00411007 push r12 | 0x00411009 push rbx | 0x0041100a sub rsp, 0x38 | 0x0041100e mov rbx, rdx | rbx = rdx; 0x00411011 mov r14, rsi | r14 = rsi; 0x00411014 mov qword [rsp + 8], 0 | *((rsp + 8)) = 0; 0x0041101d movaps xmm0, xmmword [rip + 0x266fc] | xmm0 = .comment; 0x00411024 movups xmmword [rsp + 0x20], xmm0 | __asm ("movups xmmword [rsp + 0x20], xmm0"); 0x00411029 mov rax, qword [rip + 0x23f710] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x00411030 test rax, rax | | if (rax != 0) { 0x00411033 je 0x411041 | 0x00411035 lea rcx, [rsp + 8] | rcx = rsp + 8; 0x0041103a mov qword [rsp + 0x30], rax | *((rsp + 0x30)) = rax; 0x0041103f jmp 0x41105f | | } else { 0x00411041 call 0x411ec0 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); 0x00411046 cmp qword [rsp + 0x28], 0x17 | 0x0041104c mov qword [rsp + 0x30], rax | *((rsp + 0x30)) = rax; | if (*((rsp + 0x28)) != 0x17) { 0x00411051 je 0x41105a | 0x00411053 mov rcx, qword [rsp + 8] | rcx = *((rsp + 8)); 0x00411058 jmp 0x41105f | | } else { 0x0041105a lea rcx, [rsp + 8] | rcx = rsp + 8; | } | } 0x0041105f mov byte [rcx], 0 | *(rcx) = 0; 0x00411062 mov eax, dword [rbx] | eax = *(rbx); 0x00411064 xor ecx, ecx | ecx = 0; 0x00411066 cmp eax, 1 | 0x00411069 mov edx, 0x437e86 | edx = "VALUE2"; | if (eax == 1) { 0x0041106e cmove rcx, rdx | rcx = rdx; | } 0x00411072 cmp eax, 2 | 0x00411075 mov ebx, 0x437e7f | ebx = "VALUE1"; | if (eax != 2) { 0x0041107a cmovne rbx, rcx | rbx = rcx; | } 0x0041107e mov rdi, rbx | 0x00411081 call 0x402ef0 | rax = strlen (rbx); 0x00411086 mov r15, qword [rsp + 0x20] | r15 = *((rsp + 0x20)); 0x0041108b mov qword [rsp + 0x20], 0 | *((rsp + 0x20)) = 0; 0x00411094 lea rbp, [rsp + 8] | rbp = rsp + 8; 0x00411099 mov ecx, 0x438d47 | 0x0041109e mov rdi, rbp | 0x004110a1 mov rsi, rbx | 0x004110a4 mov rdx, rax | 0x004110a7 call 0x413fd0 | bsl::basic_string,bsl::allocator>::privateAppend(char const*,unsigned long,char const*) (rbp, rbx, rax, "string<...>::assign(char*...): string too long"); 0x004110ac mov r13, qword [rsp + 0x28] | r13 = *((rsp + 0x28)); 0x004110b1 mov r12, qword [rsp + 8] | r12 = *((rsp + 8)); 0x004110b6 mov r15d, 1 | r15d = 1; 0x004110bc cmp dword [rsp + 0x20], 6 | | if (*((rsp + 0x20)) == 6) { 0x004110c1 jne 0x41116d | 0x004110c7 cmp r13, 0x17 | 0x004110cb mov rax, r12 | rax = r12; | if (r13 == 0x17) { 0x004110ce cmove rax, rbp | rax = rbp; | } 0x004110d2 movsx rbx, byte [rax] | rbx = *(rax); 0x004110d6 call 0x402ed0 | rax = ctype_toupper_loc (); 0x004110db mov rax, qword [rax] | rax = *(rax); 0x004110de cmp dword [rax + rbx*4], 0x56 | | if (*((rax + rbx*4)) != 0x56) { 0x004110e2 jne 0x41116d | goto label_0; | } 0x004110e8 cmp r13, 0x17 | 0x004110ec mov rcx, r12 | rcx = r12; | if (r13 == 0x17) { 0x004110ef cmove rcx, rbp | rcx = rbp; | } 0x004110f3 movsx rcx, byte [rcx + 1] | rcx = *((rcx + 1)); 0x004110f8 cmp dword [rax + rcx*4], 0x41 | | if (*((rax + rcx*4)) != 0x41) { 0x004110fc jne 0x41116d | goto label_0; | } 0x004110fe cmp r13, 0x17 | 0x00411102 mov rcx, r12 | rcx = r12; | if (r13 == 0x17) { 0x00411105 cmove rcx, rbp | rcx = rbp; | } 0x00411109 movsx rcx, byte [rcx + 2] | rcx = *((rcx + 2)); 0x0041110e cmp dword [rax + rcx*4], 0x4c | | if (*((rax + rcx*4)) != 0x4c) { 0x00411112 jne 0x41116d | goto label_0; | } 0x00411114 cmp r13, 0x17 | 0x00411118 mov rcx, r12 | rcx = r12; | if (r13 == 0x17) { 0x0041111b cmove rcx, rbp | rcx = rbp; | } 0x0041111f movsx rcx, byte [rcx + 3] | rcx = *((rcx + 3)); 0x00411124 cmp dword [rax + rcx*4], 0x55 | | if (*((rax + rcx*4)) != 0x55) { 0x00411128 jne 0x41116d | goto label_0; | } 0x0041112a cmp r13, 0x17 | 0x0041112e mov rcx, r12 | rcx = r12; | if (r13 == 0x17) { 0x00411131 cmove rcx, rbp | rcx = rbp; | } 0x00411135 movsx rcx, byte [rcx + 4] | rcx = *((rcx + 4)); 0x0041113a cmp dword [rax + rcx*4], 0x45 | | if (*((rax + rcx*4)) != 0x45) { 0x0041113e jne 0x41116d | goto label_0; | } 0x00411140 cmp r13, 0x17 | | if (r13 != 0x17) { 0x00411144 cmovne rbp, r12 | | } 0x00411148 movsx rcx, byte [rbp + 5] | rcx = *((rbp + 5)); 0x0041114d mov eax, dword [rax + rcx*4] | eax = *((rax + rcx*4)); 0x00411150 cmp eax, 0x32 | | if (eax != 0x32) { 0x00411153 je 0x411163 | 0x00411155 cmp eax, 0x31 | | if (eax != 0x31) { 0x00411158 jne 0x41116d | goto label_0; | } 0x0041115a mov dword [r14], 1 | *(r14) = 1; 0x00411161 jmp 0x41116a | | } else { 0x00411163 mov dword [r14], 2 | *(r14) = 2; | } 0x0041116a xor r15d, r15d | r15d = 0; | } | label_0: 0x0041116d cmp r13, 0x17 | | if (r13 != 0x17) { 0x00411171 je 0x411181 | 0x00411173 mov rdi, qword [rsp + 0x30] | rdi = *((rsp + 0x30)); 0x00411178 mov rax, qword [rdi] | rax = *(rdi); 0x0041117b mov rsi, r12 | rsi = r12; 0x0041117e call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x00411181 mov eax, r15d | eax = r15d; 0x00411184 add rsp, 0x38 | 0x00411188 pop rbx | 0x00411189 pop r12 | 0x0041118b pop r13 | 0x0041118d pop r14 | 0x0041118f pop r15 | 0x00411191 pop rbp | 0x00411192 ret | return rax; | }