; assembly | /* r2dec pseudo code output */ | /* bdlat_symbolicconverter.t/assume @ 0x410a00 */ | #include | ; (fcn) method.int_BloombergLP::bdlat_SymbolicConverter_Imp::convert_BloombergLP::test::EnumerationA::Value__BloombergLP::test::EnumerationA.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::EnumerationA_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::EnumerationA::Value const&, BloombergLP::bdlat_TypeCategory::Enumeration) */ 0x00410a00 push rbp | 0x00410a01 push r15 | 0x00410a03 push r14 | 0x00410a05 push r13 | 0x00410a07 push r12 | 0x00410a09 push rbx | 0x00410a0a sub rsp, 0x38 | 0x00410a0e mov rbx, rdx | rbx = rdx; 0x00410a11 mov r14, rsi | r14 = rsi; 0x00410a14 mov qword [rsp + 8], 0 | *((rsp + 8)) = 0; 0x00410a1d movaps xmm0, xmmword [rip + 0x26d4c] | xmm0 = .comment; 0x00410a24 movups xmmword [rsp + 0x20], xmm0 | __asm ("movups xmmword [rsp + 0x20], xmm0"); 0x00410a29 mov rax, qword [rip + 0x23fd10] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x00410a30 test rax, rax | | if (rax != 0) { 0x00410a33 je 0x410a41 | 0x00410a35 lea rcx, [rsp + 8] | rcx = rsp + 8; 0x00410a3a mov qword [rsp + 0x30], rax | *((rsp + 0x30)) = rax; 0x00410a3f jmp 0x410a5f | | } else { 0x00410a41 call 0x411f30 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); 0x00410a46 cmp qword [rsp + 0x28], 0x17 | 0x00410a4c mov qword [rsp + 0x30], rax | *((rsp + 0x30)) = rax; | if (*((rsp + 0x28)) != 0x17) { 0x00410a51 je 0x410a5a | 0x00410a53 mov rcx, qword [rsp + 8] | rcx = *((rsp + 8)); 0x00410a58 jmp 0x410a5f | | } else { 0x00410a5a lea rcx, [rsp + 8] | rcx = rsp + 8; | } | } 0x00410a5f mov byte [rcx], 0 | *(rcx) = 0; 0x00410a62 cmp dword [rbx], 1 | 0x00410a65 mov eax, 0x437e97 | eax = "VALUE1"; 0x00410a6a mov esi, 0x437e9e | esi = "VALUE2"; | if (*(rbx) == 1) { 0x00410a6f cmove rsi, rax | rsi = rax; | } 0x00410a73 mov rbx, qword [rsp + 0x20] | rbx = *((rsp + 0x20)); 0x00410a78 mov qword [rsp + 0x20], 0 | *((rsp + 0x20)) = 0; 0x00410a81 lea rbp, [rsp + 8] | rbp = rsp + 8; 0x00410a86 mov edx, 6 | 0x00410a8b mov ecx, 0x438d63 | 0x00410a90 mov rdi, rbp | 0x00410a93 call 0x414040 | bsl::basic_string,bsl::allocator>::privateAppend(char const*,unsigned long,char const*) (rbp, rsi, 6, "string<...>::assign(char*...): string too long"); 0x00410a98 mov r13, qword [rsp + 0x28] | r13 = *((rsp + 0x28)); 0x00410a9d mov r12, qword [rsp + 8] | r12 = *((rsp + 8)); 0x00410aa2 mov r15d, 1 | r15d = 1; 0x00410aa8 cmp dword [rsp + 0x20], 6 | | if (*((rsp + 0x20)) == 6) { 0x00410aad jne 0x410b59 | 0x00410ab3 cmp r13, 0x17 | 0x00410ab7 mov rax, r12 | rax = r12; | if (r13 == 0x17) { 0x00410aba cmove rax, rbp | rax = rbp; | } 0x00410abe movsx rbx, byte [rax] | rbx = *(rax); 0x00410ac2 call 0x402ed0 | rax = ctype_toupper_loc (); 0x00410ac7 mov rax, qword [rax] | rax = *(rax); 0x00410aca cmp dword [rax + rbx*4], 0x56 | | if (*((rax + rbx*4)) != 0x56) { 0x00410ace jne 0x410b59 | goto label_0; | } 0x00410ad4 cmp r13, 0x17 | 0x00410ad8 mov rcx, r12 | rcx = r12; | if (r13 == 0x17) { 0x00410adb cmove rcx, rbp | rcx = rbp; | } 0x00410adf movsx rcx, byte [rcx + 1] | rcx = *((rcx + 1)); 0x00410ae4 cmp dword [rax + rcx*4], 0x41 | | if (*((rax + rcx*4)) != 0x41) { 0x00410ae8 jne 0x410b59 | goto label_0; | } 0x00410aea cmp r13, 0x17 | 0x00410aee mov rcx, r12 | rcx = r12; | if (r13 == 0x17) { 0x00410af1 cmove rcx, rbp | rcx = rbp; | } 0x00410af5 movsx rcx, byte [rcx + 2] | rcx = *((rcx + 2)); 0x00410afa cmp dword [rax + rcx*4], 0x4c | | if (*((rax + rcx*4)) != 0x4c) { 0x00410afe jne 0x410b59 | goto label_0; | } 0x00410b00 cmp r13, 0x17 | 0x00410b04 mov rcx, r12 | rcx = r12; | if (r13 == 0x17) { 0x00410b07 cmove rcx, rbp | rcx = rbp; | } 0x00410b0b movsx rcx, byte [rcx + 3] | rcx = *((rcx + 3)); 0x00410b10 cmp dword [rax + rcx*4], 0x55 | | if (*((rax + rcx*4)) != 0x55) { 0x00410b14 jne 0x410b59 | goto label_0; | } 0x00410b16 cmp r13, 0x17 | 0x00410b1a mov rcx, r12 | rcx = r12; | if (r13 == 0x17) { 0x00410b1d cmove rcx, rbp | rcx = rbp; | } 0x00410b21 movsx rcx, byte [rcx + 4] | rcx = *((rcx + 4)); 0x00410b26 cmp dword [rax + rcx*4], 0x45 | | if (*((rax + rcx*4)) != 0x45) { 0x00410b2a jne 0x410b59 | goto label_0; | } 0x00410b2c cmp r13, 0x17 | | if (r13 != 0x17) { 0x00410b30 cmovne rbp, r12 | | } 0x00410b34 movsx rcx, byte [rbp + 5] | rcx = *((rbp + 5)); 0x00410b39 mov eax, dword [rax + rcx*4] | eax = *((rax + rcx*4)); 0x00410b3c cmp eax, 0x32 | | if (eax != 0x32) { 0x00410b3f je 0x410b4f | 0x00410b41 cmp eax, 0x31 | | if (eax != 0x31) { 0x00410b44 jne 0x410b59 | goto label_0; | } 0x00410b46 mov dword [r14], 1 | *(r14) = 1; 0x00410b4d jmp 0x410b56 | | } else { 0x00410b4f mov dword [r14], 2 | *(r14) = 2; | } 0x00410b56 xor r15d, r15d | r15d = 0; | } | label_0: 0x00410b59 cmp r13, 0x17 | | if (r13 != 0x17) { 0x00410b5d je 0x410b6d | 0x00410b5f mov rdi, qword [rsp + 0x30] | rdi = *((rsp + 0x30)); 0x00410b64 mov rax, qword [rdi] | rax = *(rdi); 0x00410b67 mov rsi, r12 | rsi = r12; 0x00410b6a call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x00410b6d mov eax, r15d | eax = r15d; 0x00410b70 add rsp, 0x38 | 0x00410b74 pop rbx | 0x00410b75 pop r12 | 0x00410b77 pop r13 | 0x00410b79 pop r14 | 0x00410b7b pop r15 | 0x00410b7d pop rbp | 0x00410b7e ret | return rax; | }