#elif defined(FIRMWARE_4_70DEX) // Ported by Joonie, special thanks to @aldostools for his awesome Getsymbol tool!!!!

#define TOC						0x375850 //done

#define create_kernel_object_symbol			0x125F4 //IDA
#define open_shared_kernel_object_symbol		0x12A54 // IDA
#define destroy_kernel_object_symbol			0x11F58 // IDA
#define destroy_shared_kernel_object_symbol		0x118CC //IDA
#define open_kernel_object_symbol			0x12C44 //IDA
#define open_shared_kernel_object_symbol		0x12A54 // IDA
#define close_kernel_object_handle_symbol		0x12074 // IDA

#define alloc_symbol					0x681F0 // IDA
#define dealloc_symbol					0x6862C // IDA
#define copy_to_user_symbol				0xFEB0 // bytes matched: 0x64  2C2500007C0802A6F821FF71FBA10078FBC10080FBE100887C7E1B78FB810070
#define copy_from_user_symbol				0x100CC //IDA
#define copy_to_process_symbol				0xFF68 //IDA
#define copy_from_process_symbol			0xFD78 // /IDA
#define page_allocate_symbol				0x63D60 //  IDA
#define page_free_symbol				0x637C4 //  IDA
#define page_export_to_proc_symbol			0x63EFC // IDA
#define page_unexport_from_proc_symbol			0x636B8 // IDA
#define kernel_ea_to_lpar_addr_symbol			0x73C98 // IDA
#define process_ea_to_lpar_addr_ex_symbol		0x7B838 //  IDA
#define set_pte_symbol					0x61D5C //  IDA
#define map_process_memory_symbol			0x7B344 // IDA
#define panic_symbol					0x275428 // IDA

#define memcpy_symbol					0x82A04 // IDA
#define memset_symbol					0x51010 // IDA
#define memcmp_symbol					0x50320 // IDA
#define memchr_symbol					0x502D0 // IDA
#define printf_symbol					0x278900 //  IDA
#define printfnull_symbol				0x27D388 // IDA
#define sprintf_symbol					0x52438 //  IDA
#define snprintf_symbol					0x523A4 //  IDA
#define strcpy_symbol					0x511BC //  IDA
#define strncpy_symbol					0x51284 //  IDA
#define strlen_symbol					0x511E4 //  IDA
#define strcat_symbol					0x510EC //  IDA
#define strcmp_symbol					0x51168 //  IDA
#define strncmp_symbol					0x51210 //  IDA
#define strchr_symbol					0x51124 //  IDA
#define strrchr_symbol					0x512F4 //  IDA

#define spin_lock_irqsave_ex_symbol			0x2755F8 // Verified with IDA by Joonie
#define spin_unlock_irqrestore_ex_symbol		0x2755CC // Verified with IDA by Joonie

#define create_process_common_symbol			0x2723F0 //  IDA
#define create_process_base_symbol			0x271A88 // IDA
#define load_process_symbol				0x5004 // bytes matched: 0x80  7D800026F821FF11FAC100A0FB6100C8FB8100D07C7B1B787CB62B787C9C2378
#define process_kill_symbol				0x2721F0 // IDA

#define ppu_thread_create_symbol			0x145F8 // IDA
#define ppu_thread_exit_symbol                          0x146B0 // IDA
#define ppu_thread_join_symbol				0x14704 //  IDA
#define ppu_thread_delay_symbol				0x2A6E4 //  IDA
#define create_kernel_thread_symbol			0x267CC // IDA
#define create_user_thread_symbol			0x26F08 // IDA
#define create_user_thread2_symbol			0x26D2C // Verified with IDA by Joonie
#define start_thread_symbol				0x25864 // Verified with IDA by Joonie
#define run_thread_symbol				0x25028 // Verified with IDA by Joonie
#define register_thread_symbol				0x26E1F8 // Verified with IDA by Joonie
#define allocate_user_stack_symbol			0x26E9E0 // Verified with IDA by Joonie
#define deallocate_user_stack_symbol			0x26E948 //  IDA

#define mutex_create_symbol				0x13C88 // Verified with IDA by Joonie
#define mutex_destroy_symbol                            0x13C20 // Verified with IDA by Joonie
#define mutex_lock_symbol				0x13C18 // Verified with IDA by Joonie
#define mutex_lock_ex_symbol				0x1F608 // bytes matched: 0x80  F821FF017C0802A6FB6100D87C7B1B78FB0100C0FB8100E0FBA100E8FBE100F8
#define mutex_trylock_symbol				0x13C14 // bytes matched: 0x68  4800AD6C38A000004800B9ECF821FF817C0802A6FBE10078F80100907C7F1B78
#define mutex_unlock_symbol                             0x13C10 //Verified with IDA by Joonie

#define cond_create_symbol				0x13DF4 // bytes matched: 0x2C  F821FF717C0802A6FBA10078FBC100807C9D23787C7E1B783880003638A00000
#define cond_destroy_symbol				0x13DA4 // bytes matched: 0x30  F821FF717C0802A6FBA10078FBE100887C7D1B78F80100A04800C6A97C7F1B78
#define cond_wait_symbol				0x13D9C // bytes matched: 0x38  38A000004800CE54F821FF717C0802A6FBA10078FBE100887C7D1B78F80100A0
#define cond_wait_ex_symbol				0x20BF4 // bytes matched: 0x80  F821FEF17C0802A6FB6100E87C7B1B78FB2100D8FBA100F8FBC10100FBE10108
#define cond_signal_symbol				0x13D78 // bytes matched: 0x5C  F821FF917C0802A6F80100804800CC89E8010080386000007C0803A638210070
#define cond_signal_all_symbol				0x13750 // bytes matched: 0x80  F821FF917C0802A6F80100804801A131E8010080386000007C0803A638210070

#define semaphore_initialize_symbol			0x34570 // bytes matched: 0x80  F821FF717C0802A6FBA100787C7D1B78E9228F3838630018F80100A0F93D0000
#define semaphore_wait_ex_symbol			0x34278 // bytes matched: 0x58  F821FF117C0802A6FB6100C8FB8100D0FBA100D8FBC100E0FB0100B0FB2100B8
#define semaphore_trywait_symbol			0x33E60 // bytes matched: 0x40  F821FF717C0802A6FBC10080FB810070FBA10078FBE10088F80100A07C7E1B78
#define semaphore_post_ex_symbol			0x33FAC // bytes matched: 0x80  F821FF417C0802A62F840000FBC100B03FC08001FB8100A0FBE100B8FAC10070

#define event_port_create_symbol			0x136C4 // Verified with IDA by Joonie
#define event_port_destroy_symbol                       0x13B2C //  Verified with IDA by Joonie
#define event_port_connect_symbol			0x13BA4 // Verified with IDA by Joonie
#define event_port_disconnect_symbol			0x13AD0 // Verified with IDA by Joonie
#define event_port_send_symbol				0x136BC // Verified with IDA by Joonie
#define event_port_send_ex_symbol			0x2D2C4 // bytes matched: 0x44  F821FF517C0802A6FBE100A87C7F1B78FBC100A03BC30018FB2100787FC3F378

#define event_queue_create_symbol			0x139CC //  Verified with IDA by Joonie
#define event_queue_destroy_symbol                      0x13954 //  Verified with IDA by Joonie
#define event_queue_receive_symbol			0x13798 //  Verified with IDA by Joonie
#define event_queue_tryreceive_symbol			0x13864 // bytes matched: 0x80  F821FF617C0802A63D208001F80100B038000000FBA10088F801007080030088

#define cellFsOpen_symbol				0x2B2748 //  Verified with IDA by Joonie
#define cellFsClose_symbol                              0x2B25B0 //   Verified with IDA by Joonie
#define cellFsRead_symbol				0x2B26EC //  Verified with IDA by Joonie
#define cellFsWrite_symbol				0x2B2658 //  Verified with IDA by Joonie
#define cellFsLseek_symbol				0x2B1EAC //  Verified with IDA by Joonie
#define cellFsStat_symbol				0x2B1F64 //  Verified with IDA by Joonie
#define cellFsUtime_symbol				0x2B38D4 // //0x2B1F64 (already found in #define cellFsStat_symbol) 0x2BC464  F821FF617C0802A6FB610078FBA10088FBC100907C7D1B78
#define cellFsUnlink_internal_symbol			0x1A29D0 //  Verified with IDA by Joonie

#define cellFsUtilMount_symbol				0x2B1C20 //  Verified with IDA by Joonie
#define cellFsUtilUmount_symbol				0x2B1BF4 //  Verified with IDA by Joonie
#define cellFsUtilNewfs_symbol				0x2B356C //  Verified with IDA by Joonie

#define pathdup_from_user_symbol			0x2B7A0C //  Verified with IDA by Joonie
#define open_path_symbol                                0x2B2480 //  Verified with IDA by Joonie
#define open_fs_object_symbol                           0x190CF4 //  Verified with IDA by Joonie
#define close_fs_object_symbol				0x18FC30 //  Verified with IDA by Joonie

#define storage_get_device_info_symbol			0x28C988 //  Verified with IDA by Joonie
#define storage_get_device_config_symbol		0x28B014 // Verified with IDA by Joonie
#define storage_open_symbol                             0x28CBB0 //  Verified with IDA by Joonie
#define storage_close_symbol                            0x28B39C //  Verified with IDA by Joonie
#define storage_read_symbol                             0x28A318 //  Verified with IDA by Joonie
#define storage_write_symbol                            0x28A1E8 // Verified with IDA by Joonie
#define storage_send_device_command_symbol              0x289E38 //  Verified with IDA by Joonie
#define storage_map_io_memory_symbol                    0x28C834 //  Verified with IDA by Joonie
#define storage_unmap_io_memory_symbol                  0x28C6F0 //  Verified with IDA by Joonie
#define new_medium_listener_object_symbol		0x9CC2C // Verified with IDA by Joonie
#define delete_medium_listener_object_symbol		0x9E464 // Verified with IDA by Joonie
#define set_medium_event_callbacks_symbol		0x9E7C8 // Verified with IDA by Joonie

#define cellUsbdRegisterLdd_symbol			0x2666E4 // IDA
#define cellUsbdUnregisterLdd_symbol			0x266694 // IDA
#define cellUsbdScanStaticDescriptor_symbol		0x2678E4 // IDA
#define cellUsbdOpenPipe_symbol			        0x267994 // IDA
#define cellUsbdClosePipe_symbol			0x267944 // IDA
#define cellUsbdControlTransfer_symbol			0x267848 // IDA
#define cellUsbdBulkTransfer_symbol			0x2677C8 // IDA

#define decrypt_func_symbol				0x3828C //  Verified with IDA by Joonie
#define lv1_call_99_wrapper_symbol			0x5284C //  Verified with IDA by Joonie
#define modules_verification_symbol			0x5C484 //  Verified with IDA by Joonie
#define authenticate_program_segment_symbol		0x5E2DC //  Verified with IDA by Joonie

#define prx_load_module_symbol				0x8D304 //  Verified with IDA by Joonie
#define prx_start_module_symbol				0x8BFD0 //  Verified with IDA by Joonie
#define prx_stop_module_symbol				0x8D3A8 //  Verified with IDA by Joonie
#define prx_unload_module_symbol			0x8BD04 // IDA
#define prx_get_module_info_symbol			0x8B6FC //  Verified with IDA by Joonie
#define prx_get_module_id_by_address_symbol		0x8B60C // IDA
#define prx_get_module_id_by_name_symbol		0x8B65C // IDA
#define prx_get_module_list_symbol			0x8B77C //  Verified with IDA by Joonie
#define load_module_by_fd_symbol			0x8C934 // Verified with IDA by Joonie
#define parse_sprx_symbol				0x8A628 // Verified with IDA by Joonie
#define open_prx_object_symbol				0x835D0 //  Verified with IDA by Joonie
#define close_prx_object_symbol				0x83EE0 // Verified with IDA by Joonie
#define lock_prx_mutex_symbol				0x8B5B4 // Verified with IDA by Joonie
#define unlock_prx_mutex_symbol				0x8B5C0 // Verified with IDA by Joonie

#define extend_kstack_symbol				0x73BF0 // IDA

#define get_pseudo_random_number_symbol                 0x22E654 //  Verified with IDA by Joonie
#define md5_reset_symbol				0x1681A4 //IDA
#define md5_update_symbol				0x168C44 // IDA
#define md5_final_symbol				0x168DC4 // IDA
#define ss_get_open_psid_symbol				0x230B3C //IDA
#define update_mgr_read_eeprom_symbol			0x229F34 // IDA
#define update_mgr_write_eeprom_symbol			0x229E68 // IDA

#define ss_params_get_update_status_symbol		0x54458 // IDA

#define syscall_table_symbol				0x38A368 //done
#define syscall_call_offset				0x27DE6C // bytes matched: 0x34  4E80002138210070F821FFB1F8610008F8810010F8A10018F8C10020F8E10028

#define read_bdvd0_symbol				0x1AAAC4 // bytes matched: 0x20  F821FEB17C0802A6FB0101107C781B78F8010160F9C100C0FBC101407C8E2378
#define read_bdvd1_symbol				0x1AC6F0  //  Verified with IDA by Joonie
#define read_bdvd2_symbol				0x1B98A8 // bytes matched: 0x80  F821FF517C0802A6FBE100A8F80100C07C7F1B78E8630090FB610088FB810090

#define storage_internal_get_device_object_symbol       0x2898F0 //   Verified with IDA by Joonie

#define hid_mgr_read_usb_symbol				0x107F40 // bytes matched: 0x78  E962D1C07C0802A6F821FF91F80100802F2400003800FFEB812B00002F890000
#define hid_mgr_read_bt_symbol				0x101E18 // bytes matched: 0x48  F821FF517C0802A6FB410080EB42CF88F80100C0FB610088FBA10098FBC100A0

#define bt_set_controller_info_internal_symbol		0xF5E84 // bytes matched: 0x80  F821FF417C0802A62F85054CF80100D054C0043EFB410090FBA100A8FBC100B0

/* Calls, jumps */
#define device_event_port_send_call			0x296B84 // IDA

#define ss_pid_call_1					0x219744 //IDA

#define process_map_caller_call				0x4D24 // bytes matched: 0x10*  2F8300007C7D1B78419EFF1C807B0000

#define read_module_header_call				0x834C4 // bytes matched: 0x50*  2F8300007C6307B4409E0008E8610070E8010090382100807C0803A64E800020
#define read_module_body_call				0x671C // bytes matched: 0x4C*  2F8300007C7F1B7840DE013CE80100887FBE000040DE0160FBDD0010E81C0018
#define load_module_by_fd_call1				0x8D1A0 // bytes matched: 0x80  4BFFF795801B000C7C7D1B78E87B00102F800000409DFFBC3BE300183BC00000

#define shutdown_copy_params_call			0xAB4C // bytes matched: 0x18*  2F830000409E005C7FC6F3787FA3EB78388000017F65DB78

#define fsloop_open_call				0x2B28E0 //   Verified with IDA by Joonie CellFsOpen
#define fsloop_close_call				0x2B2930 //   Verified with IDA by Joonie CellFsClose
#define fsloop_read_call				0x2B2970 //   Verified with IDA by Joonie CellFsRead

/* Patches */
#define shutdown_patch_offset				0xAB38 // bytes matched: 0x14  600000044182FEFC7F83E3787F64DB787FC5F378
#define module_sdk_version_patch_offset			0x26D820 // bytes matched: 0x2C  419D0008386000007C6307B44E800020800400047F804800409EFFEC80040008
#define module_add_parameter_to_parse_sprxpatch_offset	0x8CA10 // bytes matched: 0x80  90030198FB4301A8FB4301A0934301B8FB4301C8FB4301C04BFFDC012F830000

#define user_thread_prio_patch				0x21EA8 // bytes matched: 0x34  419DFF842B9E0BFF900100D0419D02587B8007A03FE080012FA0000363FF0009
#define user_thread_prio_patch2				0x21EB4 // bytes matched: 0x28  419D02587B8007A03FE080012FA0000363FF0009419EFF64FB4100B87D3042A6
// ODE Protection Removal patches
#define lic_patch						0x59BFC
#define ode_patch						0x22DAC8

/* Rtoc entries */

#define io_rtoc_entry_1					-0xD148 //found at 0x2B4BB7 2EB8E97E8038EBC1FFF0F9630000
#define io_sub_rtoc_entry_1				-0x7EA0 //found at 0x16AF0B 8160E97E8168EB9E8140EBBE8170

#define decrypt_rtoc_entry_2 				-0x65C0 //found at 0x5D27F 9A404BFFBC25392000004BFFFFCC2C2400007C0802A6
#define decrypter_data_entry				-0x7F10 //done //UNTOUCHED //UNTOUCHED

#define storage_rtoc_entry_1				0x22A8 //found at 0x289B7B 22A87C0802A6F821FF51F80100C0FBE100A87C9F23

#define device_event_rtoc_entry_1			0x2630 //found at 0x296B6F 263078050620E8CA00387D052B78E92B0000

#define time_rtoc_entry_1				-0x75E0 //done //NOT FOUND //NOT FOUND
#define time_rtoc_entry_2				-0x75E8 //done //NOT FOUND //NOT FOUND

#define thread_rtoc_entry_1				-0x7660 //found at 0x21833 89A080090000900100704BFFFFE0

#define process_rtoc_entry_1				-0x77A0 //found at 0x1BC03 88603FC0800163DE0005E87D0000

#define bt_rtoc_entry_1					-0x3558 //found at 0xF488F CAA838A0000048001F617FA4EB78

/* Permissions */
#define permissions_func_symbol				0x3560 // bytes matched: 0x6C  E92280087C0802A6F821FF21FBA100C8FBC100D0FBE100D8E8E900187C9F2378
#define permissions_exception1 				0x26DAC // bytes matched: 0x38*  5463063E2F830000419E0114EBA28B50EB628B607FA4EB783BE00000E87B0000
#define permissions_exception2				0xC8A00 // bytes matched: 0x74*  E80100A0786306207C0803A6382100903863FFFF78630FE07C6300345463D97E
#define permissions_exception3				0x21F7C // bytes matched: 0x80*  5463063E2F830000419E01F8E96289A07D3042A6E8690048E90100B841920258

/* Legacy patches with no names yet */
/* Kernel offsets */
#define patch_data1_offset				0x4098C0 // offset found after the first idps on LV2 dump
#define patch_func2 					0x5D750 //   Verified with IDA by Joonie
#define patch_func2_offset 				0x2C
#define patch_func8 					0x59DD8 // Verified with IDA by Joonie
#define patch_func8_offset1 				0xA4 // bytes matched: 0x68  0000000000000000000000000000000000000000000000000000000000000000
#define patch_func8_offset2 				0x208 // bytes matched: 0x80  4800000000000000000000000000000000000000000000000000000000000000
#define patch_func9 					0x5DC0C //Verified with IDA by Joonie
#define patch_func9_offset 				0x438 // bytes matched: 0x7C****  0000000000000000000000000000000000000000000000000000000000000000
#define mem_base2					0x3D90 // bytes matched: 0x24  F821FEB17C0802A6FB8101307C9C2378388100D8FBE10148FBA10138FBC10140

/* vars */
#define thread_info_symbol                              0x3A48B0 // Found by Joonie

