#ifndef EXPORTED_H
#define EXPORTED_H
+#include "symtab.h"
+
#include "headers.h"
#define stdout ((void*)0)
#define stderr ((void*)2)
-extern int strlen(const char *string);
-extern int isprint(char c);
-extern void memcpy(void *dest, const void *src, size_t size);
-extern void memmove(void *dest, const void *src, size_t size);
-extern void memset(void *dest, const int filler, size_t size);
-extern int memcmp(const void *buf1, const void *buf2, const size_t size);
-extern void strncpy(void *dest, const void *src, const size_t size);
-extern int strncmp(const void *buf1, const void *buf2, const size_t size);
-extern int atoi(const char *str);
-extern uint8_t* memfind (uint8_t *string, uint32_t stringlen, uint8_t *pat, uint32_t patlen);
-
-extern void putc(void* buf, const int c);
-extern void puts(void* buf, const char *string);
-extern void fprintf(void* channel, const char* format, ...);
-
-extern firm_h* get_firm();
-extern exefs_h* get_firm_proc9_exefs();
-
-extern firm_h* get_agb();
-extern exefs_h* get_agb_proc9_exefs();
-
-extern firm_h* get_twl();
-extern exefs_h* get_twl_proc9_exefs();
+int (*strlen)(const char *string) = strlen_offset;
+int (*isprint)(char c) = isprint_offset;
+void (*memcpy)(void *dest, const void *src, size_t size) = memcpy_offset;
+void (*memmove)(void *dest, const void *src, size_t size) = memmove_offset;
+void (*memset)(void *dest, const int filler, size_t size) = memset_offset;
+int (*memcmp)(const void *buf1, const void *buf2, const size_t size) = memcmp_offset;
+void (*strncpy)(void *dest, const void *src, const size_t size) = strncpy_offset;
+int (*strncmp)(const void *buf1, const void *buf2, const size_t size) = strncmp_offset;
+int (*atoi)(const char *str) = atoi_offset;
+uint8_t* (*memfind)(uint8_t *string, uint32_t stringlen, uint8_t *pat, uint32_t patlen) = memfind_offset;
+
+void (*putc)(void* buf, const int c) = putc_offset;
+void (*puts)(void* buf, const char *string) = puts_offset;
+void (*fprintf)(void* channel, const char* format, ...) = fprintf_offset;
+
+exefs_h* (*get_firm_proc9_exefs)() = get_firm_proc9_exefs_offset;
+exefs_h* (*get_agb_proc9_exefs)() = get_agb_proc9_exefs_offset;
+exefs_h* (*get_twl_proc9_exefs)() = get_twl_proc9_exefs_offset;
#endif
--- /dev/null
+// This file is automatically generated. Don't edit it.
+#ifndef __SYMTAB_H
+#define __SYMTAB_H
+ #define START_SECTION_offset ((void*)0x23f00000)
+ #define _start_offset ((void*)0x23f00000)
+ #define START_SECTION_END_offset ((void*)0x23f000e0)
+ #define TEXT_SECTION_offset ((void*)0x23f000e0)
+ #define getMMCDevice_offset ((void*)0x23f001dc)
+ #define geterror_offset ((void*)0x23f00204)
+ #define inittarget_offset ((void*)0x23f0021c)
+ #define sdmmc_send_command_offset ((void*)0x23f00274)
+ #define sdmmc_sdcard_writesectors_offset ((void*)0x23f004bc)
+ #define sdmmc_sdcard_readsectors_offset ((void*)0x23f00538)
+ #define sdmmc_nand_readsectors_offset ((void*)0x23f005b4)
+ #define sdmmc_nand_writesectors_offset ((void*)0x23f0063c)
+ #define InitSD_offset ((void*)0x23f006c4)
+ #define Nand_Init_offset ((void*)0x23f00848)
+ #define SD_Init_offset ((void*)0x23f00a04)
+ #define sdmmc_sdcard_init_offset ((void*)0x23f00c28)
+ #define sdmmc_get_cid_offset ((void*)0x23f00c48)
+ #define ff_convert_offset ((void*)0x23f014b0)
+ #define ff_wtoupper_offset ((void*)0x23f01698)
+ #define clust2sect_offset ((void*)0x23f016bc)
+ #define get_fat_offset ((void*)0x23f016e8)
+ #define put_fat_offset ((void*)0x23f01924)
+ #define f_mount_offset ((void*)0x23f02a24)
+ #define f_open_offset ((void*)0x23f02ab4)
+ #define f_read_offset ((void*)0x23f02cc4)
+ #define f_write_offset ((void*)0x23f02ee8)
+ #define f_sync_offset ((void*)0x23f0316c)
+ #define f_close_offset ((void*)0x23f03270)
+ #define f_chdir_offset ((void*)0x23f0329c)
+ #define f_lseek_offset ((void*)0x23f03338)
+ #define f_opendir_offset ((void*)0x23f03560)
+ #define f_closedir_offset ((void*)0x23f03644)
+ #define f_readdir_offset ((void*)0x23f03660)
+ #define f_stat_offset ((void*)0x23f036fc)
+ #define f_getfree_offset ((void*)0x23f03780)
+ #define f_truncate_offset ((void*)0x23f038e8)
+ #define f_unlink_offset ((void*)0x23f03a00)
+ #define f_mkdir_offset ((void*)0x23f03b38)
+ #define f_chmod_offset ((void*)0x23f03d70)
+ #define f_rename_offset ((void*)0x23f03e1c)
+ #define f_utime_offset ((void*)0x23f03fcc)
+ #define waitcycles_offset ((void*)0x23f04084)
+ #define disk_status_offset ((void*)0x23f040a4)
+ #define disk_initialize_offset ((void*)0x23f040b4)
+ #define disk_read_offset ((void*)0x23f040d0)
+ #define disk_write_offset ((void*)0x23f040f8)
+ #define disk_ioctl_offset ((void*)0x23f04120)
+ #define patch_example_offset ((void*)0x23f04180)
+ #define patch_signatures_offset ((void*)0x23f041a0)
+ #define getSvcAndExceptions_offset ((void*)0x23f042d4)
+ #define patch_services_offset ((void*)0x23f04360)
+ #define patch_aadowngrade_offset ((void*)0x23f04534)
+ #define patch_modules_offset ((void*)0x23f045b0)
+ #define patch_firmprot_offset ((void*)0x23f0476c)
+ #define wait_offset ((void*)0x23f0486c)
+ #define patch_firm_all_offset ((void*)0x23f048d4)
+ #define clear_disp_offset ((void*)0x23f04a08)
+ #define clear_text_offset ((void*)0x23f04a80)
+ #define clear_screen_offset ((void*)0x23f04b34)
+ #define set_cursor_offset ((void*)0x23f04b54)
+ #define clear_screens_offset ((void*)0x23f04b8c)
+ #define draw_character_offset ((void*)0x23f04bb4)
+ #define shut_up_offset ((void*)0x23f04cb4)
+ #define putc_offset ((void*)0x23f04cd8)
+ #define puts_offset ((void*)0x23f04f10)
+ #define put_int64_offset ((void*)0x23f04f68)
+ #define put_uint64_offset ((void*)0x23f0507c)
+ #define put_hexdump_offset ((void*)0x23f05158)
+ #define put_uint_offset ((void*)0x23f051ac)
+ #define put_int_offset ((void*)0x23f051d0)
+ #define fflush_offset ((void*)0x23f051f4)
+ #define vfprintf_offset ((void*)0x23f05368)
+ #define fprintf_offset ((void*)0x23f0560c)
+ #define strlen_offset ((void*)0x23f05664)
+ #define isprint_offset ((void*)0x23f0568c)
+ #define memcpy_offset ((void*)0x23f056a8)
+ #define memmove_offset ((void*)0x23f0573c)
+ #define memset_offset ((void*)0x23f057e0)
+ #define memcmp_offset ((void*)0x23f05840)
+ #define strncpy_offset ((void*)0x23f0587c)
+ #define strncmp_offset ((void*)0x23f058b4)
+ #define atoi_offset ((void*)0x23f05928)
+ #define memfind_offset ((void*)0x23f05958)
+ #define fmount_offset ((void*)0x23f05a10)
+ #define fopen_offset ((void*)0x23f05a80)
+ #define fclose_offset ((void*)0x23f05b54)
+ #define fumount_offset ((void*)0x23f05b80)
+ #define fseek_offset ((void*)0x23f05bd8)
+ #define ftell_offset ((void*)0x23f05c54)
+ #define feof_offset ((void*)0x23f05c7c)
+ #define fsize_offset ((void*)0x23f05ccc)
+ #define fwrite_offset ((void*)0x23f05cf4)
+ #define fread_offset ((void*)0x23f05d4c)
+ #define write_file_offset ((void*)0x23f05da4)
+ #define read_file_offset ((void*)0x23f05dfc)
+ #define regenerate_config_offset ((void*)0x23f05e54)
+ #define load_config_offset ((void*)0x23f05f3c)
+ #define save_config_offset ((void*)0x23f06074)
+ #define get_firm_proc9_exefs_offset ((void*)0x23f06100)
+ #define get_twl_proc9_exefs_offset ((void*)0x23f06118)
+ #define get_agb_proc9_exefs_offset ((void*)0x23f06130)
+ #define execp_offset ((void*)0x23f06148)
+ #define wait_key_offset ((void*)0x23f0623c)
+ #define header_offset ((void*)0x23f062f4)
+ #define menu_patches_offset ((void*)0x23f06320)
+ #define menu_options_offset ((void*)0x23f06330)
+ #define menu_info_offset ((void*)0x23f06790)
+ #define menu_help_offset ((void*)0x23f06864)
+ #define menu_reset_offset ((void*)0x23f068cc)
+ #define menu_poweroff_offset ((void*)0x23f068fc)
+ #define menu_main_offset ((void*)0x23f0692c)
+ #define menu_handler_offset ((void*)0x23f06af0)
+ #define arm11_preboot_halt_offset ((void*)0x23f06ba0)
+ #define slot0x11key96_init_offset ((void*)0x23f06bdc)
+ #define decrypt_firm_title_offset ((void*)0x23f06c50)
+ #define decrypt_arm9bin_offset ((void*)0x23f06db8)
+ #define decrypt_firm_offset ((void*)0x23f06f28)
+ #define load_firm_offset ((void*)0x23f06fac)
+ #define boot_firm_offset ((void*)0x23f0723c)
+ #define find_proc9_offset ((void*)0x23f073cc)
+ #define load_firms_offset ((void*)0x23f074b0)
+ #define boot_cfw_offset ((void*)0x23f07660)
+ #define aes_setkey_offset ((void*)0x23f076a8)
+ #define aes_use_keyslot_offset ((void*)0x23f07714)
+ #define aes_setiv_offset ((void*)0x23f0773c)
+ #define aes_advctr_offset ((void*)0x23f077a8)
+ #define aes_change_ctrmode_offset ((void*)0x23f0786c)
+ #define aes_batch_offset ((void*)0x23f078e0)
+ #define aes_offset ((void*)0x23f07990)
+ #define ncch_getctr_offset ((void*)0x23f07aa4)
+ #define sha_wait_idle_offset ((void*)0x23f07b64)
+ #define sha_offset ((void*)0x23f07b84)
+ #define rsa_wait_idle_offset ((void*)0x23f07c78)
+ #define rsa_use_keyslot_offset ((void*)0x23f07c98)
+ #define rsa_setkey_offset ((void*)0x23f07cbc)
+ #define rsa_iskeyset_offset ((void*)0x23f07d64)
+ #define rsa_offset ((void*)0x23f07d84)
+ #define rsa_verify_offset ((void*)0x23f07e24)
+ #define get_firm_info_offset ((void*)0x23f07e88)
+ #define i2cGetDeviceBusId_offset ((void*)0x23f07ed8)
+ #define i2cGetDeviceRegAddr_offset ((void*)0x23f07ef0)
+ #define i2cGetDataReg_offset ((void*)0x23f07f0c)
+ #define i2cGetCntReg_offset ((void*)0x23f07f28)
+ #define i2cWaitBusy_offset ((void*)0x23f07f44)
+ #define i2cGetResult_offset ((void*)0x23f07f6c)
+ #define i2cStop_offset ((void*)0x23f07f9c)
+ #define i2cSelectDevice_offset ((void*)0x23f07fd4)
+ #define i2cSelectRegister_offset ((void*)0x23f08014)
+ #define i2cReadRegister_offset ((void*)0x23f08054)
+ #define i2cReadRegisterBuffer_offset ((void*)0x23f08118)
+ #define i2cWriteRegister_offset ((void*)0x23f08250)
+ #define __udivsi3_offset ((void*)0x23f08308)
+ #define __aeabi_uidiv_offset ((void*)0x23f08308)
+ #define __aeabi_uidivmod_offset ((void*)0x23f083fc)
+ #define __aeabi_ldiv0_offset ((void*)0x23f0841c)
+ #define __aeabi_idiv0_offset ((void*)0x23f0841c)
+ #define __aeabi_ldivmod_offset ((void*)0x23f08420)
+ #define __aeabi_uldivmod_offset ((void*)0x23f084f4)
+ #define __udivmoddi4_offset ((void*)0x23f08530)
+ #define __clzdi2_offset ((void*)0x23f0865c)
+ #define __clzsi2_offset ((void*)0x23f08684)
+ #define TEXT_SECTION_END_offset ((void*)0x23f086cc)
+ #define DATA_SECTION_offset ((void*)0x23f086cc)
+ #define main_offset ((void*)0x23f086cc)
+ #define color_top_offset ((void*)0x23f08764)
+ #define color_bottom_offset ((void*)0x23f08765)
+ #define firm_loc_offset ((void*)0x23f08e64)
+ #define twl_firm_loc_offset ((void*)0x23f08e70)
+ #define agb_firm_loc_offset ((void*)0x23f08e78)
+ #define fcram_temp_offset ((void*)0x23f08e7c)
+ #define firm_signatures_offset ((void*)0x23f08e80)
+ #define DATA_SECTION_END_offset ((void*)0x23f09150)
+ #define BSS_SECTION_offset ((void*)0x23f09150)
+ #define handelSD_offset ((void*)0x23f09150)
+ #define handelNAND_offset ((void*)0x23f0918c)
+ #define memory_header_t_offset ((void*)0x23f091d0)
+ #define freeSpace_offset ((void*)0x23f091d8)
+ #define kill_output_offset ((void*)0x23f0a708)
+ #define conf_handle_offset ((void*)0x23f13580)
+ #define config_offset ((void*)0x23f13584)
+ #define doing_autoboot_offset ((void*)0x23f13e90)
+ #define firm_loaded_offset ((void*)0x23f13e98)
+ #define twl_firm_p9_exefs_offset ((void*)0x23f13e9c)
+ #define firm_p9_exefs_offset ((void*)0x23f13ea0)
+ #define agb_firm_proc9_offset ((void*)0x23f13ea4)
+ #define twl_firm_proc9_offset ((void*)0x23f13ed4)
+ #define firm_proc9_offset ((void*)0x23f13f04)
+ #define agb_firm_p9_exefs_offset ((void*)0x23f13f34)
+ #define BSS_SECTION_END_offset ((void*)0x23f13f38)
+ #define RODATA_SECTION_offset ((void*)0x23f13f38)
+ #define RODATA_SECTION_END_offset ((void*)0x23f148f8)
+#endif