__int64 __fastcall memmove(__int64 a1, __int64 a2, unsigned __int64 a3)
{
unsigned __int64 v5; // x3
unsigned __int64 v6; // x5
unsigned __int64 v7; // x1
__int64 i; // x0
if ( a1 - a2 >= a3 )
return memcpy(a1, a2, a3);
v5 = a1 + a3;
v6 = a2 + a3;
v7 = a1 + ~(a1 + a3);
for ( i = 0i64; v7 != --i; *(_BYTE *)(v5 + i) = *(_BYTE *)(v6 + i) )
;
return a1;
}
ROM:000000008001A14C ; =============== S U B R O U T I N E =======================================
ROM:000000008001A14C
ROM:000000008001A14C
ROM:000000008001A14C memmove ; CODE XREF: sub_8001BD10+60↓p
ROM:000000008001A14C SUB X6, X0, X1
ROM:000000008001A150 MOV X4, X0
ROM:000000008001A154 CMP X6, X2
ROM:000000008001A158 B.CC loc_8001A160
ROM:000000008001A15C B memcpy
ROM:000000008001A160 ; ---------------------------------------------------------------------------
ROM:000000008001A160
ROM:000000008001A160 loc_8001A160 ; CODE XREF: memmove+C↑j
ROM:000000008001A160 ADD X3, X0, X2
ROM:000000008001A164 ADD X5, X1, X2
ROM:000000008001A168 MVN X1, X3
ROM:000000008001A16C ADD X1, X0, X1
ROM:000000008001A170 MOV X0, #0
ROM:000000008001A174
ROM:000000008001A174 loc_8001A174 ; CODE XREF: memmove+44↓j
ROM:000000008001A174 SUB X0, X0, #1
ROM:000000008001A178 CMP X1, X0
ROM:000000008001A17C B.NE loc_8001A188
ROM:000000008001A180 MOV X0, X4
ROM:000000008001A184 RET
ROM:000000008001A188 ; ---------------------------------------------------------------------------
ROM:000000008001A188
ROM:000000008001A188 loc_8001A188 ; CODE XREF: memmove+30↑j
ROM:000000008001A188 LDRB W2, [X5,X0]
ROM:000000008001A18C STRB W2, [X3,X0]
ROM:000000008001A190 B loc_8001A174
ROM:000000008001A190 ; End of function memmove
ROM:000000008001A190
ROM:000000008001A194
ROM:000000008001A12C ; =============== S U B R O U T I N E =======================================
ROM:000000008001A12C
ROM:000000008001A12C
ROM:000000008001A12C memcpy ; CODE XREF: read_otp_param+A0↑p
ROM:000000008001A12C ; read_otp_param+118↑p ...
ROM:000000008001A12C MOV X3, #0
ROM:000000008001A130
ROM:000000008001A130 loc_8001A130 ; CODE XREF: memcpy+1C↓j
ROM:000000008001A130 CMP X2, X3
ROM:000000008001A134 B.NE loc_8001A13C
ROM:000000008001A138 RET
ROM:000000008001A13C ; ---------------------------------------------------------------------------
ROM:000000008001A13C
ROM:000000008001A13C loc_8001A13C ; CODE XREF: memcpy+8↑j
ROM:000000008001A13C LDRB W4, [X1,X3]
ROM:000000008001A140 STRB W4, [X0,X3]
ROM:000000008001A144 ADD X3, X3, #1
ROM:000000008001A148 B loc_8001A130
ROM:000000008001A148 ; End of function memcpy
ROM:000000008001A148
__int64 __fastcall memcpy(__int64 result, __int64 a2, __int64 a3)
{
__int64 i; // x3
for ( i = 0i64; a3 != i; ++i )
*(_BYTE *)(result + i) = *(_BYTE *)(a2 + i);
return result;
}
ROM:000000008001A0F8 ; =============== S U B R O U T I N E =======================================
ROM:000000008001A0F8
ROM:000000008001A0F8
ROM:000000008001A0F8 mem_cmp ; CODE XREF: sub_80005584+98↑p
ROM:000000008001A0F8 ; sub_800056B4+88↑p ...
ROM:000000008001A0F8 MOV X4, #0
ROM:000000008001A0FC
ROM:000000008001A0FC loc_8001A0FC ; CODE XREF: mem_cmp+28↓j
ROM:000000008001A0FC CMP X2, X4
ROM:000000008001A100 B.NE loc_8001A10C
ROM:000000008001A104 MOV W0, #0
ROM:000000008001A108 RET
ROM:000000008001A10C ; ---------------------------------------------------------------------------
ROM:000000008001A10C
ROM:000000008001A10C loc_8001A10C ; CODE XREF: mem_cmp+8↑j
ROM:000000008001A10C LDRB W3, [X0,X4]
ROM:000000008001A110 ADD X4, X4, #1
ROM:000000008001A114 ADD X5, X1, X4
ROM:000000008001A118 LDURB W5, [X5,#-1]
ROM:000000008001A11C CMP W3, W5
ROM:000000008001A120 B.EQ loc_8001A0FC
ROM:000000008001A124 SUB W0, W3, W5
ROM:000000008001A128 RET
ROM:000000008001A128 ; End of function mem_cmp
ROM:000000008001A128
__int64 __fastcall mem_cmp(__int64 a1, __int64 a2, __int64 a3)
{
__int64 v3; // x4
int v5; // w3
int v6; // w5
v3 = 0i64;
do
{
if ( a3 == v3 )
return 0i64;
v5 = *(unsigned __int8 *)(a1 + v3++);
v6 = *(unsigned __int8 *)(a2 + v3 - 1);
}
while ( v5 == v6 );
return (unsigned int)(v5 - v6);
}
ROM:000000008001A0DC
ROM:000000008001A0DC ; =============== S U B R O U T I N E =======================================
ROM:000000008001A0DC
ROM:000000008001A0DC
ROM:000000008001A0DC mem_set ; CODE XREF: sub_800040BC+20↑p
ROM:000000008001A0DC ; read_otp_param+100↑p ...
ROM:000000008001A0DC MOV X3, #0
ROM:000000008001A0E0
ROM:000000008001A0E0 loc_8001A0E0 ; CODE XREF: mem_set+18↓j
ROM:000000008001A0E0 CMP X2, X3
ROM:000000008001A0E4 B.NE loc_8001A0EC
ROM:000000008001A0E8 RET
ROM:000000008001A0EC ; ---------------------------------------------------------------------------
ROM:000000008001A0EC
ROM:000000008001A0EC loc_8001A0EC ; CODE XREF: mem_set+8↑j
ROM:000000008001A0EC STRB W1, [X0,X3]
ROM:000000008001A0F0 ADD X3, X3, #1
ROM:000000008001A0F4 B loc_8001A0E0
ROM:000000008001A0F4 ; End of function mem_set
ROM:000000008001A0F4
ROM:000000008001A0F8
__int64 __fastcall mem_set(__int64 result, char a2, __int64 a3)
{
__int64 i; // x3
for ( i = 0i64; a3 != i; ++i )
*(_BYTE *)(result + i) = a2;
return result;
}