; assembly | /* r2dec pseudo code output */ | /* ball_logfilecleanerutil.t/none @ 0x413b80 */ | #include | ; (fcn) method.BloombergLP::ball::LogFileCleanerUtil.logPatternToFilePattern_bsl::basic_string_char__std::__1::char_traits_char___bsl::allocator_char_____std::__1::basic_string_view_char__std::__1::char_traits_char____const_ () | int32_t method_BloombergLP::ball::LogFileCleanerUtil_logPatternToFilePattern_bsl::basic_string_char_std::_1::char_traits_char_bsl::allocator_char_std::_1::basic_string_view_char_std::_1::char_traits_char_const_ (char * arg2, int64_t arg1) { | rsi = arg2; | rdi = arg1; | /* BloombergLP::ball::LogFileCleanerUtil::logPatternToFilePattern(bsl::basic_string, bsl::allocator >*, std::__1::basic_string_view > const&) */ 0x00413b80 push r15 | 0x00413b82 push r14 | 0x00413b84 push r13 | 0x00413b86 push r12 | 0x00413b88 push rbx | 0x00413b89 mov r12, rsi | r12 = rsi; 0x00413b8c mov rsi, qword [rsi + 8] | rsi = *((rsi + 8)); 0x00413b90 cmp rsi, 0xffffffffffffffff | | if (rsi == -1) { 0x00413b94 je 0x413d2b | goto label_4; | } 0x00413b9a mov r14, rdi | r14 = rdi; 0x00413b9d call 0x435730 | bsl::basic_string,bsl::allocator>::privateReserveRaw(unsigned long) (rdi, rsi); 0x00413ba2 mov rdi, r14 | 0x00413ba5 xor esi, esi | esi = 0; 0x00413ba7 call 0x435800 | bsl::basic_string,bsl::allocator>::privateClear(bool) (r14); 0x00413bac cmp qword [r12 + 8], 0 | | if (*((r12 + 8)) == 0) { 0x00413bb2 je 0x413d0b | goto label_5; | } 0x00413bb8 mov r15, qword [r12] | r15 = *(r12); 0x00413bbc xor r13d, r13d | r13d = 0; 0x00413bbf xor ebx, ebx | ebx = 0; 0x00413bc1 jmp 0x413bf9 | goto label_6; | label_1: 0x00413bc3 mov rdi, r14 | 0x00413bc6 mov esi, 0x25 | 0x00413bcb call 0x436ea0 | bsl::basic_string,bsl::allocator>::push_back(char) (r14, 0x25); 0x00413bd0 movsx esi, byte [r15 + rbx] | esi = *((r15 + rbx)); 0x00413bd5 nop word cs:[rax + rax] | 0x00413bdf nop | | label_0: 0x00413be0 mov rdi, r14 | 0x00413be3 call 0x436ea0 | bsl::basic_string,bsl::allocator>::push_back(char) (r14, rsi); 0x00413be8 xor r13d, r13d | r13d = 0; | do { | label_2: 0x00413beb inc rbx | rbx++; 0x00413bee cmp rbx, qword [r12 + 8] | | if (rbx >= *((r12 + 8))) { 0x00413bf3 jae 0x413ced | goto label_7; | } | label_6: 0x00413bf9 cmp r13d, 3 | 0x00413bfd ja 0x413beb | | } while (r13d > 3); 0x00413bff mov eax, r13d | eax = r13d; | /* switch table (4 cases) at 0x459740 */ 0x00413c02 jmp qword [rax*8 + 0x459740] | 0x00413c09 movsx esi, byte [r15 + rbx] | esi = *((r15 + rbx)); 0x00413c0e cmp esi, 0x25 | | if (esi == 0x25) { 0x00413c11 je 0x413ca6 | goto label_8; | } 0x00413c17 cmp esi, 0x2a | | if (esi != 0x2a) { 0x00413c1a jne 0x413be0 | goto label_0; | } 0x00413c1c mov rdi, r14 | rdi = r14; 0x00413c1f jmp 0x413c4c | goto label_9; 0x00413c30 movsx eax, byte [r15 + rbx] | eax = *((r15 + rbx)); 0x00413c35 lea ecx, [rax - 0x25] | ecx = rax - 0x25; 0x00413c38 cmp ecx, 0x4e | | if (ecx > 0x4e) { 0x00413c3b ja 0x413bc3 | goto label_1; | } | /* switch table (79 cases) at 0x4599d8 */ 0x00413c3d jmp qword [rcx*8 + 0x4599d8] | | label_3: 0x00413c44 mov rdi, r14 | 0x00413c47 mov esi, 0x2a | | label_9: 0x00413c4c call 0x436ea0 | bsl::basic_string,bsl::allocator>::push_back(char) (r14, 0x2a); 0x00413c51 mov r13d, 2 | r13d = 2; 0x00413c57 jmp 0x413beb | goto label_2; 0x00413c60 movsx esi, byte [r15 + rbx] | esi = *((r15 + rbx)); 0x00413c65 cmp esi, 0x2a | | if (esi == 0x2a) { 0x00413c68 je 0x413cb1 | goto label_10; | } 0x00413c6a cmp esi, 0x25 | | if (esi != 0x25) { 0x00413c6d jne 0x413be0 | goto label_0; | } 0x00413c73 mov r13d, 3 | r13d = 3; 0x00413c79 jmp 0x413beb | goto label_2; 0x00413c80 movsx eax, byte [r15 + rbx] | eax = *((r15 + rbx)); 0x00413c85 lea ecx, [rax - 0x25] | ecx = rax - 0x25; 0x00413c88 cmp ecx, 0x4e | | if (ecx > 0x4e) { 0x00413c8b ja 0x413bc3 | goto label_1; | } 0x00413c91 mov r13d, 2 | r13d = 2; | /* switch table (79 cases) at 0x459760 */ 0x00413c97 jmp qword [rcx*8 + 0x459760] | 0x00413c9e movsx esi, al | esi = (int32_t) al; 0x00413ca1 jmp 0x413be0 | goto label_0; | label_8: 0x00413ca6 mov r13d, 1 | r13d = 1; 0x00413cac jmp 0x413beb | goto label_2; | label_10: 0x00413cb1 mov r13d, 2 | r13d = 2; 0x00413cb7 jmp 0x413beb | goto label_2; 0x00413cbc mov rdi, r14 | 0x00413cbf mov esi, 0x25 | 0x00413cc4 call 0x436ea0 | bsl::basic_string,bsl::allocator>::push_back(char) (r14, 0x25); 0x00413cc9 mov rdi, r14 | 0x00413ccc mov esi, 0x2a | 0x00413cd1 call 0x436ea0 | bsl::basic_string,bsl::allocator>::push_back(char) (r14, 0x2a); 0x00413cd6 jmp 0x413beb | goto label_2; 0x00413cdb mov rdi, r14 | 0x00413cde mov esi, 0x25 | 0x00413ce3 call 0x436ea0 | bsl::basic_string,bsl::allocator>::push_back(char) (r14, 0x25); 0x00413ce8 jmp 0x413c44 | goto label_3; | label_7: 0x00413ced test r13d, r13d | | if (r13d != 0) { 0x00413cf0 je 0x413d0b | 0x00413cf2 cmp r13d, 3 | | if (r13d != 3) { 0x00413cf6 je 0x413cfe | 0x00413cf8 cmp r13d, 1 | | if (r13d != 1) { 0x00413cfc jne 0x413d21 | goto label_11; | } | } 0x00413cfe mov rdi, r14 | 0x00413d01 mov esi, 0x25 | 0x00413d06 call 0x436ea0 | bsl::basic_string,bsl::allocator>::push_back(char) (r14, 0x25); | } | label_5: 0x00413d0b mov rdi, r14 | rdi = r14; 0x00413d0e mov esi, 0x2a | esi = 0x2a; 0x00413d13 pop rbx | 0x00413d14 pop r12 | 0x00413d16 pop r13 | 0x00413d18 pop r14 | 0x00413d1a pop r15 | 0x00413d1c jmp 0x436ea0 | void (*0x436ea0)() (); | label_11: 0x00413d21 pop rbx | 0x00413d22 pop r12 | 0x00413d24 pop r13 | 0x00413d26 pop r14 | 0x00413d28 pop r15 | 0x00413d2a ret | return eax; | label_4: 0x00413d2b mov edi, 0x458478 | 0x00413d30 call 0x4336f0 | return BloombergLP::bslstl::StdExceptUtil::throwLengthError(char const*) ("string<...>::reserve(n): string too long"); | }