首页
社区
课程
招聘
未解决 [求助]一个算法 不确定他是做什么的 有没有大佬帮忙研究下
发表于: 2019-9-26 08:50 3459

未解决 [求助]一个算法 不确定他是做什么的 有没有大佬帮忙研究下

2019-9-26 08:50
3459
附上IDA中的代码   看起来像是除法之类的函数  但是不能确定  有没有大佬帮忙研究下
int __fastcall sub_2BC(unsigned int a1_16, unsigned int a2_n1, unsigned int a3_16, int a4_0)
{
  char v4; // cf@1
  unsigned __int8 v5; // cf@6
  unsigned __int8 v6; // cf@7
  unsigned __int8 v7; // cf@8
  unsigned __int8 v8; // cf@9
  unsigned __int8 v9; // cf@10
  unsigned __int8 v10; // cf@11
  char v11; // zf@11

  do
  {
    v4 = a3_16 >= a2_n1 >> 8;
    if ( a3_16 <= a2_n1 >> 8 )
      a3_16 <<= 8;
  }
  while ( !v4 );
  if ( a3_16 > a2_n1 >> 1 )
    goto LABEL_34;
  v5 = a3_16 >= a2_n1 >> 2;
  if ( a3_16 > a2_n1 >> 2 )
    goto LABEL_32;
  v6 = a3_16 >= a2_n1 >> 3;
  if ( a3_16 > a2_n1 >> 3 )
    goto LABEL_29;
  v7 = a3_16 >= a2_n1 >> 4;
  if ( a3_16 > a2_n1 >> 4 )
    goto LABEL_26;
  v8 = a3_16 >= a2_n1 >> 5;
  if ( a3_16 > a2_n1 >> 5 )
    goto LABEL_23;
  v9 = a3_16 >= a2_n1 >> 6;
  if ( a3_16 > a2_n1 >> 6 )
    goto LABEL_20;
  v10 = a3_16 >= a2_n1 >> 7;
  v11 = a3_16 == a2_n1 >> 7;
  if ( a3_16 > a2_n1 >> 7 )
    goto LABEL_17;
  do
  {
    if ( !v11 & v10 )
      a3_16 >>= 8;
    a4_0 += (a2_n1 >= a3_16 << 7) + a4_0;
    if ( a2_n1 >= a3_16 << 7 )
      a2_n1 -= a3_16 << 7;
    v10 = a2_n1 >= a3_16 << 6;
LABEL_17:
    a4_0 += v10 + a4_0;
    if ( v10 )
      a2_n1 -= a3_16 << 6;
    v9 = a2_n1 >= 32 * a3_16;
LABEL_20:
    a4_0 += v9 + a4_0;
    if ( v9 )
      a2_n1 -= 32 * a3_16;
    v8 = a2_n1 >= 16 * a3_16;
LABEL_23:
    a4_0 += v8 + a4_0;
    if ( v8 )
      a2_n1 -= 16 * a3_16;
    v7 = a2_n1 >= 8 * a3_16;
LABEL_26:
    a4_0 += v7 + a4_0;
    if ( v7 )
      a2_n1 -= 8 * a3_16;
    v6 = a2_n1 >= 4 * a3_16;
LABEL_29:
    a4_0 += v6 + a4_0;
    if ( v6 )
      a2_n1 -= 4 * a3_16;
    v5 = a2_n1 >= 2 * a3_16;
LABEL_32:
    a4_0 += v5 + a4_0;
    if ( v5 )
      a2_n1 -= 2 * a3_16;
LABEL_34:
    a4_0 += (a2_n1 >= a3_16) + a4_0;
    if ( a2_n1 >= a3_16 )
      a2_n1 -= a3_16;
    v10 = a3_16 >= a1_16;
    v11 = a3_16 == a1_16;
  }
  while ( a3_16 != a1_16 );
  return a4_0;
}

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 5855
活跃值: (438)
能力值: ( LV4,RANK:45 )
在线值:
发帖
回帖
粉丝
2
算术运算简化,可以参考这个文章:
https://bbs.pediy.com/thread-228688.htm
2019-9-26 17:26
0
雪    币: 79
活跃值: (2082)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
这个自己翻译应该不难的
2019-9-28 20:37
0
雪    币: 142
活跃值: (190)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
4
NightGuard 算术运算简化,可以参考这个文章: https://bbs.pediy.com/thread-228688.htm
我试试 我看了好一会没看懂  好像和除法相关
2019-10-9 18:42
0
雪    币: 142
活跃值: (190)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
5
NightGuard 算术运算简化,可以参考这个文章: https://bbs.pediy.com/thread-228688.htm
谢谢啦
2019-11-5 10:02
0
游客
登录 | 注册 方可回帖
返回