我有一段这样的C程序,应该是C的,但我转换为C#时几乎每行都有错误,
大家帮帮手,看看如何转到C#,分不够的可以再加int __usercall sub_401334<eax>(int a1<ebx>)
{
  int result; // eax@2
  int v2; // ecx@3
  char v3; // al@4
  int v4; // eax@6
  int v5; // eax@7  if ( a1 )
  {
    v2 = a1;
    if ( !(a1 & 3) )
      goto LABEL_6;
    do
    {
      v3 = *(_BYTE *)v2++;
      if ( !v3 )
        return v2 - 1 - a1;
    }
    while ( v2 & 3 );
    while ( 1 )
    {
      do
      {
LABEL_6:
        v4 = (*(_DWORD *)v2 + 2130640639) ^ ~*(_DWORD *)v2;
        v2 += 4;
      }
      while ( !(v4 & 0x81010100) );
      v5 = *(_DWORD *)(v2 - 4);
      if ( !(_BYTE)v5 )
        break;
      if ( !BYTE1(v5) )
        return v2 - 3 - a1;
      if ( !(v5 & 0xFF0000) )
        return v2 - 2 - a1;
      if ( !(v5 & 0xFF000000) )
        return v2 - 1 - a1;
    }
    result = v2 - 4 - a1;
  }
  else
  {
    result = 0;
  }
  return result;
}