/* This file was automatically created by * Reverse Engineering Compiler 1.5f (C) Giampiero Caprino (Feb 29 2000) * Input file: 'pcmcia.o' */ /* Procedure: 0x00000000 - 0x00000017 * Argument size: 0 * Local size: 0 * Save regs size: 0 */ ConfigureMachine() { if(ConfigureSocket() == 0) { SetPCMCIAForInterruptType(); return(0); } return(eax & 65535); } /* Procedure: 0x00000018 - 0x0000001F * Argument size: 0 * Local size: 0 * Save regs size: 0 */ L00000018() { esi = esi + SocketTbl; } /* Procedure: 0x00000020 - 0x00000263 * Argument size: 8 * Local size: 0 * Save regs size: 0 */ ConfigureSocket(A4, A8) /* unknown */ void A4; /* unknown */ void A8; { /* unknown */ void Vffffffc4; esp = esp - IntTbl; (save)esi; (save)ebx; esi = L00000026(); L0000002d(); al = *(( *SocketTbl & 255) + SocketTbl); *SocketTbl = SocketTbl; WritePCICReg(); L00000056(); ReadPCICReg(1, 300, 2, SocketTbl); if((al & 12) != 12) { (save)esi; L0000006c(); eax = 1; esp = esp + IntTbl; goto L00000260; esi = esi + SocketTbl; } WritePCICReg(); L0000008f(); WritePCICReg(); ReadPCICReg(1, 2, 213, 300, 2, 21); if(!(al & 64)) { (save)esi; L000000af(); eax = 2; esp = esp + IntTbl; } else { (save)187; (save)7; eax = WritePCICReg(); (save)( *SocketTbl | 96) & 255; (save)3; WritePCICReg(); (save) *SocketTbl & 255; (save)8; WritePCICReg(); (save) *L00000001 & 255; (save)9; eax = WritePCICReg(); esp = esp + ConfigureSocket; (save) *SocketTbl + 7 & 255; (save)10; WritePCICReg(); (save)( *SocketTbl & 65535) + 7 >> 8 & 255; (save)11; WritePCICReg(); (save) *L00000001 & 255; (save)16; WritePCICReg(); (save)SocketTbl; (save)17; WritePCICReg(); esp = esp + ConfigureSocket; (save) *L00000001 & 255; (save)18; WritePCICReg(); (save)SocketTbl; (save)19; WritePCICReg(); (save)( ~( *SocketTbl >> 8) & 63 | 64) & 255; (save)20; WritePCICReg(); (save)bx >> 8 & 255; (save)21; WritePCICReg(); esp = esp + ConfigureSocket; L0000019d(); ebx = L000001a2(); goto L000001c7; esi = esi + SocketTbl; goto L000001b0; L000001c7: do { L000001c8(); if(ax - bx > 600) { break; } L000001b0: (save)1; ReadPCICReg(); A8 = al; esp = esp + IntTbl; } while(!(A4 & ConfigureSocket)); if(!(A4 & ConfigureSocket)) { (save)IntTbl; (save)78; L000001e3(); (save)IntTbl; (save)111; L000001ec(); (save)IntTbl; (save)116; L000001f5(); (save)IntTbl; (save)82; L000001fe(); esp = esp + ConfigureSocket; (save)IntTbl; (save)101; L0000020a(); (save)IntTbl; (save)97; L00000213(); (save)IntTbl; (save)100; L0000021c(); (save)IntTbl; (save)121; L00000225(); esp = esp + ConfigureSocket; (save)IntTbl; (save)Vffffffc4 & 255; L00000236(); (save)esi; L0000023c(); eax = 3; } else { L00000248(); WritePCICReg(); L00000257(esi, 6, 65); eax = 0; } } L00000260: (restore)ebx; (restore)esi; (restore)ecx; } /* Procedure: 0x00000264 - 0x0000026F * Argument size: 0 * Local size: 0 * Save regs size: 0 */ L00000264() { esi = esi + SocketTbl; edi = edi + SocketTbl; } /* Procedure: 0x00000270 - 0x00000286 * Argument size: 0 * Local size: 0 * Save regs size: 0 */ SetPCMCIAForInterruptType() { eax = ( *SocketTbl & 65535) + *SocketTbl; *SocketTbl = eax; *eax = 65; } /* Procedure: 0x00000287 - 0x0000028F * Argument size: 0 * Local size: 0 * Save regs size: 0 */ L00000287() { edi = edi + SocketTbl; } stack space not deallocated on return /* Procedure: 0x00000290 - 0x000002D5 * Argument size: 0 * Local size: 0 * Save regs size: 4 */ ClearPCMCIAInt() { /* unknown */ void ebx; ebx = L00000292(); L00000299(); if(*SocketTbl != SocketTbl) { L000002b0(); L000002ba(128, *SocketTbl & 65535); } else { al = *( *SocketTbl); } eax = L000002cd(ebx); esp = esp + IntTbl; } /* Procedure: 0x000002D6 - 0x000002DF * Argument size: 0 * Local size: 0 * Save regs size: 0 */ L000002D6() { esi = esi + SocketTbl; edi = edi + SocketTbl; } /* Procedure: 0x000002E0 - 0x00000307 * Argument size: 0 * Local size: 0 * Save regs size: 4 */ TurnPowerOff() { /* unknown */ void ebx; L000002e9(); WritePCICReg(); L000002f9(); return(L000002ff(L000002e2(), 7, 2, SocketTbl)); } /* Procedure: 0x00000308 - 0x0000030F * Argument size: 0 * Local size: 0 * Save regs size: 0 */ L00000308() { esi = esi + SocketTbl; } /* Procedure: 0x00000310 - 0x0000036B * Argument size: 16 * Local size: 0 * Save regs size: 4 */ InsertedPCMCIACard(A8, Ac, A10, A14) /* unknown */ void A8; /* unknown */ void Ac; /* unknown */ void A10; /* unknown */ void A14; { *SocketTbl = 255; eax = Ac; if(*SocketTbl != SocketTbl) { *SocketTbl = dl; *SocketTbl = eax << 12 >> 16; *SocketTbl = bx; *SocketTbl = cl + 9; *SocketTbl = SocketTbl; eax = 0; goto L0000036a; esi = esi + SocketTbl; } eax = L00000361() & 255; L0000036a: } /* Procedure: 0x0000036C - 0x0000036F * Argument size: 0 * Local size: 0 * Save regs size: 0 */ L0000036C() { esi = esi + SocketTbl; } /* Procedure: 0x00000370 - 0x00000385 * Argument size: 0 * Local size: 0 * Save regs size: 0 */ RemovedPCMCIACard() { *SocketTbl = SocketTbl; L00000378(); *SocketTbl = SocketTbl; return(0); } /* Procedure: 0x00000386 - 0x0000038F * Argument size: 0 * Local size: 0 * Save regs size: 0 */ L00000386() { esi = esi + SocketTbl; edi = edi + SocketTbl; } /* Procedure: 0x00000390 - 0x000003D9 * Argument size: 0 * Local size: 0 * Save regs size: 0 */ ParameterRangeCheck() { if(*SocketTbl + -40960 <= 24320) { if(*SocketTbl == SocketTbl) { goto L000003b0; } } return(1); L000003b0: if(*SocketTbl > 15) { return(2); } if(*(( *SocketTbl & 255) + SocketTbl) != SocketTbl) { return(0); } return(2); } /* Procedure: 0x000003DA - 0x000003DF * Argument size: 0 * Local size: 0 * Save regs size: 0 */ L000003DA() { esi = esi + SocketTbl; } /* Procedure: 0x000003E0 - 0x00000414 * Argument size: 8 * Local size: 0 * Save regs size: 4 */ WritePCICReg(A8, Ac) /* unknown */ void A8; /* unknown */ void Ac; { /* unknown */ void ebx; (save)(A8 & 255) + ( *SocketTbl & 65535); (save)WritePCICReg; L000003fd(); (save)Ac & 255; (save)993; esp = esp + 16; return(L0000040c()); } /* Procedure: 0x00000415 - 0x0000041F * Argument size: 0 * Local size: 0 * Save regs size: 0 */ L00000415() { esi = esi + SocketTbl; edi = edi + SocketTbl; } /* Procedure: 0x00000420 - 0x0000044E * Argument size: 0 * Local size: 0 * Save regs size: 0 */ ReadPCICReg() { eax = *(esp + IntTbl) & 255; L00000438(); return(L00000442(993, WritePCICReg, eax + ( *SocketTbl & 65535)) & 255); } /* Procedure: 0x0000044F - 0x0000044F * Argument size: 0 * Local size: 0 * Save regs size: 0 */ L0000044F() { } stack space not deallocated on return /* Procedure: 0x00000450 - 0x000005CC * Argument size: 0 * Local size: 0 * Save regs size: 0 */ CheckForOnePiece() { if(*SocketTbl != SocketTbl) { *SocketTbl = 256; L00000467(); L00000470(); L00000479(99, 6, 80, 6, 49, 6); return(0); L00000483: edx = edx + 10; ax = ( *edx & 255) << 8; *SocketTbl = ax; dl = *(edx - 2); *SocketTbl = *SocketTbl | SocketTbl; } else { *SocketTbl = SocketTbl; edx = *SocketTbl; ecx = edx + 45055; if(edx != ecx) { esi = esi + SocketTbl; do { al = *edx; if(al == 26) { goto L00000483; } if(al == 255) { goto L000004e0; } edx = edx + (( *(edx + 2) & 255) + ( *(edx + 2) & 255) + IntTbl & 65535); } while(edx != ecx); } } L000004e0: ax = *SocketTbl; if(ax == 256) { (save)6; *SocketTbl = 1; (save)49; goto L00000574; esi = esi + SocketTbl; } if(ax != 2048) { (save)IntTbl; (save)77; L0000050b(); (save)IntTbl; (save)101; L00000514(); (save)IntTbl; (save)109; L0000051d(); (save)IntTbl; (save)87; L00000526(); esp = esp + ConfigureSocket; (save)IntTbl; (save)105; L00000532(); (save)IntTbl; (save)110; L0000053b(); (save)IntTbl; (save)70; L00000544(); (save)IntTbl; (save)97; L0000054d(); esp = esp + ConfigureSocket; L00000559(); L00000562(108, IntTbl, 105, IntTbl); return(255); } (save)6; (save)50; L00000574: L00000575(); esp = esp + 8; (save)6; (save)80; L00000581(); (save)6; (save)105; L0000058a(); (save)6; (save)101; L00000593(); (save)6; (save)99; L0000059c(); esp = esp + ConfigureSocket; L000005a8(); L000005b1(); L000005ba(); L000005c3(77, 6, 67, 6, 80, 6, 101, 6); esp = esp + ConfigureSocket; return(0); } /* Procedure: 0x000005CD - 0x000005CF * Argument size: 0 * Local size: 0 * Save regs size: 0 */ L000005CD() { esi = esi + SocketTbl; } /* Procedure: 0x000005D0 - 0x000005DE * Argument size: 0 * Local size: 0 * Save regs size: 0 */ W_DummyReg() { eax = *SocketTbl << 16; *eax = *(esp + IntTbl); } extern /* addr: 000005DF */ /* Procedure: 0x000005DF - 0x00000000 * Argument size: 0 * Local size: 0 * Save regs size: 0 */ L000005DF() /* address size */ /* 0x00000000 0 */ /* unknown */ void SocketTbl; /* 0x00000000 0 */ /* unknown */ void ConfigureMachine; /* 0x00000000 0 */ /* unknown */ void PreserveFlag; /* 0x00000000 0 */ /* unknown */ void DisableInterrupt; /* 0x00000000 0 */ /* unknown */ void LLDSocketNumber; /* 0x00000000 0 */ /* unknown */ void SocketOffset; /* 0x00000000 0 */ /* unknown */ void Delay; /* 0x00000000 0 */ /* unknown */ void RestoreFlag; /* 0x00000000 0 */ /* unknown */ void LLDIntLine1; /* 0x00000000 0 */ /* unknown */ void LLDIOAddress1; /* 0x00000000 0 */ /* unknown */ void LLDMemoryAddress1; /* 0x00000000 0 */ /* unknown */ void EnableInterrupt; /* 0x00000000 0 */ /* unknown */ void LLSGetCurrentTime; /* 0x00000000 0 */ /* unknown */ void OutChar; /* 0x00000000 0 */ /* unknown */ void OutHex; /* 0x00000000 0 */ /* unknown */ void CCReg; /* 0x00000000 0 */ /* unknown */ void CCRegPtr; /* 0x00000000 0 */ /* unknown */ void LLDOnePieceFlag; /* 0x00000000 0 */ /* unknown */ void EOIReg; /* 0x00000000 0 */ /* unknown */ void _inp; /* 0x00000000 0 */ /* unknown */ void PCMCIACardInserted; /* 0x00000000 0 */ /* unknown */ void FirstTimeIns; /* 0x00000000 0 */ /* unknown */ void LLDReset; /* 0x00000000 0 */ /* unknown */ void LLDResetQ; /* 0x00000000 0 */ /* unknown */ void LLDSyncState; /* 0x00000000 0 */ /* unknown */ void _outp; /* 0x00000004 0 */ /* unknown */ void IntTbl; /* 0x00000020 592 */ /* unknown */ void ConfigureSocket; /* 0x00000270 32 */ /* unknown */ void SetPCMCIAForInterruptType; /* 0x00000290 80 */ /* unknown */ void ClearPCMCIAInt; /* 0x000002e0 48 */ /* unknown */ void TurnPowerOff; /* 0x00000310 96 */ /* unknown */ void InsertedPCMCIACard; /* 0x00000370 32 */ /* unknown */ void RemovedPCMCIACard; /* 0x00000390 80 */ /* unknown */ void ParameterRangeCheck; /* 0x000003e0 64 */ /* unknown */ void WritePCICReg; /* 0x00000420 48 */ /* unknown */ void ReadPCICReg; /* 0x00000450 384 */ /* unknown */ void CheckForOnePiece; /* 0x000005d0 0 */ /* unknown */ void W_DummyReg; #if 0 /* auxiliary information */ # Current option values: option: +asmflush option: -compactcalls option: +compactexprs option: +compactifs option: +compset option: -dfoproc option: -disasmonly option: -displaylabels option: +doblocks option: +docase option: +dofor option: +doifs option: +dointrinsics option: +doloops option: +donullgotos option: +dopackloops option: +dopackstmt option: -doremlabs option: +dosimplify option: -dosort option: +dostmts option: +doswitch option: +dowhile option: -dumpaddrs option: -dumpcall option: -dumpcomments option: -dumpdfo option: +dumpdoms option: -dumpsblocks option: -dumpsets option: -dumpsizes option: -dumpstmtid option: +fatcase option: -flag16 option: +fullscreen option: -genpattern option: -help option: -hexconst option: -html option: +insertlabels option: -int16 option: +int32 option: -interactive option: +locals option: -nohtmltabs option: -nostackoffs option: -objdump option: -okclone option: -outprocs option: -outrefs option: -overrule option: +rdonly option: -showblocks option: -showjump option: -showlabel option: -showprotosym option: -showreg option: -showstring option: -silent option: +simplifyexprs option: -strallregions option: -traceall option: -tracesets option: +types option: +usesymtab option: -validatebr option: -validatereg option: +validatestr #endif