; assembly | /* r2dec pseudo code output */ | /* balber_berdecoder.t/none @ 0x467e80 */ | #include | ; (fcn) method.BloombergLP::bdlt::Iso8601Util.generate_bsl::basic_string_char__std::__1::char_traits_char___bsl::allocator_char_____BloombergLP::bdlt::Date_const__BloombergLP::bdlt::Iso8601UtilConfiguration_const_ () | int64_t method_BloombergLP::bdlt::Iso8601Util_generate_bsl::basic_string_char_std::_1::char_traits_char_bsl::allocator_char_BloombergLP::bdlt::Date_const_BloombergLP::bdlt::Iso8601UtilConfiguration_const_ (int64_t arg2, int64_t arg1) { | rsi = arg2; | rdi = arg1; | /* BloombergLP::bdlt::Iso8601Util::generate(bsl::basic_string, bsl::allocator >*, BloombergLP::bdlt::Date const&, BloombergLP::bdlt::Iso8601UtilConfiguration const&) */ 0x00467e80 push r15 | 0x00467e82 push r14 | 0x00467e84 push rbx | 0x00467e85 mov r15, rsi | r15 = rsi; 0x00467e88 mov r14, rdi | r14 = rdi; 0x00467e8b mov esi, 0xa | 0x00467e90 xor edx, edx | 0x00467e92 call 0x472820 | bsl::basic_string,bsl::allocator>::privateResizeRaw(unsigned long,char) (rdi, 0xa, 0); 0x00467e97 cmp qword [r14 + 0x20], 0x17 | | if (*((r14 + 0x20)) == 0x17) { 0x00467e9c jne 0x467ea3 | 0x00467e9e mov rbx, r14 | rbx = r14; 0x00467ea1 jmp 0x467ea6 | | } else { 0x00467ea3 mov rbx, qword [r14] | rbx = *(r14); | } 0x00467ea6 mov edi, dword [r15] | 0x00467ea9 call 0x46a6a0 | eax = BloombergLP::bdlt::PosixDateImpUtil::serialToYear(int) (*(r15), rsi); 0x00467eae movsxd rcx, eax | rcx = (int64_t) eax; 0x00467eb1 imul rax, rcx, 0x66666667 | rax = rcx * 0x66666667; 0x00467eb8 mov rdx, rax | rdx = rax; 0x00467ebb shr rdx, 0x3f | rdx >>= 0x3f; 0x00467ebf sar rax, 0x22 | rax >>= 0x22; 0x00467ec3 add eax, edx | eax += edx; 0x00467ec5 lea edx, [rax + rax] | edx = rax + rax; 0x00467ec8 lea edx, [rdx + rdx*4] | edx = rdx * 5; 0x00467ecb imul rsi, rcx, 0x51eb851f | rsi = rcx * 0x51eb851f; 0x00467ed2 imul rdi, rcx, 0x10624dd3 | rdi = rcx * 0x10624dd3; 0x00467ed9 sub ecx, edx | ecx -= edx; 0x00467edb add cl, 0x30 | cl += 0x30; 0x00467ede mov byte [rbx + 3], cl | *((rbx + 3)) = cl; 0x00467ee1 cdqe | rax = (int64_t) eax; 0x00467ee3 imul rcx, rax, 0x66666667 | rcx = rax * 0x66666667; 0x00467eea mov rdx, rcx | rdx = rcx; 0x00467eed shr rdx, 0x3f | rdx >>= 0x3f; 0x00467ef1 shr rcx, 0x22 | rcx >>= 0x22; 0x00467ef5 add ecx, edx | ecx += edx; 0x00467ef7 add ecx, ecx | ecx += ecx; 0x00467ef9 lea ecx, [rcx + rcx*4] | ecx = rcx * 5; 0x00467efc sub eax, ecx | eax -= ecx; 0x00467efe add al, 0x30 | al += 0x30; 0x00467f00 mov byte [rbx + 2], al | *((rbx + 2)) = al; 0x00467f03 mov rax, rsi | rax = rsi; 0x00467f06 shr rax, 0x3f | rax >>= 0x3f; 0x00467f0a sar rsi, 0x25 | rsi >>= 0x25; 0x00467f0e add esi, eax | esi += eax; 0x00467f10 movsxd rax, esi | rax = (int64_t) esi; 0x00467f13 imul rcx, rax, 0x66666667 | rcx = rax * 0x66666667; 0x00467f1a mov rdx, rcx | rdx = rcx; 0x00467f1d shr rdx, 0x3f | rdx >>= 0x3f; 0x00467f21 shr rcx, 0x22 | rcx >>= 0x22; 0x00467f25 add ecx, edx | ecx += edx; 0x00467f27 add ecx, ecx | ecx += ecx; 0x00467f29 lea ecx, [rcx + rcx*4] | ecx = rcx * 5; 0x00467f2c sub eax, ecx | eax -= ecx; 0x00467f2e add al, 0x30 | al += 0x30; 0x00467f30 mov byte [rbx + 1], al | *((rbx + 1)) = al; 0x00467f33 mov rax, rdi | rax = rdi; 0x00467f36 shr rax, 0x3f | rax >>= 0x3f; 0x00467f3a sar rdi, 0x26 | rdi >>= 0x26; 0x00467f3e add edi, eax | edi += eax; 0x00467f40 movsxd rax, edi | rax = (int64_t) edi; 0x00467f43 imul rcx, rax, 0x66666667 | rcx = rax * 0x66666667; 0x00467f4a mov rdx, rcx | rdx = rcx; 0x00467f4d shr rdx, 0x3f | rdx >>= 0x3f; 0x00467f51 shr rcx, 0x22 | rcx >>= 0x22; 0x00467f55 add ecx, edx | ecx += edx; 0x00467f57 add ecx, ecx | ecx += ecx; 0x00467f59 lea ecx, [rcx + rcx*4] | ecx = rcx * 5; 0x00467f5c sub eax, ecx | eax -= ecx; 0x00467f5e add al, 0x30 | al += 0x30; 0x00467f60 mov byte [rbx], al | *(rbx) = al; 0x00467f62 mov byte [rbx + 4], 0x2d | *((rbx + 4)) = 0x2d; 0x00467f66 mov edi, dword [r15] | 0x00467f69 call 0x46a660 | rax = BloombergLP::bdlt::PosixDateImpUtil::serialToMonth(int) (*(r15), rsi); 0x00467f6e cdqe | rax = (int64_t) eax; 0x00467f70 imul rcx, rax, 0x66666667 | rcx = rax * 0x66666667; 0x00467f77 mov rdx, rcx | rdx = rcx; 0x00467f7a shr rdx, 0x3f | rdx >>= 0x3f; 0x00467f7e sar rcx, 0x22 | rcx >>= 0x22; 0x00467f82 add ecx, edx | ecx += edx; 0x00467f84 lea edx, [rcx + rcx] | edx = rcx + rcx; 0x00467f87 lea edx, [rdx + rdx*4] | edx = rdx * 5; 0x00467f8a sub eax, edx | eax -= edx; 0x00467f8c add al, 0x30 | al += 0x30; 0x00467f8e mov byte [rbx + 6], al | *((rbx + 6)) = al; 0x00467f91 movsxd rax, ecx | rax = (int64_t) ecx; 0x00467f94 imul rcx, rax, 0x66666667 | rcx = rax * 0x66666667; 0x00467f9b mov rdx, rcx | rdx = rcx; 0x00467f9e shr rdx, 0x3f | rdx >>= 0x3f; 0x00467fa2 shr rcx, 0x22 | rcx >>= 0x22; 0x00467fa6 add ecx, edx | ecx += edx; 0x00467fa8 add ecx, ecx | ecx += ecx; 0x00467faa lea ecx, [rcx + rcx*4] | ecx = rcx * 5; 0x00467fad sub eax, ecx | eax -= ecx; 0x00467faf add al, 0x30 | al += 0x30; 0x00467fb1 mov byte [rbx + 5], al | *((rbx + 5)) = al; 0x00467fb4 mov byte [rbx + 7], 0x2d | *((rbx + 7)) = 0x2d; 0x00467fb8 mov edi, dword [r15] | 0x00467fbb call 0x46a620 | rax = BloombergLP::bdlt::PosixDateImpUtil::serialToDay(int) (*(r15), rsi); 0x00467fc0 cdqe | rax = (int64_t) eax; 0x00467fc2 imul rcx, rax, 0x66666667 | rcx = rax * 0x66666667; 0x00467fc9 mov rdx, rcx | rdx = rcx; 0x00467fcc shr rdx, 0x3f | rdx >>= 0x3f; 0x00467fd0 sar rcx, 0x22 | rcx >>= 0x22; 0x00467fd4 add ecx, edx | ecx += edx; 0x00467fd6 lea edx, [rcx + rcx] | edx = rcx + rcx; 0x00467fd9 lea edx, [rdx + rdx*4] | edx = rdx * 5; 0x00467fdc sub eax, edx | eax -= edx; 0x00467fde add al, 0x30 | al += 0x30; 0x00467fe0 mov byte [rbx + 9], al | *((rbx + 9)) = al; 0x00467fe3 movsxd rax, ecx | rax = (int64_t) ecx; 0x00467fe6 imul rcx, rax, 0x66666667 | rcx = rax * 0x66666667; 0x00467fed mov rdx, rcx | rdx = rcx; 0x00467ff0 shr rdx, 0x3f | rdx >>= 0x3f; 0x00467ff4 shr rcx, 0x22 | rcx >>= 0x22; 0x00467ff8 add ecx, edx | ecx += edx; 0x00467ffa add ecx, ecx | ecx += ecx; 0x00467ffc lea ecx, [rcx + rcx*4] | ecx = rcx * 5; 0x00467fff sub eax, ecx | eax -= ecx; 0x00468001 add al, 0x30 | al += 0x30; 0x00468003 mov byte [rbx + 8], al | *((rbx + 8)) = al; 0x00468006 mov esi, 0xa | 0x0046800b mov rdi, r14 | 0x0046800e xor edx, edx | 0x00468010 call 0x472820 | bsl::basic_string,bsl::allocator>::privateResizeRaw(unsigned long,char) (r14, 0xa, 0); 0x00468015 mov eax, 0xa | eax = 0xa; 0x0046801a pop rbx | 0x0046801b pop r14 | 0x0046801d pop r15 | 0x0046801f ret | return rax; | }