Skip to content

Instantly share code, notes, and snippets.

@zihadmahiuddin
Created March 5, 2018 01:33
Show Gist options
  • Save zihadmahiuddin/71a4517fd11c5b186e2a3def4142a546 to your computer and use it in GitHub Desktop.
Save zihadmahiuddin/71a4517fd11c5b186e2a3def4142a546 to your computer and use it in GitHub Desktop.
int __fastcall sub_1AB46A(_DWORD *a1, unsigned int a2)
{
unsigned int v2; // r4
_DWORD *v3; // r5
int result; // r0
int v5; // r2
int v6; // r1
int v7; // r0
int v8; // r0
int v9; // r0
int v10; // r0
int v11; // r0
int v12; // r0
int v13; // r0
int v14; // r0
unsigned int v15; // r0
int v16; // r0
int v17; // r0
int v18; // r0
int v19; // r1
int v20; // r1
v2 = a2;
v3 = a1;
sub_1ABF14();
sub_1AA978((int)v3, 5);
v3[6] = 0;
if ( (signed int)v2 <= -1 )
{
if ( !(((signed int)(v2 + 63) < 0) ^ __OFADD__(v2, 63)) )
{
result = v3[4];
v3[4] = result + 1;
*(_BYTE *)(v3[7] + result) = v2 & 0x3F | 0x40;
return result;
}
if ( (signed int)v2 > -8192 )
{
v8 = v3[4];
v3[4] = v8 + 1;
*(_BYTE *)(v3[7] + v8) = v2 | 0xC0;
goto LABEL_10;
}
if ( (signed int)v2 > -1048576 )
{
v10 = v3[4];
v3[4] = v10 + 1;
*(_BYTE *)(v3[7] + v10) = v2 | 0xC0;
goto LABEL_15;
}
v16 = v3[4];
v3[4] = v16 + 1;
*(_BYTE *)(v3[7] + v16) = v2 | 0xC0;
v17 = v3[4];
v3[4] = v17 + 1;
*(_BYTE *)(v3[7] + v17) = (v2 >> 6) | 0x80;
v18 = v3[4];
v3[4] = v18 + 1;
*(_BYTE *)(v3[7] + v18) = (v2 >> 13) | 0x80;
v15 = v2 >> 20;
if ( (signed int)v2 <= -134217728 )
{
LABEL_20:
v20 = v3[4];
v3[4] = v20 + 1;
*(_BYTE *)(v3[7] + v20) = v15 | 0x80;
result = v3[4];
v3[4] = result + 1;
v6 = v3[7];
v5 = (v2 >> 27) & 0xF;
goto LABEL_21;
}
LABEL_19:
v19 = v3[4];
result = v15 & 0x7F;
v3[4] = v19 + 1;
*(_BYTE *)(v3[7] + v19) = result;
return result;
}
if ( (signed int)v2 > 63 )
{
if ( (signed int)v2 < 0x2000 )
{
v7 = v3[4];
v3[4] = v7 + 1;
*(_BYTE *)(v3[7] + v7) = v2 & 0x3F | 0x80;
LABEL_10:
result = v3[4];
v3[4] = result + 1;
v6 = v3[7];
v5 = (v2 >> 6) & 0x7F;
goto LABEL_21;
}
if ( (signed int)v2 < 0x100000 )
{
v9 = v3[4];
v3[4] = v9 + 1;
*(_BYTE *)(v3[7] + v9) = v2 & 0x3F | 0x80;
LABEL_15:
v11 = v3[4];
v3[4] = v11 + 1;
*(_BYTE *)(v3[7] + v11) = (v2 >> 6) | 0x80;
result = v3[4];
v3[4] = result + 1;
v6 = v3[7];
v5 = (v2 >> 13) & 0x7F;
goto LABEL_21;
}
v12 = v3[4];
v3[4] = v12 + 1;
*(_BYTE *)(v3[7] + v12) = v2 & 0x3F | 0x80;
v13 = v3[4];
v3[4] = v13 + 1;
*(_BYTE *)(v3[7] + v13) = (v2 >> 6) | 0x80;
v14 = v3[4];
v3[4] = v14 + 1;
*(_BYTE *)(v3[7] + v14) = (v2 >> 13) | 0x80;
v15 = v2 >> 20;
if ( (signed int)v2 >= 0x8000000 )
goto LABEL_20;
goto LABEL_19;
}
result = v3[4];
LOBYTE(v5) = v2 & 0x3F;
v3[4] = result + 1;
v6 = v3[7];
LABEL_21:
*(_BYTE *)(v6 + result) = v5;
return result;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment