天天看点

小试牛刀之逆向CrackMe(一)一、CrackMe初步印象二、破解过程

一、CrackMe初步印象

     本次CrackMe仍来源于吾爱论坛,链接地址为https://download.csdn.net/download/weixin_39768541/10851566,该CM为上篇第8个,作者要求求解出密码,不能采用爆破的方式。效果如下:

小试牛刀之逆向CrackMe(一)一、CrackMe初步印象二、破解过程

    这个CrackMe的密码不是简单讲输入的字符串进行对比,而是对输入的字符串进行变化之后再进行对比判断,所以这次需逆向分析出变化算法,会稍微麻烦点。

二、破解过程

1、确定对比判断函数位置

    弹出的对话框是破解的切入点,首先进行字符串搜索,可以大致确定对比判断函数位置:

小试牛刀之逆向CrackMe(一)一、CrackMe初步印象二、破解过程

    定位函数:

小试牛刀之逆向CrackMe(一)一、CrackMe初步印象二、破解过程

    可以看出,标红位置的EAX寄存器即为判断结果,当EAX为1则表示破解成功,为0则表示破解失败。此处可以采用爆破方式。基于之前关于Windows消息机制的两篇文章,通过RUN跟踪的方式分析,不难找到判断位置:

小试牛刀之逆向CrackMe(一)一、CrackMe初步印象二、破解过程

    通过强行改变0X00401037和0X00401041位置的跳转符,不难发现该处对比了三次,且循环次数为EAX值,第一次和第三次EAX=8,第二次EAX=2。每次输入字符串对比时,EDI所指向地址的值均一致,据此可以判定该值即为目标值。下面三个图分别表示三次对比的目标值:

小试牛刀之逆向CrackMe(一)一、CrackMe初步印象二、破解过程
小试牛刀之逆向CrackMe(一)一、CrackMe初步印象二、破解过程
小试牛刀之逆向CrackMe(一)一、CrackMe初步印象二、破解过程

2、确定变换函数

    对话框中输入字符串"abcdefgh",首先得到最后变化结果,根据对比判断函数的位置,不难得出字符串"abcdefgh"的变化结果:

小试牛刀之逆向CrackMe(一)一、CrackMe初步印象二、破解过程
小试牛刀之逆向CrackMe(一)一、CrackMe初步印象二、破解过程
小试牛刀之逆向CrackMe(一)一、CrackMe初步印象二、破解过程

    得到最后变化结果后,从对比判断函数位置向上逐步分析,可以看出如下结果:

小试牛刀之逆向CrackMe(一)一、CrackMe初步印象二、破解过程

    函数sub_4015C1即读取文本框中输入的字符串,并存入EAX寄存器中。继续往下:

小试牛刀之逆向CrackMe(一)一、CrackMe初步印象二、破解过程

    函数sub_4015B5读取字符串前两位。注意输入参数。

小试牛刀之逆向CrackMe(一)一、CrackMe初步印象二、破解过程
小试牛刀之逆向CrackMe(一)一、CrackMe初步印象二、破解过程

    第一张图为函数sub_4015BB的参数,第二张图为该函数运行结果。可以看到函数sub_4015BB的第二个参数包含输入字符串的前两位(刚好为一个汉字字符长度),返回结果位于EAX寄存中,且EAX寄存器指向的地址包含字符串的运行结果。故此,可以大胆猜测该函数即为变换函数,且每两字节的字符变化为一个结果,共变化三次。通过IDA可以知道该函数共两个参数。

小试牛刀之逆向CrackMe(一)一、CrackMe初步印象二、破解过程

    逐步向函数内部分析,可以得到变化的核心函数:

小试牛刀之逆向CrackMe(一)一、CrackMe初步印象二、破解过程

    通过IDA分析:

void __cdecl sub_4489C0(int *a1, _DWORD *a2, signed int a3, int a4)
{
  const void *v4; // esi
  int v5; // ebp
  signed int v6; // ecx
  _DWORD *v7; // ebx
  int v8; // edi
  int v9; // edi
  int v10; // eax
  int v11; // eax
  int v12; // [esp+10h] [ebp-110h]
  _DWORD *v13; // [esp+14h] [ebp-10Ch]
  int v14; // [esp+18h] [ebp-108h]
  char v15; // [esp+1Ch] [ebp-104h]

  v4 = (const void *)(*a2 + 8);
  v14 = a2[3];
  v5 = *(_DWORD *)(*a2 + 4);
  v6 = 1;
  if ( a3 > 2 && a2[8] == -2147482879 && a2[6] == 2 )
    v6 = 2;
  v7 = 0;
  v13 = 0;
  v12 = 0;
  if ( v5 <= 0 )
    goto LABEL_21;
  if ( v6 != 1 )
  {
    sub_4487E0(a2[3], strlen((const char *)a2[3]), &v15);
    v7 = malloc(v5);
    v13 = v7;
    if ( v7 )
    {
      qmemcpy(v7, v4, v5);
      v12 = v5;
      sub_4488B0(v7, v5, &v15);
    }
    goto LABEL_21;
  }
  if ( !a4 )
  {
    if ( v5 % 8 )
      goto LABEL_21;
    v7 = malloc(v5);
    v13 = v7;
    if ( !v7 )
      goto LABEL_21;
    qmemcpy(v7, v4, v5);
    sub_448CF0((int)v7, v5, v14);
    v11 = *v7;
    if ( *v7 > 0 && v5 < v11 + 12 && v11 <= v5 - 4 )
    {
      v10 = sub_448790(v7 + 1, *v7);
      goto LABEL_22;
    }
LABEL_12:
    v10 = sub_448790(v13, 0);
    goto LABEL_22;
  }
  v8 = ((_BYTE)v5 - 4) & 7;
  if ( v8 > 0 )
    v8 = 8 - v8;
  v9 = v8 + v5 + 4;
  v12 = v9;
  v7 = malloc(v9);
  v13 = v7;
  if ( !v7 )
    goto LABEL_12;
  memset(v7, 0, v9);
  *v7 = v5;
  qmemcpy(v7 + 1, v4, v5);
  sub_448CD0((int)v7, v9, v14);
LABEL_21:
  v10 = sub_448790(v13, v12);
LABEL_22:
  *a1 = v10;
  if ( v7 )
    sub_44DD9E(v7);
}
           

    其中第1个、第2个参数均为地址指针,观察函数中如下语句:

小试牛刀之逆向CrackMe(一)一、CrackMe初步印象二、破解过程

    往上溯源,a2[6]即为0X40116C 处push值,第一次和第三次变化该值为1,第二次为2。

3、求解密码

    确定了变化函数以及变化结果,考虑到每次变化输入的字符串仅两字节,因此可以直接采用穷尽的方法。根据IDA静态分析出的代码,编写密码穷尽程序。

// 追码CM爆破.cpp: 定义控制台应用程序的入口点。
//

#include "stdafx.h"

unsigned int ss[128 * 16] = {
	0x00,0x04,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x04,0x04,0x01,0x01
	,0x04,0x00,0x01,0x01,0x04,0x04,0x01,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x01,0x00
	,0x00,0x04,0x00,0x00,0x00,0x04,0x01,0x01,0x04,0x04,0x01,0x01,0x00,0x04,0x00,0x00
	,0x04,0x04,0x00,0x01,0x04,0x00,0x01,0x01,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x00
	,0x04,0x04,0x00,0x00,0x00,0x04,0x00,0x01,0x00,0x04,0x00,0x01,0x00,0x04,0x01,0x00
	,0x00,0x04,0x01,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x04,0x04,0x00,0x01
	,0x04,0x00,0x01,0x00,0x04,0x00,0x00,0x01,0x04,0x00,0x00,0x01,0x04,0x00,0x01,0x00
	,0x00,0x00,0x00,0x00,0x04,0x04,0x00,0x00,0x04,0x04,0x01,0x00,0x00,0x00,0x00,0x01
	,0x00,0x00,0x01,0x00,0x04,0x04,0x01,0x01,0x04,0x00,0x00,0x00,0x00,0x00,0x01,0x01
	,0x00,0x04,0x01,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x04,0x00,0x00
	,0x04,0x00,0x01,0x01,0x00,0x00,0x01,0x00,0x00,0x04,0x01,0x00,0x04,0x00,0x00,0x01
	,0x00,0x04,0x00,0x00,0x04,0x00,0x00,0x00,0x04,0x04,0x00,0x01,0x04,0x04,0x01,0x00
	,0x04,0x04,0x01,0x01,0x04,0x00,0x01,0x00,0x00,0x00,0x01,0x01,0x04,0x04,0x00,0x01
	,0x04,0x00,0x00,0x01,0x04,0x04,0x00,0x00,0x04,0x04,0x01,0x00,0x00,0x04,0x01,0x01
	,0x04,0x04,0x00,0x00,0x00,0x04,0x00,0x01,0x00,0x04,0x00,0x01,0x00,0x00,0x00,0x00
	,0x04,0x00,0x01,0x00,0x00,0x04,0x01,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x01,0x01
	,0x20,0x80,0x10,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x00,0x20,0x80,0x10,0x00
	,0x00,0x00,0x10,0x00,0x20,0x00,0x00,0x00,0x20,0x00,0x10,0x80,0x20,0x80,0x00,0x80
	,0x20,0x00,0x00,0x80,0x20,0x80,0x10,0x80,0x00,0x80,0x10,0x80,0x00,0x00,0x00,0x80
	,0x00,0x80,0x00,0x80,0x00,0x00,0x10,0x00,0x20,0x00,0x00,0x00,0x20,0x00,0x10,0x80
	,0x00,0x80,0x10,0x00,0x20,0x00,0x10,0x00,0x20,0x80,0x00,0x80,0x00,0x00,0x00,0x00
	,0x00,0x00,0x00,0x80,0x00,0x80,0x00,0x00,0x20,0x80,0x10,0x00,0x00,0x00,0x10,0x80
	,0x20,0x00,0x10,0x00,0x20,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x80,0x10,0x00
	,0x20,0x80,0x00,0x00,0x00,0x80,0x10,0x80,0x00,0x00,0x10,0x80,0x20,0x80,0x00,0x00
	,0x00,0x00,0x00,0x00,0x20,0x80,0x10,0x00,0x20,0x00,0x10,0x80,0x00,0x00,0x10,0x00
	,0x20,0x80,0x00,0x80,0x00,0x00,0x10,0x80,0x00,0x80,0x10,0x80,0x00,0x80,0x00,0x00
	,0x00,0x00,0x10,0x80,0x00,0x80,0x00,0x80,0x20,0x00,0x00,0x00,0x20,0x80,0x10,0x80
	,0x20,0x80,0x10,0x00,0x20,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x80
	,0x20,0x80,0x00,0x00,0x00,0x80,0x10,0x80,0x00,0x00,0x10,0x00,0x20,0x00,0x00,0x80
	,0x20,0x00,0x10,0x00,0x20,0x80,0x00,0x80,0x20,0x00,0x00,0x80,0x20,0x00,0x10,0x00
	,0x00,0x80,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x80,0x20,0x80,0x00,0x00
	,0x00,0x00,0x00,0x80,0x20,0x00,0x10,0x80,0x20,0x80,0x10,0x80,0x00,0x80,0x10,0x00
	,0x08,0x02,0x00,0x00,0x00,0x02,0x02,0x08,0x00,0x00,0x00,0x00,0x08,0x00,0x02,0x08
	,0x00,0x02,0x00,0x08,0x00,0x00,0x00,0x00,0x08,0x02,0x02,0x00,0x00,0x02,0x00,0x08
	,0x08,0x00,0x02,0x00,0x08,0x00,0x00,0x08,0x08,0x00,0x00,0x08,0x00,0x00,0x02,0x00
	,0x08,0x02,0x02,0x08,0x08,0x00,0x02,0x00,0x00,0x00,0x02,0x08,0x08,0x02,0x00,0x00
	,0x00,0x00,0x00,0x08,0x08,0x00,0x00,0x00,0x00,0x02,0x02,0x08,0x00,0x02,0x00,0x00
	,0x00,0x02,0x02,0x00,0x00,0x00,0x02,0x08,0x08,0x00,0x02,0x08,0x08,0x02,0x02,0x00
	,0x08,0x02,0x00,0x08,0x00,0x02,0x02,0x00,0x00,0x00,0x02,0x00,0x08,0x02,0x00,0x08
	,0x08,0x00,0x00,0x00,0x08,0x02,0x02,0x08,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x08
	,0x00,0x02,0x02,0x08,0x00,0x00,0x00,0x08,0x08,0x00,0x02,0x00,0x08,0x02,0x00,0x00
	,0x00,0x00,0x02,0x00,0x00,0x02,0x02,0x08,0x00,0x02,0x00,0x08,0x00,0x00,0x00,0x00
	,0x00,0x02,0x00,0x00,0x08,0x00,0x02,0x00,0x08,0x02,0x02,0x08,0x00,0x02,0x00,0x08
	,0x08,0x00,0x00,0x08,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x02,0x08
	,0x08,0x02,0x00,0x08,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x08,0x08,0x02,0x02,0x08
	,0x08,0x00,0x00,0x00,0x08,0x02,0x02,0x00,0x00,0x02,0x02,0x00,0x08,0x00,0x00,0x08
	,0x00,0x00,0x02,0x08,0x08,0x02,0x00,0x08,0x08,0x02,0x00,0x00,0x00,0x00,0x02,0x08
	,0x08,0x02,0x02,0x00,0x08,0x00,0x00,0x00,0x08,0x00,0x02,0x08,0x00,0x02,0x02,0x00
	,0x01,0x20,0x80,0x00,0x81,0x20,0x00,0x00,0x81,0x20,0x00,0x00,0x80,0x00,0x00,0x00
	,0x80,0x20,0x80,0x00,0x81,0x00,0x80,0x00,0x01,0x00,0x80,0x00,0x01,0x20,0x00,0x00
	,0x00,0x00,0x00,0x00,0x00,0x20,0x80,0x00,0x00,0x20,0x80,0x00,0x81,0x20,0x80,0x00
	,0x81,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x80,0x00,0x01,0x00,0x80,0x00
	,0x01,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x80,0x00,0x01,0x20,0x80,0x00
	,0x80,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x01,0x20,0x00,0x00,0x80,0x20,0x00,0x00
	,0x81,0x00,0x80,0x00,0x01,0x00,0x00,0x00,0x80,0x20,0x00,0x00,0x80,0x00,0x80,0x00
	,0x00,0x20,0x00,0x00,0x80,0x20,0x80,0x00,0x81,0x20,0x80,0x00,0x81,0x00,0x00,0x00
	,0x80,0x00,0x80,0x00,0x01,0x00,0x80,0x00,0x00,0x20,0x80,0x00,0x81,0x20,0x80,0x00
	,0x81,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x80,0x00
	,0x80,0x20,0x00,0x00,0x80,0x00,0x80,0x00,0x81,0x00,0x80,0x00,0x01,0x00,0x00,0x00
	,0x01,0x20,0x80,0x00,0x81,0x20,0x00,0x00,0x81,0x20,0x00,0x00,0x80,0x00,0x00,0x00
	,0x81,0x20,0x80,0x00,0x81,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x20,0x00,0x00
	,0x01,0x00,0x80,0x00,0x01,0x20,0x00,0x00,0x80,0x20,0x80,0x00,0x81,0x00,0x80,0x00
	,0x01,0x20,0x00,0x00,0x80,0x20,0x00,0x00,0x00,0x00,0x80,0x00,0x01,0x20,0x80,0x00
	,0x80,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x20,0x00,0x00,0x80,0x20,0x80,0x00
	,0x00,0x01,0x00,0x00,0x00,0x01,0x08,0x02,0x00,0x00,0x08,0x02,0x00,0x01,0x00,0x42
	,0x00,0x00,0x08,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x08,0x02
	,0x00,0x01,0x08,0x40,0x00,0x00,0x08,0x00,0x00,0x01,0x00,0x02,0x00,0x01,0x08,0x40
	,0x00,0x01,0x00,0x42,0x00,0x00,0x08,0x42,0x00,0x01,0x08,0x00,0x00,0x00,0x00,0x40
	,0x00,0x00,0x00,0x02,0x00,0x00,0x08,0x40,0x00,0x00,0x08,0x40,0x00,0x00,0x00,0x00
	,0x00,0x01,0x00,0x40,0x00,0x01,0x08,0x42,0x00,0x01,0x08,0x42,0x00,0x01,0x00,0x02
	,0x00,0x00,0x08,0x42,0x00,0x01,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x42
	,0x00,0x01,0x08,0x02,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x42,0x00,0x01,0x08,0x00
	,0x00,0x00,0x08,0x00,0x00,0x01,0x00,0x42,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x02
	,0x00,0x00,0x00,0x40,0x00,0x00,0x08,0x02,0x00,0x01,0x00,0x42,0x00,0x01,0x08,0x40
	,0x00,0x01,0x00,0x02,0x00,0x00,0x00,0x40,0x00,0x00,0x08,0x42,0x00,0x01,0x08,0x02
	,0x00,0x01,0x08,0x40,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x08,0x42
	,0x00,0x01,0x08,0x42,0x00,0x01,0x08,0x00,0x00,0x00,0x00,0x42,0x00,0x01,0x08,0x42
	,0x00,0x00,0x08,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x40,0x00,0x00,0x00,0x42
	,0x00,0x01,0x08,0x00,0x00,0x01,0x00,0x02,0x00,0x01,0x00,0x40,0x00,0x00,0x08,0x00
	,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x40,0x00,0x01,0x08,0x02,0x00,0x01,0x00,0x40
	,0x10,0x00,0x00,0x20,0x00,0x00,0x40,0x20,0x00,0x40,0x00,0x00,0x10,0x40,0x40,0x20
	,0x00,0x00,0x40,0x20,0x10,0x00,0x00,0x00,0x10,0x40,0x40,0x20,0x00,0x00,0x40,0x00
	,0x00,0x40,0x00,0x20,0x10,0x40,0x40,0x00,0x00,0x00,0x40,0x00,0x10,0x00,0x00,0x20
	,0x10,0x00,0x40,0x00,0x00,0x40,0x00,0x20,0x00,0x00,0x00,0x20,0x10,0x40,0x00,0x00
	,0x00,0x00,0x00,0x00,0x10,0x00,0x40,0x00,0x10,0x40,0x00,0x20,0x00,0x40,0x00,0x00
	,0x00,0x40,0x40,0x00,0x10,0x40,0x00,0x20,0x10,0x00,0x00,0x00,0x10,0x00,0x40,0x20
	,0x10,0x00,0x40,0x20,0x00,0x00,0x00,0x00,0x10,0x40,0x40,0x00,0x00,0x40,0x40,0x20
	,0x10,0x40,0x00,0x00,0x00,0x40,0x40,0x00,0x00,0x40,0x40,0x20,0x00,0x00,0x00,0x20
	,0x00,0x40,0x00,0x20,0x10,0x00,0x00,0x00,0x10,0x00,0x40,0x20,0x00,0x40,0x40,0x00
	,0x10,0x40,0x40,0x20,0x00,0x00,0x40,0x00,0x10,0x40,0x00,0x00,0x10,0x00,0x00,0x20
	,0x00,0x00,0x40,0x00,0x00,0x40,0x00,0x20,0x00,0x00,0x00,0x20,0x10,0x40,0x00,0x00
	,0x10,0x00,0x00,0x20,0x10,0x40,0x40,0x20,0x00,0x40,0x40,0x00,0x00,0x00,0x40,0x20
	,0x10,0x40,0x40,0x00,0x00,0x40,0x40,0x20,0x00,0x00,0x00,0x00,0x10,0x00,0x40,0x20
	,0x10,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x40,0x20,0x10,0x40,0x40,0x00
	,0x00,0x40,0x00,0x00,0x10,0x00,0x40,0x00,0x10,0x40,0x00,0x20,0x00,0x00,0x00,0x00
	,0x00,0x40,0x40,0x20,0x00,0x00,0x00,0x20,0x10,0x00,0x40,0x00,0x10,0x40,0x00,0x20
	,0x00,0x00,0x20,0x00,0x02,0x00,0x20,0x04,0x02,0x08,0x00,0x04,0x00,0x00,0x00,0x00
	,0x00,0x08,0x00,0x00,0x02,0x08,0x00,0x04,0x02,0x08,0x20,0x00,0x00,0x08,0x20,0x04
	,0x02,0x08,0x20,0x04,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x04
	,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x02,0x00,0x20,0x04,0x02,0x08,0x00,0x00
	,0x00,0x08,0x00,0x04,0x02,0x08,0x20,0x00,0x02,0x00,0x20,0x00,0x00,0x08,0x00,0x04
	,0x02,0x00,0x00,0x04,0x00,0x00,0x20,0x04,0x00,0x08,0x20,0x04,0x02,0x00,0x20,0x00
	,0x00,0x00,0x20,0x04,0x00,0x08,0x00,0x00,0x02,0x08,0x00,0x00,0x02,0x08,0x20,0x04
	,0x00,0x08,0x20,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x08,0x20,0x00
	,0x00,0x00,0x00,0x04,0x00,0x08,0x20,0x00,0x00,0x00,0x20,0x00,0x02,0x08,0x00,0x04
	,0x02,0x08,0x00,0x04,0x02,0x00,0x20,0x04,0x02,0x00,0x20,0x04,0x02,0x00,0x00,0x00
	,0x02,0x00,0x20,0x00,0x00,0x00,0x00,0x04,0x00,0x08,0x00,0x04,0x00,0x00,0x20,0x00
	,0x00,0x08,0x20,0x04,0x02,0x08,0x00,0x00,0x02,0x08,0x20,0x00,0x00,0x08,0x20,0x04
	,0x02,0x08,0x00,0x00,0x02,0x00,0x00,0x04,0x02,0x08,0x20,0x04,0x00,0x00,0x20,0x04
	,0x00,0x08,0x20,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x02,0x08,0x20,0x04
	,0x00,0x00,0x00,0x00,0x02,0x08,0x20,0x00,0x00,0x00,0x20,0x04,0x00,0x08,0x00,0x00
	,0x02,0x00,0x00,0x04,0x00,0x08,0x00,0x04,0x00,0x08,0x00,0x00,0x02,0x00,0x20,0x00
	,0x40,0x10,0x00,0x10,0x00,0x10,0x00,0x00,0x00,0x00,0x04,0x00,0x40,0x10,0x04,0x10
	,0x00,0x00,0x00,0x10,0x40,0x10,0x00,0x10,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x10
	,0x40,0x00,0x04,0x00,0x00,0x00,0x04,0x10,0x40,0x10,0x04,0x10,0x00,0x10,0x04,0x00
	,0x00,0x10,0x04,0x10,0x40,0x10,0x04,0x00,0x00,0x10,0x00,0x00,0x40,0x00,0x00,0x00
	,0x00,0x00,0x04,0x10,0x40,0x00,0x00,0x10,0x00,0x10,0x00,0x10,0x40,0x10,0x00,0x00
	,0x00,0x10,0x04,0x00,0x40,0x00,0x04,0x00,0x40,0x00,0x04,0x10,0x00,0x10,0x04,0x10
	,0x40,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x04,0x10
	,0x40,0x00,0x00,0x10,0x00,0x10,0x00,0x10,0x40,0x10,0x04,0x00,0x00,0x00,0x04,0x00
	,0x40,0x10,0x04,0x00,0x00,0x00,0x04,0x00,0x00,0x10,0x04,0x10,0x00,0x10,0x00,0x00
	,0x40,0x00,0x00,0x00,0x40,0x00,0x04,0x10,0x00,0x10,0x00,0x00,0x40,0x10,0x04,0x00
	,0x00,0x10,0x00,0x10,0x40,0x00,0x00,0x00,0x40,0x00,0x00,0x10,0x00,0x00,0x04,0x10
	,0x40,0x00,0x04,0x10,0x00,0x00,0x00,0x10,0x00,0x00,0x04,0x00,0x40,0x10,0x00,0x10
	,0x00,0x00,0x00,0x00,0x40,0x10,0x04,0x10,0x40,0x00,0x04,0x00,0x40,0x00,0x00,0x10
	,0x00,0x00,0x04,0x10,0x00,0x10,0x00,0x10,0x40,0x10,0x00,0x10,0x00,0x00,0x00,0x00
	,0x40,0x10,0x04,0x10,0x00,0x10,0x04,0x00,0x00,0x10,0x04,0x00,0x40,0x10,0x00,0x00
	,0x40,0x10,0x00,0x00,0x40,0x00,0x04,0x00,0x00,0x00,0x00,0x10,0x00,0x10,0x04,0x10
};

unsigned int s2[] = {
	0x12,0x0C,0x2E,0x39,0x12,0x37,0x17,0x0F,0x2F,0x26,0x1D,0x2F,0x07,0x23,0x26,0x25
	,0x0E,0x0D,0x2D,0x3A,0x31,0x2C,0x1D,0x25,0x35,0x14,0x0D,0x03,0x03,0x32,0x3D,0x1F
	,0x04,0x3B,0x37,0x21,0x18,0x2A,0x3B,0x35,0x1D,0x18,0x2F,0x3F,0x0E,0x17,0x21,0x36
	,0x02,0x1F,0x3E,0x26,0x2A,0x09,0x09,0x3F,0x31,0x31,0x1F,0x16,0x2F,0x05,0x1F,0x13
	,0x36,0x1A,0x3A,0x0E,0x00,0x1D,0x3C,0x36,0x10,0x32,0x36,0x37,0x3B,0x06,0x38,0x03
	,0x28,0x3B,0x39,0x35,0x0C,0x35,0x3D,0x2A,0x0F,0x24,0x38,0x33,0x3A,0x05,0x06,0x3F
	,0x28,0x25,0x3F,0x1A,0x25,0x19,0x2E,0x2B,0x3B,0x34,0x11,0x3E,0x30,0x22,0x2B,0x0F
	,0x2C,0x0E,0x3D,0x38,0x1D,0x1A,0x3A,0x1C,0x1A,0x29,0x0B,0x2D,0x2D,0x20,0x3A,0x2F
};

unsigned int getds2(int n)
{

	unsigned int v1, v2, v3, v4;
	v1 = s2[n];
	v2 = s2[n + 1];
	v3 = s2[n + 2];
	v4 = s2[n + 3];

	unsigned int result = (v4 << 24) | (v3 << 16) | (v2 << 8) | v1;
	return result;

}

unsigned int getdword(int start)
{
	if (start < 0x487394 || start >= 0x487394 + 128 * 16 - 4)
	{
		printf("getword error");
		return 0xffffffff;
	}
	else
	{
		unsigned int v1, v2, v3, v4;
		int n = start - 0x487394;
		v1 = ss[n];
		v2 = ss[n+1];
		v3 = ss[n+2];
		v4 = ss[n+3];

		unsigned int result = (v4 << 24) | (v3 << 16) | (v2 << 8) | v1;
		return result;
	}
}

bool sub_449C70(int a1[2])
{
	int v2; // ecx
	int v3; // edx
	unsigned int v4; // eax
	int v5; // ecx
	unsigned int v6; // edx
	int v7; // eax
	int v8; // ecx
	int v9; // eax
	unsigned int v10; // edx
	int v11; // ecx
	int v12; // esi
	int v13; // eax
	unsigned int v14; // ecx
	unsigned int v15; // edx
	unsigned int v16; // ecx
	unsigned int v17; // edx
	unsigned int v18; // ebx
	unsigned int v19; // eax
	unsigned int v20; // eax
	int v21; // eax
	unsigned int v22; // ecx
	int v23; // eax
	unsigned int v24; // ecx
	int v25; // edx
	int v26; // eax
	unsigned int v27; // ecx
	int v28; // edx
	unsigned int v29; // eax
	int v30; // ecx
	int v31; // edx
	int v32; // ecx
	unsigned int v33; // eax
	int v34; // edx
	int v35; // esi
	int *result; // eax
	signed int v37; // [esp+10h] [ebp-4h]

	v2 = a1[1] & 0xF0F0F0F ^ ((unsigned int)*a1 >> 4) & 0xF0F0F0F;
	v3 = v2 ^ a1[1];
	v37 = 8;
	v4 = 16 * v2 ^ *a1;
	v5 = (unsigned __int16)v3 ^ (v4 >> 16);
	v6 = v5 ^ v3;
	v7 = (v5 << 16) ^ v4;
	v8 = v7 & 0x33333333 ^ (v6 >> 2) & 0x33333333;
	v9 = v8 ^ v7;
	v10 = 4 * v8 ^ v6;
	v11 = v9 & 0xFF00FF ^ (v10 >> 8) & 0xFF00FF;
	v12 = 0;
	v13 = v11 ^ v9;
	v14 = 2 * ((v11 << 8) ^ v10) | (((v11 << 8) ^ v10) >> 31);
	v15 = (v13 ^ v14) & 0xAAAAAAAA;
	v16 = v15 ^ v14;
	v17 = 2 * (v15 ^ v13) | ((v15 ^ v13) >> 31);
	do
	{
		
		v18 = getds2(v12*4);
		v19 = getds2(v12*4) ^ ((v16 >> 4) | (v16 << 28));
		v12 += 4;
		int med = v18 ^ ((v16 >> 4) | (v16 << 28));
		v17 ^= getdword(0x487994 + (v19 & 0x3F) * 4 ) | getdword(0x487794 + 4 * (((med) >> 8) & 0x3F) ) | getdword(0x487594 + 4 * ( (v19 >> 16) & 0x3F) ) | getdword( 0x487394 + 4 * ( (v19 >> 24) & 0x3F) )| getdword( 0x487A94 + 4 * ( (v16 ^ getds2(4*(v12 - 3))) & 0x3F) )| getdword( 0x487894 + 4 * ( ((v16 ^ getds2(4*(v12 - 3))) >> 8) & 0x3F) ) | getdword( 0x487694 + 4 * ( ((v16 ^ getds2(4*(v12 - 3))) >> 16) & 0x3F) )| getdword( 0x487494 + 4 * ( ((v16 ^ getds2((v12 - 3)*4)) >> 24) & 0x3F) );
		v20 = getds2(4*(v12 - 2)) ^ ((v17 >> 4) | (v17 << 28));
		v16 ^= getdword( 0x487994 + 4 * (v20 & 0x3F) ) | getdword(0x487794 + 4 * ( (v20 >> 8) & 0x3F) )| getdword( 0x487594 + 4 * ((v20 >> 16) & 0x3F)) | getdword( 0x487394 + 4 * ( (v20 >> 24) & 0x3F) )| getdword(0x487A94 + 4 * ( (v17 ^ getds2(4*(v12 - 1))) & 0x3F)) | getdword( (0x487894 + 4 * ( ((v17 ^ getds2(4*(v12 - 1))) >> 8) & 0x3F))) | getdword(0x487694 + 4 * ( ((v17 ^ getds2(4*(v12 - 1))) >> 16) & 0x3F) ) | getdword(0x487494 + 4 * ( ((v17 ^ getds2(4*(v12 - 1))) >> 24) & 0x3F) );
		--v37;
	} while (v37);
	v21 = (v16 >> 1) | (v16 << 31);
	v22 = (v17 ^ v21) & 0xAAAAAAAA;
	v23 = v22 ^ v21;
	v24 = ((v22 ^ v17) >> 1) | ((v22 ^ v17) << 31);
	v25 = v23 & 0xFF00FF ^ (v24 >> 8) & 0xFF00FF;
	v26 = v25 ^ v23;
	v27 = (v25 << 8) ^ v24;
	v28 = v26 & 0x33333333 ^ (v27 >> 2) & 0x33333333;
	v29 = v28 ^ v26;
	v30 = 4 * v28 ^ v27;
	v31 = (unsigned __int16)v30 ^ (v29 >> 16);
	v32 = v31 ^ v30;
	v33 = (v31 << 16) ^ v29;
	v34 = v32 & 0xF0F0F0F ^ (v33 >> 4) & 0xF0F0F0F;
	v35 = v33 ^ 16 * v34;
	//result = a1;
	*a1 = v35;
	a1[1] = v32 ^ v34;

	if (a1[0] == 0x4b36c9f0 && a1[1] == 0x29611317)
		return true;
	else
		return false;
	
}

unsigned __int8 v[128*16] = {
	0xD7,0x01,0x53,0xB0,0x16,0xB3,0xA0,0x5E,0x83,0x1C,0xD6,0x71,0x1A,0xEF,0x43,0x8B
	,0xDB,0x9C,0x97,0x0D,0xE2,0xCF,0xF5,0x47,0x1D,0xA3,0x7F,0x13,0xDF,0x5D,0x51,0xE3
	,0xC5,0xBE,0x90,0xEA,0x77,0x02,0x3B,0x07,0xC3,0x4C,0xF8,0x25,0x6C,0xF3,0xBB,0x15
	,0xBD,0x00,0x85,0x26,0x72,0x09,0x7D,0x33,0xC0,0x88,0x9A,0x36,0xAB,0xB8,0x40,0x6A
	,0xB6,0xD2,0x3E,0x38,0xA6,0xCE,0xC7,0x4A,0x3D,0x48,0x3C,0x29,0xA4,0x10,0xB9,0xF2
	,0x6D,0xC9,0xAD,0x4E,0x54,0x5A,0x28,0x34,0xCB,0x87,0x31,0xFE,0xD5,0x8C,0x66,0xFC
	,0x8E,0xA8,0x37,0x84,0x78,0x9D,0x18,0xF1,0x4B,0xFA,0xE9,0xF6,0x98,0x5B,0x80,0x2B
	,0x76,0xF9,0x0F,0xEC,0x7C,0x57,0x4F,0xD3,0xAC,0xE4,0xAE,0x44,0xE7,0x99,0x62,0xDD
	,0x75,0x8A,0xE1,0xA7,0x81,0x9F,0x30,0x74,0x27,0xB2,0xCD,0x1B,0x24,0xCA,0x6B,0x2F
	,0x49,0xAF,0x17,0xB1,0x91,0x11,0xC4,0x9E,0x50,0x55,0x46,0x05,0xB5,0x96,0x04,0x70
	,0xE8,0x35,0x52,0x2E,0xA9,0xEE,0x0B,0xB4,0x0A,0x03,0xBA,0x6E,0x86,0x6F,0xDA,0xA2
	,0xC1,0x4D,0x93,0x08,0x3A,0x63,0xD8,0x5C,0x69,0x7A,0x82,0x0E,0x45,0x20,0x12,0x58
	,0x65,0x41,0x1E,0xFD,0xE5,0xEB,0x2C,0x73,0x79,0x68,0x92,0x2A,0x19,0xC2,0x42,0xFF
	,0x8D,0xF4,0xFB,0xD4,0x39,0xD1,0xC6,0xA5,0x2D,0xDC,0xA1,0x94,0x1F,0x22,0x23,0x5F
	,0x8F,0xBC,0x7B,0xF7,0x0C,0x21,0x7E,0x95,0x60,0x06,0x59,0xDE,0x56,0x61,0xF0,0x9B
	,0xE6,0xCC,0xBF,0xE0,0xC8,0x64,0x3F,0xED,0x89,0xAA,0xD0,0xD9,0x32,0x67,0xB7,0x14
	,0x00,0x00,0x40,0x00,0xA6,0x8B,0x44,0x00,0x70,0xF6,0x18,0x00,0x84,0xF6,0x18,0x00
	,0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x6B,0xA2,0x41,0x00,0x70,0xF6,0x18,0x00
	,0x03,0x00,0x00,0x00,0x84,0xF6,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
	,0x00,0x00,0x00,0x00,0xB6,0x12,0x40,0x00,0x03,0x00,0x00,0x00,0x10,0x30,0x0E,0x02
	,0x00,0x00,0x00,0x00,0x05,0x00,0x00,0x80,0x35,0xCC,0x46,0x00,0x00,0x00,0x00,0x00
	,0x04,0x00,0x00,0x80,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x03,0x00,0x80
	,0xF8,0x2F,0x0E,0x02,0x10,0x30,0x0E,0x02,0xC0,0x99,0x0F,0x02,0x10,0x30,0x0E,0x02
	,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x2F,0x0E,0x02,0xF8,0xF6,0x18,0x00
	,0x30,0xA3,0x41,0x00,0xA8,0xF0,0x2A,0x00,0x70,0x8E,0x49,0x00,0xA8,0xF0,0x2A,0x00
	,0x70,0x8E,0x49,0x00,0x01,0x00,0x00,0x00,0x70,0x8E,0x49,0x00,0xFF,0xFF,0xFF,0xFF
	,0xFC,0xA8,0x46,0x00,0xFF,0xFF,0xFF,0xFF,0x10,0xF7,0x18,0x00,0xB0,0x10,0x40,0x00
	,0xD8,0x07,0x00,0x00,0x89,0xFD,0x40,0x00,0x60,0xF7,0x18,0x00,0xA8,0xF0,0x2A,0x00
	,0xA0,0xD6,0x46,0x00,0x98,0xF7,0x18,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00
	,0x08,0x08,0x1F,0x02,0x7A,0x71,0x63,0x77,0x78,0x10,0x52,0xCE,0x44,0xF9,0x18,0x00
	,0xB2,0x82,0x46,0x00,0xFF,0xFF,0xFF,0xFF,0xC9,0x30,0x41,0x00,0xD8,0x07,0x00,0x00
	,0x60,0xF7,0x18,0x00,0x00,0x00,0x00,0x00,0x9A,0x30,0x41,0x00,0xD8,0x07,0x00,0x00
	,0x60,0xF7,0x18,0x00,0x00,0x00,0x00,0x00,0x03,0x8E,0x40,0x00,0xD8,0x07,0x00,0x00
	,0x60,0xF7,0x18,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x01,0x52,0x03,0x00,0x01,0x16
	,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x95,0xB4,0x62,0x71,0x00,0x00,0x00,0x00
	,0x68,0xF7,0x18,0x00,0x01,0x00,0x00,0x00,0x84,0xF8,0x18,0x00,0x00,0x00,0x00,0x00
	,0x00,0x00,0x00,0x00,0xAE,0x11,0x46,0x00,0xA0,0xD6,0x46,0x00,0x11,0xBD,0x00,0x00
	,0xC8,0xF7,0x18,0x00,0x3B,0x13,0x46,0x00,0xA8,0xF0,0x2A,0x00,0x00,0x00,0x00,0x00
	,0x00,0x00,0x00,0x00,0xD0,0x8D,0x40,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x00,0x00
	,0x00,0x00,0x00,0x00,0x04,0x03,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
	,0xF0,0xF7,0x18,0x00,0x58,0xFC,0x45,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
	,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xA8,0xF0,0x2A,0x00,0x00,0x00,0x00,0x00
	,0x00,0x00,0x00,0x00,0x5A,0x1D,0x52,0xCE,0x0C,0xF8,0x18,0x00,0xE6,0xFB,0x45,0x00
	,0x11,0x01,0x00,0x00,0x6E,0x00,0x00,0x00,0x04,0x03,0x02,0x00,0x00,0x00,0x00,0x00
	,0xA8,0xF0,0x2A,0x00,0x24,0xF8,0x18,0x00,0xC9,0x48,0x46,0x00,0x11,0x01,0x00,0x00
	,0x6E,0x00,0x00,0x00,0x04,0x03,0x02,0x00,0x00,0x00,0x00,0x00,0x98,0x0F,0x2A,0x00
	,0xE8,0xFA,0x45,0x00,0x11,0x01,0x00,0x00,0x6E,0x00,0x00,0x00,0x04,0x03,0x02,0x00
	,0x00,0x00,0x00,0x00,0x04,0x03,0x02,0x00,0x2F,0x34,0x43,0x00,0x00,0x00,0x00,0x00
	,0x6E,0x00,0x00,0x00,0x7B,0x35,0x43,0x00,0x04,0x03,0x02,0x00,0x00,0x00,0x00,0x00
	,0x98,0x0F,0x2A,0x00,0x6E,0x00,0x00,0x00,0x50,0xF9,0x18,0x00,0x11,0x01,0x00,0x00
	,0x91,0x6D,0x63,0x77,0xA4,0xBA,0x49,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00
	,0x00,0x00,0x00,0x00,0x38,0xF8,0x18,0x00,0x00,0x00,0x00,0x00,0x7C,0xF9,0x18,0x00
	,0x1E,0xA6,0x69,0x77,0x70,0x8A,0x29,0xB9,0xFE,0xFF,0xFF,0xFF,0x7E,0x7B,0x41,0x00
	,0xB0,0x02,0x19,0x00,0x6E,0x00,0x00,0x00,0x04,0x03,0x02,0x00,0x98,0x0F,0x2A,0x00
	,0x98,0x0F,0x2A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
	,0x00,0x00,0x00,0x00,0xA8,0xF0,0x2A,0x00,0xA8,0xF0,0x2A,0x00,0xA8,0xF0,0x2A,0x00
	,0x00,0x00,0x00,0x00,0xEC,0xF8,0x18,0x00,0x4A,0x79,0x64,0x77,0x6D,0x01,0xFF,0xFF
	,0x0D,0xF1,0x45,0x00,0x6E,0x00,0x00,0x00,0x04,0x03,0x02,0x00,0x98,0x0F,0x2A,0x00
	,0x98,0x0F,0x2A,0x00,0x30,0xA2,0x64,0x00,0x15,0xEB,0x45,0x00,0x6D,0x01,0xFF,0xFF
	,0x04,0x03,0x02,0x00,0x15,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
	,0xA8,0xF0,0x2A,0x00,0x28,0xF9,0x18,0x00,0xD6,0xF0,0x45,0x00,0x15,0x02,0x00,0x00
	,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x15,0x02,0x00,0x00,0x00,0x00,0x00,0x00
	,0x88,0xF9,0x18,0x00,0x00,0xE1,0x45,0x00,0x15,0x02,0x00,0x00,0x00,0x00,0x00,0x00
	,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC4,0xF9,0x18,0x00
	,0xFC,0xA8,0x46,0x00,0xFF,0xFF,0xFF,0xFF,0x70,0xF9,0x18,0x00,0xBF,0xF0,0x45,0x00
	,0x11,0x01,0x00,0x00,0x6E,0x00,0x00,0x00,0x04,0x03,0x02,0x00,0x6C,0xF9,0x18,0x00
	,0x11,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0xD0,0xF9,0x18,0x00,0x00,0xE1,0x45,0x00
	,0x11,0x01,0x00,0x00,0x6E,0x00,0x00,0x00,0x04,0x03,0x02,0x00,0x00,0x00,0x00,0x00
	,0xB0,0x02,0x19,0x00,0x00,0x00,0x00,0x00,0x04,0x03,0x02,0x00,0x02,0x02,0x00,0x00
	,0x00,0x00,0x00,0x00,0x49,0x00,0x15,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
	,0x00,0x00,0x00,0x00,0x77,0x63,0x46,0x00,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00
	,0xB0,0x02,0x19,0x00,0x30,0xA2,0x64,0x00,0x84,0xF9,0x18,0x00,0x84,0xFA,0x18,0x00
	,0x84,0xA8,0x46,0x00,0x00,0x00,0x00,0x00,0xF0,0xF9,0x18,0x00,0x1B,0xE3,0x45,0x00
	,0x98,0x0F,0x2A,0x00,0x00,0x00,0x00,0x00,0x11,0x01,0x00,0x00,0x6E,0x00,0x00,0x00
	,0x04,0x03,0x02,0x00,0xE7,0xE2,0x45,0x00,0x1C,0xFA,0x18,0x00,0xFA,0x62,0x63,0x77
	,0xB0,0x02,0x19,0x00,0x11,0x01,0x00,0x00,0x6E,0x00,0x00,0x00,0x04,0x03,0x02,0x00
	,0xE7,0xE2,0x45,0x00,0xCD,0xAB,0xBA,0xDC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
	,0xE7,0xE2,0x45,0x00,0x94,0xFA,0x18,0x00,0x3A,0x6D,0x63,0x77,0xE7,0xE2,0x45,0x00
	,0xB0,0x02,0x19,0x00,0x11,0x01,0x00,0x00,0x6E,0x00,0x00,0x00,0x04,0x03,0x02,0x00
	,0xBC,0x1D,0x52,0xCE,0x11,0x01,0x00,0x00,0xF0,0x92,0xAB,0x00,0xD1,0xFE,0xFF,0xFF
	,0x24,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
	,0x30,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xE9,0x6C,0x63,0x77
	,0x00,0x00,0x00,0x00,0x48,0x41,0xAC,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00
	,0x00,0x00,0x00,0x00,0x38,0xFA,0x18,0x00,0x79,0x96,0x63,0x77,0x2C,0xFC,0x18,0x00
	,0x1E,0xA6,0x69,0x77,0x70,0x8A,0x29,0xB9,0x00,0x00,0x00,0x00,0xD8,0xFA,0x18,0x00
	,0x5E,0x96,0x63,0x77,0x00,0x00,0x00,0x00,0xE7,0xE2,0x45,0x00,0xB0,0x02,0x19,0x00
	,0x11,0x01,0x00,0x00,0x6E,0x00,0x00,0x00,0x04,0x03,0x02,0x00,0x18,0x93,0xAB,0x00
	,0x01,0x00,0x00,0x00,0xB0,0x02,0x19,0x00,0x11,0x01,0x00,0x00,0x79,0x96,0x63,0x77
	,0x20,0x92,0xAB,0x00,0x00,0x00,0x00,0x00,0xB0,0x02,0x19,0x00,0xB0,0x02,0x00,0x00
	,0xFC,0xFA,0x18,0x00,0xC5,0x96,0x63,0x77,0xF0,0x92,0xAB,0x00,0x00,0x00,0x00,0x00
	,0xE7,0xE2,0x45,0x00,0x6E,0x00,0x00,0x00,0x04,0x03,0x02,0x00,0x00,0x00,0x00,0x00
	,0x60,0x1C,0x65,0x00,0x1C,0xFB,0x18,0x00,0x01,0x46,0x6A,0x71,0xB0,0x02,0x19,0x00
	,0x11,0x01,0x00,0x00,0x6E,0x00,0x00,0x00,0x04,0x03,0x02,0x00,0x01,0x00,0x00,0x00
	,0x60,0x1C,0x65,0x00,0x38,0xFB,0x18,0x00,0x63,0x46,0x6A,0x71,0x60,0x1C,0x65,0x00
	,0x00,0x00,0x00,0x00,0x04,0x03,0x02,0x00,0x60,0x1C,0x65,0x00,0x00,0x01,0x00,0x00
	,0x98,0xFB,0x18,0x00,0xED,0x44,0x6A,0x71,0x00,0x2F,0x01,0x54,0x01,0x00,0x00,0x00
	,0x00,0x00,0x00,0x00,0x95,0xB4,0x62,0x71,0x00,0x00,0x00,0x00,0x40,0x37,0x29,0xB9
	,0xFE,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x53,0x79,0x64,0x77,0x04,0x04,0x06,0x00
	,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xB4,0xFB,0x18,0x00,0x12,0x0F,0x3F,0x10
	,0x01,0x00,0x00,0x00,0x14,0xFC,0x18,0x00,0x00,0x00,0x00,0x00,0x0A,0x00,0x00,0x00
	,0x04,0x03,0x02,0x00,0x49,0x00,0x15,0x00,0x00,0x00,0x00,0x00,0x32,0x11,0x52,0xCE
	,0xC4,0xFB,0x18,0x00,0xFA,0x62,0x63,0x77,0x04,0x03,0x02,0x00,0x02,0x02,0x00,0x00
	,0x00,0x00,0x00,0x00,0x49,0x00,0x15,0x00,0x95,0xB4,0x62,0x71,0xCD,0xAB,0xBA,0xDC
	,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x95,0xB4,0x62,0x71,0x3C,0xFC,0x18,0x00
	,0x3A,0x6D,0x63,0x77,0x95,0xB4,0x62,0x71,0x04,0x03,0x02,0x00,0x02,0x02,0x00,0x00
	,0x00,0x00,0x00,0x00,0x49,0x00,0x15,0x00,0x14,0x1B,0x52,0xCE,0x02,0x02,0x00,0x00
	,0x95,0xB4,0x62,0x71,0x30,0xA2,0x64,0x00,0x24,0x00,0x00,0x00,0x01,0x00,0x00,0x00
	,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF
	,0xFF,0xFF,0xFF,0xFF,0xE9,0x6C,0x63,0x77,0x00,0x00,0x00,0x00,0xA4,0xBA,0x49,0x00
	,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFB,0x18,0x00
	,0x00,0x00,0x00,0x00,0x24,0xFD,0x18,0x00,0x1E,0xA6,0x69,0x77,0x70,0x8A,0x29,0xB9
	,0x00,0x00,0x00,0x00,0x74,0xFC,0x18,0x00,0x27,0x0D,0x64,0x77,0x00,0x00,0x00,0x00
	,0x95,0xB4,0x62,0x71,0x04,0x03,0x02,0x00,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x00
	,0x49,0x00,0x15,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xA8,0xF0,0x2A,0x00
	,0xA8,0xF0,0x2A,0x00,0xA8,0xF0,0x2A,0x00,0x00,0x00,0x00,0x00,0x94,0xFC,0x18,0x00
	,0x4A,0x79,0x64,0x77,0x6D,0x01,0xFF,0xFF,0x04,0x03,0x02,0x00,0x02,0x02,0x00,0x00
	,0x00,0x00,0x00,0x00,0x49,0x00,0x15,0x00,0x01,0x00,0x00,0x00,0xB4,0xFC,0x18,0x00
	,0x15,0xEB,0x45,0x00,0x6D,0x01,0xFF,0xFF,0x04,0x03,0x02,0x00,0x02,0x02,0x00,0x00
	,0x00,0x00,0x00,0x00,0x49,0x00,0x15,0x00,0xA8,0xF0,0x2A,0x00,0xD0,0xFC,0x18,0x00
	,0xD6,0xF0,0x45,0x00,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x49,0x00,0x15,0x00
	,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0xFD,0x18,0x00,0x00,0xE1,0x45,0x00
	,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x49,0x00,0x15,0x00,0x00,0x00,0x00,0x00
	,0x04,0x03,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
	,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
	,0x00,0x00,0x00,0x00,0x77,0x63,0x46,0x00,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00
	,0x04,0x03,0x02,0x00,0x30,0xA2,0x64,0x00,0xE4,0xFC,0x18,0x00,0xE4,0xFD,0x18,0x00
	,0x84,0xA8,0x46,0x00,0x00,0x00,0x00,0x00,0x50,0xFD,0x18,0x00,0x1B,0xE3,0x45,0x00
	,0xA8,0xF0,0x2A,0x00,0x00,0x00,0x00,0x00,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x00
};


bool sub_4488B0(unsigned __int8 a1[2])
{   
	
	int a2 = 2;
	unsigned __int8 * v3; // esi
	int v4; // ebx
	unsigned __int8 result; // al
	unsigned __int8 v6; // cl
	unsigned __int8 v7; // di
	unsigned __int8 v8; // bp
	unsigned __int8 *v9; // ST20_4
	unsigned __int8 *v10; // ST1C_4
	unsigned __int8 v11; // [esp+8h] [ebp-Ch]
	unsigned __int8 v12; // [esp+20h] [ebp+Ch]
	unsigned __int8 v13; // [esp+20h] [ebp+Ch]

	unsigned __int8 v15[128 * 16];
	memcpy(v15,v, 128 * 16);

	v4 = 0;
	result = v15[256];
	v6 = v15[257];
	v12 = v15[256] ;
	if (a2 <= 0)
	{
		v15[256]= result;
		v15[257] = v6;
	}
	else
	{
		v7 = v12;
		v8 = v6;
		do
		{
			v13 = v7 + 1;
			v7 = v13;
			v9 = (v13 + v15);
			v11 = v8 + *v9;
			v8 = v11;
			v10 = (unsigned __int8 *)(v15 + v11);

			//sub_448890(v9, v10);
			unsigned __int8 med;
			med = *v9;
			*v9 = *v10;
			*v10 = med;
			
			*(v4++ + a1) ^= *((((unsigned __int8)*v9 + *v10) & 0xFF) + v15);
		} while (v4 < a2);
		//result = v11;
		v15[256] = v13;
		v15[257] = v11;
	}
	if (a1[0] == 0x92 && a1[1] == 0x7f)
	{
		//printf("结果:%X %X\n", a1[0], a1[0]);
		//getchar();
		return true;
	}
		
	else
		return false;

}

unsigned int s3[] = {
	0x1B,0x23,0x18,0x00,0x09,0x19,0x01,0x2A,0x19,0x1E,0x00,0x3A,0x38,0x13,0x05,0x02
	,0x20,0x1E,0x18,0x00,0x2E,0x1D,0x28,0x18,0x32,0x01,0x02,0x30,0x3E,0x07,0x32,0x01
	,0x23,0x2B,0x29,0x2D,0x35,0x13,0x00,0x08,0x2B,0x28,0x08,0x00,0x33,0x3C,0x02,0x27
	,0x3C,0x05,0x15,0x0A,0x17,0x38,0x14,0x01,0x17,0x27,0x01,0x11,0x14,0x30,0x09,0x04
	,0x0B,0x35,0x07,0x13,0x26,0x13,0x30,0x00,0x2B,0x1D,0x00,0x25,0x29,0x0A,0x09,0x2C
	,0x31,0x0C,0x0C,0x02,0x1F,0x2B,0x02,0x30,0x16,0x0B,0x22,0x0A,0x32,0x3B,0x0D,0x01
	,0x35,0x0B,0x01,0x04,0x23,0x16,0x08,0x12,0x21,0x1B,0x32,0x00,0x16,0x2C,0x30,0x04
	,0x17,0x31,0x24,0x35,0x1E,0x1C,0x04,0x02,0x3C,0x31,0x34,0x00,0x18,0x1B,0x26,0x20
};



unsigned int getds3(int n)
{

	unsigned int v1, v2, v3, v4;
	v1 = s3[n];
	v2 = s3[n + 1];
	v3 = s3[n + 2];
	v4 = s3[n + 3];

	unsigned int result = (v4 << 24) | (v3 << 16) | (v2 << 8) | v1;
	return result;

}

unsigned int ss_3[281*16] = {
	0x00,0x04,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x04,0x04,0x01,0x01
	,0x04,0x00,0x01,0x01,0x04,0x04,0x01,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x01,0x00
	,0x00,0x04,0x00,0x00,0x00,0x04,0x01,0x01,0x04,0x04,0x01,0x01,0x00,0x04,0x00,0x00
	,0x04,0x04,0x00,0x01,0x04,0x00,0x01,0x01,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x00
	,0x04,0x04,0x00,0x00,0x00,0x04,0x00,0x01,0x00,0x04,0x00,0x01,0x00,0x04,0x01,0x00
	,0x00,0x04,0x01,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x04,0x04,0x00,0x01
	,0x04,0x00,0x01,0x00,0x04,0x00,0x00,0x01,0x04,0x00,0x00,0x01,0x04,0x00,0x01,0x00
	,0x00,0x00,0x00,0x00,0x04,0x04,0x00,0x00,0x04,0x04,0x01,0x00,0x00,0x00,0x00,0x01
	,0x00,0x00,0x01,0x00,0x04,0x04,0x01,0x01,0x04,0x00,0x00,0x00,0x00,0x00,0x01,0x01
	,0x00,0x04,0x01,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x04,0x00,0x00
	,0x04,0x00,0x01,0x01,0x00,0x00,0x01,0x00,0x00,0x04,0x01,0x00,0x04,0x00,0x00,0x01
	,0x00,0x04,0x00,0x00,0x04,0x00,0x00,0x00,0x04,0x04,0x00,0x01,0x04,0x04,0x01,0x00
	,0x04,0x04,0x01,0x01,0x04,0x00,0x01,0x00,0x00,0x00,0x01,0x01,0x04,0x04,0x00,0x01
	,0x04,0x00,0x00,0x01,0x04,0x04,0x00,0x00,0x04,0x04,0x01,0x00,0x00,0x04,0x01,0x01
	,0x04,0x04,0x00,0x00,0x00,0x04,0x00,0x01,0x00,0x04,0x00,0x01,0x00,0x00,0x00,0x00
	,0x04,0x00,0x01,0x00,0x00,0x04,0x01,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x01,0x01
	,0x20,0x80,0x10,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x00,0x20,0x80,0x10,0x00
	,0x00,0x00,0x10,0x00,0x20,0x00,0x00,0x00,0x20,0x00,0x10,0x80,0x20,0x80,0x00,0x80
	,0x20,0x00,0x00,0x80,0x20,0x80,0x10,0x80,0x00,0x80,0x10,0x80,0x00,0x00,0x00,0x80
	,0x00,0x80,0x00,0x80,0x00,0x00,0x10,0x00,0x20,0x00,0x00,0x00,0x20,0x00,0x10,0x80
	,0x00,0x80,0x10,0x00,0x20,0x00,0x10,0x00,0x20,0x80,0x00,0x80,0x00,0x00,0x00,0x00
	,0x00,0x00,0x00,0x80,0x00,0x80,0x00,0x00,0x20,0x80,0x10,0x00,0x00,0x00,0x10,0x80
	,0x20,0x00,0x10,0x00,0x20,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x80,0x10,0x00
	,0x20,0x80,0x00,0x00,0x00,0x80,0x10,0x80,0x00,0x00,0x10,0x80,0x20,0x80,0x00,0x00
	,0x00,0x00,0x00,0x00,0x20,0x80,0x10,0x00,0x20,0x00,0x10,0x80,0x00,0x00,0x10,0x00
	,0x20,0x80,0x00,0x80,0x00,0x00,0x10,0x80,0x00,0x80,0x10,0x80,0x00,0x80,0x00,0x00
	,0x00,0x00,0x10,0x80,0x00,0x80,0x00,0x80,0x20,0x00,0x00,0x00,0x20,0x80,0x10,0x80
	,0x20,0x80,0x10,0x00,0x20,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x80
	,0x20,0x80,0x00,0x00,0x00,0x80,0x10,0x80,0x00,0x00,0x10,0x00,0x20,0x00,0x00,0x80
	,0x20,0x00,0x10,0x00,0x20,0x80,0x00,0x80,0x20,0x00,0x00,0x80,0x20,0x00,0x10,0x00
	,0x00,0x80,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x80,0x20,0x80,0x00,0x00
	,0x00,0x00,0x00,0x80,0x20,0x00,0x10,0x80,0x20,0x80,0x10,0x80,0x00,0x80,0x10,0x00
	,0x08,0x02,0x00,0x00,0x00,0x02,0x02,0x08,0x00,0x00,0x00,0x00,0x08,0x00,0x02,0x08
	,0x00,0x02,0x00,0x08,0x00,0x00,0x00,0x00,0x08,0x02,0x02,0x00,0x00,0x02,0x00,0x08
	,0x08,0x00,0x02,0x00,0x08,0x00,0x00,0x08,0x08,0x00,0x00,0x08,0x00,0x00,0x02,0x00
	,0x08,0x02,0x02,0x08,0x08,0x00,0x02,0x00,0x00,0x00,0x02,0x08,0x08,0x02,0x00,0x00
	,0x00,0x00,0x00,0x08,0x08,0x00,0x00,0x00,0x00,0x02,0x02,0x08,0x00,0x02,0x00,0x00
	,0x00,0x02,0x02,0x00,0x00,0x00,0x02,0x08,0x08,0x00,0x02,0x08,0x08,0x02,0x02,0x00
	,0x08,0x02,0x00,0x08,0x00,0x02,0x02,0x00,0x00,0x00,0x02,0x00,0x08,0x02,0x00,0x08
	,0x08,0x00,0x00,0x00,0x08,0x02,0x02,0x08,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x08
	,0x00,0x02,0x02,0x08,0x00,0x00,0x00,0x08,0x08,0x00,0x02,0x00,0x08,0x02,0x00,0x00
	,0x00,0x00,0x02,0x00,0x00,0x02,0x02,0x08,0x00,0x02,0x00,0x08,0x00,0x00,0x00,0x00
	,0x00,0x02,0x00,0x00,0x08,0x00,0x02,0x00,0x08,0x02,0x02,0x08,0x00,0x02,0x00,0x08
	,0x08,0x00,0x00,0x08,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x02,0x08
	,0x08,0x02,0x00,0x08,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x08,0x08,0x02,0x02,0x08
	,0x08,0x00,0x00,0x00,0x08,0x02,0x02,0x00,0x00,0x02,0x02,0x00,0x08,0x00,0x00,0x08
	,0x00,0x00,0x02,0x08,0x08,0x02,0x00,0x08,0x08,0x02,0x00,0x00,0x00,0x00,0x02,0x08
	,0x08,0x02,0x02,0x00,0x08,0x00,0x00,0x00,0x08,0x00,0x02,0x08,0x00,0x02,0x02,0x00
	,0x01,0x20,0x80,0x00,0x81,0x20,0x00,0x00,0x81,0x20,0x00,0x00,0x80,0x00,0x00,0x00
	,0x80,0x20,0x80,0x00,0x81,0x00,0x80,0x00,0x01,0x00,0x80,0x00,0x01,0x20,0x00,0x00
	,0x00,0x00,0x00,0x00,0x00,0x20,0x80,0x00,0x00,0x20,0x80,0x00,0x81,0x20,0x80,0x00
	,0x81,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x80,0x00,0x01,0x00,0x80,0x00
	,0x01,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x80,0x00,0x01,0x20,0x80,0x00
	,0x80,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x01,0x20,0x00,0x00,0x80,0x20,0x00,0x00
	,0x81,0x00,0x80,0x00,0x01,0x00,0x00,0x00,0x80,0x20,0x00,0x00,0x80,0x00,0x80,0x00
	,0x00,0x20,0x00,0x00,0x80,0x20,0x80,0x00,0x81,0x20,0x80,0x00,0x81,0x00,0x00,0x00
	,0x80,0x00,0x80,0x00,0x01,0x00,0x80,0x00,0x00,0x20,0x80,0x00,0x81,0x20,0x80,0x00
	,0x81,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x80,0x00
	,0x80,0x20,0x00,0x00,0x80,0x00,0x80,0x00,0x81,0x00,0x80,0x00,0x01,0x00,0x00,0x00
	,0x01,0x20,0x80,0x00,0x81,0x20,0x00,0x00,0x81,0x20,0x00,0x00,0x80,0x00,0x00,0x00
	,0x81,0x20,0x80,0x00,0x81,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x20,0x00,0x00
	,0x01,0x00,0x80,0x00,0x01,0x20,0x00,0x00,0x80,0x20,0x80,0x00,0x81,0x00,0x80,0x00
	,0x01,0x20,0x00,0x00,0x80,0x20,0x00,0x00,0x00,0x00,0x80,0x00,0x01,0x20,0x80,0x00
	,0x80,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x20,0x00,0x00,0x80,0x20,0x80,0x00
	,0x00,0x01,0x00,0x00,0x00,0x01,0x08,0x02,0x00,0x00,0x08,0x02,0x00,0x01,0x00,0x42
	,0x00,0x00,0x08,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x08,0x02
	,0x00,0x01,0x08,0x40,0x00,0x00,0x08,0x00,0x00,0x01,0x00,0x02,0x00,0x01,0x08,0x40
	,0x00,0x01,0x00,0x42,0x00,0x00,0x08,0x42,0x00,0x01,0x08,0x00,0x00,0x00,0x00,0x40
	,0x00,0x00,0x00,0x02,0x00,0x00,0x08,0x40,0x00,0x00,0x08,0x40,0x00,0x00,0x00,0x00
	,0x00,0x01,0x00,0x40,0x00,0x01,0x08,0x42,0x00,0x01,0x08,0x42,0x00,0x01,0x00,0x02
	,0x00,0x00,0x08,0x42,0x00,0x01,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x42
	,0x00,0x01,0x08,0x02,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x42,0x00,0x01,0x08,0x00
	,0x00,0x00,0x08,0x00,0x00,0x01,0x00,0x42,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x02
	,0x00,0x00,0x00,0x40,0x00,0x00,0x08,0x02,0x00,0x01,0x00,0x42,0x00,0x01,0x08,0x40
	,0x00,0x01,0x00,0x02,0x00,0x00,0x00,0x40,0x00,0x00,0x08,0x42,0x00,0x01,0x08,0x02
	,0x00,0x01,0x08,0x40,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x08,0x42
	,0x00,0x01,0x08,0x42,0x00,0x01,0x08,0x00,0x00,0x00,0x00,0x42,0x00,0x01,0x08,0x42
	,0x00,0x00,0x08,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x40,0x00,0x00,0x00,0x42
	,0x00,0x01,0x08,0x00,0x00,0x01,0x00,0x02,0x00,0x01,0x00,0x40,0x00,0x00,0x08,0x00
	,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x40,0x00,0x01,0x08,0x02,0x00,0x01,0x00,0x40
	,0x10,0x00,0x00,0x20,0x00,0x00,0x40,0x20,0x00,0x40,0x00,0x00,0x10,0x40,0x40,0x20
	,0x00,0x00,0x40,0x20,0x10,0x00,0x00,0x00,0x10,0x40,0x40,0x20,0x00,0x00,0x40,0x00
	,0x00,0x40,0x00,0x20,0x10,0x40,0x40,0x00,0x00,0x00,0x40,0x00,0x10,0x00,0x00,0x20
	,0x10,0x00,0x40,0x00,0x00,0x40,0x00,0x20,0x00,0x00,0x00,0x20,0x10,0x40,0x00,0x00
	,0x00,0x00,0x00,0x00,0x10,0x00,0x40,0x00,0x10,0x40,0x00,0x20,0x00,0x40,0x00,0x00
	,0x00,0x40,0x40,0x00,0x10,0x40,0x00,0x20,0x10,0x00,0x00,0x00,0x10,0x00,0x40,0x20
	,0x10,0x00,0x40,0x20,0x00,0x00,0x00,0x00,0x10,0x40,0x40,0x00,0x00,0x40,0x40,0x20
	,0x10,0x40,0x00,0x00,0x00,0x40,0x40,0x00,0x00,0x40,0x40,0x20,0x00,0x00,0x00,0x20
	,0x00,0x40,0x00,0x20,0x10,0x00,0x00,0x00,0x10,0x00,0x40,0x20,0x00,0x40,0x40,0x00
	,0x10,0x40,0x40,0x20,0x00,0x00,0x40,0x00,0x10,0x40,0x00,0x00,0x10,0x00,0x00,0x20
	,0x00,0x00,0x40,0x00,0x00,0x40,0x00,0x20,0x00,0x00,0x00,0x20,0x10,0x40,0x00,0x00
	,0x10,0x00,0x00,0x20,0x10,0x40,0x40,0x20,0x00,0x40,0x40,0x00,0x00,0x00,0x40,0x20
	,0x10,0x40,0x40,0x00,0x00,0x40,0x40,0x20,0x00,0x00,0x00,0x00,0x10,0x00,0x40,0x20
	,0x10,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x40,0x20,0x10,0x40,0x40,0x00
	,0x00,0x40,0x00,0x00,0x10,0x00,0x40,0x00,0x10,0x40,0x00,0x20,0x00,0x00,0x00,0x00
	,0x00,0x40,0x40,0x20,0x00,0x00,0x00,0x20,0x10,0x00,0x40,0x00,0x10,0x40,0x00,0x20
	,0x00,0x00,0x20,0x00,0x02,0x00,0x20,0x04,0x02,0x08,0x00,0x04,0x00,0x00,0x00,0x00
	,0x00,0x08,0x00,0x00,0x02,0x08,0x00,0x04,0x02,0x08,0x20,0x00,0x00,0x08,0x20,0x04
	,0x02,0x08,0x20,0x04,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x04
	,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x02,0x00,0x20,0x04,0x02,0x08,0x00,0x00
	,0x00,0x08,0x00,0x04,0x02,0x08,0x20,0x00,0x02,0x00,0x20,0x00,0x00,0x08,0x00,0x04
	,0x02,0x00,0x00,0x04,0x00,0x00,0x20,0x04,0x00,0x08,0x20,0x04,0x02,0x00,0x20,0x00
	,0x00,0x00,0x20,0x04,0x00,0x08,0x00,0x00,0x02,0x08,0x00,0x00,0x02,0x08,0x20,0x04
	,0x00,0x08,0x20,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x08,0x20,0x00
	,0x00,0x00,0x00,0x04,0x00,0x08,0x20,0x00,0x00,0x00,0x20,0x00,0x02,0x08,0x00,0x04
	,0x02,0x08,0x00,0x04,0x02,0x00,0x20,0x04,0x02,0x00,0x20,0x04,0x02,0x00,0x00,0x00
	,0x02,0x00,0x20,0x00,0x00,0x00,0x00,0x04,0x00,0x08,0x00,0x04,0x00,0x00,0x20,0x00
	,0x00,0x08,0x20,0x04,0x02,0x08,0x00,0x00,0x02,0x08,0x20,0x00,0x00,0x08,0x20,0x04
	,0x02,0x08,0x00,0x00,0x02,0x00,0x00,0x04,0x02,0x08,0x20,0x04,0x00,0x00,0x20,0x04
	,0x00,0x08,0x20,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x02,0x08,0x20,0x04
	,0x00,0x00,0x00,0x00,0x02,0x08,0x20,0x00,0x00,0x00,0x20,0x04,0x00,0x08,0x00,0x00
	,0x02,0x00,0x00,0x04,0x00,0x08,0x00,0x04,0x00,0x08,0x00,0x00,0x02,0x00,0x20,0x00
	,0x40,0x10,0x00,0x10,0x00,0x10,0x00,0x00,0x00,0x00,0x04,0x00,0x40,0x10,0x04,0x10
	,0x00,0x00,0x00,0x10,0x40,0x10,0x00,0x10,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x10
	,0x40,0x00,0x04,0x00,0x00,0x00,0x04,0x10,0x40,0x10,0x04,0x10,0x00,0x10,0x04,0x00
	,0x00,0x10,0x04,0x10,0x40,0x10,0x04,0x00,0x00,0x10,0x00,0x00,0x40,0x00,0x00,0x00
	,0x00,0x00,0x04,0x10,0x40,0x00,0x00,0x10,0x00,0x10,0x00,0x10,0x40,0x10,0x00,0x00
	,0x00,0x10,0x04,0x00,0x40,0x00,0x04,0x00,0x40,0x00,0x04,0x10,0x00,0x10,0x04,0x10
	,0x40,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x04,0x10
	,0x40,0x00,0x00,0x10,0x00,0x10,0x00,0x10,0x40,0x10,0x04,0x00,0x00,0x00,0x04,0x00
	,0x40,0x10,0x04,0x00,0x00,0x00,0x04,0x00,0x00,0x10,0x04,0x10,0x00,0x10,0x00,0x00
	,0x40,0x00,0x00,0x00,0x40,0x00,0x04,0x10,0x00,0x10,0x00,0x00,0x40,0x10,0x04,0x00
	,0x00,0x10,0x00,0x10,0x40,0x00,0x00,0x00,0x40,0x00,0x00,0x10,0x00,0x00,0x04,0x10
	,0x40,0x00,0x04,0x10,0x00,0x00,0x00,0x10,0x00,0x00,0x04,0x00,0x40,0x10,0x00,0x10
	,0x00,0x00,0x00,0x00,0x40,0x10,0x04,0x10,0x40,0x00,0x04,0x00,0x40,0x00,0x00,0x10
	,0x00,0x00,0x04,0x10,0x00,0x10,0x00,0x10,0x40,0x10,0x00,0x10,0x00,0x00,0x00,0x00
	,0x40,0x10,0x04,0x10,0x00,0x10,0x04,0x00,0x00,0x10,0x04,0x00,0x40,0x10,0x00,0x00
	,0x40,0x10,0x00,0x00,0x40,0x00,0x04,0x00,0x00,0x00,0x00,0x10,0x00,0x10,0x04,0x10
	,0x2C,0x7C,0x48,0x00,0x20,0x7C,0x48,0x00,0x84,0x9C,0x49,0x00,0x14,0x7C,0x48,0x00
	,0x04,0x7C,0x48,0x00,0xF8,0x7B,0x48,0x00,0xE4,0x7B,0x48,0x00,0xD4,0x7B,0x48,0x00
	,0xBC,0x7B,0x48,0x00,0x84,0x9C,0x49,0x00,0x69,0x6E,0x63,0x6F,0x6D,0x70,0x61,0x74
	,0x69,0x62,0x6C,0x65,0x20,0x76,0x65,0x72,0x73,0x69,0x6F,0x6E,0x00,0x00,0x00,0x00
	,0x62,0x75,0x66,0x66,0x65,0x72,0x20,0x65,0x72,0x72,0x6F,0x72,0x00,0x00,0x00,0x00
	,0x69,0x6E,0x73,0x75,0x66,0x66,0x69,0x63,0x69,0x65,0x6E,0x74,0x20,0x6D,0x65,0x6D
	,0x6F,0x72,0x79,0x00,0x64,0x61,0x74,0x61,0x20,0x65,0x72,0x72,0x6F,0x72,0x00,0x00
	,0x73,0x74,0x72,0x65,0x61,0x6D,0x20,0x65,0x72,0x72,0x6F,0x72,0x00,0x00,0x00,0x00
	,0x66,0x69,0x6C,0x65,0x20,0x65,0x72,0x72,0x6F,0x72,0x00,0x00,0x73,0x74,0x72,0x65
	,0x61,0x6D,0x20,0x65,0x6E,0x64,0x00,0x00,0x6E,0x65,0x65,0x64,0x20,0x64,0x69,0x63
	,0x74,0x69,0x6F,0x6E,0x61,0x72,0x79,0x00,0x00,0x00,0x00,0x00,0xF0,0x0A,0x47,0x00
	,0xA4,0x09,0x47,0x00,0x01,0x01,0x00,0x00,0x1E,0x01,0x00,0x00,0x0F,0x00,0x00,0x00
	,0x00,0x00,0x00,0x00,0x70,0x0F,0x47,0x00,0x18,0x0A,0x47,0x00,0x00,0x00,0x00,0x00
	,0x1E,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
	,0x90,0x0A,0x47,0x00,0x00,0x00,0x00,0x00,0x13,0x00,0x00,0x00,0x07,0x00,0x00,0x00
	,0x00,0x00,0x00,0x00,0x09,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x60,0x07,0x00,0x00
	,0x00,0x01,0x00,0x00,0x00,0x08,0x00,0x00,0x50,0x00,0x00,0x00,0x00,0x08,0x00,0x00
	,0x10,0x00,0x00,0x00,0x54,0x08,0x00,0x00,0x73,0x00,0x00,0x00,0x52,0x07,0x00,0x00
	,0x1F,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x08,0x00,0x00
	,0x30,0x00,0x00,0x00,0x00,0x09,0x00,0x00,0xC0,0x00,0x00,0x00,0x50,0x07,0x00,0x00
	,0x0A,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x08,0x00,0x00
	,0x20,0x00,0x00,0x00,0x00,0x09,0x00,0x00,0xA0,0x00,0x00,0x00,0x00,0x08,0x00,0x00
	,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x08,0x00,0x00
	,0x40,0x00,0x00,0x00,0x00,0x09,0x00,0x00,0xE0,0x00,0x00,0x00,0x50,0x07,0x00,0x00
	,0x06,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x58,0x00,0x00,0x00,0x00,0x08,0x00,0x00
	,0x18,0x00,0x00,0x00,0x00,0x09,0x00,0x00,0x90,0x00,0x00,0x00,0x53,0x07,0x00,0x00
	,0x3B,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x08,0x00,0x00
	,0x38,0x00,0x00,0x00,0x00,0x09,0x00,0x00,0xD0,0x00,0x00,0x00,0x51,0x07,0x00,0x00
	,0x11,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x68,0x00,0x00,0x00,0x00,0x08,0x00,0x00
	,0x28,0x00,0x00,0x00,0x00,0x09,0x00,0x00,0xB0,0x00,0x00,0x00,0x00,0x08,0x00,0x00
	,0x08,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x88,0x00,0x00,0x00,0x00,0x08,0x00,0x00
	,0x48,0x00,0x00,0x00,0x00,0x09,0x00,0x00,0xF0,0x00,0x00,0x00,0x50,0x07,0x00,0x00
	,0x04,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x54,0x00,0x00,0x00,0x00,0x08,0x00,0x00
	,0x14,0x00,0x00,0x00,0x55,0x08,0x00,0x00,0xE3,0x00,0x00,0x00,0x53,0x07,0x00,0x00
	,0x2B,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x74,0x00,0x00,0x00,0x00,0x08,0x00,0x00
	,0x34,0x00,0x00,0x00,0x00,0x09,0x00,0x00,0xC8,0x00,0x00,0x00,0x51,0x07,0x00,0x00
	,0x0D,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x64,0x00,0x00,0x00,0x00,0x08,0x00,0x00
	,0x24,0x00,0x00,0x00,0x00,0x09,0x00,0x00,0xA8,0x00,0x00,0x00,0x00,0x08,0x00,0x00
	,0x04,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x84,0x00,0x00,0x00,0x00,0x08,0x00,0x00
	,0x44,0x00,0x00,0x00,0x00,0x09,0x00,0x00,0xE8,0x00,0x00,0x00,0x50,0x07,0x00,0x00
	,0x08,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x5C,0x00,0x00,0x00,0x00,0x08,0x00,0x00
	,0x1C,0x00,0x00,0x00,0x00,0x09,0x00,0x00,0x98,0x00,0x00,0x00,0x54,0x07,0x00,0x00
	,0x53,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x7C,0x00,0x00,0x00,0x00,0x08,0x00,0x00
	,0x3C,0x00,0x00,0x00,0x00,0x09,0x00,0x00,0xD8,0x00,0x00,0x00,0x52,0x07,0x00,0x00
	,0x17,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x6C,0x00,0x00,0x00,0x00,0x08,0x00,0x00
	,0x2C,0x00,0x00,0x00,0x00,0x09,0x00,0x00,0xB8,0x00,0x00,0x00,0x00,0x08,0x00,0x00
	,0x0C,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x8C,0x00,0x00,0x00,0x00,0x08,0x00,0x00
	,0x4C,0x00,0x00,0x00,0x00,0x09,0x00,0x00,0xF8,0x00,0x00,0x00,0x50,0x07,0x00,0x00
	,0x03,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x52,0x00,0x00,0x00,0x00,0x08,0x00,0x00
	,0x12,0x00,0x00,0x00,0x55,0x08,0x00,0x00,0xA3,0x00,0x00,0x00,0x53,0x07,0x00,0x00
	,0x23,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x72,0x00,0x00,0x00,0x00,0x08,0x00,0x00
	,0x32,0x00,0x00,0x00,0x00,0x09,0x00,0x00,0xC4,0x00,0x00,0x00,0x51,0x07,0x00,0x00
	,0x0B,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x62,0x00,0x00,0x00,0x00,0x08,0x00,0x00
	,0x22,0x00,0x00,0x00,0x00,0x09,0x00,0x00,0xA4,0x00,0x00,0x00,0x00,0x08,0x00,0x00
	,0x02,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x82,0x00,0x00,0x00,0x00,0x08,0x00,0x00
	,0x42,0x00,0x00,0x00,0x00,0x09,0x00,0x00,0xE4,0x00,0x00,0x00,0x50,0x07,0x00,0x00
	,0x07,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x5A,0x00,0x00,0x00,0x00,0x08,0x00,0x00
	,0x1A,0x00,0x00,0x00,0x00,0x09,0x00,0x00,0x94,0x00,0x00,0x00,0x54,0x07,0x00,0x00
	,0x43,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x7A,0x00,0x00,0x00,0x00,0x08,0x00,0x00
	,0x3A,0x00,0x00,0x00,0x00,0x09,0x00,0x00,0xD4,0x00,0x00,0x00,0x52,0x07,0x00,0x00
	,0x13,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x6A,0x00,0x00,0x00,0x00,0x08,0x00,0x00
	,0x2A,0x00,0x00,0x00,0x00,0x09,0x00,0x00,0xB4,0x00,0x00,0x00,0x00,0x08,0x00,0x00
	,0x0A,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x8A,0x00,0x00,0x00,0x00,0x08,0x00,0x00
	,0x4A,0x00,0x00,0x00,0x00,0x09,0x00,0x00,0xF4,0x00,0x00,0x00,0x50,0x07,0x00,0x00
	,0x05,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x56,0x00,0x00,0x00,0x00,0x08,0x00,0x00
	,0x16,0x00,0x00,0x00,0xC0,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x53,0x07,0x00,0x00
	,0x33,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x76,0x00,0x00,0x00,0x00,0x08,0x00,0x00
	,0x36,0x00,0x00,0x00,0x00,0x09,0x00,0x00,0xCC,0x00,0x00,0x00,0x51,0x07,0x00,0x00
	,0x0F,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x66,0x00,0x00,0x00,0x00,0x08,0x00,0x00
	,0x26,0x00,0x00,0x00,0x00,0x09,0x00,0x00,0xAC,0x00,0x00,0x00,0x00,0x08,0x00,0x00
	,0x06,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x86,0x00,0x00,0x00,0x00,0x08,0x00,0x00
	,0x46,0x00,0x00,0x00,0x00,0x09,0x00,0x00,0xEC,0x00,0x00,0x00,0x50,0x07,0x00,0x00
	,0x09,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x5E,0x00,0x00,0x00,0x00,0x08,0x00,0x00
	,0x1E,0x00,0x00,0x00,0x00,0x09,0x00,0x00,0x9C,0x00,0x00,0x00,0x54,0x07,0x00,0x00
	,0x63,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x7E,0x00,0x00,0x00,0x00,0x08,0x00,0x00
	,0x3E,0x00,0x00,0x00,0x00,0x09,0x00,0x00,0xDC,0x00,0x00,0x00,0x52,0x07,0x00,0x00
	,0x1B,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x6E,0x00,0x00,0x00,0x00,0x08,0x00,0x00
	,0x2E,0x00,0x00,0x00,0x00,0x09,0x00,0x00,0xBC,0x00,0x00,0x00,0x00,0x08,0x00,0x00
	,0x0E,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x8E,0x00,0x00,0x00,0x00,0x08,0x00,0x00
	,0x4E,0x00,0x00,0x00,0x00,0x09,0x00,0x00,0xFC,0x00,0x00,0x00,0x60,0x07,0x00,0x00
	,0x00,0x01,0x00,0x00,0x00,0x08,0x00,0x00,0x51,0x00,0x00,0x00,0x00,0x08,0x00,0x00
	,0x11,0x00,0x00,0x00,0x55,0x08,0x00,0x00,0x83,0x00,0x00,0x00,0x52,0x07,0x00,0x00
	,0x1F,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x71,0x00,0x00,0x00,0x00,0x08,0x00,0x00
	,0x31,0x00,0x00,0x00,0x00,0x09,0x00,0x00,0xC2,0x00,0x00,0x00,0x50,0x07,0x00,0x00
	,0x0A,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x61,0x00,0x00,0x00,0x00,0x08,0x00,0x00
	,0x21,0x00,0x00,0x00,0x00,0x09,0x00,0x00,0xA2,0x00,0x00,0x00,0x00,0x08,0x00,0x00
	,0x01,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x81,0x00,0x00,0x00,0x00,0x08,0x00,0x00
	,0x41,0x00,0x00,0x00,0x00,0x09,0x00,0x00,0xE2,0x00,0x00,0x00,0x50,0x07,0x00,0x00
	,0x06,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x59,0x00,0x00,0x00,0x00,0x08,0x00,0x00
	,0x19,0x00,0x00,0x00,0x00,0x09,0x00,0x00,0x92,0x00,0x00,0x00,0x53,0x07,0x00,0x00
	,0x3B,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x79,0x00,0x00,0x00,0x00,0x08,0x00,0x00
	,0x39,0x00,0x00,0x00,0x00,0x09,0x00,0x00,0xD2,0x00,0x00,0x00,0x51,0x07,0x00,0x00
	,0x11,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x69,0x00,0x00,0x00,0x00,0x08,0x00,0x00
	,0x29,0x00,0x00,0x00,0x00,0x09,0x00,0x00,0xB2,0x00,0x00,0x00,0x00,0x08,0x00,0x00
	,0x09,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x89,0x00,0x00,0x00,0x00,0x08,0x00,0x00
	,0x49,0x00,0x00,0x00,0x00,0x09,0x00,0x00,0xF2,0x00,0x00,0x00,0x50,0x07,0x00,0x00
	,0x04,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x55,0x00,0x00,0x00,0x00,0x08,0x00,0x00
	,0x15,0x00,0x00,0x00,0x50,0x08,0x00,0x00,0x02,0x01,0x00,0x00,0x53,0x07,0x00,0x00
	,0x2B,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x75,0x00,0x00,0x00,0x00,0x08,0x00,0x00
	,0x35,0x00,0x00,0x00,0x00,0x09,0x00,0x00,0xCA,0x00,0x00,0x00,0x51,0x07,0x00,0x00
	,0x0D,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x65,0x00,0x00,0x00,0x00,0x08,0x00,0x00
	,0x25,0x00,0x00,0x00,0x00,0x09,0x00,0x00,0xAA,0x00,0x00,0x00,0x00,0x08,0x00,0x00
	,0x05,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x85,0x00,0x00,0x00,0x00,0x08,0x00,0x00
	,0x45,0x00,0x00,0x00,0x00,0x09,0x00,0x00,0xEA,0x00,0x00,0x00,0x50,0x07,0x00,0x00
	,0x08,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x5D,0x00,0x00,0x00,0x00,0x08,0x00,0x00
	,0x1D,0x00,0x00,0x00,0x00,0x09,0x00,0x00,0x9A,0x00,0x00,0x00,0x54,0x07,0x00,0x00
	,0x53,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x7D,0x00,0x00,0x00,0x00,0x08,0x00,0x00
	,0x3D,0x00,0x00,0x00,0x00,0x09,0x00,0x00,0xDA,0x00,0x00,0x00,0x52,0x07,0x00,0x00
	,0x17,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x6D,0x00,0x00,0x00,0x00,0x08,0x00,0x00
	,0x2D,0x00,0x00,0x00,0x00,0x09,0x00,0x00,0xBA,0x00,0x00,0x00,0x00,0x08,0x00,0x00
	,0x0D,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x8D,0x00,0x00,0x00,0x00,0x08,0x00,0x00
	,0x4D,0x00,0x00,0x00,0x00,0x09,0x00,0x00,0xFA,0x00,0x00,0x00,0x50,0x07,0x00,0x00
	,0x03,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x53,0x00,0x00,0x00,0x00,0x08,0x00,0x00
	,0x13,0x00,0x00,0x00,0x55,0x08,0x00,0x00,0xC3,0x00,0x00,0x00,0x53,0x07,0x00,0x00
	,0x23,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x73,0x00,0x00,0x00,0x00,0x08,0x00,0x00
	,0x33,0x00,0x00,0x00,0x00,0x09,0x00,0x00,0xC6,0x00,0x00,0x00,0x51,0x07,0x00,0x00
	,0x0B,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x63,0x00,0x00,0x00,0x00,0x08,0x00,0x00
	,0x23,0x00,0x00,0x00,0x00,0x09,0x00,0x00,0xA6,0x00,0x00,0x00,0x00,0x08,0x00,0x00
	,0x03,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x83,0x00,0x00,0x00,0x00,0x08,0x00,0x00
	,0x43,0x00,0x00,0x00,0x00,0x09,0x00,0x00,0xE6,0x00,0x00,0x00,0x50,0x07,0x00,0x00
	,0x07,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x5B,0x00,0x00,0x00,0x00,0x08,0x00,0x00
	,0x1B,0x00,0x00,0x00,0x00,0x09,0x00,0x00,0x96,0x00,0x00,0x00,0x54,0x07,0x00,0x00
	,0x43,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x7B,0x00,0x00,0x00,0x00,0x08,0x00,0x00
	,0x3B,0x00,0x00,0x00,0x00,0x09,0x00,0x00,0xD6,0x00,0x00,0x00,0x52,0x07,0x00,0x00
	,0x13,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x6B,0x00,0x00,0x00,0x00,0x08,0x00,0x00
	,0x2B,0x00,0x00,0x00,0x00,0x09,0x00,0x00,0xB6,0x00,0x00,0x00,0x00,0x08,0x00,0x00
	,0x0B,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x8B,0x00,0x00,0x00,0x00,0x08,0x00,0x00
	,0x4B,0x00,0x00,0x00,0x00,0x09,0x00,0x00,0xF6,0x00,0x00,0x00,0x50,0x07,0x00,0x00
	,0x05,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x57,0x00,0x00,0x00,0x00,0x08,0x00,0x00
	,0x17,0x00,0x00,0x00,0xC0,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x53,0x07,0x00,0x00
	,0x33,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x77,0x00,0x00,0x00,0x00,0x08,0x00,0x00
	,0x37,0x00,0x00,0x00,0x00,0x09,0x00,0x00,0xCE,0x00,0x00,0x00,0x51,0x07,0x00,0x00
	,0x0F,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x67,0x00,0x00,0x00,0x00,0x08,0x00,0x00
	,0x27,0x00,0x00,0x00,0x00,0x09,0x00,0x00,0xAE,0x00,0x00,0x00,0x00,0x08,0x00,0x00
	,0x07,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x87,0x00,0x00,0x00,0x00,0x08,0x00,0x00
	,0x47,0x00,0x00,0x00,0x00,0x09,0x00,0x00,0xEE,0x00,0x00,0x00,0x50,0x07,0x00,0x00
	,0x09,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x5F,0x00,0x00,0x00,0x00,0x08,0x00,0x00
	,0x1F,0x00,0x00,0x00,0x00,0x09,0x00,0x00,0x9E,0x00,0x00,0x00,0x54,0x07,0x00,0x00
	,0x63,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x7F,0x00,0x00,0x00,0x00,0x08,0x00,0x00
	,0x3F,0x00,0x00,0x00,0x00,0x09,0x00,0x00,0xDE,0x00,0x00,0x00,0x52,0x07,0x00,0x00
	,0x1B,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x6F,0x00,0x00,0x00,0x00,0x08,0x00,0x00
	,0x2F,0x00,0x00,0x00,0x00,0x09,0x00,0x00,0xBE,0x00,0x00,0x00,0x00,0x08,0x00,0x00
	,0x0F,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x8F,0x00,0x00,0x00,0x00,0x08,0x00,0x00
	,0x4F,0x00,0x00,0x00,0x00,0x09,0x00,0x00,0xFE,0x00,0x00,0x00,0x60,0x07,0x00,0x00
	,0x00,0x01,0x00,0x00,0x00,0x08,0x00,0x00,0x50,0x00,0x00,0x00,0x00,0x08,0x00,0x00
	,0x10,0x00,0x00,0x00,0x54,0x08,0x00,0x00,0x73,0x00,0x00,0x00,0x52,0x07,0x00,0x00
	,0x1F,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x08,0x00,0x00
	,0x30,0x00,0x00,0x00,0x00,0x09,0x00,0x00,0xC1,0x00,0x00,0x00,0x50,0x07,0x00,0x00
	,0x0A,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x08,0x00,0x00
	,0x20,0x00,0x00,0x00,0x00,0x09,0x00,0x00,0xA1,0x00,0x00,0x00,0x00,0x08,0x00,0x00
	,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x08,0x00,0x00
	,0x40,0x00,0x00,0x00,0x00,0x09,0x00,0x00,0xE1,0x00,0x00,0x00,0x50,0x07,0x00,0x00
	,0x06,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x58,0x00,0x00,0x00,0x00,0x08,0x00,0x00
};

unsigned int getdword_3(int start)
{
	if (start < 0x487394 || start >= 0x487394 + 281 * 16 - 4)
	{
		printf("getword error");
		return 0xffffffff;
	}
	else
	{
		unsigned int v1, v2, v3, v4;
		int n = start - 0x487394;
		v1 = ss_3[n];
		v2 = ss_3[n + 1];
		v3 = ss_3[n + 2];
		v4 = ss_3[n + 3];

		unsigned int result = (v4 << 24) | (v3 << 16) | (v2 << 8) | v1;
		return result;
	}
}

bool sub_449C70_3(int a1[2])
{
	int v2; // ecx
	int v3; // edx
	unsigned int v4; // eax
	int v5; // ecx
	unsigned int v6; // edx
	int v7; // eax
	int v8; // ecx
	int v9; // eax
	unsigned int v10; // edx
	int v11; // ecx
	int v12; // esi
	int v13; // eax
	unsigned int v14; // ecx
	unsigned int v15; // edx
	unsigned int v16; // ecx
	unsigned int v17; // edx
	unsigned int v18; // ebx
	unsigned int v19; // eax
	unsigned int v20; // eax
	int v21; // eax
	unsigned int v22; // ecx
	int v23; // eax
	unsigned int v24; // ecx
	int v25; // edx
	int v26; // eax
	unsigned int v27; // ecx
	int v28; // edx
	unsigned int v29; // eax
	int v30; // ecx
	int v31; // edx
	int v32; // ecx
	unsigned int v33; // eax
	int v34; // edx
	int v35; // esi
	int *result; // eax
	signed int v37; // [esp+10h] [ebp-4h]

	v2 = a1[1] & 0xF0F0F0F ^ ((unsigned int)*a1 >> 4) & 0xF0F0F0F;
	v3 = v2 ^ a1[1];
	v37 = 8;
	v4 = 16 * v2 ^ *a1;
	v5 = (unsigned __int16)v3 ^ (v4 >> 16);
	v6 = v5 ^ v3;
	v7 = (v5 << 16) ^ v4;
	v8 = v7 & 0x33333333 ^ (v6 >> 2) & 0x33333333;
	v9 = v8 ^ v7;
	v10 = 4 * v8 ^ v6;
	v11 = v9 & 0xFF00FF ^ (v10 >> 8) & 0xFF00FF;
	v12 = 0;
	v13 = v11 ^ v9;
	v14 = 2 * ((v11 << 8) ^ v10) | (((v11 << 8) ^ v10) >> 31);
	v15 = (v13 ^ v14) & 0xAAAAAAAA;
	v16 = v15 ^ v14;
	v17 = 2 * (v15 ^ v13) | ((v15 ^ v13) >> 31);
	do
	{

		v18 = getds3(v12 * 4);
		v19 = getds3(v12 * 4) ^ ((v16 >> 4) | (v16 << 28));
		v12 += 4;
		int med = v18 ^ ((v16 >> 4) | (v16 << 28));
		v17 ^= getdword_3(0x487994 + (v19 & 0x3F) * 4) | getdword_3(0x487794 + 4 * (((med) >> 8) & 0x3F)) | getdword_3(0x487594 + 4 * ((v19 >> 16) & 0x3F)) | getdword_3(0x487394 + 4 * ((v19 >> 24) & 0x3F)) | getdword_3(0x487A94 + 4 * ((v16 ^ getds3(4 * (v12 - 3))) & 0x3F)) | getdword_3(0x487894 + 4 * (((v16 ^ getds3(4 * (v12 - 3))) >> 8) & 0x3F)) | getdword_3(0x487694 + 4 * (((v16 ^ getds3(4 * (v12 - 3))) >> 16) & 0x3F)) | getdword_3(0x487494 + 4 * (((v16 ^ getds3((v12 - 3) * 4)) >> 24) & 0x3F));
		v20 = getds3(4 * (v12 - 2)) ^ ((v17 >> 4) | (v17 << 28));
		v16 ^= getdword_3(0x487994 + 4 * (v20 & 0x3F)) | getdword_3(0x487794 + 4 * ((v20 >> 8) & 0x3F)) | getdword_3(0x487594 + 4 * ((v20 >> 16) & 0x3F)) | getdword_3(0x487394 + 4 * ((v20 >> 24) & 0x3F)) | getdword_3(0x487A94 + 4 * ((v17 ^ getds3(4 * (v12 - 1))) & 0x3F)) | getdword_3((0x487894 + 4 * (((v17 ^ getds3(4 * (v12 - 1))) >> 8) & 0x3F))) | getdword_3(0x487694 + 4 * (((v17 ^ getds3(4 * (v12 - 1))) >> 16) & 0x3F)) | getdword_3(0x487494 + 4 * (((v17 ^ getds3(4 * (v12 - 1))) >> 24) & 0x3F));
		--v37;
	} while (v37);
	v21 = (v16 >> 1) | (v16 << 31);
	v22 = (v17 ^ v21) & 0xAAAAAAAA;
	v23 = v22 ^ v21;
	v24 = ((v22 ^ v17) >> 1) | ((v22 ^ v17) << 31);
	v25 = v23 & 0xFF00FF ^ (v24 >> 8) & 0xFF00FF;
	v26 = v25 ^ v23;
	v27 = (v25 << 8) ^ v24;
	v28 = v26 & 0x33333333 ^ (v27 >> 2) & 0x33333333;
	v29 = v28 ^ v26;
	v30 = 4 * v28 ^ v27;
	v31 = (unsigned __int16)v30 ^ (v29 >> 16);
	v32 = v31 ^ v30;
	v33 = (v31 << 16) ^ v29;
	v34 = v32 & 0xF0F0F0F ^ (v33 >> 4) & 0xF0F0F0F;
	v35 = v33 ^ 16 * v34;
	//result = a1;
	*a1 = v35;
	a1[1] = v32 ^ v34;

	if (a1[0] == 0x6fd599b0 && a1[1] == 0x6559e3cb)
		return true;
	else
		return false;

}

int main()
{  
	//int a1[2] = {0x2000000,0xc0db0000};
	//sub_449C70(a1);
	/* 爆破第一位密码*/
	/*
	int a1[2];
	unsigned int i = 0;
	for (i = 0; i <= 0xffff;i++)
	{   
		printf("i=%x\n",i);
		a1[0] = 0x2000000;
		a1[1] = i << 16;
		if(sub_449C70(a1))
		{
			printf("结果:%X\n", i >> 16);
			getchar();
		}

	}
	*/

	/* 爆破第二位密码*/
	//unsigned __int8 a2[2] = { 0xc1,0xcb };
	//sub_4488B0(a2);

	//unsigned int i ,j;
	//unsigned __int8 a2[2];
	//for (i = 0; i <= 0xff; i++)
	//{   
	//	//printf("%x  ",i);
	//	for (j = 0; j < 0xff; j++)
	//	{
	//		unsigned __int8 a2[2];
	//		a2[0] = i;
	//		a2[1] = j;
	//		//printf("%x %x\n", i,j);
	//		if (sub_4488B0(a2))
	//		{
	//			printf("结果:%X %X\n", i, j);
	//			getchar();
	//		}
	//	}
	//}
	//

	//int a3[2] = {0x2000000,0xc2f00000};
	//sub_449C70_3(a3);
	/* 爆破第一位密码*/
	int a3[2];
	unsigned int i = 0;
	for (i = 0; i <= 0xffff;i++)
	{
		//printf("i=%x\n",i);
		a3[0] = 0x2000000;
		a3[1] = i << 16;
		if(sub_449C70_3(a3))
		{
			printf("i=%x\n", i);
			printf("结果:%X\n", i >> 16);
			getchar();
		}

	}
	

    return 0;
}

           

    通过程序穷尽可以得出三次变化的输入字符串分别为0Xc0db、0xc1cb、0xc2f0,即为汉字的“累了吗”

小试牛刀之逆向CrackMe(一)一、CrackMe初步印象二、破解过程