E6EA54940(void* _a4, void* _a8, int _a12) {
void* _t100;
signed int _t102;
void _t110;
void _t111;
int _t113;
unsigned int _t114;
int _t115;
int _t125;
unsigned int _t126;
int _t127;
int _t129;
int _t134;
signed int _t140;
unsigned int _t144;
int _t145;
int _t147;
signed int _t153;
void* _t154;
signed int _t159;
void* _t163;
void* _t164;
void* _t165;
void* _t166;
intOrPtr* _t167;
void* _t176;
_t163 = _a8;
_t125 = _a12;
_t154 = _a4;
_t100 = _t163 + _t125;
if(_t154 <= _t163 || _t154 >= _t100) {
if(_t125 < 0x20) {
L73:
_t126 = _t125 & 0x0000001f;
__eflags = _t126;
if(_t126 != 0) {
_t102 = _t126;
_t127 = _t126 >> 2;
__eflags = _t127;
while(_t127 != 0) {
*_t154 = *_t163;
_t154 = _t154 + 4;
_t163 = _t163 + 4;
_t127 = _t127 - 1;
__eflags = _t127;
}
_t129 = _t102 & 0x00000003;
__eflags = _t129;
while(_t129 != 0) {
*_t154 = *_t163;
_t163 = _t163 + 1;
_t154 = _t154 + 1;
_t129 = _t129 - 1;
__eflags = _t129;
}
}
goto L79;
} else {
_t176 = _t125 - 0x80;
if(_t176 >= 0) {
asm("bt dword [0x6ea93acc], 0x1");
if(__eflags >= 0) {
__eflags = (_t154 ^ _t163) & 0x0000000f;
if(__eflags != 0) {
L10:
asm("bt dword [0x6ea93acc], 0x0");
if(__eflags >= 0) {
goto L35;
} else {
__eflags = _t154 & 0x00000003;
if((_t154 & 0x00000003) != 0) {
goto L35;
} else {
__eflags = _t163 & 0x00000003;
if(__eflags == 0) {
asm("bt edi, 0x2");
if(__eflags < 0) {
_t111 = *_t163;
_t125 = _t125 - 4;
__eflags = _t125;
_t163 = _t163 + 4;
*_t154 = _t111;
_t154 = _t154 + 4;
}
asm("bt edi, 0x3");
if(__eflags < 0) {
asm("movq xmm1, [esi]");
_t125 = _t125 - 8;
__eflags = _t125;
_t163 = _t163 + 8;
asm("movq [edi], xmm1");
_t154 = _t154 + 8;
}
__eflags = _t163 & 0x00000007;
if(__eflags == 0) {
asm("movdqa xmm1, [esi-0x8]");
_t164 = _t163 - 8;
do {
asm("movdqa xmm3, [esi+0x10]");
_t125 = _t125 - 0x30;
asm("movdqa xmm0, [esi+0x20]");
asm("movdqa xmm5, [esi+0x30]");
_t164 = _t164 + 0x30;
__eflags = _t125 - 0x30;
asm("movdqa xmm2, xmm3");
asm("palignr xmm3, xmm1, 0x8");
asm("movdqa [edi], xmm3");
asm("movdqa xmm4, xmm0");
asm("palignr xmm0, xmm2, 0x8");
asm("movdqa [edi+0x10], xmm0");
asm("movdqa xmm1, xmm5");
asm("palignr xmm5, xmm4, 0x8");
asm("movdqa [edi+0x20], xmm5");
_t154 = _t154 + 0x30;
} while (_t125 >= 0x30);
_t163 = _t164 + 8;
} else {
asm("bt esi, 0x3");
if(__eflags >= 0) {
asm("movdqa xmm1, [esi-0x4]");
_t165 = _t163 - 4;
do {
asm("movdqa xmm3, [esi+0x10]");
_t125 = _t125 - 0x30;
asm("movdqa xmm0, [esi+0x20]");
asm("movdqa xmm5, [esi+0x30]");
_t165 = _t165 + 0x30;
__eflags = _t125 - 0x30;
asm("movdqa xmm2, xmm3");
asm("palignr xmm3, xmm1, 0x4");
asm("movdqa [edi], xmm3");
asm("movdqa xmm4, xmm0");
asm("palignr xmm0, xmm2, 0x4");
asm("movdqa [edi+0x10], xmm0");
asm("movdqa xmm1, xmm5");
asm("palignr xmm5, xmm4, 0x4");
asm("movdqa [edi+0x20], xmm5");
_t154 = _t154 + 0x30;
} while (_t125 >= 0x30);
_t163 = _t165 + 4;
while(1) {
L28:
__eflags = _t125 - 0x10;
if(__eflags < 0) {
break;
}
asm("movdqu xmm1, [esi]");
_t125 = _t125 - 0x10;
_t163 = _t163 + 0x10;
asm("movdqa [edi], xmm1");
_t154 = _t154 + 0x10;
}
asm("bt ecx, 0x2");
if(__eflags < 0) {
_t110 = *_t163;
_t125 = _t125 - 4;
__eflags = _t125;
_t163 = _t163 + 4;
*_t154 = _t110;
_t154 = _t154 + 4;
}
asm("bt ecx, 0x3");
if(__eflags < 0) {
asm("movq xmm1, [esi]");
__eflags = _t125;
_t163 = _t163 + 8;
asm("movq [edi], xmm1");
_t154 = _t154 + 8;
}
goto __eax;
}
asm("movdqa xmm1, [esi-0xc]");
_t166 = _t163 - 0xc;
do {
asm("movdqa xmm3, [esi+0x10]");
_t125 = _t125 - 0x30;
asm("movdqa xmm0, [esi+0x20]");
asm("movdqa xmm5, [esi+0x30]");
_t166 = _t166 + 0x30;
__eflags = _t125 - 0x30;
asm("movdqa xmm2, xmm3");
asm("palignr xmm3, xmm1, 0xc");
asm("movdqa [edi], xmm3");
asm("movdqa xmm4, xmm0");
asm("palignr xmm0, xmm2, 0xc");
asm("movdqa [edi+0x10], xmm0");
asm("movdqa xmm1, xmm5");
asm("palignr xmm5, xmm4, 0xc");
asm("movdqa [edi+0x20], xmm5");
_t154 = _t154 + 0x30;
} while (_t125 >= 0x30);
_t163 = _t166 + 0xc;
}
goto L28;
}
}
}
goto L37;
} else {
asm("bt dword [0x6ea93010], 0x1");
if(__eflags < 0) {
_t113 = _t163 & 0x0000000f;
__eflags = _t113;
if(_t113 != 0) {
_push(_t125 - 0x10);
_t114 = 0x10 - _t113;
_t134 = _t114 & 0x00000003;
__eflags = _t134;
while(_t134 != 0) {
*_t154 = *_t163;
_t163 = _t163 + 1;
_t154 = _t154 + 1;
_t134 = _t134 - 1;
__eflags = _t134;
}
_t115 = _t114 >> 2;
__eflags = _t115;
while(_t115 != 0) {
*_t154 = *_t163;
_t163 = _t163 + 4;
_t154 = _t154 + 4;
_t115 = _t115 - 1;
__eflags = _t115;
}
_pop(_t125);
}
_t144 = _t125;
_t125 = _t125 & 0x0000007f;
_t145 = _t144 >> 7;
__eflags = _t145;
while(_t145 != 0) {
asm("movdqa xmm0, [esi]");
asm("movdqa xmm1, [esi+0x10]");
asm("movdqa xmm2, [esi+0x20]");
asm("movdqa xmm3, [esi+0x30]");
asm("movdqa [edi], xmm0");
asm("movdqa [edi+0x10], xmm1");
asm("movdqa [edi+0x20], xmm2");
asm("movdqa [edi+0x30], xmm3");
asm("movdqa xmm4, [esi+0x40]");
asm("movdqa xmm5, [esi+0x50]");
asm("movdqa xmm6, [esi+0x60]");
asm("movdqa xmm7, [esi+0x70]");
asm("movdqa [edi+0x40], xmm4");
asm("movdqa [edi+0x50], xmm5");
asm("movdqa [edi+0x60], xmm6");
asm("movdqa [edi+0x70], xmm7");
_t163 = _t163 + 0x80;
_t154 = _t154 + 0x80;
_t145 = _t145 - 1;
__eflags = _t145;
}
goto L69;
} else {
goto L10;
}
}
} else {
memcpy(_t154, _t163, _t125);
return _a4;
}
} else {
asm("bt dword [0x6ea93010], 0x1");
if(_t176 < 0) {
L69:
__eflags = _t125;
if(_t125 != 0) {
_t147 = _t125 >> 5;
__eflags = _t147;
if(_t147 != 0) {
do {
asm("movdqu xmm0, [esi]");
asm("movdqu xmm1, [esi+0x10]");
asm("movdqu [edi], xmm0");
asm("movdqu [edi+0x10], xmm1");
_t163 = _t163 + 0x20;
_t154 = _t154 + 0x20;
_t147 = _t147 - 1;
__eflags = _t147;
} while (_t147 != 0);
}
goto L73;
}
L79:
return _a4;
} else {
L35:
while((_t154 & 0x00000003) != 0) {
*_t154 = *_t163;
_t125 = _t125 - 1;
_t163 = _t163 + 1;
_t154 = _t154 + 1;
}
L37:
_t140 = _t125;
if(_t125 < 0x20) {
goto L73;
} else {
memcpy(_t154, _t163, _t125 >> 2 << 2);
switch( *((intOrPtr*)((_t140 & 0x00000003) * 4 + &M6EA54BA4))) {
case 0:
return _a4;
goto L85;
case 1:
*__edi = *__esi;
__eax = _a4;
return _a4;
goto L85;
case 2:
*__edi = *__esi;
_t46 = __esi + 1; // 0x45c70cc4
*((char*)(__edi + 1)) = *_t46;
__eax = _a4;
return _a4;
goto L85;
case 3:
*__edi = *__esi;
*((char*)(__edi + 1)) = *((intOrPtr*)(__esi + 1));
*((char*)(__edi + 2)) = *((intOrPtr*)(__esi + 2));
__eax = _a4;
return _a4;
goto L85;
}
}
}
}
}
} else {
_t167 = _t163 + _t125;
_t159 = _t154 + _t125;
__eflags = _t125 - 0x20;
if(__eflags < 0) {
L60:
__eflags = _t125 & 0xfffffffc;
while((_t125 & 0xfffffffc) != 0) {
_t159 = _t159 - 4;
_t167 = _t167 - 4;
*_t159 = *_t167;
_t125 = _t125 - 4;
__eflags = _t125 & 0xfffffffc;
}
__eflags = _t125;
if(_t125 != 0) {
do {
_t159 = _t159 - 1;
_t167 = _t167 - 1;
*_t159 = *_t167;
_t125 = _t125 - 1;
__eflags = _t125;
} while (_t125 != 0);
}
return _a4;
} else {
asm("bt dword [0x6ea93010], 0x1");
if(__eflags < 0) {
__eflags = _t159 & 0x0000000f;
if((_t159 & 0x0000000f) != 0) {
do {
_t125 = _t125 - 1;
_t167 = _t167 - 1;
_t159 = _t159 - 1;
*_t159 = *_t167;
__eflags = _t159 & 0x0000000f;
} while ((_t159 & 0x0000000f) != 0);
while(1) {
L56:
__eflags = _t125 - 0x80;
if(_t125 < 0x80) {
break;
}
_t167 = _t167 - 0x80;
_t159 = _t159 - 0x80;
asm("movdqu xmm0, [esi]");
asm("movdqu xmm1, [esi+0x10]");
asm("movdqu xmm2, [esi+0x20]");
asm("movdqu xmm3, [esi+0x30]");
asm("movdqu xmm4, [esi+0x40]");
asm("movdqu xmm5, [esi+0x50]");
asm("movdqu xmm6, [esi+0x60]");
asm("movdqu xmm7, [esi+0x70]");
asm("movdqu [edi], xmm0");
asm("movdqu [edi+0x10], xmm1");
asm("movdqu [edi+0x20], xmm2");
asm("movdqu [edi+0x30], xmm3");
asm("movdqu [edi+0x40], xmm4");
asm("movdqu [edi+0x50], xmm5");
asm("movdqu [edi+0x60], xmm6");
asm("movdqu [edi+0x70], xmm7");
_t125 = _t125 - 0x80;
__eflags = _t125 & 0xffffff80;
if((_t125 & 0xffffff80) != 0) {
continue;
}
break;
}
__eflags = _t125 - 0x20;
if(_t125 >= 0x20) {
do {
_t167 = _t167 - 0x20;
_t159 = _t159 - 0x20;
asm("movdqu xmm0, [esi]");
asm("movdqu xmm1, [esi+0x10]");
asm("movdqu [edi], xmm0");
asm("movdqu [edi+0x10], xmm1");
_t125 = _t125 - 0x20;
__eflags = _t125 & 0xffffffe0;
} while ((_t125 & 0xffffffe0) != 0);
}
goto L60;
}
goto L56;
} else {
__eflags = _t159 & 0x00000003;
if((_t159 & 0x00000003) != 0) {
_t153 = _t159 & 0x00000003;
_t125 = _t125 - _t153;
__eflags = _t125;
do {
*(_t159 - 1) = *((intOrPtr*)(_t167 - 1));
_t167 = _t167 - 1;
_t159 = _t159 - 1;
_t153 = _t153 - 1;
__eflags = _t153;
} while (_t153 != 0);
}
__eflags = _t125 - 0x20;
if(_t125 < 0x20) {
goto L60;
} else {
asm("std");
memcpy(_t159 - 4, _t167 - 4, _t125 >> 2 << 2);
asm("cld");
switch( *((intOrPtr*)((_t125 & 0x00000003) * 4 + &M6EA54C50))) {
case 0:
return _a4;
goto L85;
case 1:
*((char*)(__edi + 3)) = *((intOrPtr*)(__esi + 3));
__eax = _a4;
return _a4;
goto L85;
case 2:
_t67 = __esi + 3; // 0xbc45c7
*((char*)(__edi + 3)) = *_t67;
_t69 = __esi + 2; // 0xbc45c70c
*((char*)(__edi + 2)) = *_t69;
__eax = _a4;
return _a4;
goto L85;
case 3:
*((char*)(__edi + 3)) = *((intOrPtr*)(__esi + 3));
*((char*)(__edi + 2)) = *((intOrPtr*)(__esi + 2));
*((char*)(__edi + 1)) = *((intOrPtr*)(__esi + 1));
__eax = _a4;
return _a4;
goto L85;
}
}
}
}
}
L85:
}
0x6ea54942
0x6ea54946
0x6ea5494a
0x6ea54952
0x6ea54956
0x6ea54963
0x6ea54e3b
0x6ea54e3b
0x6ea54e3b
0x6ea54e3e
0x6ea54e40
0x6ea54e42
0x6ea54e42
0x6ea54e45
0x6ea54e49
0x6ea54e4b
0x6ea54e4e
0x6ea54e51
0x6ea54e51
0x6ea54e51
0x6ea54e58
0x6ea54e58
0x6ea54e5b
0x6ea54e5f
0x6ea54e61
0x6ea54e62
0x6ea54e63
0x6ea54e63
0x6ea54e63
0x6ea54e5b
0x00000000
0x6ea54969
0x6ea54969
0x6ea5496f
0x6ea54984
0x6ea5498c
0x6ea5499b
0x6ea549a0
0x6ea549b0
0x6ea549b0
0x6ea549b8
0x00000000
0x6ea549be
0x6ea549be
0x6ea549c4
0x00000000
0x6ea549ca
0x6ea549ca
0x6ea549d0
0x6ea549d6
0x6ea549da
0x6ea549dc
0x6ea549de
0x6ea549de
0x6ea549e1
0x6ea549e4
0x6ea549e6
0x6ea549e6
0x6ea549e9
0x6ea549ed
0x6ea549ef
0x6ea549f3
0x6ea549f3
0x6ea549f6
0x6ea549f9
0x6ea549fd
0x6ea549fd
0x6ea54a00
0x6ea54a06
0x6ea54a6d
0x6ea54a72
0x6ea54a78
0x6ea54a78
0x6ea54a7d
0x6ea54a80
0x6ea54a85
0x6ea54a8a
0x6ea54a8d
0x6ea54a90
0x6ea54a94
0x6ea54a9a
0x6ea54a9e
0x6ea54aa2
0x6ea54aa8
0x6ea54aad
0x6ea54ab1
0x6ea54ab7
0x6ea54abc
0x6ea54abc
0x6ea54ac1
0x6ea54a08
0x6ea54a08
0x6ea54a0c
0x6ea54ac6
0x6ea54acb
0x6ea54ad0
0x6ea54ad0
0x6ea54ad5
0x6ea54ad8
0x6ea54add
0x6ea54ae2
0x6ea54ae5
0x6ea54ae8
0x6ea54aec
0x6ea54af2
0x6ea54af6
0x6ea54afa
0x6ea54b00
0x6ea54b05
0x6ea54b09
0x6ea54b0f
0x6ea54b14
0x6ea54b14
0x6ea54b19
0x6ea54b1c
0x6ea54b1c
0x6ea54b1c
0x6ea54b1f
0x00000000
0x00000000
0x6ea54b21
0x6ea54b25
0x6ea54b28
0x6ea54b2b
0x6ea54b2f
0x6ea54b2f
0x6ea54b34
0x6ea54b38
0x6ea54b3a
0x6ea54b3c
0x6ea54b3c
0x6ea54b3f
0x6ea54b42
0x6ea54b44
0x6ea54b44
0x6ea54b47
0x6ea54b4b
0x6ea54b4d
0x6ea54b51
0x6ea54b54
0x6ea54b57
0x6ea54b5b
0x6ea54b5b
0x6ea54b65
0x6ea54b65
0x6ea54a12
0x6ea54a17
0x6ea54a1c
0x6ea54a1c
0x6ea54a21
0x6ea54a24
0x6ea54a29
0x6ea54a2e
0x6ea54a31
0x6ea54a34
0x6ea54a38
0x6ea54a3e
0x6ea54a42
0x6ea54a46
0x6ea54a4c
0x6ea54a51
0x6ea54a55
0x6ea54a5b
0x6ea54a60
0x6ea54a60
0x6ea54a65
0x6ea54a65
0x00000000
0x6ea54a06
0x6ea549d0
0x6ea549c4
0x00000000
0x6ea549a2
0x6ea549a2
0x6ea549aa
0x6ea54d92
0x6ea54d95
0x6ea54d97
0x6ea54e89
0x6ea54e8a
0x6ea54e8e
0x6ea54e8e
0x6ea54e91
0x6ea54e95
0x6ea54e97
0x6ea54e98
0x6ea54e99
0x6ea54e99
0x6ea54e99
0x6ea54e9c
0x6ea54e9c
0x6ea54e9f
0x6ea54ea3
0x6ea54ea5
0x6ea54ea8
0x6ea54eab
0x6ea54eab
0x6ea54eab
0x6ea54eae
0x6ea54eae
0x6ea54d9d
0x6ea54d9f
0x6ea54da2
0x6ea54da2
0x6ea54da5
0x6ea54db0
0x6ea54db4
0x6ea54db9
0x6ea54dbe
0x6ea54dc3
0x6ea54dc7
0x6ea54dcc
0x6ea54dd1
0x6ea54dd6
0x6ea54ddb
0x6ea54de0
0x6ea54de5
0x6ea54dea
0x6ea54def
0x6ea54df4
0x6ea54df9
0x6ea54dfe
0x6ea54e04
0x6ea54e0a
0x6ea54e0a
0x6ea54e0a
0x00000000
0x00000000
0x00000000
0x00000000
0x6ea549aa
0x6ea5498e
0x6ea5498e
0x6ea54996
0x6ea54996
0x6ea54971
0x6ea54971
0x6ea54979
0x6ea54e0d
0x6ea54e0d
0x6ea54e0f
0x6ea54e13
0x6ea54e16
0x6ea54e18
0x6ea54e20
0x6ea54e20
0x6ea54e24
0x6ea54e29
0x6ea54e2d
0x6ea54e32
0x6ea54e35
0x6ea54e38
0x6ea54e38
0x6ea54e38
0x6ea54e20
0x00000000
0x6ea54e18
0x6ea54e70
0x6ea54e76
0x6ea5497f
0x6ea54b67
0x6ea54b6d
0x6ea54b71
0x6ea54b73
0x6ea54b74
0x6ea54b77
0x6ea54b7a
0x6ea54b82
0x6ea54b82
0x6ea54b87
0x00000000
0x6ea54b8d
0x6ea54b90
0x6ea54b95
0x00000000
0x6ea54bba
0x00000000
0x00000000
0x6ea54bbe
0x6ea54bc0
0x6ea54bc6
0x00000000
0x00000000
0x6ea54bca
0x6ea54bcc
0x6ea54bcf
0x6ea54bd2
0x6ea54bd8
0x00000000
0x00000000
0x6ea54bde
0x6ea54be3
0x6ea54be9
0x6ea54bec
0x6ea54bf2
0x00000000
0x00000000
0x6ea54b95
0x6ea54b87
0x6ea54979
0x6ea5496f
0x6ea54bf4
0x6ea54bf4
0x6ea54bf7
0x6ea54bfa
0x6ea54bfd
0x6ea54d54
0x6ea54d54
0x6ea54d5a
0x6ea54d5c
0x6ea54d5f
0x6ea54d64
0x6ea54d66
0x6ea54d69
0x6ea54d69
0x6ea54d71
0x6ea54d73
0x6ea54d75
0x6ea54d75
0x6ea54d78
0x6ea54d7d
0x6ea54d7f
0x6ea54d7f
0x6ea54d7f
0x6ea54d75
0x6ea54d8a
0x6ea54c03
0x6ea54c03
0x6ea54c0b
0x6ea54ca5
0x6ea54cab
0x6ea54cad
0x6ea54cad
0x6ea54cae
0x6ea54caf
0x6ea54cb2
0x6ea54cb4
0x6ea54cb4
0x6ea54cbc
0x6ea54cbc
0x6ea54cbc
0x6ea54cc2
0x00000000
0x00000000
0x6ea54cc4
0x6ea54cca
0x6ea54cd0
0x6ea54cd4
0x6ea54cd9
0x6ea54cde
0x6ea54ce3
0x6ea54ce8
0x6ea54ced
0x6ea54cf2
0x6ea54cf7
0x6ea54cfb
0x6ea54d00
0x6ea54d05
0x6ea54d0a
0x6ea54d0f
0x6ea54d14
0x6ea54d19
0x6ea54d1e
0x6ea54d24
0x6ea54d2a
0x00000000
0x00000000
0x00000000
0x6ea54d2a
0x6ea54d2c
0x6ea54d2f
0x6ea54d31
0x6ea54d31
0x6ea54d34
0x6ea54d37
0x6ea54d3b
0x6ea54d40
0x6ea54d44
0x6ea54d49
0x6ea54d4c
0x6ea54d4c
0x6ea54d31
0x00000000
0x6ea54d2f
0x00000000
0x6ea54c11
0x6ea54c11
0x6ea54c17
0x6ea54c1b
0x6ea54c1e
0x6ea54c1e
0x6ea54c20
0x6ea54c23
0x6ea54c26
0x6ea54c27
0x6ea54c28
0x6ea54c28
0x6ea54c28
0x6ea54c20
0x6ea54c2d
0x6ea54c30
0x00000000
0x6ea54c36
0x6ea54c44
0x6ea54c45
0x6ea54c47
0x6ea54c48
0x00000000
0x6ea54c66
0x00000000
0x00000000
0x6ea54c6b
0x6ea54c6e
0x6ea54c74
0x00000000
0x00000000
0x6ea54c78
0x6ea54c7b
0x6ea54c7e
0x6ea54c81
0x6ea54c84
0x6ea54c8a
0x00000000
0x00000000
0x6ea54c8f
0x6ea54c95
0x6ea54c9b
0x6ea54c9e
0x6ea54ca4
0x00000000
0x00000000
0x6ea54c48
0x6ea54c30
0x6ea54c0b
0x6ea54bfd
0x00000000