예제 #1
0
word32 fn0055B8AE(word32 eax, word32 edx, word32 ebx, ptr32 ebxOut)
{
	word32 ebx_4;
	*ebxOut = __rol(ebx, 0x03);
	Mem10[edx + 0x00000000:word32] = Mem0[edx + 0x00000000:word32] - (eax + 0x5656DF0F);
	Mem13[edx + 0x00000000:word32] = __rol(Mem10[edx + 0x00000000:word32], 0x04);
	return eax + 0x5656DF0F;
}
예제 #2
0
void fn0040112B(word32 ecx, word32 edx, word32 ebx, word32 ebp, word32 edi, selector fs)
{
	byte al_15 = (byte) ebx;
	byte v12_20 = Mem0[ebx + 0x00000000:byte] + al_15;
	Mem21[ebx + 0x00000000:byte] = v12_20;
	byte v14_22 = Mem21[ebx + 0x00000000:byte] + al_15;
	Mem23[ebx + 0x00000000:byte] = v14_22;
	byte v15_24 = Mem23[ebx + 0x00000000:byte] + al_15;
	Mem25[ebx + 0x00000000:byte] = v15_24;
	byte v16_26 = Mem25[ebx + 0x00000000:byte] + al_15;
	Mem27[ebx + 0x00000000:byte] = v16_26;
	byte v17_28 = Mem27[ebx + 0x00000000:byte] + al_15;
	Mem29[ebx + 0x00000000:byte] = v17_28;
	byte v18_30 = Mem29[ebx + 0x00000000:byte] + al_15;
	Mem31[ebx + 0x00000000:byte] = v18_30;
	byte v19_32 = Mem31[ebx + 0x00000000:byte] + al_15;
	Mem33[ebx + 0x00000000:byte] = v19_32;
	byte v20_34 = Mem33[ebx + 0x00000000:byte] + al_15;
	Mem35[ebx + 0x00000000:byte] = v20_34;
	byte v21_36 = Mem35[ebx + 0x00000000:byte] + al_15;
	Mem37[ebx + 0x00000000:byte] = v21_36;
	byte v22_38 = Mem37[ebx + 0x00000000:byte] + al_15;
	Mem39[ebx + 0x00000000:byte] = v22_38;
	byte v23_40 = Mem39[ebx + 0x00000000:byte] + al_15;
	Mem41[ebx + 0x00000000:byte] = v23_40;
	byte v24_42 = Mem41[ebx + 0x00000000:byte] + al_15;
	Mem43[ebx + 0x00000000:byte] = v24_42;
	byte v25_44 = Mem43[ebx + 0x00000000:byte] + al_15;
	Mem45[ebx + 0x00000000:byte] = v25_44;
	byte v26_46 = Mem45[ebx + 0x00000000:byte] + al_15;
	Mem47[ebx + 0x00000000:byte] = v26_46;
	byte v27_48 = Mem47[ebx + 0x00000000:byte] + al_15;
	Mem49[ebx + 0x00000000:byte] = v27_48;
	byte v28_50 = Mem49[ebx + 0x00000000:byte] + al_15;
	Mem51[ebx + 0x00000000:byte] = v28_50;
	byte v29_52 = Mem51[ebx + 0x00000000:byte] + al_15;
	Mem53[ebx + 0x00000000:byte] = v29_52;
	word32 edi_10 = ~edi;
	word32 edi_55 = DPB(edi_10, (word16) edi_10 + 0xFF84, 0, 16);
	Mem53[0x00401093:word32]();
	word32 edi_96 = edi_55 + (ebp - 0xFFFFFFF9);
	word32 eax_89 = __rol(ebx, 0x05);
	word32 esp_112 = fp;
	word16 di_110 = (word16) edi_96;
	word32 ecx_99 = DPB(0x00009090, Mem53[ebp - 0xFFFFFFF9:word16] ^ 0x9090, 0, 16);
	byte dh_102 = SLICE((edx & 0x6AD47C2E) + 0x00000001 - 0x00000001, byte, 8);
	if (ecx_99 != 0x00000000)
	{
		ExitThread(edi_96);
		Mem283[ebx - 0x00000035:byte] = Mem53[ebx - 0x00000035:byte] + (byte) (eax_89 + edi_96 | 0x0014008D);
		word32 ecx_278 = DPB(ecx_99, 0x00, 8, 8);
		Mem288[ecx_278 + 0x00000000:byte] = Mem283[ecx_278 + 0x00000000:byte] + dh_102;
		word32 eax_290 = DPB(ecx_99, Mem288[0x00DDB800:byte], 0, 8);
		Mem292[eax_290 + 0x66017000 + eax_290:byte] = Mem288[eax_290 + 0x66017000 + eax_290:byte] + SLICE(ecx_99, byte, 8);
		di_110 = (word16) (edi_96 - 0x00000001);
		esp_112 = fp - 0x00000004;
	}
예제 #3
0
파일: varargs_test.c 프로젝트: uxmal/reko
word32 fn00000001400011B0(word64 rcx, ptr64 & silOut)
{
	*silOut = sil;
	word64 rcx_6 = __rol(rcx, 0x10);
	if (rcx_6 == 0x00)
	{
		__ror(rcx_6, 0x10);
		byte sil_24;
		return fn000000014000147C(qwArg08, out sil_24);
	}
	else
		return eax;
}
예제 #4
0
void fn0055B810(word32 eax, word32 edx, word32 ebp, byte bl)
{
	__xadd(eax, edx);
	word32 eax_9 = fn0055B84B(ebp, dl, bl);
	if (eax_9 != 0x00000000)
	{
		word32 edx_23 = __xadd(0x00000000, eax_9);
		fp->dwFFFFFFFC = edx_23 + 0x0055C1FE;
		Eq_28 * edx_24 = edx_23 + 0x0055C1FE;
		do
		{
			edx_24->dw0000 = edx_24->dw0000 - 0xB00DDFFF;
			edx_24->dw0000 = __ror(edx_24->dw0000, 0x02);
			edx_24->dw0000 = __rol(edx_24->dw0000, 0x11);
			edx_24 = edx_24 + 1;
		} while (edx_24 != edx_23 + 0x0055C69A);
	}
	return;
}
예제 #5
0
Eq_2 * fn0055B818(Eq_2 * edx, byte bl)
{
// def fp
// def edx
// def ecx
// def bl
// def Mem0
	esp_1 = fp;
	esp_2 = fp - 0x00000004;
	dwLoc04_4 = edx;
	esp_5 = fp - 0x00000008;
	dwLoc08_7 = ecx;
	eax_8 = 0x00000000;
	SZO_9 = cond(0x00000000);
	C_10 = false;
	esp_11 = fp - 0x0000000C;
	dwLoc0C_12 = 0x00000000;
	esp_13 = fp - 0x00000010;
	dwLoc10_14 = 0x00000000;
	esp_15 = fp - 0x00000014;
	dwLoc14_16 = fp - 0x00000014;
	esp_17 = fp - 0x00000018;
	dwLoc18_18 = fp - 0x00000018;
	eax_20 = fn0055B837(bl);
	ecx_22 = esp_17->dw0000;
	esp_23 = esp_17 + 0x00000004;
	edx_24 = *esp_23;
	esp_25 = esp_23 + 1;
	eax_26 = eax_20 + 0xB44D9F09;
	v9_27 = edx_24->dw0000 - eax_26;
	edx_24->dw0000 = v9_27;
	SCZO_29 = cond(v9_27);
	v10_30 = (edx_24->dw0000 & 0x00020000) != 0x00000000;
	edx_24->dw0000 = __rol(edx_24->dw0000, 0x0F);
	C_32 = v10_30;
	edx_33 = fn0055B849(ecx_22, edx_24, bl, dwLoc04_4);
	return edx_33;
}
예제 #6
0
void fn0C00_0100(byte bh, Eq_10 * ds)
{
	bios_video_set_mode(0x13);
	Eq_9 Eq_10::*si_18 = &Eq_10::t01BC;
	do
	{
		word16 ax_17 = Mem0[ds:si_18 + 0x0000:word16];
		byte dh_22 = SLICE(ax_17, byte, 8);
		bios_video_set_cursor_position(bh, dh_22, (byte) ax_17);
		si_18 = si_18 + 0x0002 + 0x0001;
		dx = ax_17;
		word16 ax_25 = DPB(dx, 0x02, 8, 8);
		do
		{
			byte al_30 = Mem0[ds:si_18 + 0x0000:byte];
			msdos_write_console_char(al_30);
			ax_25 = DPB(ax_25, al_30, 0, 8);
			si_18 = si_18;
			dx = DPB(dx, al_30, 0, 8);
		} while (al_30 != 0x00);
	} while (dh_22 != 0x00);
	do
	{
		__outb(0x03C9, al_30);
		word16 ax_50 = __rol(DPB(ax_25, ~al_30, 0, 8), 0x01);
		__outb(0x03C9, (byte) ax_50);
		word16 ax_53 = __ror(ax_50, 0x01);
		byte al_54 = (byte) ax_53;
		__outb(0x03C9, al_54);
		word16 ax_57 = DPB(ax_53, ~al_54, 0, 8);
		ax_25 = ax_57 + 0x0001;
		al_30 = (byte) (ax_57 + 0x0001);
	} while (ax_57 != 0x0001);
	Eq_79 Eq_104::*di_111 = Eq_104::a0000;
	byte bl_116 = 0xCC;
	word16 bx_114 = DPB(bx, 0xCC, 0, 8);
	do
	{
		word16 cx_112 = 0x0140;
		byte cl_113 = 0x40;
		do
		{
			Eq_93 al_107;
			if ((0xA000->*di_111).t0000 == 0x00)
			{
				word16 ax_160 = __aam(cl_113 | bl_116);
				al_107 = ((byte) ax_160 | SLICE(ax_160, byte, 8)) & 0x3F;
			}
			else
			{
				Eq_87 al_168 = cl_113 - bl_116;
				al_107 = al_168 - cl_113 - (al_168 <u 0x00);
			}
			(0xA000->*di_111).t0000 = al_107;
			cx_112 = cx_112 - 0x0001;
			di_111 = di_111 + 1;
			cl_113 = (byte) cx_112;
		} while (cx_112 != 0x0000);
		bx_114 = bx_114 - 0x0001;
		bl_116 = (byte) bx_114;
	} while (bx_114 != 0x0000);
	__outb(0x0331, 0x3F);
	Mem129[ss:fp - 0x0002:word16] = 0xFA00;
	byte Eq_104::*si_122 = Eq_104::a0000;
	byte Eq_104::*di_125 = Eq_104::aFFFFFA00;
	word16 cx_126 = 0x0140;
	do
	{
		0xA000->*di_125 = 0xA000->*si_122;
		si_122 = si_122 + 1;
		di_125 = di_125 + 1;
		cx_126 = cx_126 - 0x0001;
	} while (cx_126 != 0x0000);
	Mem151[ss:fp - 0x0002:word16] = 0x0177;
	do
		;
	while (((byte) __inw(0x03DA) & 0x08) == 0x00);
	return;
}
예제 #7
0
void fn0040785A(Eq_56 * fs, word32 dwArg00)
{
	word32 esp_16 = fp - 0x00000022;
	if (true)
		esp_16 = fp - 0x0000002A;
	word32 esp_18 = esp_16 + 0x00000004;
	word32 esi_20 = 0x0000000B;
	word32 * esp_34 = esp_18 - 0x00000004;
	*esp_34 = 0x0000006F;
	word32 esi_29 = esi_20 - 0x0000001A;
	esi_20 = esi_29 + 0x0000001B;
	word32 edi_38 = *esp_34;
	esp_18 = esp_34 + 1;
	word32 eax_40 = globals->dw4094E1;
	while (esi_29 + 0x0000001B != *esp_34)
	{
		esp_34 = esp_18 - 0x00000004;
		*esp_34 = 0x0000006F;
		esi_29 = esi_20 - 0x0000001A;
		esi_20 = esi_29 + 0x0000001B;
		edi_38 = *esp_34;
		esp_18 = esp_34 + 1;
		eax_40 = globals->dw4094E1;
	}
	*esp_34 = edi_38;
	*esp_34 = 0x00000008;
	word32 esi_49 = *esp_34;
	word32 esi_59 = esi_49 - 0x0000000C;
	esi_49 = esi_59 + 0x0000000D;
	edi_38 = edi_38 & globals->dw40923E;
	while (esi_59 != 0xFFFFFFBA)
	{
		if ((eax_40 & 0x000000BA) == 0x00000000)
			eax_40 = edi_38;
		esi_59 = esi_49 - 0x0000000C;
		esi_49 = esi_59 + 0x0000000D;
		edi_38 = edi_38 & globals->dw40923E;
	}
	__ror(0x00000004, 0x60);
	word32 dwLoc08_100 = fs->dw0000;
	fs->dw0000 = fp - 0x00000008;
	do
		;
	while (globals->dw40927B != globals->dw40927B);
	word32 esi_111 = 0x00000003;
	esi_111 = esi_111 + 0x00000001;
	while (esi_111 != 0x00000047)
		esi_111 = esi_111 + 0x00000001;
	do
		;
	while (globals->dw40941F != globals->dw40941F);
	Eq_93 * eax_147 = dwArg00;
	word32 edi_148 = 0x0000002F;
	word32 ebx_152 = globals->dw409403 + 0x00407865;
	word32 edi_160 = edi_148 + globals->dw409498;
	eax_147 = eax_147 + 1;
	edi_148 = edi_160 + 0x00000001;
	while (0xE6FF != (word16) eax_147->dw0000)
	{
		if (ebx_152 == 0x0000000B)
			;
		edi_160 = edi_148 + globals->dw409498;
		eax_147 = eax_147 + 1;
		edi_148 = edi_160 + 0x00000001;
	}
	__rol(edi_160 - 0x000B9337, 0xBC);
	fs->dw0000 = dwLoc08_100;
	fp->dwFFFFFFFC = fp - 0x00000004;
	word32 edx_205 = 0x0004067B;
	if (true)
	{
		__rol(0x00409457, 0x9E);
		eax_147 = (Eq_93 *) 0x00000004;
	}
	do
	{
		fp->dwFFFFFFFC = eax_147;
		fp->dwFFFFFFFC = &globals->t40922F;
		Eq_146 * ebx_230 = null;
		word32 esi_232 = 0x00409490;
		do
		{
			ebx_230->dw0000 = ebx_230->dw0000 - 0x0003EDC7;
			do
				esi_232 = esi_232 + 0x00000058;
			while (globals->dw40929B != globals->dw40929B);
			ebx_230->dw0000 = ebx_230->dw0000 + 0x0007F442;
			ebx_230 = ebx_230 + 1;
		} while (ebx_230 != &globals->t4095C7);
		__rol(0x0007F442, 0xE7);
		edx_205 = edx_205 - 0x00000001;
		word32 eax_282 = globals->dw4092CF;
		if (0x00000000 - globals->dw409265 != 0x00000000)
			eax_282 = (eax_282 - esi_232) * 0x00000002 + globals->dw40946B;
		fp->dwFFFFFFFC = null;
		word32 ecx_294 = globals->dw4092D6;
		eax_147 = eax_282 - 0x00000001;
	} while (edx_205 != 0x0007F442);
	if (ecx_294 == 0x00000000)
		;
	do
		;
	while (0x24C5A2AC == 0x00000000);
	word32 esi_327 = __ror(globals->dw409584 + globals->dw40937F, 0x83);
	if (0x00009206 != 0x00000000)
	{
		__rol(esi_327, 0x68);
		esi_327 = 0x0000000C;
	}
	fp->dwFFFFFFFC = (Eq_93 *) 0x7EC75D8F;
	if (0x0040928F != esi_327)
		;
	do
		;
	while (0x12E965D3 == 0x00000000);
	do
		;
	while (0xFFFFFFDC == 0x00000000);
	word32 esi_393 = globals->dw40949A;
	if (0x0018DDD2 != esi_393)
		;
	if (esi_393 == 0x0000C1C2)
		;
	fp->dwFFFFFFFC = 0x004094B3;
	fp->dwFFFFFFFC = 0x004092E0;
	fp->dwFFFFFFFC = 0x0048F1B2;
	do
		word32 esi_421 = 0x001DF81C;
	while (false);
	do
		__rol(globals->dw4092BD, 0x59);
	while (false);
	do
		esi_421 = esi_421 - globals->dw409451;
	while (0xB9E13182 == 0x00000000);
	__rol(esi_421 - 0x000A6875, 0x0E);
	fp->dwFFFFFFFC = 0x0040943D;
	fp->dwFFFFFFFC = 0x002ED5BE;
	if (true)
		;
	if (globals->dw409589 + 0x0040952B != 0x00145849)
		;
	if (0x0000006B - globals->dw409368 + globals->dw409592 != 0x00000000)
		;
	fp->dwFFFFFFFC = 0x00409290;
	do
		;
	while (globals->dw40936B != globals->dw40936B);
	do
		;
	while (0x0042257E == 0x00000000);
	fp->dwFFFFFFFC = 0x004093DB;
	fp->dwFFFFFFFC = 0x000000AE;
	do
		;
	while (globals->dw409253 != globals->dw409253);
	fp->dwFFFFFFFC = 0x00000061;
	if (false)
		;
	do
		word32 esi_633 = 0x000000CC;
	while (0x00000029 == 0x00000000);
	word32 ebx_645 = 0x004092A0;
	if (false)
	{
		esi_633 = globals->dw409378;
		ebx_645 = 0x004092A0 - esi_633;
		goto l00408204;
	}
l00408204:
	do
	{
		word32 ecx_653 = globals->dw409273;
		esi_633 = esi_633 - ebx_645;
	} while (ecx_653 != globals->dw409273);
	word32 ecx_661 = ecx_653 - esi_633;
	do
		esi_633 = esi_633 - ecx_661;
	while (globals->dw40936F != globals->dw40936F);
	do
		word32 ecx_675 = globals->dw40941F;
	while (ecx_675 != globals->dw40941F);
	fp->dwFFFFFFFC = ecx_675;
	fp->dwFFFFFFFC = 0x000000BC;
	if (esi_633 != 0xE809D013)
		;
	do
		;
	while (globals->dw40926F != globals->dw40926F);
	do
		;
	while (globals->dw4093AF != globals->dw4093AF);
	word32 edi_764 = globals->dw409343 + (0x00409343 - globals->dw40929E);
	if (edi_764 != 0x00000000)
		;
	word32 ebx_781 = edi_764 + 0x00409343 + globals->dw409268 + 0x5802B006;
	do
	{
		__ror(ebx_781, 0x0D);
		ebx_781 = globals->dw409391;
	} while (false);
	fp->dwFFFFFFFC = 0x0040922F;
	return;
}