; assembly | /* r2dec pseudo code output */ | /* balber_berdecoder.t/none @ 0x4682a0 */ | #include | ; (fcn) method.BloombergLP::bdlt::Iso8601Util.generate_std::__1::basic_string_char__std::__1::char_traits_char___std::__1::allocator_char_____BloombergLP::bdlt::Date_const__BloombergLP::bdlt::Iso8601UtilConfiguration_const_ () | int64_t method_BloombergLP::bdlt::Iso8601Util_generate_std::_1::basic_string_char_std::_1::char_traits_char_std::_1::allocator_char_BloombergLP::bdlt::Date_const_BloombergLP::bdlt::Iso8601UtilConfiguration_const_ (int64_t arg2, int64_t arg1) { | rsi = arg2; | rdi = arg1; | /* BloombergLP::bdlt::Iso8601Util::generate(std::__1::basic_string, std::__1::allocator >*, BloombergLP::bdlt::Date const&, BloombergLP::bdlt::Iso8601UtilConfiguration const&) */ 0x004682a0 push r15 | 0x004682a2 push r14 | 0x004682a4 push rbx | 0x004682a5 mov r15, rsi | r15 = rsi; 0x004682a8 mov r14, rdi | r14 = rdi; 0x004682ab mov esi, 0xa | esi = 0xa; 0x004682b0 xor edx, edx | edx = 0; 0x004682b2 call 0x404970 | std::_1::basic_string,std::_1::allocator>::resize(unsigned long,char) (); 0x004682b7 test byte [r14], 1 | | if ((*(r14) & 1) == 0) { 0x004682bb jne 0x4682c3 | 0x004682bd lea rbx, [r14 + 1] | rbx = r14 + 1; 0x004682c1 jmp 0x4682c7 | | } else { 0x004682c3 mov rbx, qword [r14 + 0x10] | rbx = *((r14 + 0x10)); | } 0x004682c7 mov edi, dword [r15] | 0x004682ca call 0x46a6a0 | eax = BloombergLP::bdlt::PosixDateImpUtil::serialToYear(int) (*(r15), rsi); 0x004682cf movsxd rcx, eax | rcx = (int64_t) eax; 0x004682d2 imul rax, rcx, 0x66666667 | rax = rcx * 0x66666667; 0x004682d9 mov rdx, rax | rdx = rax; 0x004682dc shr rdx, 0x3f | rdx >>= 0x3f; 0x004682e0 sar rax, 0x22 | rax >>= 0x22; 0x004682e4 add eax, edx | eax += edx; 0x004682e6 lea edx, [rax + rax] | edx = rax + rax; 0x004682e9 lea edx, [rdx + rdx*4] | edx = rdx * 5; 0x004682ec imul rsi, rcx, 0x51eb851f | rsi = rcx * 0x51eb851f; 0x004682f3 imul rdi, rcx, 0x10624dd3 | rdi = rcx * 0x10624dd3; 0x004682fa sub ecx, edx | ecx -= edx; 0x004682fc add cl, 0x30 | cl += 0x30; 0x004682ff mov byte [rbx + 3], cl | *((rbx + 3)) = cl; 0x00468302 cdqe | rax = (int64_t) eax; 0x00468304 imul rcx, rax, 0x66666667 | rcx = rax * 0x66666667; 0x0046830b mov rdx, rcx | rdx = rcx; 0x0046830e shr rdx, 0x3f | rdx >>= 0x3f; 0x00468312 shr rcx, 0x22 | rcx >>= 0x22; 0x00468316 add ecx, edx | ecx += edx; 0x00468318 add ecx, ecx | ecx += ecx; 0x0046831a lea ecx, [rcx + rcx*4] | ecx = rcx * 5; 0x0046831d sub eax, ecx | eax -= ecx; 0x0046831f add al, 0x30 | al += 0x30; 0x00468321 mov byte [rbx + 2], al | *((rbx + 2)) = al; 0x00468324 mov rax, rsi | rax = rsi; 0x00468327 shr rax, 0x3f | rax >>= 0x3f; 0x0046832b sar rsi, 0x25 | rsi >>= 0x25; 0x0046832f add esi, eax | esi += eax; 0x00468331 movsxd rax, esi | rax = (int64_t) esi; 0x00468334 imul rcx, rax, 0x66666667 | rcx = rax * 0x66666667; 0x0046833b mov rdx, rcx | rdx = rcx; 0x0046833e shr rdx, 0x3f | rdx >>= 0x3f; 0x00468342 shr rcx, 0x22 | rcx >>= 0x22; 0x00468346 add ecx, edx | ecx += edx; 0x00468348 add ecx, ecx | ecx += ecx; 0x0046834a lea ecx, [rcx + rcx*4] | ecx = rcx * 5; 0x0046834d sub eax, ecx | eax -= ecx; 0x0046834f add al, 0x30 | al += 0x30; 0x00468351 mov byte [rbx + 1], al | *((rbx + 1)) = al; 0x00468354 mov rax, rdi | rax = rdi; 0x00468357 shr rax, 0x3f | rax >>= 0x3f; 0x0046835b sar rdi, 0x26 | rdi >>= 0x26; 0x0046835f add edi, eax | edi += eax; 0x00468361 movsxd rax, edi | rax = (int64_t) edi; 0x00468364 imul rcx, rax, 0x66666667 | rcx = rax * 0x66666667; 0x0046836b mov rdx, rcx | rdx = rcx; 0x0046836e shr rdx, 0x3f | rdx >>= 0x3f; 0x00468372 shr rcx, 0x22 | rcx >>= 0x22; 0x00468376 add ecx, edx | ecx += edx; 0x00468378 add ecx, ecx | ecx += ecx; 0x0046837a lea ecx, [rcx + rcx*4] | ecx = rcx * 5; 0x0046837d sub eax, ecx | eax -= ecx; 0x0046837f add al, 0x30 | al += 0x30; 0x00468381 mov byte [rbx], al | *(rbx) = al; 0x00468383 mov byte [rbx + 4], 0x2d | *((rbx + 4)) = 0x2d; 0x00468387 mov edi, dword [r15] | 0x0046838a call 0x46a660 | rax = BloombergLP::bdlt::PosixDateImpUtil::serialToMonth(int) (*(r15), rsi); 0x0046838f cdqe | rax = (int64_t) eax; 0x00468391 imul rcx, rax, 0x66666667 | rcx = rax * 0x66666667; 0x00468398 mov rdx, rcx | rdx = rcx; 0x0046839b shr rdx, 0x3f | rdx >>= 0x3f; 0x0046839f sar rcx, 0x22 | rcx >>= 0x22; 0x004683a3 add ecx, edx | ecx += edx; 0x004683a5 lea edx, [rcx + rcx] | edx = rcx + rcx; 0x004683a8 lea edx, [rdx + rdx*4] | edx = rdx * 5; 0x004683ab sub eax, edx | eax -= edx; 0x004683ad add al, 0x30 | al += 0x30; 0x004683af mov byte [rbx + 6], al | *((rbx + 6)) = al; 0x004683b2 movsxd rax, ecx | rax = (int64_t) ecx; 0x004683b5 imul rcx, rax, 0x66666667 | rcx = rax * 0x66666667; 0x004683bc mov rdx, rcx | rdx = rcx; 0x004683bf shr rdx, 0x3f | rdx >>= 0x3f; 0x004683c3 shr rcx, 0x22 | rcx >>= 0x22; 0x004683c7 add ecx, edx | ecx += edx; 0x004683c9 add ecx, ecx | ecx += ecx; 0x004683cb lea ecx, [rcx + rcx*4] | ecx = rcx * 5; 0x004683ce sub eax, ecx | eax -= ecx; 0x004683d0 add al, 0x30 | al += 0x30; 0x004683d2 mov byte [rbx + 5], al | *((rbx + 5)) = al; 0x004683d5 mov byte [rbx + 7], 0x2d | *((rbx + 7)) = 0x2d; 0x004683d9 mov edi, dword [r15] | 0x004683dc call 0x46a620 | rax = BloombergLP::bdlt::PosixDateImpUtil::serialToDay(int) (*(r15), rsi); 0x004683e1 cdqe | rax = (int64_t) eax; 0x004683e3 imul rcx, rax, 0x66666667 | rcx = rax * 0x66666667; 0x004683ea mov rdx, rcx | rdx = rcx; 0x004683ed shr rdx, 0x3f | rdx >>= 0x3f; 0x004683f1 sar rcx, 0x22 | rcx >>= 0x22; 0x004683f5 add ecx, edx | ecx += edx; 0x004683f7 lea edx, [rcx + rcx] | edx = rcx + rcx; 0x004683fa lea edx, [rdx + rdx*4] | edx = rdx * 5; 0x004683fd sub eax, edx | eax -= edx; 0x004683ff add al, 0x30 | al += 0x30; 0x00468401 mov byte [rbx + 9], al | *((rbx + 9)) = al; 0x00468404 movsxd rax, ecx | rax = (int64_t) ecx; 0x00468407 imul rcx, rax, 0x66666667 | rcx = rax * 0x66666667; 0x0046840e mov rdx, rcx | rdx = rcx; 0x00468411 shr rdx, 0x3f | rdx >>= 0x3f; 0x00468415 shr rcx, 0x22 | rcx >>= 0x22; 0x00468419 add ecx, edx | ecx += edx; 0x0046841b add ecx, ecx | ecx += ecx; 0x0046841d lea ecx, [rcx + rcx*4] | ecx = rcx * 5; 0x00468420 sub eax, ecx | eax -= ecx; 0x00468422 add al, 0x30 | al += 0x30; 0x00468424 mov byte [rbx + 8], al | *((rbx + 8)) = al; 0x00468427 mov esi, 0xa | esi = 0xa; 0x0046842c mov rdi, r14 | rdi = r14; 0x0046842f xor edx, edx | edx = 0; 0x00468431 call 0x404970 | std::_1::basic_string,std::_1::allocator>::resize(unsigned long,char) (); 0x00468436 mov eax, 0xa | eax = 0xa; 0x0046843b pop rbx | 0x0046843c pop r14 | 0x0046843e pop r15 | 0x00468440 ret | return rax; | }