; assembly | /* r2dec pseudo code output */ | /* baltzo_localdatetime.t/none @ 0x457750 */ | #include | ; (fcn) method.BloombergLP::bslx::MarshallingUtil.getArrayUint40_unsigned_long_long__char_const__int_ () | uint64_t method_BloombergLP::bslx::MarshallingUtil_getArrayUint40_unsigned_long_long_char_const_int_ (int64_t arg3, int64_t arg2, int64_t arg1) { | rdx = arg3; | rsi = arg2; | rdi = arg1; | /* BloombergLP::bslx::MarshallingUtil::getArrayUint40(unsigned long long*, char const*, int) */ 0x00457750 test edx, edx | | if (edx == 0) { 0x00457752 je 0x457810 | goto label_0; | } 0x00457758 movsxd rcx, edx | rcx = (int64_t) edx; 0x0045775b lea rdx, [rcx*8 - 8] | rdx = rcx*8 - 8; 0x00457763 test dl, 8 | | if ((dl & 8) == 0) { 0x00457766 jne 0x45779a | 0x00457768 mov qword [rdi], 0 | *(rdi) = 0; 0x0045776f mov al, byte [rsi] | al = *(rsi); 0x00457771 mov byte [rdi + 4], al | *((rdi + 4)) = al; 0x00457774 mov al, byte [rsi + 1] | al = *((rsi + 1)); 0x00457777 mov byte [rdi + 3], al | *((rdi + 3)) = al; 0x0045777a mov al, byte [rsi + 2] | al = *((rsi + 2)); 0x0045777d mov byte [rdi + 2], al | *((rdi + 2)) = al; 0x00457780 mov al, byte [rsi + 3] | al = *((rsi + 3)); 0x00457783 mov byte [rdi + 1], al | *((rdi + 1)) = al; 0x00457786 mov al, byte [rsi + 4] | al = *((rsi + 4)); 0x00457789 mov byte [rdi], al | *(rdi) = al; 0x0045778b add rsi, 5 | rsi += 5; 0x0045778f lea rax, [rdi + 8] | rax = rdi + 8; 0x00457793 test rdx, rdx | | if (rdx != 0) { 0x00457796 jne 0x4577a2 | goto label_1; | } 0x00457798 jmp 0x457810 | goto label_0; | } 0x0045779a mov rax, rdi | rax = rdi; 0x0045779d test rdx, rdx | | if (rdx == 0) { 0x004577a0 je 0x457810 | goto label_0; | } | label_1: 0x004577a2 lea rcx, [rdi + rcx*8] | rcx = rdi + rcx*8; 0x004577a6 nop word cs:[rax + rax] | | do { 0x004577b0 mov qword [rax], 0 | *(rax) = 0; 0x004577b7 movzx edx, byte [rsi] | edx = *(rsi); 0x004577ba mov byte [rax + 4], dl | *((rax + 4)) = dl; 0x004577bd movzx edx, byte [rsi + 1] | edx = *((rsi + 1)); 0x004577c1 mov byte [rax + 3], dl | *((rax + 3)) = dl; 0x004577c4 movzx edx, byte [rsi + 2] | edx = *((rsi + 2)); 0x004577c8 mov byte [rax + 2], dl | *((rax + 2)) = dl; 0x004577cb movzx edx, byte [rsi + 3] | edx = *((rsi + 3)); 0x004577cf mov byte [rax + 1], dl | *((rax + 1)) = dl; 0x004577d2 movzx edx, byte [rsi + 4] | edx = *((rsi + 4)); 0x004577d6 mov byte [rax], dl | *(rax) = dl; 0x004577d8 mov qword [rax + 8], 0 | *((rax + 8)) = 0; 0x004577e0 movzx edx, byte [rsi + 5] | edx = *((rsi + 5)); 0x004577e4 mov byte [rax + 0xc], dl | *((rax + 0xc)) = dl; 0x004577e7 movzx edx, byte [rsi + 6] | edx = *((rsi + 6)); 0x004577eb mov byte [rax + 0xb], dl | *((rax + 0xb)) = dl; 0x004577ee movzx edx, byte [rsi + 7] | edx = *((rsi + 7)); 0x004577f2 mov byte [rax + 0xa], dl | *((rax + 0xa)) = dl; 0x004577f5 movzx edx, byte [rsi + 8] | edx = *((rsi + 8)); 0x004577f9 mov byte [rax + 9], dl | *((rax + 9)) = dl; 0x004577fc movzx edx, byte [rsi + 9] | edx = *((rsi + 9)); 0x00457800 mov byte [rax + 8], dl | *((rax + 8)) = dl; 0x00457803 add rax, 0x10 | rax += 0x10; 0x00457807 add rsi, 0xa | rsi += 0xa; 0x0045780b cmp rax, rcx | 0x0045780e jne 0x4577b0 | | } while (rax != rcx); | label_0: 0x00457810 ret | return rax; | }