; assembly | /* r2dec pseudo code output */ | /* ball_recordjsonformatter.t/none @ 0x41b7c0 */ | #include | ; (fcn) method.BloombergLP::ball._anonymous_namespace_::FileFormatter::parse_BloombergLP::bdld::DatumMapRef_ () | uint64_t method_BloombergLP::ball_anonymous_namespace_::FileFormatter::parse_BloombergLP::bdld::DatumMapRef_ (int64_t arg_40h, int64_t arg_48h, int64_t arg1) { | rdi = arg1; | /* BloombergLP::ball::(anonymous namespace)::FileFormatter::parse(BloombergLP::bdld::DatumMapRef) */ 0x0041b7c0 push rbp | 0x0041b7c1 push r15 | 0x0041b7c3 push r14 | 0x0041b7c5 push r13 | 0x0041b7c7 push r12 | 0x0041b7c9 push rbx | 0x0041b7ca push rax | 0x0041b7cb mov r12, qword [rsp + 0x48] | r12 = *((rsp + 0x48)); 0x0041b7d0 test r12, r12 | | if (r12 == 0) { 0x0041b7d3 je 0x41b8a3 | goto label_2; | } 0x0041b7d9 mov r15, rdi | r15 = rdi; 0x0041b7dc lea rax, [rsp + 0x40] | rax = rsp + 0x40; 0x0041b7e1 mov rbx, qword [rax] | rbx = *(rax); 0x0041b7e4 lea r14, [rdi + 8] | r14 = rdi + 8; 0x0041b7e8 add rbx, 0x11 | rbx += 0x11; 0x0041b7ec mov r13d, 0x4030 | r13d = 0x4030; 0x0041b7f2 jmp 0x41b81d | goto label_3; | label_0: 0x0041b7f4 mov rbp, qword [r15 + 0x20] | rbp = *((r15 + 0x20)); 0x0041b7f8 mov qword [r15 + 0x20], 0 | *((r15 + 0x20)) = 0; 0x0041b800 mov ecx, 0x49bea4 | 0x0041b805 mov rdi, r14 | 0x0041b808 call 0x476e40 | rax = bsl::basic_string,bsl::allocator>::privateAppend(char const*,unsigned long,char const*) (r14, rsi, rdx, "string<>::operator=(basic_string_view&): string too long"); 0x0041b80d nop dword [rax] | | do { | label_1: 0x0041b810 add rbx, 0x20 | rbx += 0x20; 0x0041b814 dec r12 | r12--; | if (r12 == 0) { 0x0041b817 je 0x41b8a3 | goto label_2; | } | label_3: 0x0041b81d movsx ecx, word [rbx + 0xd] | ecx = *((rbx + 0xd)); 0x0041b821 mov eax, 0xffffffff | eax = 0xffffffff; 0x0041b826 bt r13, rcx | | if (((r13 >> rcx) & 1) >= 0) { 0x0041b82a jae 0x41b8a5 | goto label_4; | } 0x0041b82c cmp ecx, 0xe | | if (ecx != 0xe) { 0x0041b82f je 0x41b850 | 0x0041b831 cmp ecx, 5 | | if (ecx != 5) { 0x0041b834 je 0x41b850 | 0x0041b836 mov esi, 0 | esi = 0; 0x0041b83b mov edx, 0 | edx = 0; 0x0041b840 cmp ecx, 4 | | if (ecx != 4) { 0x0041b843 jne 0x41b858 | goto label_5; | } 0x0041b845 movsx rdx, byte [rbx - 1] | rdx = *((rbx - 1)); 0x0041b84a mov rsi, rbx | rsi = rbx; 0x0041b84d jmp 0x41b858 | | } | } else { 0x0041b850 mov rsi, qword [rbx - 1] | rsi = *((rbx - 1)); 0x0041b854 movsxd rdx, dword [rbx + 7] | rdx = *((rbx + 7)); | } | label_5: 0x0041b858 cmp qword [rbx - 9], 4 | 0x0041b85d jne 0x41b810 | | } while (*((rbx - 9)) != 4); 0x0041b85f mov rcx, qword [rbx - 0x11] | rcx = *((rbx - 0x11)); 0x0041b863 cmp dword [rcx], 0x656d616e | | if (*(rcx) == 0x656d616e) { 0x0041b869 je 0x41b7f4 | goto label_0; | } 0x0041b86b cmp dword [rcx], 0x68746170 | | if (*(rcx) != 0x68746170) { 0x0041b871 jne 0x41b810 | goto label_1; | } 0x0041b873 cmp rdx, 4 | | if (rdx == 4) { 0x0041b877 jne 0x41b8a5 | 0x0041b879 cmp dword [rsi], 0x6c6c7566 | | if (*(rsi) != 0x6c6c7566) { 0x0041b87f je 0x41b896 | 0x0041b881 cmp dword [rsi], 0x656c6966 | | if (*(rsi) != 0x656c6966) { 0x0041b887 jne 0x41b8a5 | goto label_4; | } 0x0041b889 mov dword [r15 + 0x38], 0 | *((r15 + 0x38)) = 0; 0x0041b891 jmp 0x41b810 | goto label_1; | } 0x0041b896 mov dword [r15 + 0x38], 1 | *((r15 + 0x38)) = 1; 0x0041b89e jmp 0x41b810 | goto label_1; | label_2: 0x0041b8a3 xor eax, eax | eax = 0; | } | label_4: 0x0041b8a5 add rsp, 8 | 0x0041b8a9 pop rbx | 0x0041b8aa pop r12 | 0x0041b8ac pop r13 | 0x0041b8ae pop r14 | 0x0041b8b0 pop r15 | 0x0041b8b2 pop rbp | 0x0041b8b3 ret | return rax; | }