コード例 #1
0
ファイル: BYTEOPS.c プロジェクト: uxmal/reko
void fn00001000(int32 d0, byte * a0)
{
	struct Eq_4 * a6_8 = *(struct Eq_4 **) 0x04;
	int32 d2_166 = d0;
	byte * a2_249 = a0;
	if (a6_8->w0014 < 0x24)
	{
		word32 * a0_505 = &globals->ptr2B88;
		word32 d0_508 = 0x0C;
		do
		{
			*a0_505 = 0x00;
			a0_505 = a0_505 + 0x01;
			d0_508 = d0_508 - 0x01;
		} while (d0_508 != 0x00);
	}
	*&globals->ptr2B88 = fp;
	*&globals->ptr2B8C = (struct Eq_4 **) a6_8;
	struct Eq_25 * d0_19 = FindTask(0x00);
	struct Eq_31 * d0_112 = OpenLibrary(0x12BC, 0x00);
	if (d0_112 != null)
	{
		int32 d4_460;
		*&globals->ptr2B90 = (struct Eq_31 **) d0_112;
		if (d0_19->ptr00AC == null)
		{
			d4_460 = 0x02;
			d2_166 = 0x08;
		}
		else
		{
			byte * a0_463 = a0;
			d4_460 = 0x03;
			do
			{
				if (*a0_517 == 0x20)
					d4_460 = DPB(d4_460, (word16) d4_460 + 0x01, 0);
				a0_463 = a0_517 + 0x01;
				byte * a0_517 = a0_463;
			} while (*a0_517 != 0x00);
		}
		int32 d0_105 = d4_460 << 0x02;
		int32 d0_107 = d0_105 + d2_166;
		int32 d3_110 = d0_107 + 0x11;
		int32 d1_111 = 0x00010001;
		d0_112 = AllocMem(d0_107 + 0x11, 0x00010001);
		if (d0_112 != null)
		{
			Eq_119 a6_162;
			struct Eq_67 * dwLoc14_159;
			word32 a0_164;
			d0_112->dw0000 = (word32) (d0_107 + 0x11);
			Eq_126 d4_123 = d4_460 - 0x01;
			d0_112[0x03] = (struct Eq_31) d4_123;
			d0_112[0x02] = (struct Eq_31) (d0_112 + 0x04 + d0_105 / 0x04);
			Mem131[0x00:word32] = 0x00;
			struct Eq_67 * d0_132 = d0_19->ptr00AC;
			d0_132->ptr0000 = d0_107 + 0x11;
			d0_132->dw000C = d4_123 - 0x01;
			d0_132->ptr0008 = (byte *) (&d0_132->ptr0010 + d0_105 / 0x0028);
			Mem150[0x00:word32] = 0x00;
			struct Eq_67 * d0_151 = d0_19->ptr00AC;
			if (d0_151 == null)
			{
				fn00001214(d0_19);
				*&globals->ptr2B94 = (struct Eq_67 **) d0_151;
				*&globals->ptr2B98 = (struct Eq_67 **) d0_151;
				Mem403[0x00:word32] = 0x00;
				dwLoc14_159 = d0_151;
				ui32 d0_406 = d0_151->dw0024;
				if (d0_406 != 0x00)
					Enable();
				Supervisor(d0_132);
				d0_132->dw0004 = d0_406;
				d2_166 = 1005;
				if (d0_406 == 0x00)
				{
					fn0000127C(0x0014);
					return;
				}
				*&globals->dw2B9C = d0_406;
				*&globals->dw2BA0 = d0_406;
				*&globals->dw2BA4 = d0_406;
				d0_19->dw009C = d0_406;
				d0_19->dw00A0 = d0_406;
				word32 d0_432 = ((word32[]) 0x08)[d0_406];
				if (d0_432 != 0x00)
					d0_19->dw00A4 = d0_432;
				a6_162 = *&globals->ptr2B8C;
l000011F8:
				a0_164 = d0_19->dw003A;
				goto l00001202;
			}
コード例 #2
0
ファイル: MATRIXMU.c プロジェクト: Lukas-Dresel/reko
void fn00001000(int32 d0, byte * a0)
{
	struct Eq_4 * a6_8 = *(struct Eq_4 **) 0x04;
	int32 d2_235 = d0;
	byte * a2_247 = a0;
	if (a6_8->w0014 < 0x24)
	{
		word32 * a0_502 = &globals->ptr1494;
		word32 d0_505 = 0x0C;
		do
		{
			*a0_502 = 0x00;
			a0_502 = a0_502 + 0x01;
			d0_505 = d0_505 - 0x01;
		} while (d0_505 != 0x00);
	}
	globals->ptr1494 = fp;
	globals->ptr1498 = a6_8;
	struct Eq_25 * d0_19 = FindTask(0x00);
	struct Eq_31 * d0_112 = OpenLibrary(0x12BC, 0x00);
	if (d0_112 != null)
	{
		int32 d4_457;
		globals->ptr149C = d0_112;
		if (d0_19->ptr00AC == null)
		{
			d4_457 = 0x02;
			d2_235 = 0x08;
		}
		else
		{
			byte * a0_460 = a0;
			d4_457 = 0x03;
			do
			{
				if (*a0_514 == 0x20)
					d4_457 = DPB(d4_457, (word16) d4_457 + 0x01, 0);
				a0_460 = a0_514 + 0x01;
				byte * a0_514 = a0_460;
			} while (*a0_514 != 0x00);
		}
		int32 d0_105 = d4_457 << 0x02;
		int32 d0_107 = d0_105 + d2_235;
		int32 d1_111 = 0x00010001;
		d0_112 = AllocMem(d0_107 + 0x11, 0x00010001);
		if (d0_112 != null)
		{
			struct Eq_67 * dwLoc14_159;
			word32 a0_164;
			d0_112->dw0000 = d0_107 + 0x11;
			int32 d4_123 = d4_457 - 0x01;
			d0_112->dw000C = d4_123;
			d0_112->ptr0008 = &d0_112->dw000C + 0x01 + d0_105 / 0x0010;
			Mem131[0x00:word32] = 0x00;
			struct Eq_67 * d0_132 = d0_19->ptr00AC;
			d0_132->ptr0000 = d0_107 + 0x11;
			d0_132->dw000C = d4_123 - 0x01;
			d0_132->ptr0008 = (byte *) (&d0_132->ptr0010 + d0_105 / 0x0028);
			Mem150[0x00:word32] = 0x00;
			struct Eq_67 * d0_151 = d0_19->ptr00AC;
			if (d0_151 == null)
			{
				fn00001214(d0_19);
				globals->ptr14A0 = d0_151;
				globals->ptr14A4 = d0_151;
				Mem401[0x00:word32] = 0x00;
				dwLoc14_159 = d0_151;
				ui32 d0_404 = d0_151->dw0024;
				if (d0_404 != 0x00)
					Enable();
				Supervisor(d0_132);
				d0_132->dw0004 = d0_404;
				if (d0_404 == 0x00)
				{
					fn0000127C(0x0014);
					return;
				}
				globals->dw14A8 = d0_404;
				*(ui32 *) 5292 = d0_404;
				*(ui32 *) 0x14B0 = d0_404;
				d0_19->dw009C = d0_404;
				d0_19->dw00A0 = d0_404;
				word32 d0_429 = ((word32[]) 0x08)[d0_404];
				if (d0_429 != 0x00)
					d0_19->dw00A4 = d0_429;
l000011F8:
				a0_164 = d0_19->dw003A;
				goto l00001202;
			}
			ui32 d0_202 = ((ui32[]) 0x0010)[d0_151];
			Eq_202 (* a0_209)[] = (d0_202 << 0x02) + 0x01;
			int32 d0_210 = (int32) null[d0_202].b0000;
			Mem211[a0_209 + d0_210:byte] = 0x00;
			d0_132->ptr0010 = a0_209;
			ui32 d0_217 = ((ui32[]) 0x0010)[d0_210];
			byte * a1_220 = d0_132->ptr0008;
			Eq_202 (* a0_225)[] = (d0_217 << 0x02) + 0x01;
			int32 d0_226 = (int32) null[d0_217].b0000;
			Mem227[a0_225 + d0_226:byte] = 0x00;
			d0_132->ptr0010 = a0_225;
			word32 * a6_230 = (char *) &d0_132->ptr0010 + 0x04;
			int32 d3_231 = 0x01;
			struct Eq_239 * a0_233 = a0 + d2_235;
l000010DA:
			a0_233 = a0_233 - 0x01;
			if (a0_233->b0000 > 0x20)
			{
				d2_235 = d2_235 - 0x01;
				if (d2_235 != ~0x00)
					goto l000010DA;
			}
			a0_233[0x01] = (struct Eq_239) 0x00;
			do
			{
l000010E6:
				byte v37_256 = *a2_247;
				a2_247 = a2_247 + 0x01;
				d1_111 = DPB(d1_111, v37_256, 0);
				if (v37_256 == 0x00)
					goto l00001148;
			} while (v37_256 == 0x20 || v37_256 == 0x09);
			if (d3_231 - d0_132->dw000C != 0x00)
			{
				*a6_230 = a1_220;
				a6_230 = a6_230 + 0x01;
				d3_231 = DPB(d3_231, (word16) d3_231 + 0x01, 0);
				if (v37_256 != 0x22)
				{
					*a1_220 = v37_256;
					a1_220 = a1_220 + 0x01;
					while (true)
					{
						byte v45_338 = *a2_247;
						a2_247 = a2_247 + 0x01;
						d1_111 = DPB(d1_111, v45_338, 0);
						if (v45_338 == 0x00)
							break;
						if (v45_338 == 0x20)
							goto l00001116;
						*a1_220 = v45_338;
						a1_220 = a1_220 + 0x01;
					}
				}
				else
				{
					while (true)
					{
						byte v70_354 = *a2_247;
						a2_247 = a2_247 + 0x01;
						d1_111 = DPB(d1_111, v70_354, 0);
						if (v70_354 == 0x00)
							break;
						if (v70_354 == 0x22)
						{
l00001116:
							*a1_220 = 0x00;
							a1_220 = a1_220 + 0x01;
							goto l000010E6;
						}
						if (v70_354 == 0x2A)
						{
							byte v73_373 = *a2_247;
							a2_247 = a2_247 + 0x01;
							d1_111 = DPB(d1_111, v73_373, 0);
							if ((v73_373 & 223) == 0x4E)
								d1_111 = 0x0A;
							else if ((v73_373 & 223) == 0x45)
								d1_111 = 0x001B;
						}
						*a1_220 = (byte) d1_111;
						a1_220 = a1_220 + 0x01;
					}
				}
			}
l00001148:
			*a1_220 = 0x00;
			*a6_230 = 0x00;
			execPrivate4();
			globals->dw14A8 = d0_226;
			execPrivate5();
			*(int32 *) 5292 = d0_226;
			dwLoc14_159 = &d0_132->ptr0010;
			dwLoc18 = d3_231;
			if (globals->ptr1498->w0014 >= 0x24)
			{
				word32 v87_298 = d0_19->dw00E0;
				*(word32 *) 0x14B0 = v87_298;
				if (v87_298 != 0x00)
				{
l0000117E:
					if (d0_19->b0008 == 0x0D)
					{
						word32 * a0_288 = d0_19->ptr00B0;
						a0_164 = a0_288 + 0x01 - *a0_288;
l00001202:
						*(word32 *) 0x14BC = a0_164;
						*(ptr32 *) 0x14C0 = fp - 0x18;
						fn00001354(dwLoc18, dwLoc14_159);
						fn0000127C(0x00);
						return;
					}
					goto l000011F8;
				}
			}
			*(int32 *) 0x14B0 = d0_226;
			goto l0000117E;
		}