char *__fastcall sub_6100(char *dst_1, char *src, unsigned __int64 n8) { char *dst; // rdi unsigned __int64 count_2; // rcx char v10; // dl unsigned __int64 n8_1; // rax unsigned __int64 count; // rax __int64 count_1; // rbx char count_3; // al unsigned __int64 v15; // rcx unsigned __int64 count_4; // rax __asm { pushf } /*0x6103*/ dst = dst_1; /*0x6109*/ count_2 = n8; /*0x610c*/ v10 = 0; /*0x610f*/ n8_1 = src - dst; /*0x6114*/ if ( src < dst ) /*0x6117*/ { n8_1 = dst - src; /*0x611d*/ if ( &src[n8] >= dst ) /*0x6123*/ { src += n8; /*0x6125*/ dst += n8; /*0x6128*/ v10 = 1; /*0x612c*/ } } if ( n8 < 8 || n8_1 < 8 ) /*0x6139*/ goto LABEL_19; /*0x6139*/ count = (unsigned __int8)src & 7; /*0x6141*/ count_1 = (unsigned __int8)dst & 7; /*0x6145*/ if ( v10 ) /*0x614b*/ { --src; /*0x614d*/ --dst; /*0x6150*/ } if ( count == count_1 && count ) /*0x615b*/ { if ( !v10 ) /*0x615f*/ count = 8 - count; /*0x6164*/ qmemcpy(dst, src, count); /*0x616d*/ src += count; /*0x616d*/ dst += count; /*0x616d*/ count_2 = n8 - count; /*0x616f*/ } if ( v10 ) /*0x6174*/ { src -= 7; /*0x6176*/ dst -= 7; /*0x617a*/ } count_3 = count_2; /*0x617e*/ v15 = count_2 >> 3; /*0x6181*/ qmemcpy(dst, src, 8 * v15); /*0x6185*/ src += 8 * v15; /*0x6185*/ dst += 8 * v15; /*0x6185*/ count_4 = count_3 & 7; /*0x6188*/ if ( count_4 ) /*0x618c*/ { if ( v10 ) /*0x6190*/ { src += 8; /*0x6192*/ dst += 8; /*0x6196*/ } count_2 = count_4; /*0x619a*/ LABEL_19: if ( v10 ) /*0x619f*/ { --src; /*0x61a1*/ --dst; /*0x61a4*/ } qmemcpy(dst, src, count_2); /*0x61a7*/ } __asm { popf } /*0x61a9*/ return dst_1; /*0x61ac*/ }