- #include "scratch.h" 
- #include "diag.h" 
- #include "fwsetup.h" 
- #include "harness/trace.h" 
- #include "resource.h" 
-   
- char scratchString[512] = "SCRATCH"; 
-   
- // IDA: void* __cdecl BrScratchAllocate(br_size_t size) 
- void* BrScratchAllocate(br_size_t size) { 
-     LOG_TRACE("(%d)", size); 
-   
-     if (fw.scratch_inuse != 0) { 
-         BrFailure("Scratchpad not available"); 
-     } 
-   
-     fw.scratch_last = size; 
-   
-     if (size > fw.scratch_size) { 
-         if (fw.scratch_ptr != NULL) { 
-             BrResFree(fw.scratch_ptr); 
-         } 
-         fw.scratch_ptr = BrResAllocate(fw.res, size, BR_MEMORY_SCRATCH); 
-         fw.scratch_size = size; 
-     } 
-     fw.scratch_inuse = 1; 
-     return fw.scratch_ptr; 
- } 
-   
- // IDA: void __cdecl BrScratchFree(void *scratch) 
- void BrScratchFree(void* scratch) { 
-     LOG_TRACE("(%p)", scratch); 
-   
-     fw.scratch_inuse = 0; 
- } 
-   
- // IDA: void __cdecl BrScratchFlush() 
- void BrScratchFlush(void) { 
-     LOG_TRACE("()"); 
-   
-     if (fw.scratch_inuse != 0) { 
-         BrFailure("Scratchpad cannot be flushed while in use"); 
-     } 
-     if (fw.scratch_ptr != NULL) { 
-         BrResFree(fw.scratch_ptr); 
-     } 
-     fw.scratch_ptr = NULL; 
-     fw.scratch_size = 0; 
- } 
-   
- // IDA: br_size_t __cdecl BrScratchInquire() 
- br_size_t BrScratchInquire(void) { 
-     LOG_TRACE("()"); 
-   
-     return fw.scratch_size; 
- } 
-   
- // IDA: char* __cdecl BrScratchString() 
- char* BrScratchString(void) { 
-     LOG_TRACE9("()"); 
-   
-     return scratchString; 
- } 
-   
- // IDA: br_size_t __cdecl BrScratchStringSize() 
- br_size_t BrScratchStringSize(void) { 
-     LOG_TRACE9("()"); 
-   
-     return sizeof(scratchString); 
- } 
-