; assembly | /* r2dec pseudo code output */ | /* bdlat_symbolicconverter.t/none @ 0x4109c0 */ | #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) */ 0x004109c0 push rbp | 0x004109c1 push r15 | 0x004109c3 push r14 | 0x004109c5 push r13 | 0x004109c7 push r12 | 0x004109c9 push rbx | 0x004109ca sub rsp, 0x38 | 0x004109ce mov rbx, rdx | rbx = rdx; 0x004109d1 mov r14, rsi | r14 = rsi; 0x004109d4 mov qword [rsp + 8], 0 | *((rsp + 8)) = 0; 0x004109dd movaps xmm0, xmmword [rip + 0x26d3c] | xmm0 = .comment; 0x004109e4 movups xmmword [rsp + 0x20], xmm0 | __asm ("movups xmmword [rsp + 0x20], xmm0"); 0x004109e9 mov rax, qword [rip + 0x23fd50] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x004109f0 test rax, rax | | if (rax != 0) { 0x004109f3 je 0x410a01 | 0x004109f5 lea rcx, [rsp + 8] | rcx = rsp + 8; 0x004109fa mov qword [rsp + 0x30], rax | *((rsp + 0x30)) = rax; 0x004109ff jmp 0x410a1f | | } else { 0x00410a01 call 0x411ec0 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); 0x00410a06 cmp qword [rsp + 0x28], 0x17 | 0x00410a0c mov qword [rsp + 0x30], rax | *((rsp + 0x30)) = rax; | if (*((rsp + 0x28)) != 0x17) { 0x00410a11 je 0x410a1a | 0x00410a13 mov rcx, qword [rsp + 8] | rcx = *((rsp + 8)); 0x00410a18 jmp 0x410a1f | | } else { 0x00410a1a lea rcx, [rsp + 8] | rcx = rsp + 8; | } | } 0x00410a1f mov byte [rcx], 0 | *(rcx) = 0; 0x00410a22 mov eax, dword [rbx] | eax = *(rbx); 0x00410a24 xor ecx, ecx | ecx = 0; 0x00410a26 cmp eax, 2 | 0x00410a29 mov edx, 0x437e86 | edx = "VALUE2"; | if (eax == 2) { 0x00410a2e cmove rcx, rdx | rcx = rdx; | } 0x00410a32 cmp eax, 1 | 0x00410a35 mov ebx, 0x437e7f | ebx = "VALUE1"; | if (eax != 1) { 0x00410a3a cmovne rbx, rcx | rbx = rcx; | } 0x00410a3e mov rdi, rbx | 0x00410a41 call 0x402ef0 | rax = strlen (rbx); 0x00410a46 mov r15, qword [rsp + 0x20] | r15 = *((rsp + 0x20)); 0x00410a4b mov qword [rsp + 0x20], 0 | *((rsp + 0x20)) = 0; 0x00410a54 lea rbp, [rsp + 8] | rbp = rsp + 8; 0x00410a59 mov ecx, 0x438d47 | 0x00410a5e mov rdi, rbp | 0x00410a61 mov rsi, rbx | 0x00410a64 mov rdx, rax | 0x00410a67 call 0x413fd0 | bsl::basic_string,bsl::allocator>::privateAppend(char const*,unsigned long,char const*) (rbp, rbx, rax, "string<...>::assign(char*...): string too long"); 0x00410a6c mov r13, qword [rsp + 0x28] | r13 = *((rsp + 0x28)); 0x00410a71 mov r12, qword [rsp + 8] | r12 = *((rsp + 8)); 0x00410a76 mov r15d, 1 | r15d = 1; 0x00410a7c cmp dword [rsp + 0x20], 6 | | if (*((rsp + 0x20)) == 6) { 0x00410a81 jne 0x410b2d | 0x00410a87 cmp r13, 0x17 | 0x00410a8b mov rax, r12 | rax = r12; | if (r13 == 0x17) { 0x00410a8e cmove rax, rbp | rax = rbp; | } 0x00410a92 movsx rbx, byte [rax] | rbx = *(rax); 0x00410a96 call 0x402ed0 | rax = ctype_toupper_loc (); 0x00410a9b mov rax, qword [rax] | rax = *(rax); 0x00410a9e cmp dword [rax + rbx*4], 0x56 | | if (*((rax + rbx*4)) != 0x56) { 0x00410aa2 jne 0x410b2d | goto label_0; | } 0x00410aa8 cmp r13, 0x17 | 0x00410aac mov rcx, r12 | rcx = r12; | if (r13 == 0x17) { 0x00410aaf cmove rcx, rbp | rcx = rbp; | } 0x00410ab3 movsx rcx, byte [rcx + 1] | rcx = *((rcx + 1)); 0x00410ab8 cmp dword [rax + rcx*4], 0x41 | | if (*((rax + rcx*4)) != 0x41) { 0x00410abc jne 0x410b2d | goto label_0; | } 0x00410abe cmp r13, 0x17 | 0x00410ac2 mov rcx, r12 | rcx = r12; | if (r13 == 0x17) { 0x00410ac5 cmove rcx, rbp | rcx = rbp; | } 0x00410ac9 movsx rcx, byte [rcx + 2] | rcx = *((rcx + 2)); 0x00410ace cmp dword [rax + rcx*4], 0x4c | | if (*((rax + rcx*4)) != 0x4c) { 0x00410ad2 jne 0x410b2d | 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 + 3] | rcx = *((rcx + 3)); 0x00410ae4 cmp dword [rax + rcx*4], 0x55 | | if (*((rax + rcx*4)) != 0x55) { 0x00410ae8 jne 0x410b2d | 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 + 4] | rcx = *((rcx + 4)); 0x00410afa cmp dword [rax + rcx*4], 0x45 | | if (*((rax + rcx*4)) != 0x45) { 0x00410afe jne 0x410b2d | goto label_0; | } 0x00410b00 cmp r13, 0x17 | | if (r13 != 0x17) { 0x00410b04 cmovne rbp, r12 | | } 0x00410b08 movsx rcx, byte [rbp + 5] | rcx = *((rbp + 5)); 0x00410b0d mov eax, dword [rax + rcx*4] | eax = *((rax + rcx*4)); 0x00410b10 cmp eax, 0x32 | | if (eax != 0x32) { 0x00410b13 je 0x410b23 | 0x00410b15 cmp eax, 0x31 | | if (eax != 0x31) { 0x00410b18 jne 0x410b2d | goto label_0; | } 0x00410b1a mov dword [r14], 1 | *(r14) = 1; 0x00410b21 jmp 0x410b2a | | } else { 0x00410b23 mov dword [r14], 2 | *(r14) = 2; | } 0x00410b2a xor r15d, r15d | r15d = 0; | } | label_0: 0x00410b2d cmp r13, 0x17 | | if (r13 != 0x17) { 0x00410b31 je 0x410b41 | 0x00410b33 mov rdi, qword [rsp + 0x30] | rdi = *((rsp + 0x30)); 0x00410b38 mov rax, qword [rdi] | rax = *(rdi); 0x00410b3b mov rsi, r12 | rsi = r12; 0x00410b3e call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x00410b41 mov eax, r15d | eax = r15d; 0x00410b44 add rsp, 0x38 | 0x00410b48 pop rbx | 0x00410b49 pop r12 | 0x00410b4b pop r13 | 0x00410b4d pop r14 | 0x00410b4f pop r15 | 0x00410b51 pop rbp | 0x00410b52 ret | return rax; | }