; assembly | /* r2dec pseudo code output */ | /* balm_publicationscheduler.t/none @ 0x4081b0 */ | #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; | int64_t var_38h; | char * var_40h; | rdx = arg3; | rsi = arg2; | rdi = arg1; | /* gg(bsl::vector >*, BloombergLP::balm::MetricRegistry&, char const*) */ 0x004081b0 push rbp | 0x004081b1 push r15 | 0x004081b3 push r14 | 0x004081b5 push r13 | 0x004081b7 push r12 | 0x004081b9 push rbx | 0x004081ba sub rsp, 0x48 | 0x004081be mov qword [rsp + 0x38], rsi | *((rsp + 0x38)) = rsi; 0x004081c3 mov qword [rsp + 0x40], rdi | *((rsp + 0x40)) = rdi; 0x004081c8 mov bl, byte [rdx] | bl = *(rdx); 0x004081ca test bl, bl | | if (bl == 0) { 0x004081cc je 0x40849e | goto label_1; | } 0x004081d2 mov r14, rdx | r14 = rdx; 0x004081d5 add r14, 2 | r14 += 2; 0x004081d9 lea r15, [rsp + 8] | r15 = rsp + 8; 0x004081de jmp 0x40820d | | while (al <= 8) { 0x004081e0 add ebp, 0xffffffd0 | ebp += 0xffffffd0; | label_0: 0x004081e3 mov dword [rsp + 8], ecx | *((rsp + 8)) = ecx; 0x004081e7 mov qword [rsp + 0x10], r13 | *((rsp + 0x10)) = r13; 0x004081ec mov dword [rsp + 0x18], ebp | *((rsp + 0x18)) = ebp; 0x004081f0 mov rdi, qword [rsp + 0x40] | 0x004081f5 mov rsi, r15 | 0x004081f8 call 0x416cb0 | bsl::vector>::push_back(Action&&) (*((rsp + 0x40)), r15); 0x004081fd movzx ebx, byte [r14] | ebx = *(r14); 0x00408201 add r14, 2 | r14 += 2; 0x00408205 test bl, bl | | if (bl == 0) { 0x00408207 je 0x40849e | goto label_1; | } 0x0040820d movzx r12d, byte [r14 - 1] | r12d = *((r14 - 1)); 0x00408212 test r12b, r12b | | if (r12b == 0) { 0x00408215 jne 0x408285 | 0x00408217 mov edi, 0x6a2208 | 0x0040821c mov esi, 0x463a07 | 0x00408221 mov edx, 0x20 | 0x00408226 call 0x418280 | 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); 0x0040822b mov r12, rax | r12 = rax; 0x0040822e mov rax, qword [rax] | rax = *(rax); 0x00408231 mov rsi, qword [rax - 0x18] | rsi = *((rax - 0x18)); 0x00408235 add rsi, r12 | rsi += r12; 0x00408238 mov rbp, r15 | 0x0040823b mov rdi, r15 | rdi = r15; 0x0040823e call 0x405250 | std::_1::ios_base::getloc()const (); 0x00408243 mov esi, 0x6a2150 | esi = std::__1::ctype::id; 0x00408248 mov rdi, r15 | rdi = r15; 0x0040824b call 0x405390 | rax = std::_1::locale::use_facet(std::_1::locale::id&)const (); 0x00408250 mov rcx, qword [rax] | rcx = *(rax); 0x00408253 mov rdi, rax | rdi = rax; 0x00408256 mov esi, 0xa | esi = 0xa; 0x0040825b call qword [rcx + 0x38] | eax = uint64_t (*rcx + 0x38)() (); 0x0040825e mov ebx, eax | ebx = eax; 0x00408260 mov rdi, rbp | rdi = rbp; 0x00408263 call 0x405450 | std::_1::locale::~locale() (); 0x00408268 movsx esi, bl | esi = (int32_t) bl; 0x0040826b mov rdi, r12 | rdi = r12; 0x0040826e call 0x405020 | std::_1::basic_ostream>::put(char) (); 0x00408273 mov rdi, r12 | rdi = r12; 0x00408276 call 0x405210 | std::_1::basic_ostream>::flush() (); 0x0040827b movzx ebx, byte [r14 - 2] | ebx = *((r14 - 2)); 0x00408280 movzx r12d, byte [r14 - 1] | r12d = *((r14 - 1)); | } 0x00408285 mov ecx, 1 | ecx = 1; 0x0040828a cmp bl, 0x58 | | if (bl == 0x58) { 0x0040828d jne 0x4082a0 | 0x0040828f xor r13d, r13d | r13d = 0; 0x00408292 jmp 0x4083de | | } else { 0x004082a0 movsx ebp, bl | ebp = (int32_t) bl; 0x004082a3 lea eax, [rbx - 0x41] | eax = rbx - 0x41; 0x004082a6 cmp al, 3 | | if (al <= 3) { 0x004082a8 ja 0x408330 | 0x004082ae mov rax, qword [rip + 0x29a043] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x004082b5 test rax, rax | | if (rax == 0) { 0x004082b8 jne 0x4082bf | 0x004082ba call 0x43afe0 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); | } 0x004082bf mov qword [rsp + 8], 0 | *((rsp + 8)) = 0; 0x004082c8 mov qword [rsp + 0x30], rax | *((rsp + 0x30)) = rax; 0x004082cd movaps xmm0, xmmword [rip + 0x5adfc] | xmm0 = .comment; 0x004082d4 movups xmmword [rsp + 0x20], xmm0 | __asm ("movups xmmword [rsp + 0x20], xmm0"); 0x004082d9 mov esi, 1 | 0x004082de mov ecx, 0x465f56 | 0x004082e3 mov rbx, r15 | rbx = r15; 0x004082e6 mov rdi, r15 | 0x004082e9 mov edx, ebp | 0x004082eb call 0x440120 | bsl::basic_string,bsl::allocator>::privateAppend(unsigned long,char,char const*) (r15, 1, ebp, "string<...>::assign(n,c): string too long"); 0x004082f0 cmp qword [rsp + 0x28], 0x17 | | if (*((rsp + 0x28)) != 0x17) { 0x004082f6 je 0x4082fd | 0x004082f8 mov rbx, qword [rsp + 8] | rbx = *((rsp + 8)); | } 0x004082fd mov rdi, qword [rsp + 0x38] | 0x00408302 mov rsi, rbx | 0x00408305 call 0x41e830 | rax = BloombergLP::balm::MetricRegistry::getCategory(char const*) (*((rsp + 0x38)), rbx); 0x0040830a mov r13, rax | r13 = rax; 0x0040830d cmp qword [rsp + 0x28], 0x17 | | if (*((rsp + 0x28)) != 0x17) { 0x00408313 je 0x408325 | 0x00408315 mov rsi, qword [rsp + 8] | rsi = *((rsp + 8)); 0x0040831a mov rdi, qword [rsp + 0x30] | rdi = *((rsp + 0x30)); 0x0040831f mov rax, qword [rdi] | rax = *(rdi); 0x00408322 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x00408325 xor ecx, ecx | ecx = 0; 0x00408327 jmp 0x4083de | | } else { 0x00408330 mov edi, 0x6a2208 | 0x00408335 mov esi, 0x463a28 | 0x0040833a mov edx, 0x21 | 0x0040833f call 0x418280 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (obj.std::__1::cout, "Unexpected element type in spec: ", 0x21); 0x00408344 mov byte [rsp + 8], bl | *((rsp + 8)) = bl; 0x00408348 mov edx, 1 | 0x0040834d mov rdi, rax | 0x00408350 mov rbx, r15 | rbx = r15; 0x00408353 mov rsi, r15 | 0x00408356 call 0x418280 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, r15, 1); 0x0040835b mov esi, 0x46716d | 0x00408360 mov edx, 1 | 0x00408365 mov rdi, rax | 0x00408368 call 0x418280 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x46716d, 1); 0x0040836d mov rdi, rax | rdi = rax; 0x00408370 mov esi, ebp | esi = ebp; 0x00408372 call 0x4051e0 | rax = std::_1::basic_ostream>::operator << (int) (); 0x00408377 mov esi, 0x463b75 | 0x0040837c mov edx, 1 | 0x00408381 mov rdi, rax | 0x00408384 call 0x418280 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x463b75, 1); 0x00408389 mov rbp, rax | 0x0040838c mov rax, qword [rax] | rax = *(rax); 0x0040838f mov rsi, qword [rax - 0x18] | rsi = *((rax - 0x18)); 0x00408393 add rsi, rbp | rsi += rbp; 0x00408396 mov rdi, r15 | rdi = r15; 0x00408399 call 0x405250 | std::_1::ios_base::getloc()const (); 0x0040839e mov esi, 0x6a2150 | esi = std::__1::ctype::id; 0x004083a3 mov rdi, r15 | rdi = r15; 0x004083a6 call 0x405390 | rax = std::_1::locale::use_facet(std::_1::locale::id&)const (); 0x004083ab mov rcx, qword [rax] | rcx = *(rax); 0x004083ae mov rdi, rax | rdi = rax; 0x004083b1 mov esi, 0xa | esi = 0xa; 0x004083b6 call qword [rcx + 0x38] | eax = uint64_t (*rcx + 0x38)() (); 0x004083b9 mov ebx, eax | ebx = eax; 0x004083bb mov rdi, r15 | rdi = r15; 0x004083be call 0x405450 | std::_1::locale::~locale() (); 0x004083c3 movsx esi, bl | esi = (int32_t) bl; 0x004083c6 mov rdi, rbp | rdi = rbp; 0x004083c9 call 0x405020 | std::_1::basic_ostream>::put(char) (); 0x004083ce mov rdi, rbp | rdi = rbp; 0x004083d1 call 0x405210 | std::_1::basic_ostream>::flush() (); 0x004083d6 xor r13d, r13d | r13d = 0; 0x004083d9 mov ecx, 1 | ecx = 1; | } | } 0x004083de movsx ebp, r12b | ebp = (int32_t) r12b; 0x004083e2 lea eax, [rbp - 0x31] | eax = rbp - 0x31; 0x004083e5 cmp al, 8 | 0x004083e7 jbe 0x4081e0 | | } 0x004083ed mov r12d, ecx | r12d = ecx; 0x004083f0 mov edi, 0x6a2208 | 0x004083f5 mov esi, 0x463a4a | 0x004083fa mov edx, 0x1d | 0x004083ff call 0x418280 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (obj.std::__1::cout, "Unexpected interval in spec: ", 0x1d); 0x00408404 mov byte [rsp + 8], bpl | *((rsp + 8)) = bpl; 0x00408409 mov edx, 1 | 0x0040840e mov rdi, rax | 0x00408411 mov rsi, r15 | 0x00408414 call 0x418280 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, r15, 1); 0x00408419 mov esi, 0x46716d | 0x0040841e mov edx, 1 | 0x00408423 mov rdi, rax | 0x00408426 call 0x418280 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x46716d, 1); 0x0040842b mov rdi, rax | rdi = rax; 0x0040842e mov esi, ebp | esi = ebp; 0x00408430 call 0x4051e0 | rax = std::_1::basic_ostream>::operator << (int) (); 0x00408435 mov esi, 0x463b75 | 0x0040843a mov edx, 1 | 0x0040843f mov rdi, rax | 0x00408442 call 0x418280 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x463b75, 1); 0x00408447 mov rbp, rax | 0x0040844a mov rax, qword [rax] | rax = *(rax); 0x0040844d mov rsi, qword [rax - 0x18] | rsi = *((rax - 0x18)); 0x00408451 add rsi, rbp | rsi += rbp; 0x00408454 mov rdi, r15 | rdi = r15; 0x00408457 call 0x405250 | std::_1::ios_base::getloc()const (); 0x0040845c mov esi, 0x6a2150 | esi = std::__1::ctype::id; 0x00408461 mov rdi, r15 | rdi = r15; 0x00408464 call 0x405390 | rax = std::_1::locale::use_facet(std::_1::locale::id&)const (); 0x00408469 mov rcx, qword [rax] | rcx = *(rax); 0x0040846c mov rdi, rax | rdi = rax; 0x0040846f mov esi, 0xa | esi = 0xa; 0x00408474 call qword [rcx + 0x38] | eax = uint64_t (*rcx + 0x38)() (); 0x00408477 mov ebx, eax | ebx = eax; 0x00408479 mov rdi, r15 | rdi = r15; 0x0040847c call 0x405450 | std::_1::locale::~locale() (); 0x00408481 movsx esi, bl | esi = (int32_t) bl; 0x00408484 mov rdi, rbp | rdi = rbp; 0x00408487 call 0x405020 | std::_1::basic_ostream>::put(char) (); 0x0040848c mov rdi, rbp | rdi = rbp; 0x0040848f call 0x405210 | std::_1::basic_ostream>::flush() (); 0x00408494 xor ebp, ebp | ebp = 0; 0x00408496 mov ecx, r12d | ecx = r12d; 0x00408499 jmp 0x4081e3 | goto label_0; | label_1: 0x0040849e add rsp, 0x48 | 0x004084a2 pop rbx | 0x004084a3 pop r12 | 0x004084a5 pop r13 | 0x004084a7 pop r14 | 0x004084a9 pop r15 | 0x004084ab pop rbp | 0x004084ac ret | return rax; | }