Decompile

Discuss the development of new homebrew software, tools and libraries.

Moderators: cheriff, TyRaNiD

Post Reply
dark_hex
Posts: 18
Joined: Wed Dec 02, 2009 3:00 am

Decompile

Post by dark_hex »

Decompile when I create a file like this:
BUT THE ORIGINAL MAIN.C ARE VERY DIFERENT.
WHAT IS THE PROBLEM?

Code: Select all

/*
 * Imports from library: velf
 */
extern void velf_CBC0D126 ();
extern void velf_0906BEC5 ();

/*
 * Imports from library: SystemCtrlForKernel
 */
extern int SystemCtrlForKernel_159AF5CC (int arg1, int arg2, int arg3);
extern int SystemCtrlForKernel_B47C9D77 ();
extern void SystemCtrlForKernel_2D10FB28 (int arg1, int arg2, int arg3);
extern void SystemCtrlForKernel_16C3B7EE (int arg1);
extern void SystemCtrlForKernel_85B520C6 (int arg1, int arg2, int arg3);
extern int SystemCtrlForKernel_1C90BECB (int arg1);
extern void SystemCtrlForKernel_31C6160D (int arg1);
extern void SystemCtrlForKernel_512E0CD8 ();
extern void SystemCtrlForKernel_FFEFA034 (int arg1);
extern int SystemCtrlForKernel_AC56B90B ();
extern void SystemCtrlForKernel_B64186D0 (int arg1);
extern void SystemCtrlForKernel_5CB025F0 (int arg1);
extern int SystemCtrlForKernel_F9584CAD (int arg1);
extern void SystemCtrlForKernel_A65E8BC4 (int arg1);
extern int SystemCtrlForKernel_260CA420 (int arg1);
extern void SystemCtrlForKernel_B078D9A0 (int arg1);
extern int SystemCtrlForKernel_E82E932B (int arg1, int arg2, int arg3, int arg4);
extern void SystemCtrlForKernel_324FB7B1 (int arg1, int arg2, int arg3);
extern void SystemCtrlForKernel_CAE6A8E1 (int arg1);
extern void SystemCtrlForKernel_3BC8E648 (int arg1, int arg2, int arg3, int arg4, int arg5);
extern int SystemCtrlForKernel_DC974FF8 (int arg1, int arg2, int arg3);
extern void SystemCtrlForKernel_7E6F2BBA ();
extern void SystemCtrlForKernel_826668E9 (int arg1, int arg2);
extern void SystemCtrlForKernel_98012538 (int arg1, int arg2);
extern void SystemCtrlForKernel_2F157BAF (int arg1);

/*
 * Imports from library: sceUsb_driver
 */
extern void sceUsb_driver_AE5DE6AF (int arg1, int arg2, int arg3);
extern int sceUsb_driver_C2464FA0 ();

/*
 * Imports from library: pspUsbDevice_driver
 */
extern int pspUsbDevice_driver_D4D90520 (int arg1, int arg2, int arg3);
extern void pspUsbDevice_driver_B3CF0329 ();

/*
 * Imports from library: scePower_driver
 */
extern int scePower_driver_FEE03A2F ();

/*
 * Imports from library: SysMemForKernel
 */
extern int SysMemForKernel_6373995D ();
extern void SysMemForKernel_B2C7AA36 (int arg1, int arg2, int arg3);

/*
 * Imports from library: sceCtrl_driver
 */
extern int sceCtrl_driver_1F803938 ();

/*
 * Imports from library: LoadCoreForKernel
 */
extern void LoadCoreForKernel_D8779AC6 ();
extern int LoadCoreForKernel_CF8A41B1 (int arg1);

/*
 * Imports from library: IoFileMgrForKernel
 */
extern void IoFileMgrForKernel_810C4BC3 (int arg1);
extern int IoFileMgrForKernel_109F50BC (int arg1, int arg2, int arg3);
extern int IoFileMgrForKernel_6A638D83 (int arg1, int arg2, int arg3);
extern void IoFileMgrForKernel_42EC03AC (int arg1, int arg2, int arg3);
extern void IoFileMgrForKernel_27EB27B8 (int arg1, int arg2, int arg3, int arg4, int arg5);
extern void IoFileMgrForKernel_68963324 (int arg1, int arg2, int arg3);
extern int IoFileMgrForKernel_B29DDF9C (int arg1);
extern int IoFileMgrForKernel_E3EB004C (int arg1, int arg2);
extern void IoFileMgrForKernel_EB092469 (int arg1);
extern int IoFileMgrForKernel_F27A9C51 (int arg1);
extern void IoFileMgrForKernel_06A70004 (int arg1, int arg2);
extern void IoFileMgrForKernel_1117C65F (int arg1);
extern int IoFileMgrForKernel_ACE946E8 (int arg1, int arg2);
extern void IoFileMgrForKernel_B8A740F4 (int arg1, int arg2, int arg3);
extern int IoFileMgrForKernel_54F5FB11 ();

/*
 * Imports from library: UtilsForKernel
 */
extern void UtilsForKernel_79D1C3FA ();

/*
 * Imports from library: InterruptManagerForKernel
 */
extern void InterruptManagerForKernel_CDC86B64 (int arg1, int arg2, int arg3, int arg4);

/*
 * Imports from library: ThreadManForKernel
 */
extern void ThreadManForKernel_82826F70 ();
extern int ThreadManForKernel_D6DA4BA1 (int arg1, int arg2, int arg3, int arg4, int arg5);
extern void ThreadManForKernel_28B6489C ();
extern void ThreadManForKernel_3F53E640 (int arg1, int arg2);
extern void ThreadManForKernel_4E3A1105 (int arg1, int arg2, int arg3);
extern int ThreadManForKernel_369ED59D ();

/*
 * Imports from library: SysclibForKernel
 */
extern void SysclibForKernel_476FD94A (int arg1, int arg2);
extern int SysclibForKernel_0D188658 (int arg1, int arg2);
extern int SysclibForKernel_47DD934D (int arg1, int arg2, int arg3);
extern int SysclibForKernel_C0AB8932 (int arg1, int arg2);
extern void SysclibForKernel_EC6F1CF2 (int arg1, int arg2);
extern int SysclibForKernel_B1DC2AE8 (int arg1, int arg2);
extern int SysclibForKernel_B49A7697 (int arg1, int arg2, int arg3);
extern int SysclibForKernel_52DF196C (int arg1);
extern void SysclibForKernel_AB7592FF (int arg1, int arg2, int arg3);
extern int SysclibForKernel_10F3BB61 (int arg1, int arg2, int arg3);
extern int SysclibForKernel_81D0D1F7 (int arg1, int arg2, int arg3);
extern void SysclibForKernel_7661E728 (int arg1, int arg2, int arg3, int arg4);

/*
 * Imports from library: ModuleMgrForKernel
 */
extern int ModuleMgrForKernel_977DE386 (int arg1, int arg2, int arg3);
extern void ModuleMgrForKernel_A4370E7C ();
extern int ModuleMgrForKernel_50F0C1EC (int arg1, int arg2, int arg3, int arg4, int arg5);
extern int ModuleMgrForKernel_D1FF982A (int arg1, int arg2, int arg3, int arg4, int arg5);
extern void ModuleMgrForKernel_2E0911AA (int arg1);

/**
 * Subroutine at address 0x00000000
 */
void sub_00000 (int arg1)
{
  var1 = *((int *) 0x00004AB8);
  sp = sp + 0xFFFFFFF8;
  ((int *) sp)[1] = ra;
  var2 = 0x00000000;
  var3 = 0x00000000;
  var4 = var1 + 0x00000000;
  while (1) {
    var5 = ((char *) var4)[40];
    var3 = var3 + 0x00000130;
    if (!(var5 != 0x00000000))
      break;
    var2 = var2 + 0x00000001;
    var4 = var1 + var3;
    if (var2 != 0x00000020)
      continue;
    goto label9;
  }
  ((char *) (var2 + 0x00004C2C))[0] = 0x00000001;
  SysclibForKernel_AB7592FF (var4, arg1, 0x00000130);
  *((int *) 0x00004AB4) = 0x00000001;

label9:
  ra = ((int *) sp)[1];
  sp = sp + 0x00000008;
  return;
}

/**
 * Subroutine at address 0x0000007C
 */
void sub_0007C ()
{
  sp = sp + 0xFFFFFFF8;
  ((int *) sp)[1] = ra;
  ((int *) sp)[0] = s0;
  var3 = LoadCoreForKernel_CF8A41B1 ("sceIOFileManager");
  var4 = ((int *) var3)[27];
  SystemCtrlForKernel_826668E9 ((var4 + 0x0000144C), 0x00001CBC);
  SystemCtrlForKernel_826668E9 ((var4 + 0x000015CC), 0x000013BC);
  SystemCtrlForKernel_826668E9 ((var4 + 0x0000167C), 0x00000E30);
  SystemCtrlForKernel_826668E9 ((var4 + 0x00003CD0), 0x00001B9C);
  SystemCtrlForKernel_826668E9 ((var4 + 0x00003C90), 0x00000C88);
  SystemCtrlForKernel_826668E9 ((var4 + 0x00003DE8), 0x00000A0C);
  SystemCtrlForKernel_826668E9 ((var4 + 0x00003E58), 0x00000940);
  SystemCtrlForKernel_826668E9 ((var4 + 0x00003E90), 0x0000088C);
  SystemCtrlForKernel_826668E9 ((var4 + 0x00003F84), 0x00001AFC);
  SystemCtrlForKernel_826668E9 ((var4 + 0x00003FA4), 0x00001A44);
  SystemCtrlForKernel_826668E9 ((var4 + 0x0000171C), 0x000019B8);
  SystemCtrlForKernel_826668E9 ((var4 + 0x00003F44), 0x0000192C);
  ra = ((int *) sp)[1];
  var29 = ((int *) sp)[0];
  sp = sp + 0x00000008;
  SystemCtrlForKernel_826668E9 ((var4 + 0x00003F28), 0x000007D8);
  return;
}

/**
 * Subroutine at address 0x00000174
 */
void VshCtrlLib_FD26DA72 (int arg1)
{
  sp = sp + 0xFFFFFFF8;
  ((int *) sp)[0] = s0;
  ((int *) sp)[1] = ra;
  var3 = sub_03B3C (0x00000000);
  *((int *) 0x00004AD0) = (arg1 | 0x80000000);
  var6 = sub_03B3C (var3);
  ra = ((int *) sp)[1];
  var7 = ((int *) sp)[0];
  sp = sp + 0x00000008;
  return;
}

/**
 * Subroutine at address 0x000001B8
 */
void sub_001B8 (int arg1, int arg2, int arg3)
{
  var1 = *((int *) 0x00004C28);
  sp = sp + 0xFFFFFFE0;
  ((int *) sp)[7] = ra;
  ((int *) sp)[6] = s5;
  ((int *) sp)[5] = s4;
  ((int *) sp)[4] = s3;
  ((int *) sp)[3] = s2;
  ((int *) sp)[2] = s1;
  ((int *) sp)[1] = s0;
  var2 = arg1;
  var5 var6 = (*var1) (arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8);
  var7 = var5;
  var10 = sub_03B3C (0x00000000);
  var11 = var10;
  var14 = SysclibForKernel_0D188658 (var2, "release:5.50");
  if (var14 != 0x00000000)
  {
    var26 = IoFileMgrForKernel_109F50BC ("flash0:/vsh/etc/version.txt", 0x00000001, 0x00000000);
    var7 = var26;
    if (!(var26 < 0))
    {
      var29 = IoFileMgrForKernel_6A638D83 (var26, var2, arg2);
      ((int *) arg3)[0] = var29;
      IoFileMgrForKernel_810C4BC3 (var26);
      var34 = sub_03B3C (var11);
      var7 = 0x00000000;
    }
    ra = ((int *) sp)[7];
  }
  else
  {
    var17 = sub_03B3C (var11);
    ra = ((int *) sp)[7];
  }
  var18 = ((int *) sp)[6];
  var19 = ((int *) sp)[5];
  var20 = ((int *) sp)[4];
  var21 = ((int *) sp)[3];
  var22 = ((int *) sp)[2];
  var23 = ((int *) sp)[1];
  sp = sp + 0x00000020;
  return;
}

/**
 * Subroutine at address 0x00000294
 */
void sub_00294 (int arg1, int arg2)
{
  sp = sp + 0xFFFFFFF8;
  ((int *) sp)[0] = s0;
  ((int *) sp)[1] = ra;
  var3 = IoFileMgrForKernel_54F5FB11 ();
  var4 = var3;
  ra = ((int *) sp)[1];
  if (!(arg2 != 0x01E18030))
  {
    var5 = *((unsigned char *) 0x00004C58);
    var4 = (var5) ? 0x00000001 : var4;
  }
  var6 = ((int *) sp)[0];
  sp = sp + 0x00000008;
  return;
}

/**
 * Subroutine at address 0x000002DC
 */
void sub_002DC (int arg1)
{
  sp = sp + 0xFFFFFFF0;
  ((int *) sp)[3] = ra;
  ((int *) sp)[2] = s2;
  ((int *) sp)[1] = s1;
  ((int *) sp)[0] = s0;
  var3 = sceUsb_driver_C2464FA0 ();
  var6 = sub_03B3C (0x00000000);
  var9 = SysclibForKernel_C0AB8932 (arg1, "USBStor_Driver");
  if (!(var9 != 0x00000000))
  {
    var10 = *((int *) 0x00004900);
    if (var10 < 0)
    {
    }
    else
    {
      var11 = *((int *) 0x00004C9C);
      if (var11 <= 0)
      {
      }
      else
      {
        if (!(((var11 < 0x00000006)) == 0x00000000))
        {
          pspUsbDevice_driver_B3CF0329 ();
          var14 = *((int *) 0x00004900);
          var17 = ModuleMgrForKernel_D1FF982A (var14, 0x00000000, 0x00000000, 0x00000000, 0x00000000);
          if (var17 < 0)
          {
          }
          else
          {
            var18 = *((int *) 0x00004900);
            ModuleMgrForKernel_2E0911AA (var18);
            *((int *) 0x00004900) = 0xFFFFFFFF;
          }
          var21 = *((unsigned char *) 0x00004C0C);
          if (var21 == 0x00000000)
          {
          }
          else
          {
            var22 = *((int *) 0x00004C9C);
            if (!(var22 != 0x00000005))
            {
              SystemCtrlForKernel_FFEFA034 (0x00000001);
              var27 = SystemCtrlForKernel_AC56B90B ();
              SystemCtrlForKernel_85B520C6 (var27, 0x00000000, 0x00000000);
              *((char *) 0x00004C58) = 0x00000001;
              *((char *) 0x00004C0C) = 0x00000000;
            }
          }
        }
      }
    }
  }
  var32 = sub_03B3C (var6);
  ra = ((int *) sp)[3];
  var33 = ((int *) sp)[2];
  var34 = ((int *) sp)[1];
  var35 = ((int *) sp)[0];
  sp = sp + 0x00000010;
  return;
}

/**
 * Subroutine at address 0x000003EC
 */
void sub_003EC ()
{
  sp = sp + 0xFFFFFFF8;
  ((int *) sp)[1] = ra;
  var3 = ModuleMgrForKernel_977DE386 ("flash0:/kd/reboot150.prx", 0x00000000, 0x00000000);
  if (var3 >= 0)
  {

  label9:
    ra = ((int *) sp)[1];
    sp = sp + 0x00000008;
    var9 = ModuleMgrForKernel_50F0C1EC (var6, 0x00000000, 0x00000000, 0x00000000, 0x00000000);
  }
  else
  {
    var6 = ModuleMgrForKernel_977DE386 ("ms0:/seplugins/reboot150.prx", 0x00000000, 0x00000000);
    if (!(var6 < 0))
      goto label9;
    ra = ((int *) sp)[1];
    sp = sp + 0x00000008;
  }
  return;
}

/**
 * Subroutine at address 0x00000454
 */
void sub_00454 (int arg1, int arg2)
{
  sp = sp + 0xFFFFFFE0;
  ((int *) sp)[7] = ra;
  ((int *) sp)[6] = s6;
  ((int *) sp)[5] = s5;
  ((int *) sp)[4] = s4;
  ((int *) sp)[3] = s3;
  ((int *) sp)[2] = s2;
  ((int *) sp)[1] = s1;
  var1 = arg1;
  ((int *) sp)[0] = s0;
  var4 = sceCtrl_driver_1F803938 ();
  var7 = sub_03B3C (0x00000000);
  var8 = *((unsigned char *) 0x00004C59);
  if (var8 != 0x00000000)
  {
    var97 = *((int *) 0x00004C80);
    if (!(var97 == 0x00000000))
    {
      if (!(var97 == 0x000000DE))
      {
        var100 = scePower_driver_FEE03A2F ();
        if (!(var100 != 0x000000DE))
        {
          var103 = ThreadManForKernel_369ED59D ();
          var104 = *((int *) 0x00004AD4);
          if ((((var103 - var104) < 0x000F4240)) != 0x00000000)
          {
          }
          else
          {
            var105 = *((int *) 0x00004C84);
            var106 = *((int *) 0x00004C80);
            SystemCtrlForKernel_98012538 (var106, var105);
            *((int *) 0x00004AD4) = var103;

          label27:
          }
        }
      }
    }
  }
  else
  {
    var9 = *((int *) 0x00004C80);
    if (!(var9 == 0x00000000))
    {
      var12 = ThreadManForKernel_369ED59D ();
      var13 = var12;
      var14 = *((int *) 0x00004C50);
      if ((((var13 - var14) < 0x00989680)) != 0x00000000)
      {
      }
      else
      {
        var15 = *((int *) 0x00004C84);
        var16 = *((int *) 0x00004C80);
        *((char *) 0x00004C59) = 0x00000001;
        SystemCtrlForKernel_98012538 (var16, var15);
        *((int *) 0x00004AD4) = var13;
        goto label27;
      }
    }
  }
  var21 = LoadCoreForKernel_CF8A41B1 ("VshCtrlSatelite");
  if (var21 != 0x00000000)
  {

  label40:
    var84 = *((int *) 0x00004AD0);
    if (var84 == 0x00000000)
    {
      var89 = *((int *) 0x00004904);
      if (!(var89 < 0))
      {
        var90 = *((int *) 0x00004CA0);
        if (!(var90 != 0x00000001))
        {
          var93 = ModuleMgrForKernel_D1FF982A (var89, 0x00000000, 0x00000000, 0x00000000, 0x00000000);
          if (!(var93 < 0))
          {
            var94 = *((int *) 0x00004904);
            ModuleMgrForKernel_2E0911AA (var94);
          }
        }
      }
    }
    else
    {
      var87 var88 = (*var84) (var1, arg2);
    }
  }
  else
  {
    var24 = LoadCoreForKernel_CF8A41B1 ("Recovery mode");
    if (var24 != 0x00000000)
    {
      goto label40;
    }
    else
    {
      var27 = LoadCoreForKernel_CF8A41B1 ("pspUsbDev_Driver");
      if (var27 != 0x00000000)
      {
        goto label40;
      }
      else
      {
        var30 = LoadCoreForKernel_CF8A41B1 ("htmlviewer_plugin_module");
        if (!(var30 != 0x00000000))
        {
          var33 = LoadCoreForKernel_CF8A41B1 ("sceVshOSK_Module");
          if (!(var33 != 0x00000000))
          {
            var36 = LoadCoreForKernel_CF8A41B1 ("camera_plugin_module");
            if (!(var36 != 0x00000000))
            {
              var37 = ((int *) var1)[1];
              if (!((var37 & 0x00000001) == 0x00000000))
              {
                SysMemForKernel_B2C7AA36 (0x08400000, 0x00400000, 0x0000000F);
                var40 = *((int *) 0x00004CA0);
                *((int *) 0x00004ABC) = 0x00000014;
                *((char *) 0x00004ACD) = 0x00000001;
                *((int *) 0x00004AC4) = 0x00000005;
                *((int *) 0x00004AC0) = 0x00000005;
                if (var40 != 0x00000001)
                {
                  if (var40 != 0x00000002)
                  {
                  }
                  else
                  {
                    var67 = 0x00000000;
                    var68 = 0x0000484C;
                    while (1) {
                      var69 = ((int *) var68)[0];
                      var72 = ModuleMgrForKernel_977DE386 (var69, 0x00000000, 0x00000000);
                      var67 = var67 + 0x00000004;
                      ((int *) (0x00004C10 + var67))[0] = var72;
                      if (!(var72 < 0))
                      {
                        var75 = ModuleMgrForKernel_50F0C1EC (var72, 0x00000000, 0x00000000, 0x00000000, 0x00000000);
                      }
                      var68 = 0x0000484C + var67;
                      if (var67 != 0x00000018)
                        continue;
                      break;
                    }
                    var78 = ModuleMgrForKernel_977DE386 ("flash0:/vsh/module/recovery.prx", 0x00000000, 0x00004ABC);
                    *((int *) 0x00004904) = var78;
                    var81 = ModuleMgrForKernel_50F0C1EC (var78, 0x00000000, 0x00000000, 0x00000000, 0x00000000);
                    ThreadManForKernel_82826F70 ();
                  }
                }
                else
                {
                  var43 = ModuleMgrForKernel_977DE386 ("flash0:/vsh/module/satelite.prx", 0x00000000, 0x00004ABC);
                  *((int *) 0x00004904) = var43;
                  if (!(var43 < 0))
                  {
                    var44 = *((unsigned char *) 0x00004C58);
                    var45 = 0x00000000;
                    if (var44 != 0x00000000)
                    {
                      var63 = SystemCtrlForKernel_AC56B90B ();
                      var45 = var63;
                      var66 = SysclibForKernel_52DF196C (var63);
                    }
                    else
                    {
                    }
                    var46 = *((int *) 0x00004904);
                    var49 = ModuleMgrForKernel_50F0C1EC (var46, 0x00000000, var45, 0x00000000, 0x00000000);
                    var50 = ((int *) var1)[1];
                    ((int *) var1)[1] = (var50 & 0xFFFFFFFE);
                  }
                }
              }
            }
          }
        }
      }
    }
  }
  var53 = sub_03B3C (var7);
  ra = ((int *) sp)[7];
  var54 = ((int *) sp)[6];
  var55 = ((int *) sp)[5];
  var56 = ((int *) sp)[4];
  var57 = ((int *) sp)[3];
  var58 = ((int *) sp)[2];
  var59 = ((int *) sp)[1];
  var60 = ((int *) sp)[0];
  sp = sp + 0x00000020;
  return;
}

/**
 * Subroutine at address 0x000007D8
 */
void sub_007D8 (int arg1, int arg2)
{
  sp = sp + 0xFFFFFFF0;
  ((int *) sp)[1] = s1;
  var1 = arg1;
  ((int *) sp)[2] = s2;
  ((int *) sp)[0] = s0;
  ((int *) sp)[3] = ra;
  var2 = arg2;
  var5 = sub_03B3C (0x00000000);
  var8 = SysclibForKernel_C0AB8932 (var1, "ms0:/PSP/GAME");
  if (!(var8 != 0x00000000))
  {
    IoFileMgrForKernel_06A70004 ("ms0:/PSP/GAME150", var2);
    IoFileMgrForKernel_06A70004 ("ms0:/PSP/GAME5XX", var2);
    IoFileMgrForKernel_06A70004 ("ms0:/ISO", var2);
    IoFileMgrForKernel_06A70004 ("ms0:/ISO/VIDEO", var2);
    IoFileMgrForKernel_06A70004 ("ms0:/SEPLUGINS", var2);
  }
  var21 = sub_03B3C (var5);
  ra = ((int *) sp)[3];
  var22 = ((int *) sp)[2];
  var23 = ((int *) sp)[1];
  var24 = ((int *) sp)[0];
  sp = sp + 0x00000010;
  IoFileMgrForKernel_06A70004 (var1, var2);
  return;
}

/**
 * Subroutine at address 0x0000088C
 */
void sub_0088C (int arg1, int arg2, int arg3)
{
  sp = sp + 0xFFFFFFE8;
  ((int *) sp)[4] = s4;
  var1 = arg1;
  ((int *) sp)[3] = s3;
  ((int *) sp)[2] = s2;
  ((int *) sp)[1] = s1;
  ((int *) sp)[0] = s0;
  ((int *) sp)[5] = ra;
  var2 = arg2;
  var3 = arg3;
  var6 = sub_03B3C (0x00000000);
  var7 = *((int *) 0x00004AAC);
  var8 = 0xFFFFFFFF;
  if (!(var7 == 0x00000000))
  {
    var11 = sub_02710 (var1);
    var8 = var11;
  }
  var14 = sub_03B3C (var6);
  ra = ((int *) sp)[5];
  if (var8 >= 0)
  {
    var15 = ((int *) sp)[4];
    var16 = ((int *) sp)[3];
    var17 = ((int *) sp)[2];
    var18 = ((int *) sp)[1];
    var19 = ((int *) sp)[0];
    sp = sp + 0x00000018;
  }
  else
  {
    var15 = ((int *) sp)[4];
    var16 = ((int *) sp)[3];
    var17 = ((int *) sp)[2];
    var18 = ((int *) sp)[1];
    var19 = ((int *) sp)[0];
    sp = sp + 0x00000018;
    IoFileMgrForKernel_68963324 (var1, var2, var3);
  }
  return;
}

/**
 * Subroutine at address 0x00000940
 */
void sub_00940 (int arg1, int arg2, int arg3, int arg4, int arg5)
{
  sp = sp + 0xFFFFFFE0;
  ((int *) sp)[6] = s5;
  var1 = arg1;
  ((int *) sp)[5] = s4;
  ((int *) sp)[4] = s3;
  ((int *) sp)[3] = s2;
  ((int *) sp)[2] = s1;
  ((int *) sp)[1] = s0;
  ((int *) sp)[7] = ra;
  var2 = arg3;
  var3 = arg4;
  var4 = arg5;
  var7 = sub_03B3C (0x00000000);
  var8 = *((int *) 0x00004AAC);
  var9 = 0xFFFFFFFF;
  if (!(var8 == 0x00000000))
  {
    var12 = sub_02710 (var1);
    var9 = var12;
  }
  var15 = sub_03B3C (var7);
  ra = ((int *) sp)[7];
  if (var9 >= 0)
  {
    var16 = ((int *) sp)[6];
    var17 = ((int *) sp)[5];
    var18 = ((int *) sp)[4];
    var19 = ((int *) sp)[3];
    var20 = ((int *) sp)[2];
    var21 = ((int *) sp)[1];
    sp = sp + 0x00000020;
  }
  else
  {
    var16 = ((int *) sp)[6];
    var17 = ((int *) sp)[5];
    var18 = ((int *) sp)[4];
    var19 = ((int *) sp)[3];
    var20 = ((int *) sp)[2];
    var21 = ((int *) sp)[1];
    sp = sp + 0x00000020;
    IoFileMgrForKernel_27EB27B8 (var1);
  }
  return;
}

/**
 * Subroutine at address 0x00000A0C
 */
void sub_00A0C (int arg1, int arg2, int arg3)
{
  sp = sp + 0xFFFFFFD8;
  ((int *) sp)[1] = s0;
  var1 = arg1;
  ((int *) sp)[5] = s4;
  ((int *) sp)[4] = s3;
  ((int *) sp)[3] = s2;
  ((int *) sp)[2] = s1;
  ((int *) sp)[9] = ra;
  ((int *) sp)[8] = s7;
  ((int *) sp)[7] = s6;
  ((int *) sp)[6] = s5;
  var2 = arg2;
  var3 = arg3;
  var6 = sub_03B3C (0x00000000);
  var7 = var6;
  var8 = *((int *) 0x00004AAC);
  var9 = 0xFFFFFFFF;
  if (!(var8 == 0x00000000))
  {
    var12 = sub_02F10 (var1, var2, var3);
    var9 = var12;
  }
  var13 = *((int *) 0x00004848);
  if (var1 != var13)
  {
    var46 = sub_03B3C (var7);
    ra = ((int *) sp)[9];
    if (var9 >= 0)
    {

    label39:
      var28 = ((int *) sp)[8];
      var29 = ((int *) sp)[7];
      var30 = ((int *) sp)[6];
      var31 = ((int *) sp)[5];
      var32 = ((int *) sp)[4];
      var33 = ((int *) sp)[3];
      var34 = ((int *) sp)[2];
      var35 = ((int *) sp)[1];
      sp = sp + 0x00000028;
    }
    else
    {
      var28 = ((int *) sp)[8];
      var29 = ((int *) sp)[7];
      var30 = ((int *) sp)[6];
      var31 = ((int *) sp)[5];
      var32 = ((int *) sp)[4];
      var33 = ((int *) sp)[3];
      var34 = ((int *) sp)[2];
      var35 = ((int *) sp)[1];
      sp = sp + 0x00000028;
      var49 = IoFileMgrForKernel_6A638D83 (var1, var2, var3);
    }
  }
  else
  {
    var16 = sub_03B3C (var7);
    var19 = IoFileMgrForKernel_6A638D83 (var1, var2, var3);
    var9 = var19;
    var22 = sub_03B3C (0x00000000);
    if (((var9 < 0x00000005)) != 0x00000000)
    {
    }
    else
    {
      var23 = var2;
      var24 = 0x00000000;
      while (1) {
        if (!(((var24 < (var9 + 0xFFFFFFFC))) != 0x00000000))
          break;
        var38 = SysclibForKernel_81D0D1F7 (var23, 0x00004380, 0x00000002);
        if (var38 != 0x00000000)
        {
          var24 = var24 + 0x00000001;

        label32:
          var23 = var23 + 0x00000001;
          continue;
        }
        else
        {
          var41 = SysclibForKernel_52DF196C (var23);
          if (var41 != 0x00000004)
          {
            var24 = var24 + 0x00000001;
            goto label32;
          }
          else
          {
            SysclibForKernel_AB7592FF ((var2 + var24), "5.50", 0x00000004);
          }
        }
      }
    }
    var27 = sub_03B3C (var7);
    ra = ((int *) sp)[9];
    goto label39;
  }
  return;
}

/**
 * Subroutine at address 0x00000B9C
 */
int sub_00B9C (int arg1, int arg2, int arg3)
{
  sp = sp + 0xFFFFFFD8;
  ((int *) sp)[4] = s3;
  var1 = *((int *) 0x00004AB8);
  ((int *) sp)[8] = s7;
  ((int *) sp)[7] = s6;
  ((int *) sp)[6] = s5;
  ((int *) sp)[5] = s4;
  ((int *) sp)[3] = s2;
  ((int *) sp)[2] = s1;
  ((int *) sp)[1] = s0;
  ((int *) sp)[9] = ra;
  var2 = var1;
  var3 = 0x00000000;
  var4 = 0x00000000;
  while (1) {
    var5 = ((char *) var2)[40];
    if (var5 == 0x00000000)
    {
      var3 = var3 + 0x00000001;

    label13:
      var4 = var4 + 0x00000130;
      var2 = var2 + 0x00000130;
      if (var3 != 0x00000020)
        continue;
      var14 = 0x00000000;
    }
    else
    {
      var8 = SysclibForKernel_C0AB8932 ((var2 + 0x00000028), arg1);
      if (var8 != 0x00000000)
      {
        var3 = var3 + 0x00000001;
        goto label13;
      }
      else
      {
        var11 = SysclibForKernel_81D0D1F7 (arg2, (var2 + 0x00000120), 0x00000010);
        if (!(var11 != 0x00000000))
          break;
        var3 = var3 + 0x00000001;
        goto label13;
      }
    }
    goto label18;
  }
  SysclibForKernel_AB7592FF (arg3, (var1 + var4), 0x00000130);
  ((char *) (var3 + 0x00004C2C))[0] = 0x00000001;
  var14 = 0x00000001;

label18:
  ra = ((int *) sp)[9];
  var15 = ((int *) sp)[8];
  var16 = ((int *) sp)[7];
  var17 = ((int *) sp)[6];
  var18 = ((int *) sp)[5];
  var19 = ((int *) sp)[4];
  var20 = ((int *) sp)[3];
  var21 = ((int *) sp)[2];
  var22 = ((int *) sp)[1];
  sp = sp + 0x00000028;
  return var14;
}

/**
 * Subroutine at address 0x00000C88
 */
void sub_00C88 (int arg1)
{
  sp = sp + 0xFFFFFFF0;
  ((int *) sp)[1] = s1;
  var1 = arg1;
  ((int *) sp)[2] = s2;
  ((int *) sp)[0] = s0;
  ((int *) sp)[3] = ra;
  var4 = sub_03B3C (0x00000000);
  var5 = *((int *) 0x00004AAC);
  var6 = 0xFFFFFFFF;
  if (!(var5 == 0x00000000))
  {
    var9 = sub_02850 (var1);
    var6 = var9;
  }
  var10 = *((int *) 0x00004848);
  if (var1 != var10)
  {
  }
  else
  {
    *((int *) 0x00004848) = 0xFFFFFFFF;
  }
  var13 = sub_03B3C (var4);
  ra = ((int *) sp)[3];
  if (var6 >= 0)
  {
    var14 = ((int *) sp)[2];
    var15 = ((int *) sp)[1];
    var16 = ((int *) sp)[0];
    sp = sp + 0x00000010;
  }
  else
  {
    var14 = ((int *) sp)[2];
    var15 = ((int *) sp)[1];
    var16 = ((int *) sp)[0];
    sp = sp + 0x00000010;
    IoFileMgrForKernel_810C4BC3 (var1);
  }
  return;
}

/**
 * Subroutine at address 0x00000D1C
 */
void sub_00D1C ()
{
  var1 = *((int *) 0x00004AB8);
  sp = sp + 0xFFFFFFE0;
  ((int *) sp)[7] = ra;
  ((int *) sp)[6] = s5;
  ((int *) sp)[5] = s4;
  ((int *) sp)[4] = s3;
  ((int *) sp)[3] = s2;
  ((int *) sp)[2] = s1;
  ((int *) sp)[1] = s0;
  if (var1 == 0x00000000)
  {

  label15:
    var12 = 0xFFFFFFFF;
  }
  else
  {
    var2 = 0x00004C2C;
    var3 = 0x00000000;
    while (1) {
      var4 = *((int *) 0x00004AB8);
      var5 = var4 + var3;
      var6 = ((char *) var5)[40];
      var3 = var3 + 0x00000130;
      if (!(var6 == 0x00000000))
      {
        var7 = ((unsigned char *) var2)[0];
        if (!(var7 != 0x00000000))
        {
          *((int *) 0x00004AB4) = 0x00000001;
          var10 = SysclibForKernel_10F3BB61 (var5, 0x00000000, 0x00000130);
        }
      }
      var2 = var2 + 0x00000001;
      if (var3 != 0x00002600)
        continue;
      break;
    }
    var11 = *((int *) 0x00004AB4);
    var12 = 0x00000000;
    if (!(var11 == 0x00000000))
    {
      *((int *) 0x00004AB4) = 0x00000000;
      var13 = 0x00000000;
      while (1) {
        var16 = IoFileMgrForKernel_109F50BC (0x00004384, 0x00000602, 0x000001FF);
        var13 = var13 + 0x00000001;
        var17 = var16;
        if (var16 < 0)
        {
          if (var13 != 0x00000010)
            continue;
          break;
        }
        else
        {
          var18 = *((int *) 0x00004AB8);
          IoFileMgrForKernel_42EC03AC (var17, var18, 0x00002600);
          IoFileMgrForKernel_810C4BC3 (var17);
          var12 = 0x00000000;
        }
        goto label21;
      }
      goto label15;
    }
  }

label21:
  ra = ((int *) sp)[7];
  var23 = ((int *) sp)[6];
  var24 = ((int *) sp)[5];
  var25 = ((int *) sp)[4];
  var26 = ((int *) sp)[3];
  var27 = ((int *) sp)[2];
  var28 = ((int *) sp)[1];
  sp = sp + 0x00000020;
  return;
}

/**
 * Subroutine at address 0x00000E30
 */
void sub_00E30 (int arg1)
{
  sp = sp + 0xFFFFFFF0;
  ((int *) sp)[1] = s1;
  var1 = arg1;
  ((int *) sp)[2] = s2;
  ((int *) sp)[3] = ra;
  ((int *) sp)[0] = s0;
  var4 = sub_03B3C (0x00000000);
  var5 = var4;
  var6 = *((int *) 0x00004AAC);
  if (var6 == 0x00000000)
  {

  label9:
    var16 = *((int *) 0x00004838);
    if (var1 != var16)
    {
    }
    else
    {
      *((int *) 0x00004838) = 0xFFFFFFFF;
      *((int *) 0x00004AA4) = 0x00000000;
      *((int *) 0x00004AA8) = 0x00000000;
      sub_00D1C ();
    }
    var21 = sub_03B3C (var5);
    ra = ((int *) sp)[3];
    var13 = ((int *) sp)[2];
    var14 = ((int *) sp)[1];
    var15 = ((int *) sp)[0];
    sp = sp + 0x00000010;
    IoFileMgrForKernel_EB092469 (var1);
  }
  else
  {
    var9 = sub_02850 (var1);
    if (var9 < 0)
    {
      goto label9;
    }
    else
    {
      var12 = sub_03B3C (var5);
      ra = ((int *) sp)[3];
      var13 = ((int *) sp)[2];
      var14 = ((int *) sp)[1];
      var15 = ((int *) sp)[0];
      sp = sp + 0x00000010;
    }
  }
  return;
}

/**
 * Subroutine at address 0x00000EE4
 */
void sub_00EE4 ()
{
  sp = sp + 0xFFFFFFE8;
  ((int *) sp)[1] = s0;
  var1 = *((int *) 0x00004AB8);
  ((int *) sp)[5] = ra;
  ((int *) sp)[4] = s3;
  ((int *) sp)[3] = s2;
  ((int *) sp)[2] = s1;
  if (!(var1 != 0x00000000))
  {
    var4 = SystemCtrlForKernel_F9584CAD (0x00002600);
    *((int *) 0x00004AB8) = var4;
  }
  var5 = *((int *) 0x00004AB8);
  var8 = SysclibForKernel_10F3BB61 (var5, 0x00000000, 0x00002600);
  var11 = SysclibForKernel_10F3BB61 (0x00004C2C, 0x00000000, 0x00000020);
  var12 = 0x00000000;
  while (1) {
    var15 = IoFileMgrForKernel_109F50BC (0x00004384, 0x00000001, 0x00000000);
    var12 = var12 + 0x00000001;
    var16 = var15;
    if (!(var15 < 0))
      break;
    if (var12 != 0x00000010)
      continue;
    goto label21;
  }
  var17 = *((int *) 0x00004AB8);
  var20 = IoFileMgrForKernel_6A638D83 (var16, var17, 0x00002600);
  IoFileMgrForKernel_810C4BC3 (var16);

label21:
  ra = ((int *) sp)[5];
  var23 = ((int *) sp)[4];
  var24 = ((int *) sp)[3];
  var25 = ((int *) sp)[2];
  var26 = ((int *) sp)[1];
  sp = sp + 0x00000018;
  return;
}

/**
 * Subroutine at address 0x00000FB4
 */
void sub_00FB4 (int arg1)
{
  sp = sp + 0xFFFFFFF8;
  ((int *) sp)[1] = ra;
  ((int *) sp)[0] = s0;
  var1 = ((char *) arg1)[88];
  var2 = arg1 + 0x00000058;
  if (var1 == 0x0000002E)
  {
    ra = ((int *) sp)[1];
    var7 = ((int *) sp)[0];
    sp = sp + 0x00000008;
  }
  else
  {
    var5 = SysclibForKernel_10F3BB61 (var2, 0x00000000, 0x00000100);
    var6 = *((int *) 0x00004AB0);
    ra = ((int *) sp)[1];
    var7 = ((int *) sp)[0];
    sp = sp + 0x00000008;
    *((int *) 0x00004AB0) = (var6 + 0x00000001);
    SysclibForKernel_7661E728 (var2, "MMMMMISO%d", var6);
  }
  return;
}

/**
 * Subroutine at address 0x00001020
 */
int sub_01020 (int arg1, int arg2)
{
  sp = sp + 0xFFFFFEA0;
  ((int *) sp)[86] = s0;
  ((int *) sp)[87] = ra;
  var1 = arg1;
  var2 = sp + 0x00000058;
  if (arg2 == 0x00000000)
  {
  }
  else
  {
  }
  SysclibForKernel_7661E728 (var2, "ms0:/PSP/GAME150/%s%%/EBOOT.PBP", var1, arg4);
  var5 = sp;
  var8 = SysclibForKernel_10F3BB61 (var5, 0x00000000, 0x00000058);
  var9 = sp + 0x00000058;
  var10 = sp;
  var13 = IoFileMgrForKernel_ACE946E8 (var9, var10);
  var14 = 0x00000000;
  if (!(var13 < 0))
  {
    SysclibForKernel_EC6F1CF2 (var1, "__SCE");
    var14 = 0x00000001;
  }
  ra = ((int *) sp)[87];
  var17 = ((int *) sp)[86];
  sp = sp + 0x00000160;
  return var14;
}

/**
 * Subroutine at address 0x000010A0
 */
void sub_010A0 (int arg1, int arg2)
{
  sp = sp + 0xFFFFFFF0;
  ((int *) sp)[2] = s1;
  ((int *) sp)[1] = s0;
  ((int *) sp)[3] = ra;
  var1 = ((char *) arg1)[88];
  var2 = arg1;
  if (var1 == 0x0000002E)
  {
    ra = ((int *) sp)[3];

  label9:
    var7 = ((int *) sp)[2];
    var8 = ((int *) sp)[1];
    sp = sp + 0x00000010;
  }
  else
  {
    var3 = *((int *) 0x00004C60);
    if (var3 == 0x00000000)
    {

    label11:
      ra = ((int *) sp)[3];
      var7 = ((int *) sp)[2];
      var8 = ((int *) sp)[1];
      sp = sp + 0x00000010;
      SysclibForKernel_476FD94A ((var2 + 0x00000058), arg2);
    }
    else
    {
      var6 = sub_01020 ((arg1 + 0x00000058), 0x00000001);
      ra = ((int *) sp)[3];
      if (var6 != 0x00000000)
        goto label9;
      goto label11;
    }
  }
  return;
}

/**
 * Subroutine at address 0x00001118
 */
void sub_01118 ()
{
  sp = sp + 0xFFFFFFF8;
  ((int *) sp)[1] = ra;
  SystemCtrlForKernel_512E0CD8 ();
  InterruptManagerForKernel_CDC86B64 (0x00000004, 0x0000001A, 0x00000000, 0x00000000);
  *((char *) 0x00004C58) = 0x00000000;
  ra = ((int *) sp)[1];
  sp = sp + 0x00000008;
  return;
}

/**
 * Subroutine at address 0x00001150
 */
void sub_01150 (int arg1, int arg2, int arg3)
{
  sp = sp + 0xFFFFFFE8;
  ((int *) sp)[1] = s0;
  var1 = arg1;
  ((int *) sp)[4] = s3;
  ((int *) sp)[3] = s2;
  ((int *) sp)[2] = s1;
  ((int *) sp)[5] = ra;
  var4 = sub_03B3C (0x00000000);
  var7 = SysclibForKernel_C0AB8932 (var1, "USBStor_Driver");
  if (var7 != 0x00000000)
  {
  }
  else
  {
    var8 = *((int *) 0x00004C9C);
    if (!(var8 <= 0))
    {
      if (((var8 < 0x00000006)) == 0x00000000)
      {
      }
      else
      {
        var9 = *((unsigned char *) 0x00004C58);
        if (var9 == 0x00000000)
        {

        label16:
        }
        else
        {
          if (!(var8 != 0x00000005))
          {
            *((char *) 0x00004C0C) = 0x00000001;
            sub_01118 ();
            goto label16;
          }
        }
        var14 = ModuleMgrForKernel_977DE386 ("flash0:/kd/usbdevice.prx", 0x00000000, 0x00000000);
        var15 = var14;
        *((int *) 0x00004900) = var15;
        if (!(var15 < 0))
        {
          var18 = ModuleMgrForKernel_50F0C1EC (var15, 0x00000000, 0x00000000, 0x00000000, 0x00000000);
          if (var18 < 0)
          {
          }
          else
          {
            var19 = *((int *) 0x00004C9C);
            var22 = pspUsbDevice_driver_D4D90520 ((var19 + 0xFFFFFFFF), 0x00000000, 0x00000000);
            if (!(var22 >= 0))
            {
              pspUsbDevice_driver_B3CF0329 ();
            }
          }
        }
      }
    }
  }
  var27 = sub_03B3C (var4);
  ra = ((int *) sp)[5];
  var28 = ((int *) sp)[4];
  var29 = ((int *) sp)[3];
  var30 = ((int *) sp)[2];
  var31 = ((int *) sp)[1];
  sp = sp + 0x00000018;
  sceUsb_driver_AE5DE6AF (var1, arg2, arg3);
  return;
}

/**
 * Subroutine at address 0x00001268
 */
void VshCtrlLib_CD6B3913 (int arg1, int arg2, int arg3)
{
  sp = sp + 0xFFFFFFE8;
  ((int *) sp)[0] = s0;
  ((int *) sp)[5] = ra;
  ((int *) sp)[4] = s4;
  ((int *) sp)[3] = s3;
  ((int *) sp)[2] = s2;
  ((int *) sp)[1] = s1;
  var1 = arg2;
  var4 = sub_03B3C (0x00000000);
  *((int *) 0x00004AD0) = 0x00000000;
  var5 = *((int *) 0x00004C80);
  SysclibForKernel_AB7592FF (0x00004C5C, arg1, 0x00000074);
  SystemCtrlForKernel_2F157BAF (0x00004C5C);
  var10 = *((unsigned char *) 0x00004C59);
  if (!(var10 == 0x00000000))
  {
    var11 = *((int *) 0x00004C80);
    if (!(var11 == var5))
    {
      if (var11 == 0x00000000)
      {
      }
      else
      {
        var12 = *((int *) 0x00004C84);
      }
      SystemCtrlForKernel_98012538 (var11, var12);
      var17 = ThreadManForKernel_369ED59D ();
      *((int *) 0x00004AD4) = var17;
    }
  }
  if (var1 != 0x00000000)
  {
    SystemCtrlForKernel_31C6160D (arg3);
    var31 = *((unsigned char *) 0x00004C58);
    if (var31 != 0x00000000)
    {
      var38 = SystemCtrlForKernel_AC56B90B ();
      var41 = SysclibForKernel_C0AB8932 (var38, var1);
      if (!(var41 == 0x00000000))
      {
        SystemCtrlForKernel_512E0CD8 ();

      label33:
        SystemCtrlForKernel_85B520C6 (var1, 0x00000000, 0x00000000);
      }
    }
    else
    {
      SystemCtrlForKernel_FFEFA034 (0x00000001);
      *((char *) 0x00004C58) = 0x00000001;
      goto label33;
    }
  }
  else
  {
    var18 = *((unsigned char *) 0x00004C58);
    if (!(var18 == 0x00000000))
    {
      sub_01118 ();
    }
  }
  var23 = sub_03B3C (var4);
  ra = ((int *) sp)[5];
  var24 = ((int *) sp)[4];
  var25 = ((int *) sp)[3];
  var26 = ((int *) sp)[2];
  var27 = ((int *) sp)[1];
  var28 = ((int *) sp)[0];
  sp = sp + 0x00000018;
  return;
}

/**
 * Subroutine at address 0x000013BC
 */
void sub_013BC (int arg1, int arg2)
{
  sp = sp + 0xFFFFFF60;
  ((int *) sp)[37] = s5;
  var1 = arg1;
  ((int *) sp)[38] = s6;
  ((int *) sp)[33] = s1;
  ((int *) sp)[39] = ra;
  ((int *) sp)[36] = s4;
  ((int *) sp)[35] = s3;
  ((int *) sp)[34] = s2;
  ((int *) sp)[32] = s0;
  var2 = arg2;
  var5 = sub_03B3C (0x00000000);
  var6 = *((int *) 0x00004AAC);
  if (var6 == 0x00000000)
  {

  label8:
    if (var1 < 0)
    {

    label67:

    label68:
      var101 = IoFileMgrForKernel_E3EB004C (var1, var2);
      var10 = var101;
      if (!(var101 <= 0))
      {
        var102 = *((int *) 0x00004C60);
        if (!(var102 == 0x00000000))
        {
          var105 = sub_01020 ((var2 + 0x00000058), 0x00000000);
        }
      }
    }
    else
    {
      var11 = *((int *) 0x00004838);
      if (var1 != var11)
        goto label68;
      var12 = *((int *) 0x0000483C);
      if (var12 < 0)
      {

      label17:
        var33 = *((int *) 0x0000483C);
        if (var33 >= 0)
        {

        label29:
          var40 = *((int *) 0x00004840);
        }
        else
        {
          var34 = *((int *) 0x00004840);
          if (var34 >= 0)
          {
            var40 = *((int *) 0x00004840);
          }
          else
          {
            var35 = *((int *) 0x00004844);
            if (var35 >= 0)
            {
              var40 = *((int *) 0x00004840);
            }
            else
            {
              var36 = *((int *) 0x00004AA4);
              if (var36 != 0x00000000)
              {
              }
              else
              {
                var39 = IoFileMgrForKernel_B29DDF9C ("ms0:/PSP/GAME5XX");
                *((int *) 0x00004840) = var39;
                if (!(var39 >= 0))
                {
                  *((int *) 0x00004AA4) = 0x00000001;
                }
              }
              goto label29;
            }
          }
        }
        if (var40 < 0)
        {

        label37:
          var47 = *((int *) 0x0000483C);
          if (var47 >= 0)
          {

          label58:
            var62 = *((int *) 0x00004844);
          }
          else
          {
            var48 = *((int *) 0x00004840);
            if (var48 >= 0)
            {
              var62 = *((int *) 0x00004844);
            }
            else
            {
              var49 = *((int *) 0x00004844);
              var50 = *((int *) 0x00004844);
              if (var50 >= 0)
              {
                var62 = *((int *) 0x00004844);
              }
              else
              {
                var51 = *((int *) 0x00004844);
                var52 = *((int *) 0x00004AA8);
                if (var52 != 0x00000000)
                {
                  var62 = *((int *) 0x00004844);
                }
                else
                {
                  var53 = *((int *) 0x00004844);
                  var56 = IoFileMgrForKernel_B29DDF9C ("ms0:/ISO");
                  *((int *) 0x00004844) = var56;
                  if (var56 < 0)
                  {
                    *((int *) 0x00004AA8) = 0x00000001;
                  }
                  else
                  {
                    var57 = *((int *) 0x00004AAC);
                    if (var57 != 0x00000000)
                    {
                      sub_02EA0 ();
                    }
                    else
                    {
                      sub_035B0 ();
                      *((int *) 0x00004AAC) = 0x00000001;
                    }
                    sub_00EE4 ();
                    *((int *) 0x00004AB0) = 0x00000000;
                  }
                  goto label58;
                }
              }
            }
          }
          if (var62 < 0)
            goto label67;
          var63 = *((int *) 0x00004844);
          while (1) {
            var66 = IoFileMgrForKernel_E3EB004C (var63, var2);
            var10 = var66;
            if (var66 <= 0)
              break;
            var67 = ((int *) var2)[0];
            var68 = *((int *) 0x00004844);
            if ((var67 & 0x0000F000) == 0x00001000)
              continue;
            var69 = sp;
            SysclibForKernel_EC6F1CF2 (var69, "ms0:/ISO/");
            var72 = var2 + 0x00000030;
            var73 = sp;
            SysclibForKernel_476FD94A (var73, (var2 + 0x00000058));
            var76 = sp;
            var79 = sub_00B9C (var76, var72, 0x00004ADC);
            if (var79 == 0x00000000)
            {
              var93 = sp;
              var82 = sub_037F8 (var93, var72, 0x00004ADC);
              var83 = 0x00000001;
            }
            else
            {
              var82 = sub_02A8C (0x00004ADC);
              var83 = 0x00000000;
            }
            if (!(var82 < 0))
            {
              sub_00FB4 (var2);
              ((int *) var2)[0] = 0x000011FF;
              ((int *) var2)[1] = 0x00000010;
              ((int *) var2)[2] = 0x00000000;
              ((int *) var2)[3] = 0x00000000;
              SysclibForKernel_AB7592FF (var72, (var2 + 0x00000010), 0x00000010);
              if (!(var83 == 0x00000000))
              {
                sub_00000 (0x00004ADC);
              }
              var90 = *((unsigned char *) 0x00004C58);
              if (!(var90 == 0x00000000))
              {
                sub_01118 ();
              }
            }
            goto label106;
          }
          var96 = *((int *) 0x00004844);
          IoFileMgrForKernel_EB092469 (var96);
          *((int *) 0x00004844) = 0xFFFFFFFF;
          *((int *) 0x00004AA8) = 0x00000001;
          goto label67;
        }
        else
        {
          var43 = IoFileMgrForKernel_E3EB004C (var40, var2);
          var10 = var43;
          if (var43 <= 0)
          {
            var44 = *((int *) 0x00004840);
            IoFileMgrForKernel_EB092469 (var44);
            *((int *) 0x00004840) = 0xFFFFFFFF;
            *((int *) 0x00004AA4) = 0x00000001;
            goto label37;
          }
          else
          {
            var16 = var2;
            var17 = "__5XX";

          label103:
            sub_010A0 (var16, var17);
          }
        }
      }
      else
      {
        var15 = IoFileMgrForKernel_E3EB004C (var12, var2);
        var10 = var15;
        if (var15 <= 0)
        {
          var30 = *((int *) 0x0000483C);
          IoFileMgrForKernel_EB092469 (var30);
          *((int *) 0x0000483C) = 0xFFFFFFFF;
          goto label17;
        }
        else
        {
          var16 = var2;
          var17 = "__150";
          goto label103;
        }
      }
    }
  }
  else
  {
    var9 = sub_02B34 (var1, var2);
    var10 = var9;
    if (!(var9 >= 0))
      goto label8;
  }

label106:
  var22 = sub_03B3C (var5);
  ra = ((int *) sp)[39];
  var23 = ((int *) sp)[38];
  var24 = ((int *) sp)[37];
  var25 = ((int *) sp)[36];
  var26 = ((int *) sp)[35];
  var27 = ((int *) sp)[34];
  var28 = ((int *) sp)[33];
  var29 = ((int *) sp)[32];
  sp = sp + 0x000000A0;
  return;
}

/**
 * Subroutine at address 0x00001740
 */
void sub_01740 (int arg1)
{
  sp = sp + 0xFFFFFFF8;
  ((int *) sp)[1] = ra;
  if (arg1 == 0x00000000)
  {

  label6:
    ra = ((int *) sp)[1];
    sp = sp + 0x00000008;
  }
  else
  {
    var3 = SysclibForKernel_B1DC2AE8 (arg1, 0x00000025);
    ra = ((int *) sp)[1];
    if (var3 == 0x00000000)
      goto label6;
    sp = sp + 0x00000008;
    SysclibForKernel_EC6F1CF2 (var3, (var3 + 0x00000001));
  }
  return;
}

/**
 * Subroutine at address 0x00001778
 */
int sub_01778 (int arg1)
{
  sp = sp + 0xFFFFFFE8;
  ((int *) sp)[4] = s1;
  ((int *) sp)[3] = s0;
  ((int *) sp)[5] = ra;
  var3 = SysclibForKernel_0D188658 (arg1, "ms0:/PSP/GAME/MMMMMISO");
  var4 = var3;
  var5 = 0xFFFFFFFF;
  if (!(var4 != arg1))
  {
    var8 = SysclibForKernel_B1DC2AE8 ((var4 + 0x00000011), 0x0000002F);
    var9 = var4 + 0x00000016;
    if (!(var8 == 0x00000000))
    {
      var10 = sp;
      ((int *) sp)[0] = 0x00000000;
      ((char *) sp)[4] = 0x00000000;
      var13 = SysclibForKernel_B49A7697 (var10, var9, (var8 - var9));
      var14 = sp;
    }
    var5 = SysclibForKernel_47DD934D (var14, 0x00000000, 0x0000000A);
  }
  ra = ((int *) sp)[5];
  var17 = ((int *) sp)[4];
  var18 = ((int *) sp)[3];
  sp = sp + 0x00000018;
  return var5;
}

/**
 * Subroutine at address 0x000017F4
 */
void sub_017F4 (int arg1)
{
  sp = sp + 0xFFFFFEF0;
  ((int *) sp)[66] = s2;
  ((int *) sp)[64] = s0;
  ((int *) sp)[67] = ra;
  ((int *) sp)[65] = s1;
  var3 = SysclibForKernel_0D188658 (arg1, "ms0:/PSP/GAME/");
  var4 = var3;
  if (!(var3 != arg1))
  {
    var5 = sp;
    SysclibForKernel_EC6F1CF2 (var5, var3);
    var8 = sp;
    var11 = SysclibForKernel_0D188658 (var8, "__5XX");
    var12 = var11;
    if (!(var11 == 0x00000000))
    {
      SysclibForKernel_EC6F1CF2 ((var4 + 0x0000000D), "5XX/");
      var15 = sp + 0x0000000E;
      var16 = var12 - var15;
      var19 = SysclibForKernel_B49A7697 ((var4 + 0x00000011), var15, var16);
      SysclibForKernel_EC6F1CF2 ((var4 + (var16 + 0x00000011)), (var12 + 0x00000005));
    }
  }
  ra = ((int *) sp)[67];
  var22 = ((int *) sp)[66];
  var23 = ((int *) sp)[65];
  var24 = ((int *) sp)[64];
  sp = sp + 0x00000110;
  return;
}

/**
 * Subroutine at address 0x00001890
 */
void sub_01890 (int arg1)
{
  sp = sp + 0xFFFFFEF0;
  ((int *) sp)[66] = s2;
  ((int *) sp)[64] = s0;
  ((int *) sp)[67] = ra;
  ((int *) sp)[65] = s1;
  var3 = SysclibForKernel_0D188658 (arg1, "ms0:/PSP/GAME/");
  var4 = var3;
  if (!(var3 != arg1))
  {
    var5 = sp;
    SysclibForKernel_EC6F1CF2 (var5, var3);
    var8 = sp;
    var11 = SysclibForKernel_0D188658 (var8, "__150");
    var12 = var11;
    if (!(var11 == 0x00000000))
    {
      SysclibForKernel_EC6F1CF2 ((var4 + 0x0000000D), "150/");
      var15 = sp + 0x0000000E;
      var16 = var12 - var15;
      var19 = SysclibForKernel_B49A7697 ((var4 + 0x00000011), var15, var16);
      SysclibForKernel_EC6F1CF2 ((var4 + (var16 + 0x00000011)), (var12 + 0x00000005));
    }
  }
  ra = ((int *) sp)[67];
  var22 = ((int *) sp)[66];
  var23 = ((int *) sp)[65];
  var24 = ((int *) sp)[64];
  sp = sp + 0x00000110;
  return;
}

/**
 * Subroutine at address 0x0000192C
 */
void sub_0192C (int arg1)
{
  sp = sp + 0xFFFFFFF0;
  ((int *) sp)[1] = s0;
  var1 = arg1;
  ((int *) sp)[3] = ra;
  ((int *) sp)[2] = s1;
  var4 = sub_03B3C (0x00000000);
  var5 = var4;
  sub_01890 (var1);
  sub_017F4 (var1);
  var12 = sub_01778 (var1);
  if (var12 < 0)
  {
    var23 = sub_03B3C (var5);
    ra = ((int *) sp)[3];
    var19 = ((int *) sp)[2];
    var20 = ((int *) sp)[1];
    sp = sp + 0x00000010;
    IoFileMgrForKernel_1117C65F (var1);
  }
  else
  {
    var15 = sub_0266C (var12);
    var18 = sub_03B3C (var5);
    ra = ((int *) sp)[3];
    var19 = ((int *) sp)[2];
    var20 = ((int *) sp)[1];
    sp = sp + 0x00000010;
  }
  return;
}

/**
 * Subroutine at address 0x000019B8
 */
void sub_019B8 (int arg1)
{
  sp = sp + 0xFFFFFFF0;
  ((int *) sp)[1] = s0;
  var1 = arg1;
  ((int *) sp)[3] = ra;
  ((int *) sp)[2] = s1;
  var4 = sub_03B3C (0x00000000);
  var5 = var4;
  sub_01890 (var1);
  sub_017F4 (var1);
  var12 = sub_01778 (var1);
  if (var12 < 0)
  {
    var23 = sub_03B3C (var5);
    ra = ((int *) sp)[3];
    var19 = ((int *) sp)[2];
    var20 = ((int *) sp)[1&#
jimparis
Posts: 1145
Joined: Fri Jun 10, 2005 4:21 am
Location: Boston

Re: Decompile

Post by jimparis »

dark_hex wrote:BUT THE ORIGINAL MAIN.C ARE VERY DIFERENT.
WHAT IS THE PROBLEM?
The problem is that your expectations for a decompiler is wrong. A decompiler can never recreate the original C source code in the general case.
Lechter
Posts: 8
Joined: Tue Nov 03, 2009 11:19 pm

Post by Lechter »

Are the codes maded by IDA hex-rays plugin?
Sorry for my poor English...
Draan
Posts: 48
Joined: Sat Oct 17, 2009 3:39 am

Post by Draan »

VshCtrl Module? :P

Decompiler is making still very good job. This is really everything you can get from a compiled .ASM code. There's up to you to change this to compilable code.
dark_hex
Posts: 18
Joined: Wed Dec 02, 2009 3:00 am

Post by dark_hex »

Lechter wrote:Are the codes maded by IDA hex-rays plugin?
No.
dark_hex
Posts: 18
Joined: Wed Dec 02, 2009 3:00 am

Post by dark_hex »

Draan wrote:VshCtrl Module? :P

Decompiler is making still very good job. This is really everything you can get from a compiled .ASM code. There's up to you to change this to compilable code.
And how do that?
Draan
Posts: 48
Joined: Sat Oct 17, 2009 3:39 am

Post by Draan »

Just code something, decompile it and compare the codes.
hlide
Posts: 739
Joined: Sun Sep 10, 2006 2:31 am

Re: Decompile

Post by hlide »

dark_hex wrote:BUT THE ORIGINAL MAIN.C ARE VERY DIFERENT.
WHAT IS THE PROBLEM?
in mathematical term, compiling and decompiling are not bijective. So if you are expecting to get your original source, you're not qualified.
m0skit0
Posts: 191
Joined: Tue Jun 02, 2009 8:58 pm

Post by m0skit0 »

You do it by thinking a little. No way you can get the original C source by using a decompiler. In fact the decompiler just gives you a nicer presentation of the assebly, nothing else.
The Incredible Bill Gates wrote:The obvious mathematical breakthrough would be development of an easy way to factor large prime numbers.
Post Reply