; assembly | /* r2dec pseudo code output */ | /* balm_publicationscheduler.t/assume @ 0x408190 */ | #include | ; (fcn) sym.gg_bsl::vector_Action__bsl::allocator_Action_____BloombergLP::balm::MetricRegistry__char_const_ () | uint64_t gg_bsl::vector_Action_bsl::allocator_Action_BloombergLP::balm::MetricRegistry_char_const_ (int64_t arg3, int64_t arg2, char * arg1) { | int64_t var_8h; | int64_t var_10h; | int64_t var_18h; | int64_t var_20h; | uint32_t var_28h; | int64_t var_30h; | rdx = arg3; | rsi = arg2; | rdi = arg1; | /* gg(bsl::vector >*, BloombergLP::balm::MetricRegistry&, char const*) */ 0x00408190 push rbp | 0x00408191 push r15 | 0x00408193 push r14 | 0x00408195 push r13 | 0x00408197 push r12 | 0x00408199 push rbx | 0x0040819a sub rsp, 0x38 | 0x0040819e mov al, byte [rdx] | al = *(rdx); 0x004081a0 test al, al | | if (al == 0) { 0x004081a2 je 0x40830d | goto label_1; | } 0x004081a8 mov r13, rdx | r13 = rdx; 0x004081ab mov r14, rsi | r14 = rsi; 0x004081ae mov r15, rdi | r15 = rdi; 0x004081b1 add r13, 2 | r13 += 2; 0x004081b5 lea r12, [rsp + 8] | r12 = rsp + 8; 0x004081ba nop word [rax + rax] | | label_0: 0x004081c0 movzx ebx, byte [r13 - 1] | ebx = *((r13 - 1)); 0x004081c5 test bl, bl | | if (bl == 0) { 0x004081c7 je 0x4081e0 | goto label_2; | } 0x004081c9 cmp al, 0x58 | | if (al != 0x58) { 0x004081cb jne 0x408253 | goto label_3; | } | do { 0x004081d1 mov eax, 1 | eax = 1; 0x004081d6 xor ebp, ebp | ebp = 0; 0x004081d8 jmp 0x4082d6 | goto label_4; | label_2: 0x004081e0 mov edi, 0x6a2208 | 0x004081e5 mov esi, 0x4636f3 | 0x004081ea mov edx, 0x20 | 0x004081ef call 0x418220 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (obj.std::__1::cout, "Unexepected end of specification", 0x20); 0x004081f4 mov rbp, rax | 0x004081f7 mov rax, qword [rax] | rax = *(rax); 0x004081fa mov rsi, qword [rax - 0x18] | rsi = *((rax - 0x18)); 0x004081fe add rsi, rbp | rsi += rbp; 0x00408201 mov rdi, r12 | rdi = r12; 0x00408204 call 0x405250 | std::_1::ios_base::getloc()const (); 0x00408209 mov esi, 0x6a2150 | esi = std::__1::ctype::id; 0x0040820e mov rdi, r12 | rdi = r12; 0x00408211 call 0x405390 | rax = std::_1::locale::use_facet(std::_1::locale::id&)const (); 0x00408216 mov rcx, qword [rax] | rcx = *(rax); 0x00408219 mov rdi, rax | rdi = rax; 0x0040821c mov esi, 0xa | esi = 0xa; 0x00408221 call qword [rcx + 0x38] | eax = uint64_t (*rcx + 0x38)() (); 0x00408224 mov ebx, eax | ebx = eax; 0x00408226 mov rdi, r12 | rdi = r12; 0x00408229 call 0x405450 | std::_1::locale::~locale() (); 0x0040822e movsx esi, bl | esi = (int32_t) bl; 0x00408231 mov rdi, rbp | rdi = rbp; 0x00408234 call 0x405020 | std::_1::basic_ostream>::put(char) (); 0x00408239 mov rdi, rbp | rdi = rbp; 0x0040823c call 0x405210 | std::_1::basic_ostream>::flush() (); 0x00408241 movzx eax, byte [r13 - 2] | eax = *((r13 - 2)); 0x00408246 movzx ebx, byte [r13 - 1] | ebx = *((r13 - 1)); 0x0040824b cmp al, 0x58 | 0x0040824d je 0x4081d1 | | } while (al == 0x58); | label_3: 0x00408253 lea ecx, [rax - 0x41] | ecx = rax - 0x41; 0x00408256 movsx ebp, al | ebp = (int32_t) al; 0x00408259 cmp cl, 3 | | if (cl > 3) { 0x0040825c ja 0x40834c | goto label_5; | } 0x00408262 mov rax, qword [rip + 0x29a08f] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x00408269 test rax, rax | | if (rax == 0) { 0x0040826c jne 0x408273 | 0x0040826e call 0x43ad20 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); | } 0x00408273 mov qword [rsp + 8], 0 | *((rsp + 8)) = 0; 0x0040827c mov qword [rsp + 0x30], rax | *((rsp + 0x30)) = rax; 0x00408281 movaps xmm0, xmmword [rip + 0x5ab48] | xmm0 = .comment; 0x00408288 movups xmmword [rsp + 0x20], xmm0 | __asm ("movups xmmword [rsp + 0x20], xmm0"); 0x0040828d mov esi, 1 | 0x00408292 mov ecx, 0x465c46 | 0x00408297 mov rdi, r12 | 0x0040829a mov edx, ebp | 0x0040829c call 0x43fe40 | bsl::basic_string,bsl::allocator>::privateAppend(unsigned long,char,char const*) (r12, 1, ebp, "string<...>::assign(n,c): string too long"); 0x004082a1 cmp qword [rsp + 0x28], 0x17 | 0x004082a7 mov rsi, r12 | rsi = r12; | if (*((rsp + 0x28)) != 0x17) { 0x004082aa je 0x4082b1 | 0x004082ac mov rsi, qword [rsp + 8] | | } 0x004082b1 mov rdi, r14 | 0x004082b4 call 0x41e7c0 | rax = BloombergLP::balm::MetricRegistry::getCategory(char const*) (r14, *((rsp + 8))); 0x004082b9 mov rbp, rax | 0x004082bc cmp qword [rsp + 0x28], 0x17 | | if (*((rsp + 0x28)) != 0x17) { 0x004082c2 je 0x4082d4 | 0x004082c4 mov rsi, qword [rsp + 8] | rsi = *((rsp + 8)); 0x004082c9 mov rdi, qword [rsp + 0x30] | rdi = *((rsp + 0x30)); 0x004082ce mov rax, qword [rdi] | rax = *(rdi); 0x004082d1 call qword [rax + 0x18] | eax = uint64_t (*rax + 0x18)() (); | } 0x004082d4 xor eax, eax | eax = 0; | label_4: 0x004082d6 lea ecx, [rbx - 0x31] | ecx = rbx - 0x31; 0x004082d9 cmp cl, 8 | | if (cl > 8) { 0x004082dc ja 0x40831c | goto label_6; | } 0x004082de movzx ecx, bl | ecx = (int32_t) bl; 0x004082e1 add ecx, 0xffffffd0 | ecx += 0xffffffd0; 0x004082e4 mov dword [rsp + 8], eax | *((rsp + 8)) = eax; 0x004082e8 mov qword [rsp + 0x10], rbp | *((rsp + 0x10)) = rbp; 0x004082ed mov dword [rsp + 0x18], ecx | *((rsp + 0x18)) = ecx; 0x004082f1 mov rdi, r15 | 0x004082f4 mov rsi, r12 | 0x004082f7 call 0x416c60 | bsl::vector>::push_back(Action&&) (r15, r12); 0x004082fc movzx eax, byte [r13] | eax = *(r13); 0x00408301 add r13, 2 | r13 += 2; 0x00408305 test al, al | | if (al != 0) { 0x00408307 jne 0x4081c0 | goto label_0; | } | label_1: 0x0040830d add rsp, 0x38 | 0x00408311 pop rbx | 0x00408312 pop r12 | 0x00408314 pop r13 | 0x00408316 pop r14 | 0x00408318 pop r15 | 0x0040831a pop rbp | 0x0040831b ret | return rax; | label_6: 0x0040831c movsx ebx, bl | ebx = (int32_t) bl; 0x0040831f mov edi, 0x6a2208 | 0x00408324 mov esi, 0x463736 | 0x00408329 call 0x4168a0 | rax = std::_1::basic_ostream>&std::_1::operator << >(std::_1::basic_ostream>&,char const*) (obj.std::__1::cout, "Unexpected interval in spec: "); 0x0040832e mov rdi, rax | rdi = rax; 0x00408331 mov esi, ebx | esi = ebx; 0x00408333 call 0x416c40 | rax = std::_1::basic_ostream>&std::_1::operator << >(std::_1::basic_ostream>&,char) (); 0x00408338 mov esi, 0x466e5d | 0x0040833d mov rdi, rax | 0x00408340 call 0x4168a0 | rax = std::_1::basic_ostream>&std::_1::operator << >(std::_1::basic_ostream>&,char const*) (rax, 0x466e5d); 0x00408345 mov rdi, rax | rdi = rax; 0x00408348 mov esi, ebx | esi = ebx; 0x0040834a jmp 0x408377 | goto label_7; | label_5: 0x0040834c mov edi, 0x6a2208 | 0x00408351 mov esi, 0x463714 | 0x00408356 call 0x4168a0 | rax = std::_1::basic_ostream>&std::_1::operator << >(std::_1::basic_ostream>&,char const*) (obj.std::__1::cout, "Unexpected element type in spec: "); 0x0040835b mov rdi, rax | rdi = rax; 0x0040835e mov esi, ebp | esi = ebp; 0x00408360 call 0x416c40 | rax = std::_1::basic_ostream>&std::_1::operator << >(std::_1::basic_ostream>&,char) (); 0x00408365 mov esi, 0x466e5d | 0x0040836a mov rdi, rax | 0x0040836d call 0x4168a0 | rax = std::_1::basic_ostream>&std::_1::operator << >(std::_1::basic_ostream>&,char const*) (rax, 0x466e5d); 0x00408372 mov rdi, rax | rdi = rax; 0x00408375 mov esi, ebp | esi = ebp; | label_7: 0x00408377 call 0x4051e0 | rax = std::_1::basic_ostream>::operator << (int) (); 0x0040837c mov esi, 0x463863 | 0x00408381 mov rdi, rax | 0x00408384 call 0x4168a0 | rax = std::_1::basic_ostream>&std::_1::operator << >(std::_1::basic_ostream>&,char const*) (rax, 0x463863); 0x00408389 mov rdi, rax | 0x0040838c call 0x4168d0 | rax = std::_1::basic_ostream>&std::_1::endl>(std::_1::basic_ostream>&) (rax); 0x00408391 mov rdi, rax | rdi = rax; 0x00408394 call 0x416e50 | rax = _clang_call_terminate (); 0x00408399 mov rbx, rax | rbx = rax; 0x0040839c cmp qword [rsp + 0x28], 0x17 | | if (*((rsp + 0x28)) != 0x17) { 0x004083a2 je 0x4083cb | 0x004083a4 mov rsi, qword [rsp + 8] | rsi = *((rsp + 8)); 0x004083a9 mov rdi, qword [rsp + 0x30] | rdi = *((rsp + 0x30)); 0x004083ae mov rax, qword [rdi] | rax = *(rdi); 0x004083b1 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); 0x004083b4 jmp 0x4083cb | | } 0x004083cb mov rdi, rbx | rdi = rbx; 0x004083ce call 0x405590 | rax = Unwind_Resume (); 0x004083d3 nop word cs:[rax + rax] | 0x004083dd nop dword [rax] | | }