Files
libaaruformat/docs/html/read_8c_source.html

2501 lines
535 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.16.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>libaaruformat: src/read.c Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">libaaruformat<span id="projectnumber">&#160;1.0</span>
</div>
<div id="projectbrief">Aaru Data Preservation Suite - Format Library</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.16.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search/",'.html');
</script>
<script type="text/javascript">
$(function() { codefold.init(); });
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search',true);
$(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(function(){initNavTree('read_8c_source.html','',''); });
</script>
<div id="container">
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="headertitle"><div class="title">read.c</div></div>
</div><!--header-->
<div class="contents">
<a href="read_8c.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="comment">/*</span></div>
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="comment"> * This file is part of the Aaru Data Preservation Suite.</span></div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="comment"> * Copyright (c) 2019-2026 Natalia Portillo.</span></div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="comment"> *</span></div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="comment"> * This library is free software; you can redistribute it and/or modify</span></div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="comment"> * it under the terms of the GNU Lesser General Public License as</span></div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="comment"> * published by the Free Software Foundation; either version 2.1 of the</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="comment"> * License, or (at your option) any later version.</span></div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="comment"> *</span></div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="comment"> * This library is distributed in the hope that it will be useful, but</span></div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</span></div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="comment"> * Lesser General Public License for more details.</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="comment"> *</span></div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="comment"> * You should have received a copy of the GNU Lesser General Public</span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="comment"> * License along with this library; if not, see &lt;http://www.gnu.org/licenses/&gt;.</span></div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="comment"> */</span></div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span> </div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span><span class="preprocessor">#include &lt;stdlib.h&gt;</span></div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span><span class="preprocessor">#include &lt;string.h&gt;</span></div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span> </div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span><span class="preprocessor">#include &lt;<a class="code" href="aaruformat_8h.html">aaruformat.h</a>&gt;</span></div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span> </div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span><span class="preprocessor">#include &quot;<a class="code" href="erasure__internal_8h.html">erasure_internal.h</a>&quot;</span></div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span><span class="preprocessor">#include &quot;<a class="code" href="internal_8h.html">internal.h</a>&quot;</span></div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span><span class="preprocessor">#include &quot;<a class="code" href="log_8h.html">log.h</a>&quot;</span></div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span><span class="preprocessor">#include &quot;<a class="code" href="lfg_8h.html">ngcw/lfg.h</a>&quot;</span></div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span><span class="preprocessor">#include &quot;<a class="code" href="ngcw__junk_8h.html">ngcw/ngcw_junk.h</a>&quot;</span></div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span><span class="preprocessor">#include &quot;<a class="code" href="wii__crypto_8h.html">ngcw/wii_crypto.h</a>&quot;</span></div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span><span class="preprocessor">#include &quot;<a class="code" href="ps3__crypto_8h.html">ps3/ps3_crypto.h</a>&quot;</span></div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span><span class="preprocessor">#include &quot;<a class="code" href="ps3__encryption__map_8h.html">ps3/ps3_encryption_map.h</a>&quot;</span></div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span><span class="preprocessor">#include &quot;<a class="code" href="wiiu__crypto_8h.html">wiiu/wiiu_crypto.h</a>&quot;</span></div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span></div>
<div class="foldopen" id="foldopen00044" data-start="{" data-end="}">
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"><a class="line" href="read_8c.html#a277efc2abbdd8e351eb84542e4eda59a"> 44</a></span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code hl_function" href="read_8c.html#a277efc2abbdd8e351eb84542e4eda59a">wii_reconstruct_group_junk</a>(<a class="code hl_struct" href="structaaruformat__context.html">aaruformat_context</a> *ctx, uint64_t phys_group, uint8_t *group_cache)</div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span>{</div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a369261f4f02c9997195c062ba7940468">ngcw_junk_entries</a> == NULL || ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a9307ffe59ce5d5b4f6c9c9a63b0ef70d">ngcw_junk_entry_count</a> == 0) <span class="keywordflow">return</span>;</div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> </div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#aaf475c0a1941563a9e1598f02ac48b66">wii_partition_regions</a> == NULL) <span class="keywordflow">return</span>;</div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span> </div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span> <span class="comment">/* Find which partition this group belongs to */</span></div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> <span class="keyword">const</span> <a class="code hl_struct" href="structWiiPartitionRegion.html">WiiPartitionRegion</a> *regions = (<span class="keyword">const</span> <a class="code hl_struct" href="structWiiPartitionRegion.html">WiiPartitionRegion</a> *)ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#aaf475c0a1941563a9e1598f02ac48b66">wii_partition_regions</a>;</div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span> <span class="keywordtype">int</span> in_part = -1;</div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span> </div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span> <span class="keywordflow">for</span>(uint32_t p = 0; p &lt; ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#aa3dd955c7f01ecb619b3862fecce7110">wii_partition_region_count</a>; p++)</div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span> {</div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span> <span class="keywordflow">if</span>(phys_group &gt;= regions[p].start_sector &amp;&amp; phys_group &lt; regions[p].end_sector)</div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span> {</div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span> in_part = (int)p;</div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span> }</div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span> }</div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span> </div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span> <span class="keywordflow">if</span>(in_part &lt; 0) <span class="keywordflow">return</span>; <span class="comment">/* Outside partition — no Wii junk reconstruction needed */</span></div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span> </div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> uint64_t group_idx = phys_group - regions[in_part].<a class="code hl_variable" href="structWiiPartitionRegion.html#a06eb8901b0a0b652c573d3879024efbb">start_sector</a>;</div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span> uint64_t group_disc_off = phys_group * <a class="code hl_define" href="wii__crypto_8h.html#a938e4b044436cfa7be47752ae7b58956">WII_GROUP_SIZE</a>;</div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span> </div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span> <span class="keywordflow">for</span>(uint64_t off = 0; off &lt; <a class="code hl_define" href="wii__crypto_8h.html#ab21867411a4f988431fc692baa0389d6">WII_GROUP_DATA_SIZE</a>; off += <a class="code hl_define" href="wii__crypto_8h.html#a9ee328ed858e3139fbae54c007a00d64">WII_SECTOR_SIZE</a>)</div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span> {</div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span> uint64_t disc_off = group_disc_off + <a class="code hl_define" href="wii__crypto_8h.html#ac673ea3e31315ae51d390d06df7340cb">WII_GROUP_HASH_SIZE</a> + off;</div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span> </div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span> <span class="comment">/* Look up this user data sector in the junk map */</span></div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span> <span class="keyword">const</span> <a class="code hl_struct" href="structNgcwJunkEntry.html">NgcwJunkEntry</a> *entries = (<span class="keyword">const</span> <a class="code hl_struct" href="structNgcwJunkEntry.html">NgcwJunkEntry</a> *)ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a369261f4f02c9997195c062ba7940468">ngcw_junk_entries</a>;</div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span> <span class="keywordtype">int</span> lo = 0;</div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span> <span class="keywordtype">int</span> hi = (int)ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a9307ffe59ce5d5b4f6c9c9a63b0ef70d">ngcw_junk_entry_count</a> - 1;</div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span> <span class="keywordtype">int</span> found = -1;</div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span> </div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span> <span class="keywordflow">while</span>(lo &lt;= hi)</div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span> {</div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span> <span class="keywordtype">int</span> mid = lo + (hi - lo) / 2;</div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span> uint64_t entry_end = entries[mid].<a class="code hl_variable" href="structNgcwJunkEntry.html#a80885eaf7c79a421d9565dbb7397fa2b">offset</a> + entries[mid].<a class="code hl_variable" href="structNgcwJunkEntry.html#a082ed622c7be36afb188f0c6f75e7127">length</a>;</div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span> </div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span> <span class="keywordflow">if</span>(disc_off &gt;= entry_end)</div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span> lo = mid + 1;</div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span> <span class="keywordflow">else</span> <span class="keywordflow">if</span>(disc_off &lt; entries[mid].offset)</div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span> hi = mid - 1;</div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span> {</div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span> found = mid;</div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span> }</div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span> }</div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span> </div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span> <span class="keywordflow">if</span>(found &lt; 0) <span class="keywordflow">continue</span>; <span class="comment">/* Not junk — leave stored data */</span></div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span> </div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span> <span class="comment">/* Junk found — regenerate using OBMAFS stream formula */</span></div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span> <span class="keyword">struct </span><a class="code hl_struct" href="structngc__lfg__ctx.html">ngc_lfg_ctx</a> lfg;</div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span> uint32_t seed_copy[<a class="code hl_define" href="lfg_8h.html#a2c4db3d8d295f706dcacc8a4d039beed">NGC_LFG_SEED_SIZE</a>];</div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span> memcpy(seed_copy, entries[found].seed, <span class="keyword">sizeof</span>(seed_copy));</div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span> <a class="code hl_function" href="lfg_8c.html#abc583da3bb66cab3eafc3496bc46e193">ngc_lfg_set_seed</a>(&amp;lfg, seed_copy);</div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span> </div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span> uint64_t stream_pos = group_idx * <a class="code hl_define" href="wii__crypto_8h.html#ab21867411a4f988431fc692baa0389d6">WII_GROUP_DATA_SIZE</a> + off;</div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span> <span class="keywordtype">size_t</span> advance = (size_t)(stream_pos % <a class="code hl_define" href="wii__crypto_8h.html#a938e4b044436cfa7be47752ae7b58956">WII_GROUP_SIZE</a>);</div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span> </div>
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span> <span class="keywordflow">if</span>(advance &gt; 0)</div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span> {</div>
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span> uint8_t discard[4096];</div>
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span> <span class="keywordtype">size_t</span> adv = advance;</div>
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span> </div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span> <span class="keywordflow">while</span>(adv &gt; 0)</div>
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span> {</div>
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span> <span class="keywordtype">size_t</span> step = adv &gt; <span class="keyword">sizeof</span>(discard) ? <span class="keyword">sizeof</span>(discard) : adv;</div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span> <a class="code hl_function" href="lfg_8c.html#a25e6df5ee051a324d943185f193d3418">ngc_lfg_get_bytes</a>(&amp;lfg, discard, step);</div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span> adv -= step;</div>
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span> }</div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span> }</div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span> </div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span> <span class="keywordtype">size_t</span> chunk = <a class="code hl_define" href="wii__crypto_8h.html#ab21867411a4f988431fc692baa0389d6">WII_GROUP_DATA_SIZE</a> - (size_t)off;</div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span> </div>
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span> <span class="keywordflow">if</span>(chunk &gt; <a class="code hl_define" href="wii__crypto_8h.html#a9ee328ed858e3139fbae54c007a00d64">WII_SECTOR_SIZE</a>) chunk = <a class="code hl_define" href="wii__crypto_8h.html#a9ee328ed858e3139fbae54c007a00d64">WII_SECTOR_SIZE</a>;</div>
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span> </div>
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span> <a class="code hl_function" href="lfg_8c.html#a25e6df5ee051a324d943185f193d3418">ngc_lfg_get_bytes</a>(&amp;lfg, group_cache + <a class="code hl_define" href="wii__crypto_8h.html#ac673ea3e31315ae51d390d06df7340cb">WII_GROUP_HASH_SIZE</a> + off, chunk);</div>
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span> }</div>
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span>}</div>
</div>
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span></div>
<div class="foldopen" id="foldopen00184" data-start="{" data-end="}">
<div class="line"><a id="l00184" name="l00184"></a><span class="lineno"><a class="line" href="decls_8h.html#a48f93ec154d0aed7cb713391a7717b46"> 184</a></span><a class="code hl_define" href="decls_8h.html#a9001412c35f3c92d3a9320d27b0d97f9">AARU_EXPORT</a> int32_t <a class="code hl_define" href="decls_8h.html#a018e0da1c1f7e4f6187a982c0e40e056">AARU_CALL</a> <a class="code hl_function" href="read_8c.html#aa8588f3b6c705666833c84e6cd4cfe62">aaruf_read_media_tag</a>(<span class="keywordtype">void</span> *context, uint8_t *data, <span class="keyword">const</span> int32_t tag, uint32_t *length)</div>
<div class="line"><a id="l00185" name="l00185"></a><span class="lineno"> 185</span>{</div>
<div class="line"><a id="l00186" name="l00186"></a><span class="lineno"> 186</span> <span class="keyword">const</span> uint32_t initial_length = length == NULL ? 0U : *length;</div>
<div class="line"><a id="l00187" name="l00187"></a><span class="lineno"> 187</span> </div>
<div class="line"><a id="l00188" name="l00188"></a><span class="lineno"> 188</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Entering aaruf_read_media_tag(%p, %p, %d, %u)&quot;</span>, context, data, tag, initial_length);</div>
<div class="line"><a id="l00189" name="l00189"></a><span class="lineno"> 189</span> </div>
<div class="line"><a id="l00190" name="l00190"></a><span class="lineno"> 190</span> <a class="code hl_struct" href="structmediaTagEntry.html">mediaTagEntry</a> *item;</div>
<div class="line"><a id="l00191" name="l00191"></a><span class="lineno"> 191</span> </div>
<div class="line"><a id="l00192" name="l00192"></a><span class="lineno"> 192</span> <span class="keywordflow">if</span>(context == NULL)</div>
<div class="line"><a id="l00193" name="l00193"></a><span class="lineno"> 193</span> {</div>
<div class="line"><a id="l00194" name="l00194"></a><span class="lineno"> 194</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Invalid context&quot;</span>);</div>
<div class="line"><a id="l00195" name="l00195"></a><span class="lineno"> 195</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_media_tag() = AARUF_ERROR_NOT_AARUFORMAT&quot;</span>);</div>
<div class="line"><a id="l00196" name="l00196"></a><span class="lineno"> 196</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#abb63e240b11d790da83bd34507b57851">AARUF_ERROR_NOT_AARUFORMAT</a>;</div>
<div class="line"><a id="l00197" name="l00197"></a><span class="lineno"> 197</span> }</div>
<div class="line"><a id="l00198" name="l00198"></a><span class="lineno"> 198</span> </div>
<div class="line"><a id="l00199" name="l00199"></a><span class="lineno"> 199</span> <span class="keywordflow">if</span>(length == NULL)</div>
<div class="line"><a id="l00200" name="l00200"></a><span class="lineno"> 200</span> {</div>
<div class="line"><a id="l00201" name="l00201"></a><span class="lineno"> 201</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Invalid length pointer&quot;</span>);</div>
<div class="line"><a id="l00202" name="l00202"></a><span class="lineno"> 202</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_media_tag() = AARUF_ERROR_INCORRECT_DATA_SIZE&quot;</span>);</div>
<div class="line"><a id="l00203" name="l00203"></a><span class="lineno"> 203</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a8fc3ecb14777e72bebad62084b6caf16">AARUF_ERROR_INCORRECT_DATA_SIZE</a>;</div>
<div class="line"><a id="l00204" name="l00204"></a><span class="lineno"> 204</span> }</div>
<div class="line"><a id="l00205" name="l00205"></a><span class="lineno"> 205</span> </div>
<div class="line"><a id="l00206" name="l00206"></a><span class="lineno"> 206</span> <span class="keyword">const</span> <a class="code hl_struct" href="structaaruformat__context.html">aaruformat_context</a> *ctx = context;</div>
<div class="line"><a id="l00207" name="l00207"></a><span class="lineno"> 207</span> </div>
<div class="line"><a id="l00208" name="l00208"></a><span class="lineno"> 208</span> <span class="comment">// Not a libaaruformat context</span></div>
<div class="line"><a id="l00209" name="l00209"></a><span class="lineno"> 209</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a7dc0a0fe0bf6223ff4587fd01c360b76">magic</a> != <a class="code hl_define" href="consts_8h.html#a3c3ba66fe2b547655c9e4b16a1ba519a">AARU_MAGIC</a>)</div>
<div class="line"><a id="l00210" name="l00210"></a><span class="lineno"> 210</span> {</div>
<div class="line"><a id="l00211" name="l00211"></a><span class="lineno"> 211</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Invalid context&quot;</span>);</div>
<div class="line"><a id="l00212" name="l00212"></a><span class="lineno"> 212</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_media_tag() = AARUF_ERROR_NOT_AARUFORMAT&quot;</span>);</div>
<div class="line"><a id="l00213" name="l00213"></a><span class="lineno"> 213</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#abb63e240b11d790da83bd34507b57851">AARUF_ERROR_NOT_AARUFORMAT</a>;</div>
<div class="line"><a id="l00214" name="l00214"></a><span class="lineno"> 214</span> }</div>
<div class="line"><a id="l00215" name="l00215"></a><span class="lineno"> 215</span> </div>
<div class="line"><a id="l00216" name="l00216"></a><span class="lineno"> 216</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Finding media tag %d&quot;</span>, tag);</div>
<div class="line"><a id="l00217" name="l00217"></a><span class="lineno"> 217</span> HASH_FIND_INT(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8b769e9fb9467aa11d4a2936cf5cf5ed">mediaTags</a>, &amp;tag, item);</div>
<div class="line"><a id="l00218" name="l00218"></a><span class="lineno"> 218</span> </div>
<div class="line"><a id="l00219" name="l00219"></a><span class="lineno"> 219</span> <span class="keywordflow">if</span>(item == NULL)</div>
<div class="line"><a id="l00220" name="l00220"></a><span class="lineno"> 220</span> {</div>
<div class="line"><a id="l00221" name="l00221"></a><span class="lineno"> 221</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Media tag not found&quot;</span>);</div>
<div class="line"><a id="l00222" name="l00222"></a><span class="lineno"> 222</span> *length = 0;</div>
<div class="line"><a id="l00223" name="l00223"></a><span class="lineno"> 223</span> </div>
<div class="line"><a id="l00224" name="l00224"></a><span class="lineno"> 224</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_media_tag() = AARUF_ERROR_MEDIA_TAG_NOT_PRESENT&quot;</span>);</div>
<div class="line"><a id="l00225" name="l00225"></a><span class="lineno"> 225</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#ad87e52bef1f48eebb49458a5f64f7016">AARUF_ERROR_MEDIA_TAG_NOT_PRESENT</a>;</div>
<div class="line"><a id="l00226" name="l00226"></a><span class="lineno"> 226</span> }</div>
<div class="line"><a id="l00227" name="l00227"></a><span class="lineno"> 227</span> </div>
<div class="line"><a id="l00228" name="l00228"></a><span class="lineno"> 228</span> <span class="keywordflow">if</span>(data == NULL || *length &lt; item-&gt;length)</div>
<div class="line"><a id="l00229" name="l00229"></a><span class="lineno"> 229</span> {</div>
<div class="line"><a id="l00230" name="l00230"></a><span class="lineno"> 230</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Buffer too small for media tag %d, required %u bytes&quot;</span>, tag, item-&gt;<a class="code hl_variable" href="structmediaTagEntry.html#aa96c6684fd98145d0089d72957d2afa7">length</a>);</div>
<div class="line"><a id="l00231" name="l00231"></a><span class="lineno"> 231</span> *length = item-&gt;<a class="code hl_variable" href="structmediaTagEntry.html#aa96c6684fd98145d0089d72957d2afa7">length</a>;</div>
<div class="line"><a id="l00232" name="l00232"></a><span class="lineno"> 232</span> </div>
<div class="line"><a id="l00233" name="l00233"></a><span class="lineno"> 233</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_media_tag() = AARUF_ERROR_BUFFER_TOO_SMALL&quot;</span>);</div>
<div class="line"><a id="l00234" name="l00234"></a><span class="lineno"> 234</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#ae7eea5936a22100db46aac3e4312cdae">AARUF_ERROR_BUFFER_TOO_SMALL</a>;</div>
<div class="line"><a id="l00235" name="l00235"></a><span class="lineno"> 235</span> }</div>
<div class="line"><a id="l00236" name="l00236"></a><span class="lineno"> 236</span> </div>
<div class="line"><a id="l00237" name="l00237"></a><span class="lineno"> 237</span> *length = item-&gt;<a class="code hl_variable" href="structmediaTagEntry.html#aa96c6684fd98145d0089d72957d2afa7">length</a>;</div>
<div class="line"><a id="l00238" name="l00238"></a><span class="lineno"> 238</span> memcpy(data, item-&gt;<a class="code hl_variable" href="structmediaTagEntry.html#a334fc65b37efdfb624e804e98c398927">data</a>, item-&gt;<a class="code hl_variable" href="structmediaTagEntry.html#aa96c6684fd98145d0089d72957d2afa7">length</a>);</div>
<div class="line"><a id="l00239" name="l00239"></a><span class="lineno"> 239</span> </div>
<div class="line"><a id="l00240" name="l00240"></a><span class="lineno"> 240</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Media tag %d read successfully, length %u&quot;</span>, tag, *length);</div>
<div class="line"><a id="l00241" name="l00241"></a><span class="lineno"> 241</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_media_tag() = AARUF_STATUS_OK&quot;</span>);</div>
<div class="line"><a id="l00242" name="l00242"></a><span class="lineno"> 242</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a1d6e49f7e8a1fa489efa0a582e90b5de">AARUF_STATUS_OK</a>;</div>
<div class="line"><a id="l00243" name="l00243"></a><span class="lineno"> 243</span>}</div>
</div>
<div class="line"><a id="l00244" name="l00244"></a><span class="lineno"> 244</span></div>
<div class="foldopen" id="foldopen00352" data-start="{" data-end="}">
<div class="line"><a id="l00352" name="l00352"></a><span class="lineno"><a class="line" href="decls_8h.html#a2297e89619ba11cb0a0779a985fc1c34"> 352</a></span><a class="code hl_define" href="decls_8h.html#a9001412c35f3c92d3a9320d27b0d97f9">AARU_EXPORT</a> int32_t <a class="code hl_define" href="decls_8h.html#a018e0da1c1f7e4f6187a982c0e40e056">AARU_CALL</a> <a class="code hl_function" href="read_8c.html#a6feebf672750fc129fe2802ab738d563">aaruf_read_sector</a>(<span class="keywordtype">void</span> *context, <span class="keyword">const</span> uint64_t sector_address, <span class="keywordtype">bool</span> negative,</div>
<div class="line"><a id="l00353" name="l00353"></a><span class="lineno"> 353</span> uint8_t *data, uint32_t *length, uint8_t *sector_status)</div>
<div class="line"><a id="l00354" name="l00354"></a><span class="lineno"> 354</span>{</div>
<div class="line"><a id="l00355" name="l00355"></a><span class="lineno"> 355</span> <span class="keyword">const</span> uint32_t initial_length = length == NULL ? 0U : *length;</div>
<div class="line"><a id="l00356" name="l00356"></a><span class="lineno"> 356</span> </div>
<div class="line"><a id="l00357" name="l00357"></a><span class="lineno"> 357</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Entering aaruf_read_sector(%p, %&quot;</span> PRIu64 <span class="stringliteral">&quot;, %d, %p, %u)&quot;</span>, context, sector_address, negative, data,</div>
<div class="line"><a id="l00358" name="l00358"></a><span class="lineno"> 358</span> initial_length);</div>
<div class="line"><a id="l00359" name="l00359"></a><span class="lineno"> 359</span> </div>
<div class="line"><a id="l00360" name="l00360"></a><span class="lineno"> 360</span> <a class="code hl_struct" href="structaaruformat__context.html">aaruformat_context</a> *ctx = NULL;</div>
<div class="line"><a id="l00361" name="l00361"></a><span class="lineno"> 361</span> uint64_t offset = 0;</div>
<div class="line"><a id="l00362" name="l00362"></a><span class="lineno"> 362</span> uint64_t block_offset = 0;</div>
<div class="line"><a id="l00363" name="l00363"></a><span class="lineno"> 363</span> <a class="code hl_struct" href="structBlockHeader.html">BlockHeader</a> *block_header = NULL;</div>
<div class="line"><a id="l00364" name="l00364"></a><span class="lineno"> 364</span> uint8_t *block = NULL;</div>
<div class="line"><a id="l00365" name="l00365"></a><span class="lineno"> 365</span> <span class="keywordtype">size_t</span> read_bytes = 0;</div>
<div class="line"><a id="l00366" name="l00366"></a><span class="lineno"> 366</span> uint8_t lzma_properties[<a class="code hl_define" href="consts_8h.html#a25fd08252b97a0230d3efc899bddd240">LZMA_PROPERTIES_LENGTH</a>];</div>
<div class="line"><a id="l00367" name="l00367"></a><span class="lineno"> 367</span> <span class="keywordtype">size_t</span> lzma_size = 0;</div>
<div class="line"><a id="l00368" name="l00368"></a><span class="lineno"> 368</span> uint8_t *cmp_data = NULL;</div>
<div class="line"><a id="l00369" name="l00369"></a><span class="lineno"> 369</span> <span class="keywordtype">int</span> error_no = 0;</div>
<div class="line"><a id="l00370" name="l00370"></a><span class="lineno"> 370</span> *sector_status = <a class="code hl_enumvalue" href="enums_8h.html#a74e216af87b18a5fbf0204a52dd1bba0a032ffcff283d253414768f0fa035af4d">SectorStatusNotDumped</a>;</div>
<div class="line"><a id="l00371" name="l00371"></a><span class="lineno"> 371</span> </div>
<div class="line"><a id="l00372" name="l00372"></a><span class="lineno"> 372</span> <span class="keywordflow">if</span>(context == NULL)</div>
<div class="line"><a id="l00373" name="l00373"></a><span class="lineno"> 373</span> {</div>
<div class="line"><a id="l00374" name="l00374"></a><span class="lineno"> 374</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Invalid context&quot;</span>);</div>
<div class="line"><a id="l00375" name="l00375"></a><span class="lineno"> 375</span> </div>
<div class="line"><a id="l00376" name="l00376"></a><span class="lineno"> 376</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector() = AARUF_ERROR_NOT_AARUFORMAT&quot;</span>);</div>
<div class="line"><a id="l00377" name="l00377"></a><span class="lineno"> 377</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#abb63e240b11d790da83bd34507b57851">AARUF_ERROR_NOT_AARUFORMAT</a>;</div>
<div class="line"><a id="l00378" name="l00378"></a><span class="lineno"> 378</span> }</div>
<div class="line"><a id="l00379" name="l00379"></a><span class="lineno"> 379</span> </div>
<div class="line"><a id="l00380" name="l00380"></a><span class="lineno"> 380</span> ctx = context;</div>
<div class="line"><a id="l00381" name="l00381"></a><span class="lineno"> 381</span> </div>
<div class="line"><a id="l00382" name="l00382"></a><span class="lineno"> 382</span> <span class="keywordflow">if</span>(length == NULL)</div>
<div class="line"><a id="l00383" name="l00383"></a><span class="lineno"> 383</span> {</div>
<div class="line"><a id="l00384" name="l00384"></a><span class="lineno"> 384</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Invalid length pointer&quot;</span>);</div>
<div class="line"><a id="l00385" name="l00385"></a><span class="lineno"> 385</span> </div>
<div class="line"><a id="l00386" name="l00386"></a><span class="lineno"> 386</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector() = AARUF_ERROR_INCORRECT_DATA_SIZE&quot;</span>);</div>
<div class="line"><a id="l00387" name="l00387"></a><span class="lineno"> 387</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a8fc3ecb14777e72bebad62084b6caf16">AARUF_ERROR_INCORRECT_DATA_SIZE</a>;</div>
<div class="line"><a id="l00388" name="l00388"></a><span class="lineno"> 388</span> }</div>
<div class="line"><a id="l00389" name="l00389"></a><span class="lineno"> 389</span> </div>
<div class="line"><a id="l00390" name="l00390"></a><span class="lineno"> 390</span> <span class="comment">// Not a libaaruformat context</span></div>
<div class="line"><a id="l00391" name="l00391"></a><span class="lineno"> 391</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a7dc0a0fe0bf6223ff4587fd01c360b76">magic</a> != <a class="code hl_define" href="consts_8h.html#a3c3ba66fe2b547655c9e4b16a1ba519a">AARU_MAGIC</a>)</div>
<div class="line"><a id="l00392" name="l00392"></a><span class="lineno"> 392</span> {</div>
<div class="line"><a id="l00393" name="l00393"></a><span class="lineno"> 393</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Invalid context&quot;</span>);</div>
<div class="line"><a id="l00394" name="l00394"></a><span class="lineno"> 394</span> </div>
<div class="line"><a id="l00395" name="l00395"></a><span class="lineno"> 395</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector() = AARUF_ERROR_NOT_AARUFORMAT&quot;</span>);</div>
<div class="line"><a id="l00396" name="l00396"></a><span class="lineno"> 396</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#abb63e240b11d790da83bd34507b57851">AARUF_ERROR_NOT_AARUFORMAT</a>;</div>
<div class="line"><a id="l00397" name="l00397"></a><span class="lineno"> 397</span> }</div>
<div class="line"><a id="l00398" name="l00398"></a><span class="lineno"> 398</span> </div>
<div class="line"><a id="l00399" name="l00399"></a><span class="lineno"> 399</span> <span class="keywordflow">if</span>(negative &amp;&amp; sector_address &gt; ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#ac48b4ceb64b05b5e7da2ca3df063ac99">negative</a>)</div>
<div class="line"><a id="l00400" name="l00400"></a><span class="lineno"> 400</span> {</div>
<div class="line"><a id="l00401" name="l00401"></a><span class="lineno"> 401</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Sector address out of bounds&quot;</span>);</div>
<div class="line"><a id="l00402" name="l00402"></a><span class="lineno"> 402</span> </div>
<div class="line"><a id="l00403" name="l00403"></a><span class="lineno"> 403</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector() = AARUF_ERROR_SECTOR_OUT_OF_BOUNDS&quot;</span>);</div>
<div class="line"><a id="l00404" name="l00404"></a><span class="lineno"> 404</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a3f6069602fee5f1264befab13708c0ef">AARUF_ERROR_SECTOR_OUT_OF_BOUNDS</a>;</div>
<div class="line"><a id="l00405" name="l00405"></a><span class="lineno"> 405</span> }</div>
<div class="line"><a id="l00406" name="l00406"></a><span class="lineno"> 406</span> </div>
<div class="line"><a id="l00407" name="l00407"></a><span class="lineno"> 407</span> <span class="keywordflow">if</span>(!negative &amp;&amp; sector_address &gt; ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ac970291b3449c04221827b9c2c18ac70">image_info</a>.<a class="code hl_variable" href="structImageInfo.html#ae3e1b9cde1c51152b00eb1b59e199906">Sectors</a> + ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#ac41f345c4d5db0c249ff171c85992482">overflow</a> - 1)</div>
<div class="line"><a id="l00408" name="l00408"></a><span class="lineno"> 408</span> {</div>
<div class="line"><a id="l00409" name="l00409"></a><span class="lineno"> 409</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Sector address out of bounds&quot;</span>);</div>
<div class="line"><a id="l00410" name="l00410"></a><span class="lineno"> 410</span> </div>
<div class="line"><a id="l00411" name="l00411"></a><span class="lineno"> 411</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector() = AARUF_ERROR_SECTOR_OUT_OF_BOUNDS&quot;</span>);</div>
<div class="line"><a id="l00412" name="l00412"></a><span class="lineno"> 412</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a3f6069602fee5f1264befab13708c0ef">AARUF_ERROR_SECTOR_OUT_OF_BOUNDS</a>;</div>
<div class="line"><a id="l00413" name="l00413"></a><span class="lineno"> 413</span> }</div>
<div class="line"><a id="l00414" name="l00414"></a><span class="lineno"> 414</span> </div>
<div class="line"><a id="l00415" name="l00415"></a><span class="lineno"> 415</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a7c284949fdbfecfddeac2ba6687213b0">ddt_version</a> == 1)</div>
<div class="line"><a id="l00416" name="l00416"></a><span class="lineno"> 416</span> {</div>
<div class="line"><a id="l00417" name="l00417"></a><span class="lineno"> 417</span> <span class="keywordflow">if</span>(negative)</div>
<div class="line"><a id="l00418" name="l00418"></a><span class="lineno"> 418</span> {</div>
<div class="line"><a id="l00419" name="l00419"></a><span class="lineno"> 419</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Negative sector addresses not supported in this image&quot;</span>);</div>
<div class="line"><a id="l00420" name="l00420"></a><span class="lineno"> 420</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a3f6069602fee5f1264befab13708c0ef">AARUF_ERROR_SECTOR_OUT_OF_BOUNDS</a>;</div>
<div class="line"><a id="l00421" name="l00421"></a><span class="lineno"> 421</span> }</div>
<div class="line"><a id="l00422" name="l00422"></a><span class="lineno"> 422</span> </div>
<div class="line"><a id="l00423" name="l00423"></a><span class="lineno"> 423</span> error_no = <a class="code hl_function" href="internal_8h.html#a26e5fd58cdfd39948f1b724fafffcdc2">decode_ddt_entry_v1</a>(ctx, sector_address, &amp;offset, &amp;block_offset, sector_status);</div>
<div class="line"><a id="l00424" name="l00424"></a><span class="lineno"> 424</span> }</div>
<div class="line"><a id="l00425" name="l00425"></a><span class="lineno"> 425</span> <span class="keywordflow">else</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a7c284949fdbfecfddeac2ba6687213b0">ddt_version</a> == 2)</div>
<div class="line"><a id="l00426" name="l00426"></a><span class="lineno"> 426</span> error_no = <a class="code hl_function" href="internal_8h.html#a805d607b45bb8ad8a3e6b0bcfabe3265">decode_ddt_entry_v2</a>(ctx, sector_address, negative, &amp;offset, &amp;block_offset, sector_status);</div>
<div class="line"><a id="l00427" name="l00427"></a><span class="lineno"> 427</span> </div>
<div class="line"><a id="l00428" name="l00428"></a><span class="lineno"> 428</span> <span class="keywordflow">if</span>(error_no != <a class="code hl_define" href="errors_8h.html#a1d6e49f7e8a1fa489efa0a582e90b5de">AARUF_STATUS_OK</a>)</div>
<div class="line"><a id="l00429" name="l00429"></a><span class="lineno"> 429</span> {</div>
<div class="line"><a id="l00430" name="l00430"></a><span class="lineno"> 430</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Error %d decoding DDT entry&quot;</span>, error_no);</div>
<div class="line"><a id="l00431" name="l00431"></a><span class="lineno"> 431</span> </div>
<div class="line"><a id="l00432" name="l00432"></a><span class="lineno"> 432</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector() = %d&quot;</span>, error_no);</div>
<div class="line"><a id="l00433" name="l00433"></a><span class="lineno"> 433</span> <span class="keywordflow">return</span> error_no;</div>
<div class="line"><a id="l00434" name="l00434"></a><span class="lineno"> 434</span> }</div>
<div class="line"><a id="l00435" name="l00435"></a><span class="lineno"> 435</span> </div>
<div class="line"><a id="l00436" name="l00436"></a><span class="lineno"> 436</span> <span class="comment">// Partially written image... as we can&#39;t know the real sector size just assume it&#39;s common :/</span></div>
<div class="line"><a id="l00437" name="l00437"></a><span class="lineno"> 437</span> <span class="keywordflow">if</span>(*sector_status == <a class="code hl_enumvalue" href="enums_8h.html#a74e216af87b18a5fbf0204a52dd1bba0a032ffcff283d253414768f0fa035af4d">SectorStatusNotDumped</a>)</div>
<div class="line"><a id="l00438" name="l00438"></a><span class="lineno"> 438</span> {</div>
<div class="line"><a id="l00439" name="l00439"></a><span class="lineno"> 439</span> *length = ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ac970291b3449c04221827b9c2c18ac70">image_info</a>.<a class="code hl_variable" href="structImageInfo.html#aac1ac48f57afd415467cd6f13f01644b">SectorSize</a>;</div>
<div class="line"><a id="l00440" name="l00440"></a><span class="lineno"> 440</span> </div>
<div class="line"><a id="l00441" name="l00441"></a><span class="lineno"> 441</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector() = AARUF_STATUS_SECTOR_NOT_DUMPED&quot;</span>);</div>
<div class="line"><a id="l00442" name="l00442"></a><span class="lineno"> 442</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#ab629288e7ddaf4dd8419621e6963e2cf">AARUF_STATUS_SECTOR_NOT_DUMPED</a>;</div>
<div class="line"><a id="l00443" name="l00443"></a><span class="lineno"> 443</span> }</div>
<div class="line"><a id="l00444" name="l00444"></a><span class="lineno"> 444</span> </div>
<div class="line"><a id="l00445" name="l00445"></a><span class="lineno"> 445</span> <span class="comment">// NGCW: SectorStatusGenerable — regenerate junk from seed, no block data exists</span></div>
<div class="line"><a id="l00446" name="l00446"></a><span class="lineno"> 446</span> <span class="keywordflow">if</span>(*sector_status == <a class="code hl_enumvalue" href="enums_8h.html#a74e216af87b18a5fbf0204a52dd1bba0a0aee129dfb9ac43234206185e777975c">SectorStatusGenerable</a> &amp;&amp; (ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a670dec8d59407989fefc361dc26c6832">header</a>.<a class="code hl_variable" href="structAaruHeaderV2.html#a81b114ab2b1fa786f64e9e914af3ba27">mediaType</a> == <a class="code hl_enumvalue" href="group__MediaTypes.html#gga1499e9f8a76cb81b43b7a4b0dbe7e44aa34fed1daeb2422887d826d127e6ad488">GOD</a> || ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a670dec8d59407989fefc361dc26c6832">header</a>.<a class="code hl_variable" href="structAaruHeaderV2.html#a81b114ab2b1fa786f64e9e914af3ba27">mediaType</a> == <a class="code hl_enumvalue" href="group__MediaTypes.html#gga1499e9f8a76cb81b43b7a4b0dbe7e44aa61ed400b8bb5104e7309b3823e85766c">WOD</a>))</div>
<div class="line"><a id="l00447" name="l00447"></a><span class="lineno"> 447</span> {</div>
<div class="line"><a id="l00448" name="l00448"></a><span class="lineno"> 448</span> <span class="keywordflow">if</span>(!ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ae87bda67ebb4a9b27f363a03634ab25c">ngcw_junk_initialized</a>)</div>
<div class="line"><a id="l00449" name="l00449"></a><span class="lineno"> 449</span> {</div>
<div class="line"><a id="l00450" name="l00450"></a><span class="lineno"> 450</span> <a class="code hl_function" href="ngcw__junk_8c.html#a8aae28231f89db161998f42c61b2e246">ngcw_junk_lazy_init</a>(ctx);</div>
<div class="line"><a id="l00451" name="l00451"></a><span class="lineno"> 451</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ae87bda67ebb4a9b27f363a03634ab25c">ngcw_junk_initialized</a> = <span class="keyword">true</span>;</div>
<div class="line"><a id="l00452" name="l00452"></a><span class="lineno"> 452</span> }</div>
<div class="line"><a id="l00453" name="l00453"></a><span class="lineno"> 453</span> </div>
<div class="line"><a id="l00454" name="l00454"></a><span class="lineno"> 454</span> *length = ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ac970291b3449c04221827b9c2c18ac70">image_info</a>.<a class="code hl_variable" href="structImageInfo.html#aac1ac48f57afd415467cd6f13f01644b">SectorSize</a>;</div>
<div class="line"><a id="l00455" name="l00455"></a><span class="lineno"> 455</span> </div>
<div class="line"><a id="l00456" name="l00456"></a><span class="lineno"> 456</span> <span class="keywordflow">if</span>(data == NULL)</div>
<div class="line"><a id="l00457" name="l00457"></a><span class="lineno"> 457</span> {</div>
<div class="line"><a id="l00458" name="l00458"></a><span class="lineno"> 458</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector() = AARUF_ERROR_BUFFER_TOO_SMALL (generable, NULL data)&quot;</span>);</div>
<div class="line"><a id="l00459" name="l00459"></a><span class="lineno"> 459</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#ae7eea5936a22100db46aac3e4312cdae">AARUF_ERROR_BUFFER_TOO_SMALL</a>;</div>
<div class="line"><a id="l00460" name="l00460"></a><span class="lineno"> 460</span> }</div>
<div class="line"><a id="l00461" name="l00461"></a><span class="lineno"> 461</span> </div>
<div class="line"><a id="l00462" name="l00462"></a><span class="lineno"> 462</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a369261f4f02c9997195c062ba7940468">ngcw_junk_entries</a> != NULL)</div>
<div class="line"><a id="l00463" name="l00463"></a><span class="lineno"> 463</span> {</div>
<div class="line"><a id="l00464" name="l00464"></a><span class="lineno"> 464</span> uint64_t disc_offset = sector_address * (uint64_t)ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ac970291b3449c04221827b9c2c18ac70">image_info</a>.<a class="code hl_variable" href="structImageInfo.html#aac1ac48f57afd415467cd6f13f01644b">SectorSize</a>;</div>
<div class="line"><a id="l00465" name="l00465"></a><span class="lineno"> 465</span> </div>
<div class="line"><a id="l00466" name="l00466"></a><span class="lineno"> 466</span> <span class="keywordflow">if</span>(<a class="code hl_function" href="ngcw__junk_8c.html#af61bca5a962d01d631b0a7135be54f08">ngcw_regenerate_junk_sector</a>((<span class="keyword">const</span> <a class="code hl_struct" href="structNgcwJunkEntry.html">NgcwJunkEntry</a> *)ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a369261f4f02c9997195c062ba7940468">ngcw_junk_entries</a>, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a9307ffe59ce5d5b4f6c9c9a63b0ef70d">ngcw_junk_entry_count</a>,</div>
<div class="line"><a id="l00467" name="l00467"></a><span class="lineno"> 467</span> disc_offset, data, *length) == 0)</div>
<div class="line"><a id="l00468" name="l00468"></a><span class="lineno"> 468</span> {</div>
<div class="line"><a id="l00469" name="l00469"></a><span class="lineno"> 469</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a670dec8d59407989fefc361dc26c6832">header</a>.<a class="code hl_variable" href="structAaruHeaderV2.html#a81b114ab2b1fa786f64e9e914af3ba27">mediaType</a> == <a class="code hl_enumvalue" href="group__MediaTypes.html#gga1499e9f8a76cb81b43b7a4b0dbe7e44aa34fed1daeb2422887d826d127e6ad488">GOD</a>)</div>
<div class="line"><a id="l00470" name="l00470"></a><span class="lineno"> 470</span> {</div>
<div class="line"><a id="l00471" name="l00471"></a><span class="lineno"> 471</span> *sector_status = <a class="code hl_enumvalue" href="enums_8h.html#a74e216af87b18a5fbf0204a52dd1bba0a018d08672ed62f6f147db4f25ce3917c">SectorStatusDumped</a>;</div>
<div class="line"><a id="l00472" name="l00472"></a><span class="lineno"> 472</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector() = AARUF_STATUS_OK (GOD generable)&quot;</span>);</div>
<div class="line"><a id="l00473" name="l00473"></a><span class="lineno"> 473</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a1d6e49f7e8a1fa489efa0a582e90b5de">AARUF_STATUS_OK</a>;</div>
<div class="line"><a id="l00474" name="l00474"></a><span class="lineno"> 474</span> }</div>
<div class="line"><a id="l00475" name="l00475"></a><span class="lineno"> 475</span> </div>
<div class="line"><a id="l00476" name="l00476"></a><span class="lineno"> 476</span> <span class="comment">// WOD: regenerated junk needs Wii re-encryption.</span></div>
<div class="line"><a id="l00477" name="l00477"></a><span class="lineno"> 477</span> <span class="comment">// We have the plaintext in the data buffer — do re-encryption now and return.</span></div>
<div class="line"><a id="l00478" name="l00478"></a><span class="lineno"> 478</span> <span class="keywordflow">if</span>(!ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#aa97751408e9681a348b9385e28c15680">wii_encryption_initialized</a>)</div>
<div class="line"><a id="l00479" name="l00479"></a><span class="lineno"> 479</span> {</div>
<div class="line"><a id="l00480" name="l00480"></a><span class="lineno"> 480</span> <a class="code hl_function" href="wii__crypto_8c.html#aee93568d673177b4ed369b0032c6c68b">wii_lazy_init</a>(ctx);</div>
<div class="line"><a id="l00481" name="l00481"></a><span class="lineno"> 481</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#aa97751408e9681a348b9385e28c15680">wii_encryption_initialized</a> = <span class="keyword">true</span>;</div>
<div class="line"><a id="l00482" name="l00482"></a><span class="lineno"> 482</span> }</div>
<div class="line"><a id="l00483" name="l00483"></a><span class="lineno"> 483</span> </div>
<div class="line"><a id="l00484" name="l00484"></a><span class="lineno"> 484</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#aaf475c0a1941563a9e1598f02ac48b66">wii_partition_regions</a> != NULL &amp;&amp; ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ae1b2a0044c769c469ae161df9ed6de50">wii_encrypted_group_cache</a> != NULL &amp;&amp;</div>
<div class="line"><a id="l00485" name="l00485"></a><span class="lineno"> 485</span> !ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a89ccabe4312ac3ea706c594bf4db4753">wii_building_crypto_block</a>)</div>
<div class="line"><a id="l00486" name="l00486"></a><span class="lineno"> 486</span> {</div>
<div class="line"><a id="l00487" name="l00487"></a><span class="lineno"> 487</span> <span class="keyword">const</span> uint8_t *part_key = <a class="code hl_function" href="wii__crypto_8c.html#a1ce70cb0d83e9893accd7f06f218146a">wii_get_sector_key</a>((<span class="keyword">const</span> <a class="code hl_struct" href="structWiiPartitionRegion.html">WiiPartitionRegion</a> *)ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#aaf475c0a1941563a9e1598f02ac48b66">wii_partition_regions</a>,</div>
<div class="line"><a id="l00488" name="l00488"></a><span class="lineno"> 488</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#aa3dd955c7f01ecb619b3862fecce7110">wii_partition_region_count</a>, sector_address);</div>
<div class="line"><a id="l00489" name="l00489"></a><span class="lineno"> 489</span> </div>
<div class="line"><a id="l00490" name="l00490"></a><span class="lineno"> 490</span> <span class="keywordflow">if</span>(part_key != NULL)</div>
<div class="line"><a id="l00491" name="l00491"></a><span class="lineno"> 491</span> {</div>
<div class="line"><a id="l00492" name="l00492"></a><span class="lineno"> 492</span> uint64_t phys_group = sector_address / <a class="code hl_define" href="wii__crypto_8h.html#af6ed59742196c351932ad0f0e5e43566">WII_LOGICAL_PER_GROUP</a>;</div>
<div class="line"><a id="l00493" name="l00493"></a><span class="lineno"> 493</span> uint32_t slice_index = (uint32_t)(sector_address % <a class="code hl_define" href="wii__crypto_8h.html#af6ed59742196c351932ad0f0e5e43566">WII_LOGICAL_PER_GROUP</a>);</div>
<div class="line"><a id="l00494" name="l00494"></a><span class="lineno"> 494</span> </div>
<div class="line"><a id="l00495" name="l00495"></a><span class="lineno"> 495</span> <span class="keywordflow">if</span>(!ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ac9f970fc840120793cb8edb909a664f8">wii_cache_valid</a> || ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a4313dd92399b83805575096514d0f473">wii_cached_physical_group</a> != phys_group)</div>
<div class="line"><a id="l00496" name="l00496"></a><span class="lineno"> 496</span> {</div>
<div class="line"><a id="l00497" name="l00497"></a><span class="lineno"> 497</span> uint64_t first_logical = phys_group * <a class="code hl_define" href="wii__crypto_8h.html#af6ed59742196c351932ad0f0e5e43566">WII_LOGICAL_PER_GROUP</a>;</div>
<div class="line"><a id="l00498" name="l00498"></a><span class="lineno"> 498</span> </div>
<div class="line"><a id="l00499" name="l00499"></a><span class="lineno"> 499</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a89ccabe4312ac3ea706c594bf4db4753">wii_building_crypto_block</a> = <span class="keyword">true</span>;</div>
<div class="line"><a id="l00500" name="l00500"></a><span class="lineno"> 500</span> </div>
<div class="line"><a id="l00501" name="l00501"></a><span class="lineno"> 501</span> <span class="keywordflow">for</span>(uint32_t s = 0; s &lt; <a class="code hl_define" href="wii__crypto_8h.html#af6ed59742196c351932ad0f0e5e43566">WII_LOGICAL_PER_GROUP</a>; s++)</div>
<div class="line"><a id="l00502" name="l00502"></a><span class="lineno"> 502</span> {</div>
<div class="line"><a id="l00503" name="l00503"></a><span class="lineno"> 503</span> uint64_t logical = first_logical + s;</div>
<div class="line"><a id="l00504" name="l00504"></a><span class="lineno"> 504</span> </div>
<div class="line"><a id="l00505" name="l00505"></a><span class="lineno"> 505</span> <span class="keywordflow">if</span>(logical == sector_address)</div>
<div class="line"><a id="l00506" name="l00506"></a><span class="lineno"> 506</span> {</div>
<div class="line"><a id="l00507" name="l00507"></a><span class="lineno"> 507</span> memcpy(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ae1b2a0044c769c469ae161df9ed6de50">wii_encrypted_group_cache</a> + s * (*length), data, *length);</div>
<div class="line"><a id="l00508" name="l00508"></a><span class="lineno"> 508</span> }</div>
<div class="line"><a id="l00509" name="l00509"></a><span class="lineno"> 509</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l00510" name="l00510"></a><span class="lineno"> 510</span> {</div>
<div class="line"><a id="l00511" name="l00511"></a><span class="lineno"> 511</span> uint32_t s_len = *length;</div>
<div class="line"><a id="l00512" name="l00512"></a><span class="lineno"> 512</span> uint8_t s_status = 0;</div>
<div class="line"><a id="l00513" name="l00513"></a><span class="lineno"> 513</span> int32_t s_ret = <a class="code hl_function" href="read_8c.html#a6feebf672750fc129fe2802ab738d563">aaruf_read_sector</a>(context, logical, <span class="keyword">false</span>,</div>
<div class="line"><a id="l00514" name="l00514"></a><span class="lineno"> 514</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ae1b2a0044c769c469ae161df9ed6de50">wii_encrypted_group_cache</a> + s * s_len,</div>
<div class="line"><a id="l00515" name="l00515"></a><span class="lineno"> 515</span> &amp;s_len, &amp;s_status);</div>
<div class="line"><a id="l00516" name="l00516"></a><span class="lineno"> 516</span> </div>
<div class="line"><a id="l00517" name="l00517"></a><span class="lineno"> 517</span> <span class="keywordflow">if</span>(s_ret != <a class="code hl_define" href="errors_8h.html#a1d6e49f7e8a1fa489efa0a582e90b5de">AARUF_STATUS_OK</a>)</div>
<div class="line"><a id="l00518" name="l00518"></a><span class="lineno"> 518</span> memset(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ae1b2a0044c769c469ae161df9ed6de50">wii_encrypted_group_cache</a> + s * (*length), 0, *length);</div>
<div class="line"><a id="l00519" name="l00519"></a><span class="lineno"> 519</span> }</div>
<div class="line"><a id="l00520" name="l00520"></a><span class="lineno"> 520</span> }</div>
<div class="line"><a id="l00521" name="l00521"></a><span class="lineno"> 521</span> </div>
<div class="line"><a id="l00522" name="l00522"></a><span class="lineno"> 522</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a89ccabe4312ac3ea706c594bf4db4753">wii_building_crypto_block</a> = <span class="keyword">false</span>;</div>
<div class="line"><a id="l00523" name="l00523"></a><span class="lineno"> 523</span> </div>
<div class="line"><a id="l00524" name="l00524"></a><span class="lineno"> 524</span> <span class="comment">// Reconstruct junk in user data area</span></div>
<div class="line"><a id="l00525" name="l00525"></a><span class="lineno"> 525</span> <a class="code hl_function" href="read_8c.html#a277efc2abbdd8e351eb84542e4eda59a">wii_reconstruct_group_junk</a>(ctx, phys_group, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ae1b2a0044c769c469ae161df9ed6de50">wii_encrypted_group_cache</a>);</div>
<div class="line"><a id="l00526" name="l00526"></a><span class="lineno"> 526</span> </div>
<div class="line"><a id="l00527" name="l00527"></a><span class="lineno"> 527</span> <a class="code hl_function" href="wii__crypto_8c.html#a95d508bfdafd91552793ad54a677d511">wii_encrypt_group</a>(part_key, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ae1b2a0044c769c469ae161df9ed6de50">wii_encrypted_group_cache</a>,</div>
<div class="line"><a id="l00528" name="l00528"></a><span class="lineno"> 528</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ae1b2a0044c769c469ae161df9ed6de50">wii_encrypted_group_cache</a> + <a class="code hl_define" href="wii__crypto_8h.html#ac673ea3e31315ae51d390d06df7340cb">WII_GROUP_HASH_SIZE</a>,</div>
<div class="line"><a id="l00529" name="l00529"></a><span class="lineno"> 529</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ae1b2a0044c769c469ae161df9ed6de50">wii_encrypted_group_cache</a>);</div>
<div class="line"><a id="l00530" name="l00530"></a><span class="lineno"> 530</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a4313dd92399b83805575096514d0f473">wii_cached_physical_group</a> = phys_group;</div>
<div class="line"><a id="l00531" name="l00531"></a><span class="lineno"> 531</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ac9f970fc840120793cb8edb909a664f8">wii_cache_valid</a> = <span class="keyword">true</span>;</div>
<div class="line"><a id="l00532" name="l00532"></a><span class="lineno"> 532</span> }</div>
<div class="line"><a id="l00533" name="l00533"></a><span class="lineno"> 533</span> </div>
<div class="line"><a id="l00534" name="l00534"></a><span class="lineno"> 534</span> memcpy(data, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ae1b2a0044c769c469ae161df9ed6de50">wii_encrypted_group_cache</a> + slice_index * (*length), *length);</div>
<div class="line"><a id="l00535" name="l00535"></a><span class="lineno"> 535</span> }</div>
<div class="line"><a id="l00536" name="l00536"></a><span class="lineno"> 536</span> }</div>
<div class="line"><a id="l00537" name="l00537"></a><span class="lineno"> 537</span> </div>
<div class="line"><a id="l00538" name="l00538"></a><span class="lineno"> 538</span> *sector_status = <a class="code hl_enumvalue" href="enums_8h.html#a74e216af87b18a5fbf0204a52dd1bba0a018d08672ed62f6f147db4f25ce3917c">SectorStatusDumped</a>;</div>
<div class="line"><a id="l00539" name="l00539"></a><span class="lineno"> 539</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector() = AARUF_STATUS_OK (WOD generable re-encrypted)&quot;</span>);</div>
<div class="line"><a id="l00540" name="l00540"></a><span class="lineno"> 540</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a1d6e49f7e8a1fa489efa0a582e90b5de">AARUF_STATUS_OK</a>;</div>
<div class="line"><a id="l00541" name="l00541"></a><span class="lineno"> 541</span> }</div>
<div class="line"><a id="l00542" name="l00542"></a><span class="lineno"> 542</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l00543" name="l00543"></a><span class="lineno"> 543</span> {</div>
<div class="line"><a id="l00544" name="l00544"></a><span class="lineno"> 544</span> <span class="comment">// Not found in junk map — zero-fill</span></div>
<div class="line"><a id="l00545" name="l00545"></a><span class="lineno"> 545</span> memset(data, 0, *length);</div>
<div class="line"><a id="l00546" name="l00546"></a><span class="lineno"> 546</span> *sector_status = <a class="code hl_enumvalue" href="enums_8h.html#a74e216af87b18a5fbf0204a52dd1bba0a018d08672ed62f6f147db4f25ce3917c">SectorStatusDumped</a>;</div>
<div class="line"><a id="l00547" name="l00547"></a><span class="lineno"> 547</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector() = AARUF_STATUS_OK (generable not in map)&quot;</span>);</div>
<div class="line"><a id="l00548" name="l00548"></a><span class="lineno"> 548</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a1d6e49f7e8a1fa489efa0a582e90b5de">AARUF_STATUS_OK</a>;</div>
<div class="line"><a id="l00549" name="l00549"></a><span class="lineno"> 549</span> }</div>
<div class="line"><a id="l00550" name="l00550"></a><span class="lineno"> 550</span> }</div>
<div class="line"><a id="l00551" name="l00551"></a><span class="lineno"> 551</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l00552" name="l00552"></a><span class="lineno"> 552</span> {</div>
<div class="line"><a id="l00553" name="l00553"></a><span class="lineno"> 553</span> <span class="comment">// No junk map loaded — zero-fill</span></div>
<div class="line"><a id="l00554" name="l00554"></a><span class="lineno"> 554</span> memset(data, 0, *length);</div>
<div class="line"><a id="l00555" name="l00555"></a><span class="lineno"> 555</span> *sector_status = <a class="code hl_enumvalue" href="enums_8h.html#a74e216af87b18a5fbf0204a52dd1bba0a018d08672ed62f6f147db4f25ce3917c">SectorStatusDumped</a>;</div>
<div class="line"><a id="l00556" name="l00556"></a><span class="lineno"> 556</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector() = AARUF_STATUS_OK (no junk map)&quot;</span>);</div>
<div class="line"><a id="l00557" name="l00557"></a><span class="lineno"> 557</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a1d6e49f7e8a1fa489efa0a582e90b5de">AARUF_STATUS_OK</a>;</div>
<div class="line"><a id="l00558" name="l00558"></a><span class="lineno"> 558</span> }</div>
<div class="line"><a id="l00559" name="l00559"></a><span class="lineno"> 559</span> }</div>
<div class="line"><a id="l00560" name="l00560"></a><span class="lineno"> 560</span> </div>
<div class="line"><a id="l00561" name="l00561"></a><span class="lineno"> 561</span> <span class="comment">// Check if block header is cached</span></div>
<div class="line"><a id="l00562" name="l00562"></a><span class="lineno"> 562</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Checking if block header is cached&quot;</span>);</div>
<div class="line"><a id="l00563" name="l00563"></a><span class="lineno"> 563</span> block_header = <a class="code hl_function" href="lru_8h.html#a8cb7ac8e057627210732ee61d2966e35">find_in_cache_uint64</a>(&amp;ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a3a12addf4a338cc04471709604d48ae1">block_header_cache</a>, block_offset);</div>
<div class="line"><a id="l00564" name="l00564"></a><span class="lineno"> 564</span> </div>
<div class="line"><a id="l00565" name="l00565"></a><span class="lineno"> 565</span> <span class="comment">// Read block header</span></div>
<div class="line"><a id="l00566" name="l00566"></a><span class="lineno"> 566</span> <span class="keywordflow">if</span>(block_header == NULL)</div>
<div class="line"><a id="l00567" name="l00567"></a><span class="lineno"> 567</span> {</div>
<div class="line"><a id="l00568" name="l00568"></a><span class="lineno"> 568</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Allocating memory for block header&quot;</span>);</div>
<div class="line"><a id="l00569" name="l00569"></a><span class="lineno"> 569</span> block_header = malloc(<span class="keyword">sizeof</span>(<a class="code hl_struct" href="structBlockHeader.html">BlockHeader</a>));</div>
<div class="line"><a id="l00570" name="l00570"></a><span class="lineno"> 570</span> <span class="keywordflow">if</span>(block_header == NULL)</div>
<div class="line"><a id="l00571" name="l00571"></a><span class="lineno"> 571</span> {</div>
<div class="line"><a id="l00572" name="l00572"></a><span class="lineno"> 572</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Not enough memory for block header&quot;</span>);</div>
<div class="line"><a id="l00573" name="l00573"></a><span class="lineno"> 573</span> </div>
<div class="line"><a id="l00574" name="l00574"></a><span class="lineno"> 574</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector() = AARUF_ERROR_NOT_ENOUGH_MEMORY&quot;</span>);</div>
<div class="line"><a id="l00575" name="l00575"></a><span class="lineno"> 575</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a35a771e3648bf971a004d4b2be9b5ec4">AARUF_ERROR_NOT_ENOUGH_MEMORY</a>;</div>
<div class="line"><a id="l00576" name="l00576"></a><span class="lineno"> 576</span> }</div>
<div class="line"><a id="l00577" name="l00577"></a><span class="lineno"> 577</span> </div>
<div class="line"><a id="l00578" name="l00578"></a><span class="lineno"> 578</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Reading block header&quot;</span>);</div>
<div class="line"><a id="l00579" name="l00579"></a><span class="lineno"> 579</span> <span class="keywordflow">if</span>(<a class="code hl_function" href="internal_8h.html#a60c57e3b2e8e233d0be91f3690bf077c">aaruf_fseek</a>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>, (<a class="code hl_typedef" href="internal_8h.html#afb4a123eeae51c668333248fb666e0f2">aaru_off_t</a>)block_offset, SEEK_SET) != 0)</div>
<div class="line"><a id="l00580" name="l00580"></a><span class="lineno"> 580</span> {</div>
<div class="line"><a id="l00581" name="l00581"></a><span class="lineno"> 581</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Could not seek to block header&quot;</span>);</div>
<div class="line"><a id="l00582" name="l00582"></a><span class="lineno"> 582</span> free(block_header);</div>
<div class="line"><a id="l00583" name="l00583"></a><span class="lineno"> 583</span> </div>
<div class="line"><a id="l00584" name="l00584"></a><span class="lineno"> 584</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector() = AARUF_ERROR_CANNOT_READ_HEADER&quot;</span>);</div>
<div class="line"><a id="l00585" name="l00585"></a><span class="lineno"> 585</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a3459a04771fe04f8f77bfa90563a4375">AARUF_ERROR_CANNOT_READ_HEADER</a>;</div>
<div class="line"><a id="l00586" name="l00586"></a><span class="lineno"> 586</span> }</div>
<div class="line"><a id="l00587" name="l00587"></a><span class="lineno"> 587</span> </div>
<div class="line"><a id="l00588" name="l00588"></a><span class="lineno"> 588</span> read_bytes = fread(block_header, 1, <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structBlockHeader.html">BlockHeader</a>), ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>);</div>
<div class="line"><a id="l00589" name="l00589"></a><span class="lineno"> 589</span> </div>
<div class="line"><a id="l00590" name="l00590"></a><span class="lineno"> 590</span> <span class="keywordflow">if</span>(read_bytes != <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structBlockHeader.html">BlockHeader</a>))</div>
<div class="line"><a id="l00591" name="l00591"></a><span class="lineno"> 591</span> {</div>
<div class="line"><a id="l00592" name="l00592"></a><span class="lineno"> 592</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Error reading block header&quot;</span>);</div>
<div class="line"><a id="l00593" name="l00593"></a><span class="lineno"> 593</span> free(block_header);</div>
<div class="line"><a id="l00594" name="l00594"></a><span class="lineno"> 594</span> </div>
<div class="line"><a id="l00595" name="l00595"></a><span class="lineno"> 595</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector() = AARUF_ERROR_CANNOT_READ_HEADER&quot;</span>);</div>
<div class="line"><a id="l00596" name="l00596"></a><span class="lineno"> 596</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a3459a04771fe04f8f77bfa90563a4375">AARUF_ERROR_CANNOT_READ_HEADER</a>;</div>
<div class="line"><a id="l00597" name="l00597"></a><span class="lineno"> 597</span> }</div>
<div class="line"><a id="l00598" name="l00598"></a><span class="lineno"> 598</span> </div>
<div class="line"><a id="l00599" name="l00599"></a><span class="lineno"> 599</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Adding block header to cache&quot;</span>);</div>
<div class="line"><a id="l00600" name="l00600"></a><span class="lineno"> 600</span> <a class="code hl_function" href="lru_8h.html#a0735969939ca80db3fe439ed92b787bb">add_to_cache_uint64</a>(&amp;ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a3a12addf4a338cc04471709604d48ae1">block_header_cache</a>, block_offset, block_header);</div>
<div class="line"><a id="l00601" name="l00601"></a><span class="lineno"> 601</span> }</div>
<div class="line"><a id="l00602" name="l00602"></a><span class="lineno"> 602</span> <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code hl_function" href="internal_8h.html#a60c57e3b2e8e233d0be91f3690bf077c">aaruf_fseek</a>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>, (<a class="code hl_typedef" href="internal_8h.html#afb4a123eeae51c668333248fb666e0f2">aaru_off_t</a>)(block_offset + <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structBlockHeader.html">BlockHeader</a>)), SEEK_SET) != 0)</div>
<div class="line"><a id="l00603" name="l00603"></a><span class="lineno"> 603</span> {</div>
<div class="line"><a id="l00604" name="l00604"></a><span class="lineno"> 604</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Could not seek past cached block header&quot;</span>);</div>
<div class="line"><a id="l00605" name="l00605"></a><span class="lineno"> 605</span> </div>
<div class="line"><a id="l00606" name="l00606"></a><span class="lineno"> 606</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector() = AARUF_ERROR_CANNOT_READ_HEADER&quot;</span>);</div>
<div class="line"><a id="l00607" name="l00607"></a><span class="lineno"> 607</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a3459a04771fe04f8f77bfa90563a4375">AARUF_ERROR_CANNOT_READ_HEADER</a>;</div>
<div class="line"><a id="l00608" name="l00608"></a><span class="lineno"> 608</span> }</div>
<div class="line"><a id="l00609" name="l00609"></a><span class="lineno"> 609</span> </div>
<div class="line"><a id="l00610" name="l00610"></a><span class="lineno"> 610</span> <span class="comment">/* Sanity check: if the cached/read block header looks corrupt, skip directly to EC recovery.</span></div>
<div class="line"><a id="l00611" name="l00611"></a><span class="lineno"> 611</span><span class="comment"> * A corrupt header will have garbage sectorSize, compression, or identifier fields. */</span></div>
<div class="line"><a id="l00612" name="l00612"></a><span class="lineno"> 612</span> <span class="keywordflow">if</span>(block_header-&gt;<a class="code hl_variable" href="structBlockHeader.html#a3b03f118fb2dc3dcef3f87a82238e358">identifier</a> != <a class="code hl_enumvalue" href="enums_8h.html#a54420623f26ab6bb61042b41cccf37a3a5a0811c5ee97536aef900cecb8787713">DataBlock</a> ||</div>
<div class="line"><a id="l00613" name="l00613"></a><span class="lineno"> 613</span> block_header-&gt;<a class="code hl_variable" href="structBlockHeader.html#a5bd50f95c8c1f91e5013a1a154690beb">sectorSize</a> == 0 || block_header-&gt;<a class="code hl_variable" href="structBlockHeader.html#a5bd50f95c8c1f91e5013a1a154690beb">sectorSize</a> &gt; 65536)</div>
<div class="line"><a id="l00614" name="l00614"></a><span class="lineno"> 614</span> {</div>
<div class="line"><a id="l00615" name="l00615"></a><span class="lineno"> 615</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Block header at offset %&quot;</span> PRIu64 <span class="stringliteral">&quot; appears corrupt (id=0x%08X sectorSize=%u)&quot;</span>,</div>
<div class="line"><a id="l00616" name="l00616"></a><span class="lineno"> 616</span> block_offset, block_header-&gt;<a class="code hl_variable" href="structBlockHeader.html#a3b03f118fb2dc3dcef3f87a82238e358">identifier</a>, block_header-&gt;<a class="code hl_variable" href="structBlockHeader.html#a5bd50f95c8c1f91e5013a1a154690beb">sectorSize</a>);</div>
<div class="line"><a id="l00617" name="l00617"></a><span class="lineno"> 617</span> <span class="keywordflow">goto</span> ec_try_recovery;</div>
<div class="line"><a id="l00618" name="l00618"></a><span class="lineno"> 618</span> }</div>
<div class="line"><a id="l00619" name="l00619"></a><span class="lineno"> 619</span> </div>
<div class="line"><a id="l00620" name="l00620"></a><span class="lineno"> 620</span> <span class="keywordflow">if</span>(data == NULL || *length &lt; block_header-&gt;sectorSize)</div>
<div class="line"><a id="l00621" name="l00621"></a><span class="lineno"> 621</span> {</div>
<div class="line"><a id="l00622" name="l00622"></a><span class="lineno"> 622</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Buffer too small for sector, required %u bytes&quot;</span>, block_header-&gt;<a class="code hl_variable" href="structBlockHeader.html#a5bd50f95c8c1f91e5013a1a154690beb">sectorSize</a>);</div>
<div class="line"><a id="l00623" name="l00623"></a><span class="lineno"> 623</span> *length = block_header-&gt;<a class="code hl_variable" href="structBlockHeader.html#a5bd50f95c8c1f91e5013a1a154690beb">sectorSize</a>;</div>
<div class="line"><a id="l00624" name="l00624"></a><span class="lineno"> 624</span> </div>
<div class="line"><a id="l00625" name="l00625"></a><span class="lineno"> 625</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector() = AARUF_ERROR_BUFFER_TOO_SMALL&quot;</span>);</div>
<div class="line"><a id="l00626" name="l00626"></a><span class="lineno"> 626</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#ae7eea5936a22100db46aac3e4312cdae">AARUF_ERROR_BUFFER_TOO_SMALL</a>;</div>
<div class="line"><a id="l00627" name="l00627"></a><span class="lineno"> 627</span> }</div>
<div class="line"><a id="l00628" name="l00628"></a><span class="lineno"> 628</span> </div>
<div class="line"><a id="l00629" name="l00629"></a><span class="lineno"> 629</span> <span class="comment">// Check if block is cached</span></div>
<div class="line"><a id="l00630" name="l00630"></a><span class="lineno"> 630</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Checking if block is cached&quot;</span>);</div>
<div class="line"><a id="l00631" name="l00631"></a><span class="lineno"> 631</span> block = <a class="code hl_function" href="lru_8h.html#a8cb7ac8e057627210732ee61d2966e35">find_in_cache_uint64</a>(&amp;ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a58359ec8607d1d10e0af8699be238e77">block_cache</a>, block_offset);</div>
<div class="line"><a id="l00632" name="l00632"></a><span class="lineno"> 632</span> </div>
<div class="line"><a id="l00633" name="l00633"></a><span class="lineno"> 633</span> <span class="keywordflow">if</span>(block != NULL)</div>
<div class="line"><a id="l00634" name="l00634"></a><span class="lineno"> 634</span> {</div>
<div class="line"><a id="l00635" name="l00635"></a><span class="lineno"> 635</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Getting data from cache&quot;</span>);</div>
<div class="line"><a id="l00636" name="l00636"></a><span class="lineno"> 636</span> memcpy(data, block + offset * block_header-&gt;<a class="code hl_variable" href="structBlockHeader.html#a5bd50f95c8c1f91e5013a1a154690beb">sectorSize</a>, block_header-&gt;<a class="code hl_variable" href="structBlockHeader.html#a5bd50f95c8c1f91e5013a1a154690beb">sectorSize</a>);</div>
<div class="line"><a id="l00637" name="l00637"></a><span class="lineno"> 637</span> *length = block_header-&gt;<a class="code hl_variable" href="structBlockHeader.html#a5bd50f95c8c1f91e5013a1a154690beb">sectorSize</a>;</div>
<div class="line"><a id="l00638" name="l00638"></a><span class="lineno"> 638</span> </div>
<div class="line"><a id="l00639" name="l00639"></a><span class="lineno"> 639</span> <span class="comment">// PS3 re-encryption: if stored decrypted, re-encrypt for caller</span></div>
<div class="line"><a id="l00640" name="l00640"></a><span class="lineno"> 640</span> <span class="keywordflow">if</span>(*sector_status == <a class="code hl_enumvalue" href="enums_8h.html#a74e216af87b18a5fbf0204a52dd1bba0a4f144fd3d47ebf7e4103c3b89e051735">SectorStatusUnencrypted</a> &amp;&amp;</div>
<div class="line"><a id="l00641" name="l00641"></a><span class="lineno"> 641</span> (ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a670dec8d59407989fefc361dc26c6832">header</a>.<a class="code hl_variable" href="structAaruHeaderV2.html#a81b114ab2b1fa786f64e9e914af3ba27">mediaType</a> == <a class="code hl_enumvalue" href="group__MediaTypes.html#gga1499e9f8a76cb81b43b7a4b0dbe7e44aa727f071d5dd887fd6645e112cfcab197">PS3DVD</a> || ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a670dec8d59407989fefc361dc26c6832">header</a>.<a class="code hl_variable" href="structAaruHeaderV2.html#a81b114ab2b1fa786f64e9e914af3ba27">mediaType</a> == <a class="code hl_enumvalue" href="group__MediaTypes.html#gga1499e9f8a76cb81b43b7a4b0dbe7e44aa626b10297c3bc07fbff69cf639208453">PS3BD</a>))</div>
<div class="line"><a id="l00642" name="l00642"></a><span class="lineno"> 642</span> {</div>
<div class="line"><a id="l00643" name="l00643"></a><span class="lineno"> 643</span> <span class="keywordflow">if</span>(!ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a59525c7915fbc51ab0f2ef184db8bf6d">ps3_encryption_initialized</a>)</div>
<div class="line"><a id="l00644" name="l00644"></a><span class="lineno"> 644</span> {</div>
<div class="line"><a id="l00645" name="l00645"></a><span class="lineno"> 645</span> <a class="code hl_function" href="ps3__crypto_8c.html#a8c99822e07011d07362d5d40487eded6">ps3_lazy_init</a>(ctx);</div>
<div class="line"><a id="l00646" name="l00646"></a><span class="lineno"> 646</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a59525c7915fbc51ab0f2ef184db8bf6d">ps3_encryption_initialized</a> = <span class="keyword">true</span>;</div>
<div class="line"><a id="l00647" name="l00647"></a><span class="lineno"> 647</span> }</div>
<div class="line"><a id="l00648" name="l00648"></a><span class="lineno"> 648</span> </div>
<div class="line"><a id="l00649" name="l00649"></a><span class="lineno"> 649</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a016a2c15a10105ff17628c9ee7f5c424">ps3_disc_key</a> != NULL &amp;&amp; ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#acf62eadb2e019323fdbe8bbf536ad82c">ps3_plaintext_regions</a> != NULL &amp;&amp;</div>
<div class="line"><a id="l00650" name="l00650"></a><span class="lineno"> 650</span> <a class="code hl_function" href="ps3__encryption__map_8c.html#a058b5191df4b4a83a6bc55052fad503f">ps3_is_sector_encrypted</a>((<span class="keyword">const</span> <a class="code hl_struct" href="structPs3PlaintextRegion.html">Ps3PlaintextRegion</a> *)ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#acf62eadb2e019323fdbe8bbf536ad82c">ps3_plaintext_regions</a>,</div>
<div class="line"><a id="l00651" name="l00651"></a><span class="lineno"> 651</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a1bfda8e3b76471a7b526d05f4855f8f1">ps3_plaintext_region_count</a>, sector_address))</div>
<div class="line"><a id="l00652" name="l00652"></a><span class="lineno"> 652</span> {</div>
<div class="line"><a id="l00653" name="l00653"></a><span class="lineno"> 653</span> <a class="code hl_function" href="ps3__crypto_8c.html#af9a3081e827ba140edc64fda2e93ee96">ps3_encrypt_sector</a>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a016a2c15a10105ff17628c9ee7f5c424">ps3_disc_key</a>, sector_address, data, *length);</div>
<div class="line"><a id="l00654" name="l00654"></a><span class="lineno"> 654</span> }</div>
<div class="line"><a id="l00655" name="l00655"></a><span class="lineno"> 655</span> </div>
<div class="line"><a id="l00656" name="l00656"></a><span class="lineno"> 656</span> *sector_status = <a class="code hl_enumvalue" href="enums_8h.html#a74e216af87b18a5fbf0204a52dd1bba0a018d08672ed62f6f147db4f25ce3917c">SectorStatusDumped</a>;</div>
<div class="line"><a id="l00657" name="l00657"></a><span class="lineno"> 657</span> }</div>
<div class="line"><a id="l00658" name="l00658"></a><span class="lineno"> 658</span> </div>
<div class="line"><a id="l00659" name="l00659"></a><span class="lineno"> 659</span> <span class="comment">// Wii U re-encryption: if stored decrypted, re-encrypt for caller</span></div>
<div class="line"><a id="l00660" name="l00660"></a><span class="lineno"> 660</span> <span class="keywordflow">if</span>(*sector_status == <a class="code hl_enumvalue" href="enums_8h.html#a74e216af87b18a5fbf0204a52dd1bba0a4f144fd3d47ebf7e4103c3b89e051735">SectorStatusUnencrypted</a> &amp;&amp; ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a670dec8d59407989fefc361dc26c6832">header</a>.<a class="code hl_variable" href="structAaruHeaderV2.html#a81b114ab2b1fa786f64e9e914af3ba27">mediaType</a> == <a class="code hl_enumvalue" href="group__MediaTypes.html#gga1499e9f8a76cb81b43b7a4b0dbe7e44aaee394a7c6e389c9b3734850e1666ee04">WUOD</a> &amp;&amp;</div>
<div class="line"><a id="l00661" name="l00661"></a><span class="lineno"> 661</span> !ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a02680ed9c8af17fe614dc0fc96549f8f">wiiu_building_crypto_block</a>)</div>
<div class="line"><a id="l00662" name="l00662"></a><span class="lineno"> 662</span> {</div>
<div class="line"><a id="l00663" name="l00663"></a><span class="lineno"> 663</span> <span class="keywordflow">if</span>(!ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#aa518fbc0528e85d7bd69dd331433b4bf">wiiu_encryption_initialized</a>)</div>
<div class="line"><a id="l00664" name="l00664"></a><span class="lineno"> 664</span> {</div>
<div class="line"><a id="l00665" name="l00665"></a><span class="lineno"> 665</span> <a class="code hl_function" href="wiiu__crypto_8c.html#a791f63da879f72714851b7c7fb707b77">wiiu_lazy_init</a>(ctx);</div>
<div class="line"><a id="l00666" name="l00666"></a><span class="lineno"> 666</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#aa518fbc0528e85d7bd69dd331433b4bf">wiiu_encryption_initialized</a> = <span class="keyword">true</span>;</div>
<div class="line"><a id="l00667" name="l00667"></a><span class="lineno"> 667</span> }</div>
<div class="line"><a id="l00668" name="l00668"></a><span class="lineno"> 668</span> </div>
<div class="line"><a id="l00669" name="l00669"></a><span class="lineno"> 669</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a12239886f41707864eafb8e2d5a79cb9">wiiu_partition_regions</a> != NULL &amp;&amp; ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a35916280b5c71a844f41aeaf4cc28a3e">wiiu_encrypted_block_cache</a> != NULL)</div>
<div class="line"><a id="l00670" name="l00670"></a><span class="lineno"> 670</span> {</div>
<div class="line"><a id="l00671" name="l00671"></a><span class="lineno"> 671</span> <span class="keyword">const</span> uint8_t *part_key = <a class="code hl_function" href="wiiu__crypto_8c.html#ad545b76f7c59ef6f446fb1eb0dffae51">wiiu_get_sector_key</a>((<span class="keyword">const</span> <a class="code hl_struct" href="structWiiuPartitionRegion.html">WiiuPartitionRegion</a> *)ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a12239886f41707864eafb8e2d5a79cb9">wiiu_partition_regions</a>,</div>
<div class="line"><a id="l00672" name="l00672"></a><span class="lineno"> 672</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a1d6387bb1c83151c5096beb51de37a8d">wiiu_partition_region_count</a>, sector_address);</div>
<div class="line"><a id="l00673" name="l00673"></a><span class="lineno"> 673</span> </div>
<div class="line"><a id="l00674" name="l00674"></a><span class="lineno"> 674</span> <span class="keywordflow">if</span>(part_key != NULL)</div>
<div class="line"><a id="l00675" name="l00675"></a><span class="lineno"> 675</span> {</div>
<div class="line"><a id="l00676" name="l00676"></a><span class="lineno"> 676</span> uint64_t phys_sector = sector_address / <a class="code hl_define" href="wiiu__crypto_8h.html#ae5a3916c486e8afd292c8ea9bebef9fd">WIIU_LOGICAL_PER_PHYSICAL</a>;</div>
<div class="line"><a id="l00677" name="l00677"></a><span class="lineno"> 677</span> uint32_t slice_index = (uint32_t)(sector_address % <a class="code hl_define" href="wiiu__crypto_8h.html#ae5a3916c486e8afd292c8ea9bebef9fd">WIIU_LOGICAL_PER_PHYSICAL</a>);</div>
<div class="line"><a id="l00678" name="l00678"></a><span class="lineno"> 678</span> </div>
<div class="line"><a id="l00679" name="l00679"></a><span class="lineno"> 679</span> <span class="keywordflow">if</span>(!ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#adc79d62a5bbb4d1db9aa35a36e0d2396">wiiu_cache_valid</a> || ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a5cbb6adfdc95162c1723955730a7b26d">wiiu_cached_physical_sector</a> != phys_sector)</div>
<div class="line"><a id="l00680" name="l00680"></a><span class="lineno"> 680</span> {</div>
<div class="line"><a id="l00681" name="l00681"></a><span class="lineno"> 681</span> uint64_t first_logical = phys_sector * <a class="code hl_define" href="wiiu__crypto_8h.html#ae5a3916c486e8afd292c8ea9bebef9fd">WIIU_LOGICAL_PER_PHYSICAL</a>;</div>
<div class="line"><a id="l00682" name="l00682"></a><span class="lineno"> 682</span> </div>
<div class="line"><a id="l00683" name="l00683"></a><span class="lineno"> 683</span> <span class="comment">// Read all 16 logical sectors via aaruf_read_sector with recursion guard</span></div>
<div class="line"><a id="l00684" name="l00684"></a><span class="lineno"> 684</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a02680ed9c8af17fe614dc0fc96549f8f">wiiu_building_crypto_block</a> = <span class="keyword">true</span>;</div>
<div class="line"><a id="l00685" name="l00685"></a><span class="lineno"> 685</span> </div>
<div class="line"><a id="l00686" name="l00686"></a><span class="lineno"> 686</span> <span class="keywordflow">for</span>(uint32_t s = 0; s &lt; <a class="code hl_define" href="wiiu__crypto_8h.html#ae5a3916c486e8afd292c8ea9bebef9fd">WIIU_LOGICAL_PER_PHYSICAL</a>; s++)</div>
<div class="line"><a id="l00687" name="l00687"></a><span class="lineno"> 687</span> {</div>
<div class="line"><a id="l00688" name="l00688"></a><span class="lineno"> 688</span> uint64_t logical = first_logical + s;</div>
<div class="line"><a id="l00689" name="l00689"></a><span class="lineno"> 689</span> </div>
<div class="line"><a id="l00690" name="l00690"></a><span class="lineno"> 690</span> <span class="keywordflow">if</span>(logical == sector_address)</div>
<div class="line"><a id="l00691" name="l00691"></a><span class="lineno"> 691</span> {</div>
<div class="line"><a id="l00692" name="l00692"></a><span class="lineno"> 692</span> <span class="comment">// Current sector is already in data buffer</span></div>
<div class="line"><a id="l00693" name="l00693"></a><span class="lineno"> 693</span> memcpy(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a35916280b5c71a844f41aeaf4cc28a3e">wiiu_encrypted_block_cache</a> + s * (*length), data, *length);</div>
<div class="line"><a id="l00694" name="l00694"></a><span class="lineno"> 694</span> }</div>
<div class="line"><a id="l00695" name="l00695"></a><span class="lineno"> 695</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l00696" name="l00696"></a><span class="lineno"> 696</span> {</div>
<div class="line"><a id="l00697" name="l00697"></a><span class="lineno"> 697</span> uint32_t s_len = *length;</div>
<div class="line"><a id="l00698" name="l00698"></a><span class="lineno"> 698</span> uint8_t s_status = 0;</div>
<div class="line"><a id="l00699" name="l00699"></a><span class="lineno"> 699</span> int32_t s_ret =</div>
<div class="line"><a id="l00700" name="l00700"></a><span class="lineno"> 700</span> <a class="code hl_function" href="read_8c.html#a6feebf672750fc129fe2802ab738d563">aaruf_read_sector</a>(context, logical, <span class="keyword">false</span>,</div>
<div class="line"><a id="l00701" name="l00701"></a><span class="lineno"> 701</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a35916280b5c71a844f41aeaf4cc28a3e">wiiu_encrypted_block_cache</a> + s * s_len, &amp;s_len, &amp;s_status);</div>
<div class="line"><a id="l00702" name="l00702"></a><span class="lineno"> 702</span> </div>
<div class="line"><a id="l00703" name="l00703"></a><span class="lineno"> 703</span> <span class="keywordflow">if</span>(s_ret != <a class="code hl_define" href="errors_8h.html#a1d6e49f7e8a1fa489efa0a582e90b5de">AARUF_STATUS_OK</a>)</div>
<div class="line"><a id="l00704" name="l00704"></a><span class="lineno"> 704</span> memset(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a35916280b5c71a844f41aeaf4cc28a3e">wiiu_encrypted_block_cache</a> + s * (*length), 0, *length);</div>
<div class="line"><a id="l00705" name="l00705"></a><span class="lineno"> 705</span> }</div>
<div class="line"><a id="l00706" name="l00706"></a><span class="lineno"> 706</span> }</div>
<div class="line"><a id="l00707" name="l00707"></a><span class="lineno"> 707</span> </div>
<div class="line"><a id="l00708" name="l00708"></a><span class="lineno"> 708</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a02680ed9c8af17fe614dc0fc96549f8f">wiiu_building_crypto_block</a> = <span class="keyword">false</span>;</div>
<div class="line"><a id="l00709" name="l00709"></a><span class="lineno"> 709</span> </div>
<div class="line"><a id="l00710" name="l00710"></a><span class="lineno"> 710</span> <a class="code hl_function" href="wiiu__crypto_8c.html#a50434d7209fe488e67c983d276bd002c">wiiu_encrypt_physical_sector</a>(part_key, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a35916280b5c71a844f41aeaf4cc28a3e">wiiu_encrypted_block_cache</a>,</div>
<div class="line"><a id="l00711" name="l00711"></a><span class="lineno"> 711</span> <a class="code hl_define" href="wiiu__crypto_8h.html#a1445016762d8e7fe5a0220e3cdded2d3">WIIU_CRYPTO_SECTOR_SIZE</a>);</div>
<div class="line"><a id="l00712" name="l00712"></a><span class="lineno"> 712</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a5cbb6adfdc95162c1723955730a7b26d">wiiu_cached_physical_sector</a> = phys_sector;</div>
<div class="line"><a id="l00713" name="l00713"></a><span class="lineno"> 713</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#adc79d62a5bbb4d1db9aa35a36e0d2396">wiiu_cache_valid</a> = <span class="keyword">true</span>;</div>
<div class="line"><a id="l00714" name="l00714"></a><span class="lineno"> 714</span> }</div>
<div class="line"><a id="l00715" name="l00715"></a><span class="lineno"> 715</span> </div>
<div class="line"><a id="l00716" name="l00716"></a><span class="lineno"> 716</span> memcpy(data, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a35916280b5c71a844f41aeaf4cc28a3e">wiiu_encrypted_block_cache</a> + slice_index * (*length), *length);</div>
<div class="line"><a id="l00717" name="l00717"></a><span class="lineno"> 717</span> }</div>
<div class="line"><a id="l00718" name="l00718"></a><span class="lineno"> 718</span> }</div>
<div class="line"><a id="l00719" name="l00719"></a><span class="lineno"> 719</span> </div>
<div class="line"><a id="l00720" name="l00720"></a><span class="lineno"> 720</span> *sector_status = <a class="code hl_enumvalue" href="enums_8h.html#a74e216af87b18a5fbf0204a52dd1bba0a018d08672ed62f6f147db4f25ce3917c">SectorStatusDumped</a>;</div>
<div class="line"><a id="l00721" name="l00721"></a><span class="lineno"> 721</span> }</div>
<div class="line"><a id="l00722" name="l00722"></a><span class="lineno"> 722</span> </div>
<div class="line"><a id="l00723" name="l00723"></a><span class="lineno"> 723</span> <span class="comment">// Wii re-encryption: if stored decrypted, re-encrypt for caller</span></div>
<div class="line"><a id="l00724" name="l00724"></a><span class="lineno"> 724</span> <span class="keywordflow">if</span>(*sector_status == <a class="code hl_enumvalue" href="enums_8h.html#a74e216af87b18a5fbf0204a52dd1bba0a4f144fd3d47ebf7e4103c3b89e051735">SectorStatusUnencrypted</a> &amp;&amp; ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a670dec8d59407989fefc361dc26c6832">header</a>.<a class="code hl_variable" href="structAaruHeaderV2.html#a81b114ab2b1fa786f64e9e914af3ba27">mediaType</a> == <a class="code hl_enumvalue" href="group__MediaTypes.html#gga1499e9f8a76cb81b43b7a4b0dbe7e44aa61ed400b8bb5104e7309b3823e85766c">WOD</a> &amp;&amp; !ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a89ccabe4312ac3ea706c594bf4db4753">wii_building_crypto_block</a>)</div>
<div class="line"><a id="l00725" name="l00725"></a><span class="lineno"> 725</span> {</div>
<div class="line"><a id="l00726" name="l00726"></a><span class="lineno"> 726</span> <span class="keywordflow">if</span>(!ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#aa97751408e9681a348b9385e28c15680">wii_encryption_initialized</a>)</div>
<div class="line"><a id="l00727" name="l00727"></a><span class="lineno"> 727</span> {</div>
<div class="line"><a id="l00728" name="l00728"></a><span class="lineno"> 728</span> <a class="code hl_function" href="wii__crypto_8c.html#aee93568d673177b4ed369b0032c6c68b">wii_lazy_init</a>(ctx);</div>
<div class="line"><a id="l00729" name="l00729"></a><span class="lineno"> 729</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#aa97751408e9681a348b9385e28c15680">wii_encryption_initialized</a> = <span class="keyword">true</span>;</div>
<div class="line"><a id="l00730" name="l00730"></a><span class="lineno"> 730</span> }</div>
<div class="line"><a id="l00731" name="l00731"></a><span class="lineno"> 731</span> </div>
<div class="line"><a id="l00732" name="l00732"></a><span class="lineno"> 732</span> <span class="keywordflow">if</span>(!ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ae87bda67ebb4a9b27f363a03634ab25c">ngcw_junk_initialized</a>)</div>
<div class="line"><a id="l00733" name="l00733"></a><span class="lineno"> 733</span> {</div>
<div class="line"><a id="l00734" name="l00734"></a><span class="lineno"> 734</span> <a class="code hl_function" href="ngcw__junk_8c.html#a8aae28231f89db161998f42c61b2e246">ngcw_junk_lazy_init</a>(ctx);</div>
<div class="line"><a id="l00735" name="l00735"></a><span class="lineno"> 735</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ae87bda67ebb4a9b27f363a03634ab25c">ngcw_junk_initialized</a> = <span class="keyword">true</span>;</div>
<div class="line"><a id="l00736" name="l00736"></a><span class="lineno"> 736</span> }</div>
<div class="line"><a id="l00737" name="l00737"></a><span class="lineno"> 737</span> </div>
<div class="line"><a id="l00738" name="l00738"></a><span class="lineno"> 738</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#aaf475c0a1941563a9e1598f02ac48b66">wii_partition_regions</a> != NULL &amp;&amp; ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ae1b2a0044c769c469ae161df9ed6de50">wii_encrypted_group_cache</a> != NULL)</div>
<div class="line"><a id="l00739" name="l00739"></a><span class="lineno"> 739</span> {</div>
<div class="line"><a id="l00740" name="l00740"></a><span class="lineno"> 740</span> <span class="keyword">const</span> uint8_t *part_key = <a class="code hl_function" href="wii__crypto_8c.html#a1ce70cb0d83e9893accd7f06f218146a">wii_get_sector_key</a>((<span class="keyword">const</span> <a class="code hl_struct" href="structWiiPartitionRegion.html">WiiPartitionRegion</a> *)ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#aaf475c0a1941563a9e1598f02ac48b66">wii_partition_regions</a>,</div>
<div class="line"><a id="l00741" name="l00741"></a><span class="lineno"> 741</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#aa3dd955c7f01ecb619b3862fecce7110">wii_partition_region_count</a>, sector_address);</div>
<div class="line"><a id="l00742" name="l00742"></a><span class="lineno"> 742</span> </div>
<div class="line"><a id="l00743" name="l00743"></a><span class="lineno"> 743</span> <span class="keywordflow">if</span>(part_key != NULL)</div>
<div class="line"><a id="l00744" name="l00744"></a><span class="lineno"> 744</span> {</div>
<div class="line"><a id="l00745" name="l00745"></a><span class="lineno"> 745</span> uint64_t phys_group = sector_address / <a class="code hl_define" href="wii__crypto_8h.html#af6ed59742196c351932ad0f0e5e43566">WII_LOGICAL_PER_GROUP</a>;</div>
<div class="line"><a id="l00746" name="l00746"></a><span class="lineno"> 746</span> uint32_t slice_index = (uint32_t)(sector_address % <a class="code hl_define" href="wii__crypto_8h.html#af6ed59742196c351932ad0f0e5e43566">WII_LOGICAL_PER_GROUP</a>);</div>
<div class="line"><a id="l00747" name="l00747"></a><span class="lineno"> 747</span> </div>
<div class="line"><a id="l00748" name="l00748"></a><span class="lineno"> 748</span> <span class="keywordflow">if</span>(!ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ac9f970fc840120793cb8edb909a664f8">wii_cache_valid</a> || ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a4313dd92399b83805575096514d0f473">wii_cached_physical_group</a> != phys_group)</div>
<div class="line"><a id="l00749" name="l00749"></a><span class="lineno"> 749</span> {</div>
<div class="line"><a id="l00750" name="l00750"></a><span class="lineno"> 750</span> uint64_t first_logical = phys_group * <a class="code hl_define" href="wii__crypto_8h.html#af6ed59742196c351932ad0f0e5e43566">WII_LOGICAL_PER_GROUP</a>;</div>
<div class="line"><a id="l00751" name="l00751"></a><span class="lineno"> 751</span> </div>
<div class="line"><a id="l00752" name="l00752"></a><span class="lineno"> 752</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a89ccabe4312ac3ea706c594bf4db4753">wii_building_crypto_block</a> = <span class="keyword">true</span>;</div>
<div class="line"><a id="l00753" name="l00753"></a><span class="lineno"> 753</span> </div>
<div class="line"><a id="l00754" name="l00754"></a><span class="lineno"> 754</span> <span class="keywordflow">for</span>(uint32_t s = 0; s &lt; <a class="code hl_define" href="wii__crypto_8h.html#af6ed59742196c351932ad0f0e5e43566">WII_LOGICAL_PER_GROUP</a>; s++)</div>
<div class="line"><a id="l00755" name="l00755"></a><span class="lineno"> 755</span> {</div>
<div class="line"><a id="l00756" name="l00756"></a><span class="lineno"> 756</span> uint64_t logical = first_logical + s;</div>
<div class="line"><a id="l00757" name="l00757"></a><span class="lineno"> 757</span> </div>
<div class="line"><a id="l00758" name="l00758"></a><span class="lineno"> 758</span> <span class="keywordflow">if</span>(logical == sector_address)</div>
<div class="line"><a id="l00759" name="l00759"></a><span class="lineno"> 759</span> {</div>
<div class="line"><a id="l00760" name="l00760"></a><span class="lineno"> 760</span> memcpy(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ae1b2a0044c769c469ae161df9ed6de50">wii_encrypted_group_cache</a> + s * (*length), data, *length);</div>
<div class="line"><a id="l00761" name="l00761"></a><span class="lineno"> 761</span> }</div>
<div class="line"><a id="l00762" name="l00762"></a><span class="lineno"> 762</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l00763" name="l00763"></a><span class="lineno"> 763</span> {</div>
<div class="line"><a id="l00764" name="l00764"></a><span class="lineno"> 764</span> uint32_t s_len = *length;</div>
<div class="line"><a id="l00765" name="l00765"></a><span class="lineno"> 765</span> uint8_t s_status = 0;</div>
<div class="line"><a id="l00766" name="l00766"></a><span class="lineno"> 766</span> int32_t s_ret =</div>
<div class="line"><a id="l00767" name="l00767"></a><span class="lineno"> 767</span> <a class="code hl_function" href="read_8c.html#a6feebf672750fc129fe2802ab738d563">aaruf_read_sector</a>(context, logical, <span class="keyword">false</span>,</div>
<div class="line"><a id="l00768" name="l00768"></a><span class="lineno"> 768</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ae1b2a0044c769c469ae161df9ed6de50">wii_encrypted_group_cache</a> + s * s_len, &amp;s_len, &amp;s_status);</div>
<div class="line"><a id="l00769" name="l00769"></a><span class="lineno"> 769</span> </div>
<div class="line"><a id="l00770" name="l00770"></a><span class="lineno"> 770</span> <span class="keywordflow">if</span>(s_ret != <a class="code hl_define" href="errors_8h.html#a1d6e49f7e8a1fa489efa0a582e90b5de">AARUF_STATUS_OK</a>)</div>
<div class="line"><a id="l00771" name="l00771"></a><span class="lineno"> 771</span> memset(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ae1b2a0044c769c469ae161df9ed6de50">wii_encrypted_group_cache</a> + s * (*length), 0, *length);</div>
<div class="line"><a id="l00772" name="l00772"></a><span class="lineno"> 772</span> }</div>
<div class="line"><a id="l00773" name="l00773"></a><span class="lineno"> 773</span> }</div>
<div class="line"><a id="l00774" name="l00774"></a><span class="lineno"> 774</span> </div>
<div class="line"><a id="l00775" name="l00775"></a><span class="lineno"> 775</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a89ccabe4312ac3ea706c594bf4db4753">wii_building_crypto_block</a> = <span class="keyword">false</span>;</div>
<div class="line"><a id="l00776" name="l00776"></a><span class="lineno"> 776</span> </div>
<div class="line"><a id="l00777" name="l00777"></a><span class="lineno"> 777</span> <span class="comment">// Reconstruct junk in user data area</span></div>
<div class="line"><a id="l00778" name="l00778"></a><span class="lineno"> 778</span> <a class="code hl_function" href="read_8c.html#a277efc2abbdd8e351eb84542e4eda59a">wii_reconstruct_group_junk</a>(ctx, phys_group, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ae1b2a0044c769c469ae161df9ed6de50">wii_encrypted_group_cache</a>);</div>
<div class="line"><a id="l00779" name="l00779"></a><span class="lineno"> 779</span> </div>
<div class="line"><a id="l00780" name="l00780"></a><span class="lineno"> 780</span> <a class="code hl_function" href="wii__crypto_8c.html#a95d508bfdafd91552793ad54a677d511">wii_encrypt_group</a>(part_key, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ae1b2a0044c769c469ae161df9ed6de50">wii_encrypted_group_cache</a>,</div>
<div class="line"><a id="l00781" name="l00781"></a><span class="lineno"> 781</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ae1b2a0044c769c469ae161df9ed6de50">wii_encrypted_group_cache</a> + <a class="code hl_define" href="wii__crypto_8h.html#ac673ea3e31315ae51d390d06df7340cb">WII_GROUP_HASH_SIZE</a>,</div>
<div class="line"><a id="l00782" name="l00782"></a><span class="lineno"> 782</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ae1b2a0044c769c469ae161df9ed6de50">wii_encrypted_group_cache</a>);</div>
<div class="line"><a id="l00783" name="l00783"></a><span class="lineno"> 783</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a4313dd92399b83805575096514d0f473">wii_cached_physical_group</a> = phys_group;</div>
<div class="line"><a id="l00784" name="l00784"></a><span class="lineno"> 784</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ac9f970fc840120793cb8edb909a664f8">wii_cache_valid</a> = <span class="keyword">true</span>;</div>
<div class="line"><a id="l00785" name="l00785"></a><span class="lineno"> 785</span> }</div>
<div class="line"><a id="l00786" name="l00786"></a><span class="lineno"> 786</span> </div>
<div class="line"><a id="l00787" name="l00787"></a><span class="lineno"> 787</span> memcpy(data, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ae1b2a0044c769c469ae161df9ed6de50">wii_encrypted_group_cache</a> + slice_index * (*length), *length);</div>
<div class="line"><a id="l00788" name="l00788"></a><span class="lineno"> 788</span> }</div>
<div class="line"><a id="l00789" name="l00789"></a><span class="lineno"> 789</span> }</div>
<div class="line"><a id="l00790" name="l00790"></a><span class="lineno"> 790</span> </div>
<div class="line"><a id="l00791" name="l00791"></a><span class="lineno"> 791</span> *sector_status = <a class="code hl_enumvalue" href="enums_8h.html#a74e216af87b18a5fbf0204a52dd1bba0a018d08672ed62f6f147db4f25ce3917c">SectorStatusDumped</a>;</div>
<div class="line"><a id="l00792" name="l00792"></a><span class="lineno"> 792</span> }</div>
<div class="line"><a id="l00793" name="l00793"></a><span class="lineno"> 793</span> </div>
<div class="line"><a id="l00794" name="l00794"></a><span class="lineno"> 794</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector() = AARUF_STATUS_OK&quot;</span>);</div>
<div class="line"><a id="l00795" name="l00795"></a><span class="lineno"> 795</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a1d6e49f7e8a1fa489efa0a582e90b5de">AARUF_STATUS_OK</a>;</div>
<div class="line"><a id="l00796" name="l00796"></a><span class="lineno"> 796</span> }</div>
<div class="line"><a id="l00797" name="l00797"></a><span class="lineno"> 797</span> </div>
<div class="line"><a id="l00798" name="l00798"></a><span class="lineno"> 798</span> <span class="comment">// Decompress block</span></div>
<div class="line"><a id="l00799" name="l00799"></a><span class="lineno"> 799</span> <span class="keywordflow">switch</span>(block_header-&gt;<a class="code hl_variable" href="structBlockHeader.html#ad68963422fd2a5f6d0e0be751cbef559">compression</a>)</div>
<div class="line"><a id="l00800" name="l00800"></a><span class="lineno"> 800</span> {</div>
<div class="line"><a id="l00801" name="l00801"></a><span class="lineno"> 801</span> <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263a6925460497824fd20caa5ba1925cde84">kCompressionNone</a>:</div>
<div class="line"><a id="l00802" name="l00802"></a><span class="lineno"> 802</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Allocating memory for block&quot;</span>);</div>
<div class="line"><a id="l00803" name="l00803"></a><span class="lineno"> 803</span> block = (uint8_t *)malloc(block_header-&gt;<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a>);</div>
<div class="line"><a id="l00804" name="l00804"></a><span class="lineno"> 804</span> <span class="keywordflow">if</span>(block == NULL)</div>
<div class="line"><a id="l00805" name="l00805"></a><span class="lineno"> 805</span> {</div>
<div class="line"><a id="l00806" name="l00806"></a><span class="lineno"> 806</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Not enough memory for block&quot;</span>);</div>
<div class="line"><a id="l00807" name="l00807"></a><span class="lineno"> 807</span> </div>
<div class="line"><a id="l00808" name="l00808"></a><span class="lineno"> 808</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector() = AARUF_ERROR_NOT_ENOUGH_MEMORY&quot;</span>);</div>
<div class="line"><a id="l00809" name="l00809"></a><span class="lineno"> 809</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a35a771e3648bf971a004d4b2be9b5ec4">AARUF_ERROR_NOT_ENOUGH_MEMORY</a>;</div>
<div class="line"><a id="l00810" name="l00810"></a><span class="lineno"> 810</span> }</div>
<div class="line"><a id="l00811" name="l00811"></a><span class="lineno"> 811</span> </div>
<div class="line"><a id="l00812" name="l00812"></a><span class="lineno"> 812</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Reading block into memory&quot;</span>);</div>
<div class="line"><a id="l00813" name="l00813"></a><span class="lineno"> 813</span> read_bytes = fread(block, 1, block_header-&gt;<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a>, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>);</div>
<div class="line"><a id="l00814" name="l00814"></a><span class="lineno"> 814</span> </div>
<div class="line"><a id="l00815" name="l00815"></a><span class="lineno"> 815</span> <span class="keywordflow">if</span>(read_bytes != block_header-&gt;<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a>)</div>
<div class="line"><a id="l00816" name="l00816"></a><span class="lineno"> 816</span> {</div>
<div class="line"><a id="l00817" name="l00817"></a><span class="lineno"> 817</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Could not read block&quot;</span>);</div>
<div class="line"><a id="l00818" name="l00818"></a><span class="lineno"> 818</span> free(block);</div>
<div class="line"><a id="l00819" name="l00819"></a><span class="lineno"> 819</span> </div>
<div class="line"><a id="l00820" name="l00820"></a><span class="lineno"> 820</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector() = AARUF_ERROR_CANNOT_READ_BLOCK&quot;</span>);</div>
<div class="line"><a id="l00821" name="l00821"></a><span class="lineno"> 821</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a67753dacbd0ffdd397e563a8a5ecd271">AARUF_ERROR_CANNOT_READ_BLOCK</a>;</div>
<div class="line"><a id="l00822" name="l00822"></a><span class="lineno"> 822</span> }</div>
<div class="line"><a id="l00823" name="l00823"></a><span class="lineno"> 823</span> </div>
<div class="line"><a id="l00824" name="l00824"></a><span class="lineno"> 824</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00825" name="l00825"></a><span class="lineno"> 825</span> <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263a66b049c2b816874ab71b06cebf5afcd7">kCompressionLzma</a>:</div>
<div class="line"><a id="l00826" name="l00826"></a><span class="lineno"> 826</span> <span class="keywordflow">if</span>(block_header-&gt;<a class="code hl_variable" href="structBlockHeader.html#a0ee87beb4362823260f70a87ac17379f">cmpLength</a> &lt;= <a class="code hl_define" href="consts_8h.html#a25fd08252b97a0230d3efc899bddd240">LZMA_PROPERTIES_LENGTH</a> || block_header-&gt;<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a> == 0)</div>
<div class="line"><a id="l00827" name="l00827"></a><span class="lineno"> 827</span> {</div>
<div class="line"><a id="l00828" name="l00828"></a><span class="lineno"> 828</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Invalid LZMA block lengths (cmpLength=%u, length=%u)&quot;</span>, block_header-&gt;<a class="code hl_variable" href="structBlockHeader.html#a0ee87beb4362823260f70a87ac17379f">cmpLength</a>,</div>
<div class="line"><a id="l00829" name="l00829"></a><span class="lineno"> 829</span> block_header-&gt;<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a>);</div>
<div class="line"><a id="l00830" name="l00830"></a><span class="lineno"> 830</span> </div>
<div class="line"><a id="l00831" name="l00831"></a><span class="lineno"> 831</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector() = AARUF_ERROR_CANNOT_DECOMPRESS_BLOCK&quot;</span>);</div>
<div class="line"><a id="l00832" name="l00832"></a><span class="lineno"> 832</span> <span class="keywordflow">goto</span> ec_try_recovery;</div>
<div class="line"><a id="l00833" name="l00833"></a><span class="lineno"> 833</span> }</div>
<div class="line"><a id="l00834" name="l00834"></a><span class="lineno"> 834</span> </div>
<div class="line"><a id="l00835" name="l00835"></a><span class="lineno"> 835</span> lzma_size = block_header-&gt;<a class="code hl_variable" href="structBlockHeader.html#a0ee87beb4362823260f70a87ac17379f">cmpLength</a> - <a class="code hl_define" href="consts_8h.html#a25fd08252b97a0230d3efc899bddd240">LZMA_PROPERTIES_LENGTH</a>;</div>
<div class="line"><a id="l00836" name="l00836"></a><span class="lineno"> 836</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Allocating memory for compressed data of size %zu bytes&quot;</span>, lzma_size);</div>
<div class="line"><a id="l00837" name="l00837"></a><span class="lineno"> 837</span> cmp_data = malloc(lzma_size);</div>
<div class="line"><a id="l00838" name="l00838"></a><span class="lineno"> 838</span> </div>
<div class="line"><a id="l00839" name="l00839"></a><span class="lineno"> 839</span> <span class="keywordflow">if</span>(cmp_data == NULL)</div>
<div class="line"><a id="l00840" name="l00840"></a><span class="lineno"> 840</span> {</div>
<div class="line"><a id="l00841" name="l00841"></a><span class="lineno"> 841</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Cannot allocate memory for block...&quot;</span>);</div>
<div class="line"><a id="l00842" name="l00842"></a><span class="lineno"> 842</span> </div>
<div class="line"><a id="l00843" name="l00843"></a><span class="lineno"> 843</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector() = AARUF_ERROR_NOT_ENOUGH_MEMORY&quot;</span>);</div>
<div class="line"><a id="l00844" name="l00844"></a><span class="lineno"> 844</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a35a771e3648bf971a004d4b2be9b5ec4">AARUF_ERROR_NOT_ENOUGH_MEMORY</a>;</div>
<div class="line"><a id="l00845" name="l00845"></a><span class="lineno"> 845</span> }</div>
<div class="line"><a id="l00846" name="l00846"></a><span class="lineno"> 846</span> </div>
<div class="line"><a id="l00847" name="l00847"></a><span class="lineno"> 847</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Allocating memory for block of size %zu bytes&quot;</span>, block_header-&gt;<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a>);</div>
<div class="line"><a id="l00848" name="l00848"></a><span class="lineno"> 848</span> block = malloc(block_header-&gt;<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a>);</div>
<div class="line"><a id="l00849" name="l00849"></a><span class="lineno"> 849</span> <span class="keywordflow">if</span>(block == NULL)</div>
<div class="line"><a id="l00850" name="l00850"></a><span class="lineno"> 850</span> {</div>
<div class="line"><a id="l00851" name="l00851"></a><span class="lineno"> 851</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Cannot allocate memory for block...&quot;</span>);</div>
<div class="line"><a id="l00852" name="l00852"></a><span class="lineno"> 852</span> free(cmp_data);</div>
<div class="line"><a id="l00853" name="l00853"></a><span class="lineno"> 853</span> </div>
<div class="line"><a id="l00854" name="l00854"></a><span class="lineno"> 854</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector() = AARUF_ERROR_NOT_ENOUGH_MEMORY&quot;</span>);</div>
<div class="line"><a id="l00855" name="l00855"></a><span class="lineno"> 855</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a35a771e3648bf971a004d4b2be9b5ec4">AARUF_ERROR_NOT_ENOUGH_MEMORY</a>;</div>
<div class="line"><a id="l00856" name="l00856"></a><span class="lineno"> 856</span> }</div>
<div class="line"><a id="l00857" name="l00857"></a><span class="lineno"> 857</span> </div>
<div class="line"><a id="l00858" name="l00858"></a><span class="lineno"> 858</span> read_bytes = fread(lzma_properties, 1, <a class="code hl_define" href="consts_8h.html#a25fd08252b97a0230d3efc899bddd240">LZMA_PROPERTIES_LENGTH</a>, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>);</div>
<div class="line"><a id="l00859" name="l00859"></a><span class="lineno"> 859</span> </div>
<div class="line"><a id="l00860" name="l00860"></a><span class="lineno"> 860</span> <span class="keywordflow">if</span>(read_bytes != <a class="code hl_define" href="consts_8h.html#a25fd08252b97a0230d3efc899bddd240">LZMA_PROPERTIES_LENGTH</a>)</div>
<div class="line"><a id="l00861" name="l00861"></a><span class="lineno"> 861</span> {</div>
<div class="line"><a id="l00862" name="l00862"></a><span class="lineno"> 862</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Could not read LZMA properties...&quot;</span>);</div>
<div class="line"><a id="l00863" name="l00863"></a><span class="lineno"> 863</span> free(block);</div>
<div class="line"><a id="l00864" name="l00864"></a><span class="lineno"> 864</span> free(cmp_data);</div>
<div class="line"><a id="l00865" name="l00865"></a><span class="lineno"> 865</span> </div>
<div class="line"><a id="l00866" name="l00866"></a><span class="lineno"> 866</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector() = AARUF_ERROR_CANNOT_DECOMPRESS_BLOCK&quot;</span>);</div>
<div class="line"><a id="l00867" name="l00867"></a><span class="lineno"> 867</span> <span class="keywordflow">goto</span> ec_try_recovery;</div>
<div class="line"><a id="l00868" name="l00868"></a><span class="lineno"> 868</span> }</div>
<div class="line"><a id="l00869" name="l00869"></a><span class="lineno"> 869</span> </div>
<div class="line"><a id="l00870" name="l00870"></a><span class="lineno"> 870</span> read_bytes = fread(cmp_data, 1, lzma_size, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>);</div>
<div class="line"><a id="l00871" name="l00871"></a><span class="lineno"> 871</span> <span class="keywordflow">if</span>(read_bytes != lzma_size)</div>
<div class="line"><a id="l00872" name="l00872"></a><span class="lineno"> 872</span> {</div>
<div class="line"><a id="l00873" name="l00873"></a><span class="lineno"> 873</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Could not read compressed block...&quot;</span>);</div>
<div class="line"><a id="l00874" name="l00874"></a><span class="lineno"> 874</span> free(cmp_data);</div>
<div class="line"><a id="l00875" name="l00875"></a><span class="lineno"> 875</span> free(block);</div>
<div class="line"><a id="l00876" name="l00876"></a><span class="lineno"> 876</span> </div>
<div class="line"><a id="l00877" name="l00877"></a><span class="lineno"> 877</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector() = AARUF_ERROR_CANNOT_DECOMPRESS_BLOCK&quot;</span>);</div>
<div class="line"><a id="l00878" name="l00878"></a><span class="lineno"> 878</span> <span class="keywordflow">goto</span> ec_try_recovery;</div>
<div class="line"><a id="l00879" name="l00879"></a><span class="lineno"> 879</span> }</div>
<div class="line"><a id="l00880" name="l00880"></a><span class="lineno"> 880</span> </div>
<div class="line"><a id="l00881" name="l00881"></a><span class="lineno"> 881</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Decompressing block of size %zu bytes&quot;</span>, block_header-&gt;<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a>);</div>
<div class="line"><a id="l00882" name="l00882"></a><span class="lineno"> 882</span> read_bytes = block_header-&gt;<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a>;</div>
<div class="line"><a id="l00883" name="l00883"></a><span class="lineno"> 883</span> error_no = <a class="code hl_function" href="decls_8h.html#a12f3cbc43c2f57a11fbba32a71ba2704">aaruf_lzma_decode_buffer</a>(block, &amp;read_bytes, cmp_data, &amp;lzma_size, lzma_properties,</div>
<div class="line"><a id="l00884" name="l00884"></a><span class="lineno"> 884</span> <a class="code hl_define" href="consts_8h.html#a25fd08252b97a0230d3efc899bddd240">LZMA_PROPERTIES_LENGTH</a>);</div>
<div class="line"><a id="l00885" name="l00885"></a><span class="lineno"> 885</span> </div>
<div class="line"><a id="l00886" name="l00886"></a><span class="lineno"> 886</span> <span class="keywordflow">if</span>(error_no != 0)</div>
<div class="line"><a id="l00887" name="l00887"></a><span class="lineno"> 887</span> {</div>
<div class="line"><a id="l00888" name="l00888"></a><span class="lineno"> 888</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Got error %d from LZMA...&quot;</span>, error_no);</div>
<div class="line"><a id="l00889" name="l00889"></a><span class="lineno"> 889</span> free(cmp_data);</div>
<div class="line"><a id="l00890" name="l00890"></a><span class="lineno"> 890</span> free(block);</div>
<div class="line"><a id="l00891" name="l00891"></a><span class="lineno"> 891</span> </div>
<div class="line"><a id="l00892" name="l00892"></a><span class="lineno"> 892</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector() = AARUF_ERROR_CANNOT_DECOMPRESS_BLOCK&quot;</span>);</div>
<div class="line"><a id="l00893" name="l00893"></a><span class="lineno"> 893</span> <span class="keywordflow">goto</span> ec_try_recovery;</div>
<div class="line"><a id="l00894" name="l00894"></a><span class="lineno"> 894</span> }</div>
<div class="line"><a id="l00895" name="l00895"></a><span class="lineno"> 895</span> </div>
<div class="line"><a id="l00896" name="l00896"></a><span class="lineno"> 896</span> <span class="keywordflow">if</span>(read_bytes != block_header-&gt;<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a>)</div>
<div class="line"><a id="l00897" name="l00897"></a><span class="lineno"> 897</span> {</div>
<div class="line"><a id="l00898" name="l00898"></a><span class="lineno"> 898</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Error decompressing block, should be {0} bytes but got {1} bytes...&quot;</span>);</div>
<div class="line"><a id="l00899" name="l00899"></a><span class="lineno"> 899</span> free(cmp_data);</div>
<div class="line"><a id="l00900" name="l00900"></a><span class="lineno"> 900</span> free(block);</div>
<div class="line"><a id="l00901" name="l00901"></a><span class="lineno"> 901</span> </div>
<div class="line"><a id="l00902" name="l00902"></a><span class="lineno"> 902</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector() = AARUF_ERROR_CANNOT_DECOMPRESS_BLOCK&quot;</span>);</div>
<div class="line"><a id="l00903" name="l00903"></a><span class="lineno"> 903</span> <span class="keywordflow">goto</span> ec_try_recovery;</div>
<div class="line"><a id="l00904" name="l00904"></a><span class="lineno"> 904</span> }</div>
<div class="line"><a id="l00905" name="l00905"></a><span class="lineno"> 905</span> </div>
<div class="line"><a id="l00906" name="l00906"></a><span class="lineno"> 906</span> free(cmp_data);</div>
<div class="line"><a id="l00907" name="l00907"></a><span class="lineno"> 907</span> </div>
<div class="line"><a id="l00908" name="l00908"></a><span class="lineno"> 908</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00909" name="l00909"></a><span class="lineno"> 909</span> <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263a6ee0deaccf9cd167806cc479afffc0cc">kCompressionZstd</a>:</div>
<div class="line"><a id="l00910" name="l00910"></a><span class="lineno"> 910</span> <span class="keywordflow">if</span>(block_header-&gt;<a class="code hl_variable" href="structBlockHeader.html#a0ee87beb4362823260f70a87ac17379f">cmpLength</a> == 0 || block_header-&gt;<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a> == 0)</div>
<div class="line"><a id="l00911" name="l00911"></a><span class="lineno"> 911</span> {</div>
<div class="line"><a id="l00912" name="l00912"></a><span class="lineno"> 912</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Invalid zstd block lengths (cmpLength=%u, length=%u)&quot;</span>, block_header-&gt;<a class="code hl_variable" href="structBlockHeader.html#a0ee87beb4362823260f70a87ac17379f">cmpLength</a>,</div>
<div class="line"><a id="l00913" name="l00913"></a><span class="lineno"> 913</span> block_header-&gt;<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a>);</div>
<div class="line"><a id="l00914" name="l00914"></a><span class="lineno"> 914</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector() = AARUF_ERROR_CANNOT_DECOMPRESS_BLOCK&quot;</span>);</div>
<div class="line"><a id="l00915" name="l00915"></a><span class="lineno"> 915</span> <span class="keywordflow">goto</span> ec_try_recovery;</div>
<div class="line"><a id="l00916" name="l00916"></a><span class="lineno"> 916</span> }</div>
<div class="line"><a id="l00917" name="l00917"></a><span class="lineno"> 917</span> </div>
<div class="line"><a id="l00918" name="l00918"></a><span class="lineno"> 918</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Allocating memory for block of size %zu bytes&quot;</span>, block_header-&gt;<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a>);</div>
<div class="line"><a id="l00919" name="l00919"></a><span class="lineno"> 919</span> block = (uint8_t *)malloc(block_header-&gt;<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a>);</div>
<div class="line"><a id="l00920" name="l00920"></a><span class="lineno"> 920</span> <span class="keywordflow">if</span>(block == NULL)</div>
<div class="line"><a id="l00921" name="l00921"></a><span class="lineno"> 921</span> {</div>
<div class="line"><a id="l00922" name="l00922"></a><span class="lineno"> 922</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Not enough memory for block&quot;</span>);</div>
<div class="line"><a id="l00923" name="l00923"></a><span class="lineno"> 923</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector() = AARUF_ERROR_NOT_ENOUGH_MEMORY&quot;</span>);</div>
<div class="line"><a id="l00924" name="l00924"></a><span class="lineno"> 924</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a35a771e3648bf971a004d4b2be9b5ec4">AARUF_ERROR_NOT_ENOUGH_MEMORY</a>;</div>
<div class="line"><a id="l00925" name="l00925"></a><span class="lineno"> 925</span> }</div>
<div class="line"><a id="l00926" name="l00926"></a><span class="lineno"> 926</span> </div>
<div class="line"><a id="l00927" name="l00927"></a><span class="lineno"> 927</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Allocating memory for compressed data of size %zu bytes&quot;</span>, block_header-&gt;<a class="code hl_variable" href="structBlockHeader.html#a0ee87beb4362823260f70a87ac17379f">cmpLength</a>);</div>
<div class="line"><a id="l00928" name="l00928"></a><span class="lineno"> 928</span> cmp_data = malloc(block_header-&gt;<a class="code hl_variable" href="structBlockHeader.html#a0ee87beb4362823260f70a87ac17379f">cmpLength</a>);</div>
<div class="line"><a id="l00929" name="l00929"></a><span class="lineno"> 929</span> <span class="keywordflow">if</span>(cmp_data == NULL)</div>
<div class="line"><a id="l00930" name="l00930"></a><span class="lineno"> 930</span> {</div>
<div class="line"><a id="l00931" name="l00931"></a><span class="lineno"> 931</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Not enough memory for compressed data&quot;</span>);</div>
<div class="line"><a id="l00932" name="l00932"></a><span class="lineno"> 932</span> free(block);</div>
<div class="line"><a id="l00933" name="l00933"></a><span class="lineno"> 933</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector() = AARUF_ERROR_NOT_ENOUGH_MEMORY&quot;</span>);</div>
<div class="line"><a id="l00934" name="l00934"></a><span class="lineno"> 934</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a35a771e3648bf971a004d4b2be9b5ec4">AARUF_ERROR_NOT_ENOUGH_MEMORY</a>;</div>
<div class="line"><a id="l00935" name="l00935"></a><span class="lineno"> 935</span> }</div>
<div class="line"><a id="l00936" name="l00936"></a><span class="lineno"> 936</span> </div>
<div class="line"><a id="l00937" name="l00937"></a><span class="lineno"> 937</span> <a class="code hl_function" href="internal_8h.html#a60c57e3b2e8e233d0be91f3690bf077c">aaruf_fseek</a>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>, (<a class="code hl_typedef" href="internal_8h.html#afb4a123eeae51c668333248fb666e0f2">aaru_off_t</a>)(block_offset + <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structBlockHeader.html">BlockHeader</a>)), SEEK_SET);</div>
<div class="line"><a id="l00938" name="l00938"></a><span class="lineno"> 938</span> </div>
<div class="line"><a id="l00939" name="l00939"></a><span class="lineno"> 939</span> read_bytes = fread(cmp_data, 1, block_header-&gt;<a class="code hl_variable" href="structBlockHeader.html#a0ee87beb4362823260f70a87ac17379f">cmpLength</a>, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>);</div>
<div class="line"><a id="l00940" name="l00940"></a><span class="lineno"> 940</span> <span class="keywordflow">if</span>(read_bytes != block_header-&gt;<a class="code hl_variable" href="structBlockHeader.html#a0ee87beb4362823260f70a87ac17379f">cmpLength</a>)</div>
<div class="line"><a id="l00941" name="l00941"></a><span class="lineno"> 941</span> {</div>
<div class="line"><a id="l00942" name="l00942"></a><span class="lineno"> 942</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Could not read compressed block&quot;</span>);</div>
<div class="line"><a id="l00943" name="l00943"></a><span class="lineno"> 943</span> free(cmp_data);</div>
<div class="line"><a id="l00944" name="l00944"></a><span class="lineno"> 944</span> free(block);</div>
<div class="line"><a id="l00945" name="l00945"></a><span class="lineno"> 945</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector() = AARUF_ERROR_CANNOT_DECOMPRESS_BLOCK&quot;</span>);</div>
<div class="line"><a id="l00946" name="l00946"></a><span class="lineno"> 946</span> <span class="keywordflow">goto</span> ec_try_recovery;</div>
<div class="line"><a id="l00947" name="l00947"></a><span class="lineno"> 947</span> }</div>
<div class="line"><a id="l00948" name="l00948"></a><span class="lineno"> 948</span> </div>
<div class="line"><a id="l00949" name="l00949"></a><span class="lineno"> 949</span> read_bytes = <a class="code hl_function" href="decls_8h.html#ac0f8004dbea44979bf8b58c3e3a1a6ae">aaruf_zstd_decode_buffer</a>(block, block_header-&gt;<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a>, cmp_data, block_header-&gt;<a class="code hl_variable" href="structBlockHeader.html#a0ee87beb4362823260f70a87ac17379f">cmpLength</a>);</div>
<div class="line"><a id="l00950" name="l00950"></a><span class="lineno"> 950</span> <span class="keywordflow">if</span>(read_bytes != block_header-&gt;<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a>)</div>
<div class="line"><a id="l00951" name="l00951"></a><span class="lineno"> 951</span> {</div>
<div class="line"><a id="l00952" name="l00952"></a><span class="lineno"> 952</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Error decompressing zstd block, expected %u bytes got %zu&quot;</span>, block_header-&gt;<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a>, read_bytes);</div>
<div class="line"><a id="l00953" name="l00953"></a><span class="lineno"> 953</span> free(cmp_data);</div>
<div class="line"><a id="l00954" name="l00954"></a><span class="lineno"> 954</span> free(block);</div>
<div class="line"><a id="l00955" name="l00955"></a><span class="lineno"> 955</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector() = AARUF_ERROR_CANNOT_DECOMPRESS_BLOCK&quot;</span>);</div>
<div class="line"><a id="l00956" name="l00956"></a><span class="lineno"> 956</span> <span class="keywordflow">goto</span> ec_try_recovery;</div>
<div class="line"><a id="l00957" name="l00957"></a><span class="lineno"> 957</span> }</div>
<div class="line"><a id="l00958" name="l00958"></a><span class="lineno"> 958</span> </div>
<div class="line"><a id="l00959" name="l00959"></a><span class="lineno"> 959</span> free(cmp_data);</div>
<div class="line"><a id="l00960" name="l00960"></a><span class="lineno"> 960</span> </div>
<div class="line"><a id="l00961" name="l00961"></a><span class="lineno"> 961</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00962" name="l00962"></a><span class="lineno"> 962</span> <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="enums_8h.html#affec749ed88365143745313ae9168263ab68094bb67edceda03f5044de1e54428">kCompressionFlac</a>:</div>
<div class="line"><a id="l00963" name="l00963"></a><span class="lineno"> 963</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Allocating memory for compressed data of size %zu bytes&quot;</span>, block_header-&gt;<a class="code hl_variable" href="structBlockHeader.html#a0ee87beb4362823260f70a87ac17379f">cmpLength</a>);</div>
<div class="line"><a id="l00964" name="l00964"></a><span class="lineno"> 964</span> cmp_data = malloc(block_header-&gt;<a class="code hl_variable" href="structBlockHeader.html#a0ee87beb4362823260f70a87ac17379f">cmpLength</a>);</div>
<div class="line"><a id="l00965" name="l00965"></a><span class="lineno"> 965</span> </div>
<div class="line"><a id="l00966" name="l00966"></a><span class="lineno"> 966</span> <span class="keywordflow">if</span>(cmp_data == NULL)</div>
<div class="line"><a id="l00967" name="l00967"></a><span class="lineno"> 967</span> {</div>
<div class="line"><a id="l00968" name="l00968"></a><span class="lineno"> 968</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Cannot allocate memory for block...&quot;</span>);</div>
<div class="line"><a id="l00969" name="l00969"></a><span class="lineno"> 969</span> </div>
<div class="line"><a id="l00970" name="l00970"></a><span class="lineno"> 970</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector() = AARUF_ERROR_NOT_ENOUGH_MEMORY&quot;</span>);</div>
<div class="line"><a id="l00971" name="l00971"></a><span class="lineno"> 971</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a35a771e3648bf971a004d4b2be9b5ec4">AARUF_ERROR_NOT_ENOUGH_MEMORY</a>;</div>
<div class="line"><a id="l00972" name="l00972"></a><span class="lineno"> 972</span> }</div>
<div class="line"><a id="l00973" name="l00973"></a><span class="lineno"> 973</span> </div>
<div class="line"><a id="l00974" name="l00974"></a><span class="lineno"> 974</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Allocating memory for block of size %zu bytes&quot;</span>, block_header-&gt;<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a>);</div>
<div class="line"><a id="l00975" name="l00975"></a><span class="lineno"> 975</span> block = malloc(block_header-&gt;<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a>);</div>
<div class="line"><a id="l00976" name="l00976"></a><span class="lineno"> 976</span> <span class="keywordflow">if</span>(block == NULL)</div>
<div class="line"><a id="l00977" name="l00977"></a><span class="lineno"> 977</span> {</div>
<div class="line"><a id="l00978" name="l00978"></a><span class="lineno"> 978</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Cannot allocate memory for block...&quot;</span>);</div>
<div class="line"><a id="l00979" name="l00979"></a><span class="lineno"> 979</span> free(cmp_data);</div>
<div class="line"><a id="l00980" name="l00980"></a><span class="lineno"> 980</span> </div>
<div class="line"><a id="l00981" name="l00981"></a><span class="lineno"> 981</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector() = AARUF_ERROR_NOT_ENOUGH_MEMORY&quot;</span>);</div>
<div class="line"><a id="l00982" name="l00982"></a><span class="lineno"> 982</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a35a771e3648bf971a004d4b2be9b5ec4">AARUF_ERROR_NOT_ENOUGH_MEMORY</a>;</div>
<div class="line"><a id="l00983" name="l00983"></a><span class="lineno"> 983</span> }</div>
<div class="line"><a id="l00984" name="l00984"></a><span class="lineno"> 984</span> </div>
<div class="line"><a id="l00985" name="l00985"></a><span class="lineno"> 985</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Reading compressed data into memory&quot;</span>);</div>
<div class="line"><a id="l00986" name="l00986"></a><span class="lineno"> 986</span> read_bytes = fread(cmp_data, 1, block_header-&gt;<a class="code hl_variable" href="structBlockHeader.html#a0ee87beb4362823260f70a87ac17379f">cmpLength</a>, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">imageStream</a>);</div>
<div class="line"><a id="l00987" name="l00987"></a><span class="lineno"> 987</span> <span class="keywordflow">if</span>(read_bytes != block_header-&gt;<a class="code hl_variable" href="structBlockHeader.html#a0ee87beb4362823260f70a87ac17379f">cmpLength</a>)</div>
<div class="line"><a id="l00988" name="l00988"></a><span class="lineno"> 988</span> {</div>
<div class="line"><a id="l00989" name="l00989"></a><span class="lineno"> 989</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Could not read compressed block...&quot;</span>);</div>
<div class="line"><a id="l00990" name="l00990"></a><span class="lineno"> 990</span> free(cmp_data);</div>
<div class="line"><a id="l00991" name="l00991"></a><span class="lineno"> 991</span> free(block);</div>
<div class="line"><a id="l00992" name="l00992"></a><span class="lineno"> 992</span> </div>
<div class="line"><a id="l00993" name="l00993"></a><span class="lineno"> 993</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector() = AARUF_ERROR_CANNOT_DECOMPRESS_BLOCK&quot;</span>);</div>
<div class="line"><a id="l00994" name="l00994"></a><span class="lineno"> 994</span> <span class="keywordflow">goto</span> ec_try_recovery;</div>
<div class="line"><a id="l00995" name="l00995"></a><span class="lineno"> 995</span> }</div>
<div class="line"><a id="l00996" name="l00996"></a><span class="lineno"> 996</span> </div>
<div class="line"><a id="l00997" name="l00997"></a><span class="lineno"> 997</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Decompressing block of size %zu bytes&quot;</span>, block_header-&gt;<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a>);</div>
<div class="line"><a id="l00998" name="l00998"></a><span class="lineno"> 998</span> read_bytes =</div>
<div class="line"><a id="l00999" name="l00999"></a><span class="lineno"> 999</span> <a class="code hl_function" href="decls_8h.html#af0ff6ad1495d50a8fa0ce0005be69471">aaruf_flac_decode_redbook_buffer</a>(block, block_header-&gt;<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a>, cmp_data, block_header-&gt;<a class="code hl_variable" href="structBlockHeader.html#a0ee87beb4362823260f70a87ac17379f">cmpLength</a>);</div>
<div class="line"><a id="l01000" name="l01000"></a><span class="lineno"> 1000</span> </div>
<div class="line"><a id="l01001" name="l01001"></a><span class="lineno"> 1001</span> <span class="keywordflow">if</span>(read_bytes != block_header-&gt;<a class="code hl_variable" href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">length</a>)</div>
<div class="line"><a id="l01002" name="l01002"></a><span class="lineno"> 1002</span> {</div>
<div class="line"><a id="l01003" name="l01003"></a><span class="lineno"> 1003</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Error decompressing block, should be {0} bytes but got {1} bytes...&quot;</span>);</div>
<div class="line"><a id="l01004" name="l01004"></a><span class="lineno"> 1004</span> free(cmp_data);</div>
<div class="line"><a id="l01005" name="l01005"></a><span class="lineno"> 1005</span> free(block);</div>
<div class="line"><a id="l01006" name="l01006"></a><span class="lineno"> 1006</span> </div>
<div class="line"><a id="l01007" name="l01007"></a><span class="lineno"> 1007</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector() = AARUF_ERROR_CANNOT_DECOMPRESS_BLOCK&quot;</span>);</div>
<div class="line"><a id="l01008" name="l01008"></a><span class="lineno"> 1008</span> <span class="keywordflow">goto</span> ec_try_recovery;</div>
<div class="line"><a id="l01009" name="l01009"></a><span class="lineno"> 1009</span> }</div>
<div class="line"><a id="l01010" name="l01010"></a><span class="lineno"> 1010</span> </div>
<div class="line"><a id="l01011" name="l01011"></a><span class="lineno"> 1011</span> free(cmp_data);</div>
<div class="line"><a id="l01012" name="l01012"></a><span class="lineno"> 1012</span> </div>
<div class="line"><a id="l01013" name="l01013"></a><span class="lineno"> 1013</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l01014" name="l01014"></a><span class="lineno"> 1014</span> <span class="keywordflow">default</span>:</div>
<div class="line"><a id="l01015" name="l01015"></a><span class="lineno"> 1015</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Unsupported compression %d&quot;</span>, block_header-&gt;<a class="code hl_variable" href="structBlockHeader.html#ad68963422fd2a5f6d0e0be751cbef559">compression</a>);</div>
<div class="line"><a id="l01016" name="l01016"></a><span class="lineno"> 1016</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector() = AARUF_ERROR_UNSUPPORTED_COMPRESSION&quot;</span>);</div>
<div class="line"><a id="l01017" name="l01017"></a><span class="lineno"> 1017</span> <span class="keywordflow">goto</span> ec_try_recovery;</div>
<div class="line"><a id="l01018" name="l01018"></a><span class="lineno"> 1018</span> }</div>
<div class="line"><a id="l01019" name="l01019"></a><span class="lineno"> 1019</span> </div>
<div class="line"><a id="l01020" name="l01020"></a><span class="lineno"> 1020</span> <span class="comment">// Add block to cache</span></div>
<div class="line"><a id="l01021" name="l01021"></a><span class="lineno"> 1021</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Adding block to cache&quot;</span>);</div>
<div class="line"><a id="l01022" name="l01022"></a><span class="lineno"> 1022</span> <a class="code hl_function" href="lru_8h.html#a0735969939ca80db3fe439ed92b787bb">add_to_cache_uint64</a>(&amp;ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a58359ec8607d1d10e0af8699be238e77">block_cache</a>, block_offset, block);</div>
<div class="line"><a id="l01023" name="l01023"></a><span class="lineno"> 1023</span> </div>
<div class="line"><a id="l01024" name="l01024"></a><span class="lineno"> 1024</span> memcpy(data, block + offset * block_header-&gt;<a class="code hl_variable" href="structBlockHeader.html#a5bd50f95c8c1f91e5013a1a154690beb">sectorSize</a>, block_header-&gt;<a class="code hl_variable" href="structBlockHeader.html#a5bd50f95c8c1f91e5013a1a154690beb">sectorSize</a>);</div>
<div class="line"><a id="l01025" name="l01025"></a><span class="lineno"> 1025</span> *length = block_header-&gt;<a class="code hl_variable" href="structBlockHeader.html#a5bd50f95c8c1f91e5013a1a154690beb">sectorSize</a>;</div>
<div class="line"><a id="l01026" name="l01026"></a><span class="lineno"> 1026</span> </div>
<div class="line"><a id="l01027" name="l01027"></a><span class="lineno"> 1027</span> <span class="comment">// PS3 re-encryption: if stored decrypted, re-encrypt for caller</span></div>
<div class="line"><a id="l01028" name="l01028"></a><span class="lineno"> 1028</span> <span class="keywordflow">if</span>(*sector_status == <a class="code hl_enumvalue" href="enums_8h.html#a74e216af87b18a5fbf0204a52dd1bba0a4f144fd3d47ebf7e4103c3b89e051735">SectorStatusUnencrypted</a> &amp;&amp; (ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a670dec8d59407989fefc361dc26c6832">header</a>.<a class="code hl_variable" href="structAaruHeaderV2.html#a81b114ab2b1fa786f64e9e914af3ba27">mediaType</a> == <a class="code hl_enumvalue" href="group__MediaTypes.html#gga1499e9f8a76cb81b43b7a4b0dbe7e44aa727f071d5dd887fd6645e112cfcab197">PS3DVD</a> || ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a670dec8d59407989fefc361dc26c6832">header</a>.<a class="code hl_variable" href="structAaruHeaderV2.html#a81b114ab2b1fa786f64e9e914af3ba27">mediaType</a> == <a class="code hl_enumvalue" href="group__MediaTypes.html#gga1499e9f8a76cb81b43b7a4b0dbe7e44aa626b10297c3bc07fbff69cf639208453">PS3BD</a>))</div>
<div class="line"><a id="l01029" name="l01029"></a><span class="lineno"> 1029</span> {</div>
<div class="line"><a id="l01030" name="l01030"></a><span class="lineno"> 1030</span> <span class="keywordflow">if</span>(!ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a59525c7915fbc51ab0f2ef184db8bf6d">ps3_encryption_initialized</a>)</div>
<div class="line"><a id="l01031" name="l01031"></a><span class="lineno"> 1031</span> {</div>
<div class="line"><a id="l01032" name="l01032"></a><span class="lineno"> 1032</span> <a class="code hl_function" href="ps3__crypto_8c.html#a8c99822e07011d07362d5d40487eded6">ps3_lazy_init</a>(ctx);</div>
<div class="line"><a id="l01033" name="l01033"></a><span class="lineno"> 1033</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a59525c7915fbc51ab0f2ef184db8bf6d">ps3_encryption_initialized</a> = <span class="keyword">true</span>;</div>
<div class="line"><a id="l01034" name="l01034"></a><span class="lineno"> 1034</span> }</div>
<div class="line"><a id="l01035" name="l01035"></a><span class="lineno"> 1035</span> </div>
<div class="line"><a id="l01036" name="l01036"></a><span class="lineno"> 1036</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a016a2c15a10105ff17628c9ee7f5c424">ps3_disc_key</a> != NULL &amp;&amp; ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#acf62eadb2e019323fdbe8bbf536ad82c">ps3_plaintext_regions</a> != NULL &amp;&amp;</div>
<div class="line"><a id="l01037" name="l01037"></a><span class="lineno"> 1037</span> <a class="code hl_function" href="ps3__encryption__map_8c.html#a058b5191df4b4a83a6bc55052fad503f">ps3_is_sector_encrypted</a>((<span class="keyword">const</span> <a class="code hl_struct" href="structPs3PlaintextRegion.html">Ps3PlaintextRegion</a> *)ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#acf62eadb2e019323fdbe8bbf536ad82c">ps3_plaintext_regions</a>,</div>
<div class="line"><a id="l01038" name="l01038"></a><span class="lineno"> 1038</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a1bfda8e3b76471a7b526d05f4855f8f1">ps3_plaintext_region_count</a>, sector_address))</div>
<div class="line"><a id="l01039" name="l01039"></a><span class="lineno"> 1039</span> {</div>
<div class="line"><a id="l01040" name="l01040"></a><span class="lineno"> 1040</span> <a class="code hl_function" href="ps3__crypto_8c.html#af9a3081e827ba140edc64fda2e93ee96">ps3_encrypt_sector</a>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a016a2c15a10105ff17628c9ee7f5c424">ps3_disc_key</a>, sector_address, data, *length);</div>
<div class="line"><a id="l01041" name="l01041"></a><span class="lineno"> 1041</span> }</div>
<div class="line"><a id="l01042" name="l01042"></a><span class="lineno"> 1042</span> </div>
<div class="line"><a id="l01043" name="l01043"></a><span class="lineno"> 1043</span> *sector_status = <a class="code hl_enumvalue" href="enums_8h.html#a74e216af87b18a5fbf0204a52dd1bba0a018d08672ed62f6f147db4f25ce3917c">SectorStatusDumped</a>;</div>
<div class="line"><a id="l01044" name="l01044"></a><span class="lineno"> 1044</span> }</div>
<div class="line"><a id="l01045" name="l01045"></a><span class="lineno"> 1045</span> </div>
<div class="line"><a id="l01046" name="l01046"></a><span class="lineno"> 1046</span> <span class="comment">// Wii U re-encryption: if stored decrypted, re-encrypt for caller</span></div>
<div class="line"><a id="l01047" name="l01047"></a><span class="lineno"> 1047</span> <span class="keywordflow">if</span>(*sector_status == <a class="code hl_enumvalue" href="enums_8h.html#a74e216af87b18a5fbf0204a52dd1bba0a4f144fd3d47ebf7e4103c3b89e051735">SectorStatusUnencrypted</a> &amp;&amp; ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a670dec8d59407989fefc361dc26c6832">header</a>.<a class="code hl_variable" href="structAaruHeaderV2.html#a81b114ab2b1fa786f64e9e914af3ba27">mediaType</a> == <a class="code hl_enumvalue" href="group__MediaTypes.html#gga1499e9f8a76cb81b43b7a4b0dbe7e44aaee394a7c6e389c9b3734850e1666ee04">WUOD</a> &amp;&amp; !ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a02680ed9c8af17fe614dc0fc96549f8f">wiiu_building_crypto_block</a>)</div>
<div class="line"><a id="l01048" name="l01048"></a><span class="lineno"> 1048</span> {</div>
<div class="line"><a id="l01049" name="l01049"></a><span class="lineno"> 1049</span> <span class="keywordflow">if</span>(!ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#aa518fbc0528e85d7bd69dd331433b4bf">wiiu_encryption_initialized</a>)</div>
<div class="line"><a id="l01050" name="l01050"></a><span class="lineno"> 1050</span> {</div>
<div class="line"><a id="l01051" name="l01051"></a><span class="lineno"> 1051</span> <a class="code hl_function" href="wiiu__crypto_8c.html#a791f63da879f72714851b7c7fb707b77">wiiu_lazy_init</a>(ctx);</div>
<div class="line"><a id="l01052" name="l01052"></a><span class="lineno"> 1052</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#aa518fbc0528e85d7bd69dd331433b4bf">wiiu_encryption_initialized</a> = <span class="keyword">true</span>;</div>
<div class="line"><a id="l01053" name="l01053"></a><span class="lineno"> 1053</span> }</div>
<div class="line"><a id="l01054" name="l01054"></a><span class="lineno"> 1054</span> </div>
<div class="line"><a id="l01055" name="l01055"></a><span class="lineno"> 1055</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a12239886f41707864eafb8e2d5a79cb9">wiiu_partition_regions</a> != NULL &amp;&amp; ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a35916280b5c71a844f41aeaf4cc28a3e">wiiu_encrypted_block_cache</a> != NULL)</div>
<div class="line"><a id="l01056" name="l01056"></a><span class="lineno"> 1056</span> {</div>
<div class="line"><a id="l01057" name="l01057"></a><span class="lineno"> 1057</span> <span class="keyword">const</span> uint8_t *part_key = <a class="code hl_function" href="wiiu__crypto_8c.html#ad545b76f7c59ef6f446fb1eb0dffae51">wiiu_get_sector_key</a>((<span class="keyword">const</span> <a class="code hl_struct" href="structWiiuPartitionRegion.html">WiiuPartitionRegion</a> *)ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a12239886f41707864eafb8e2d5a79cb9">wiiu_partition_regions</a>,</div>
<div class="line"><a id="l01058" name="l01058"></a><span class="lineno"> 1058</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a1d6387bb1c83151c5096beb51de37a8d">wiiu_partition_region_count</a>, sector_address);</div>
<div class="line"><a id="l01059" name="l01059"></a><span class="lineno"> 1059</span> </div>
<div class="line"><a id="l01060" name="l01060"></a><span class="lineno"> 1060</span> <span class="keywordflow">if</span>(part_key != NULL)</div>
<div class="line"><a id="l01061" name="l01061"></a><span class="lineno"> 1061</span> {</div>
<div class="line"><a id="l01062" name="l01062"></a><span class="lineno"> 1062</span> uint64_t phys_sector = sector_address / <a class="code hl_define" href="wiiu__crypto_8h.html#ae5a3916c486e8afd292c8ea9bebef9fd">WIIU_LOGICAL_PER_PHYSICAL</a>;</div>
<div class="line"><a id="l01063" name="l01063"></a><span class="lineno"> 1063</span> uint32_t slice_index = (uint32_t)(sector_address % <a class="code hl_define" href="wiiu__crypto_8h.html#ae5a3916c486e8afd292c8ea9bebef9fd">WIIU_LOGICAL_PER_PHYSICAL</a>);</div>
<div class="line"><a id="l01064" name="l01064"></a><span class="lineno"> 1064</span> </div>
<div class="line"><a id="l01065" name="l01065"></a><span class="lineno"> 1065</span> <span class="keywordflow">if</span>(!ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#adc79d62a5bbb4d1db9aa35a36e0d2396">wiiu_cache_valid</a> || ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a5cbb6adfdc95162c1723955730a7b26d">wiiu_cached_physical_sector</a> != phys_sector)</div>
<div class="line"><a id="l01066" name="l01066"></a><span class="lineno"> 1066</span> {</div>
<div class="line"><a id="l01067" name="l01067"></a><span class="lineno"> 1067</span> uint64_t first_logical = phys_sector * <a class="code hl_define" href="wiiu__crypto_8h.html#ae5a3916c486e8afd292c8ea9bebef9fd">WIIU_LOGICAL_PER_PHYSICAL</a>;</div>
<div class="line"><a id="l01068" name="l01068"></a><span class="lineno"> 1068</span> </div>
<div class="line"><a id="l01069" name="l01069"></a><span class="lineno"> 1069</span> <span class="comment">// Read all 16 logical sectors via aaruf_read_sector with recursion guard</span></div>
<div class="line"><a id="l01070" name="l01070"></a><span class="lineno"> 1070</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a02680ed9c8af17fe614dc0fc96549f8f">wiiu_building_crypto_block</a> = <span class="keyword">true</span>;</div>
<div class="line"><a id="l01071" name="l01071"></a><span class="lineno"> 1071</span> </div>
<div class="line"><a id="l01072" name="l01072"></a><span class="lineno"> 1072</span> <span class="keywordflow">for</span>(uint32_t s = 0; s &lt; <a class="code hl_define" href="wiiu__crypto_8h.html#ae5a3916c486e8afd292c8ea9bebef9fd">WIIU_LOGICAL_PER_PHYSICAL</a>; s++)</div>
<div class="line"><a id="l01073" name="l01073"></a><span class="lineno"> 1073</span> {</div>
<div class="line"><a id="l01074" name="l01074"></a><span class="lineno"> 1074</span> uint64_t logical = first_logical + s;</div>
<div class="line"><a id="l01075" name="l01075"></a><span class="lineno"> 1075</span> </div>
<div class="line"><a id="l01076" name="l01076"></a><span class="lineno"> 1076</span> <span class="keywordflow">if</span>(logical == sector_address)</div>
<div class="line"><a id="l01077" name="l01077"></a><span class="lineno"> 1077</span> {</div>
<div class="line"><a id="l01078" name="l01078"></a><span class="lineno"> 1078</span> <span class="comment">// Current sector is already in data buffer</span></div>
<div class="line"><a id="l01079" name="l01079"></a><span class="lineno"> 1079</span> memcpy(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a35916280b5c71a844f41aeaf4cc28a3e">wiiu_encrypted_block_cache</a> + s * (*length), data, *length);</div>
<div class="line"><a id="l01080" name="l01080"></a><span class="lineno"> 1080</span> }</div>
<div class="line"><a id="l01081" name="l01081"></a><span class="lineno"> 1081</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l01082" name="l01082"></a><span class="lineno"> 1082</span> {</div>
<div class="line"><a id="l01083" name="l01083"></a><span class="lineno"> 1083</span> uint32_t s_len = *length;</div>
<div class="line"><a id="l01084" name="l01084"></a><span class="lineno"> 1084</span> uint8_t s_status = 0;</div>
<div class="line"><a id="l01085" name="l01085"></a><span class="lineno"> 1085</span> int32_t s_ret =</div>
<div class="line"><a id="l01086" name="l01086"></a><span class="lineno"> 1086</span> <a class="code hl_function" href="read_8c.html#a6feebf672750fc129fe2802ab738d563">aaruf_read_sector</a>(context, logical, <span class="keyword">false</span>, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a35916280b5c71a844f41aeaf4cc28a3e">wiiu_encrypted_block_cache</a> + s * s_len,</div>
<div class="line"><a id="l01087" name="l01087"></a><span class="lineno"> 1087</span> &amp;s_len, &amp;s_status);</div>
<div class="line"><a id="l01088" name="l01088"></a><span class="lineno"> 1088</span> </div>
<div class="line"><a id="l01089" name="l01089"></a><span class="lineno"> 1089</span> <span class="keywordflow">if</span>(s_ret != <a class="code hl_define" href="errors_8h.html#a1d6e49f7e8a1fa489efa0a582e90b5de">AARUF_STATUS_OK</a>)</div>
<div class="line"><a id="l01090" name="l01090"></a><span class="lineno"> 1090</span> memset(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a35916280b5c71a844f41aeaf4cc28a3e">wiiu_encrypted_block_cache</a> + s * (*length), 0, *length);</div>
<div class="line"><a id="l01091" name="l01091"></a><span class="lineno"> 1091</span> }</div>
<div class="line"><a id="l01092" name="l01092"></a><span class="lineno"> 1092</span> }</div>
<div class="line"><a id="l01093" name="l01093"></a><span class="lineno"> 1093</span> </div>
<div class="line"><a id="l01094" name="l01094"></a><span class="lineno"> 1094</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a02680ed9c8af17fe614dc0fc96549f8f">wiiu_building_crypto_block</a> = <span class="keyword">false</span>;</div>
<div class="line"><a id="l01095" name="l01095"></a><span class="lineno"> 1095</span> </div>
<div class="line"><a id="l01096" name="l01096"></a><span class="lineno"> 1096</span> <a class="code hl_function" href="wiiu__crypto_8c.html#a50434d7209fe488e67c983d276bd002c">wiiu_encrypt_physical_sector</a>(part_key, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a35916280b5c71a844f41aeaf4cc28a3e">wiiu_encrypted_block_cache</a>, <a class="code hl_define" href="wiiu__crypto_8h.html#a1445016762d8e7fe5a0220e3cdded2d3">WIIU_CRYPTO_SECTOR_SIZE</a>);</div>
<div class="line"><a id="l01097" name="l01097"></a><span class="lineno"> 1097</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a5cbb6adfdc95162c1723955730a7b26d">wiiu_cached_physical_sector</a> = phys_sector;</div>
<div class="line"><a id="l01098" name="l01098"></a><span class="lineno"> 1098</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#adc79d62a5bbb4d1db9aa35a36e0d2396">wiiu_cache_valid</a> = <span class="keyword">true</span>;</div>
<div class="line"><a id="l01099" name="l01099"></a><span class="lineno"> 1099</span> }</div>
<div class="line"><a id="l01100" name="l01100"></a><span class="lineno"> 1100</span> </div>
<div class="line"><a id="l01101" name="l01101"></a><span class="lineno"> 1101</span> memcpy(data, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a35916280b5c71a844f41aeaf4cc28a3e">wiiu_encrypted_block_cache</a> + slice_index * (*length), *length);</div>
<div class="line"><a id="l01102" name="l01102"></a><span class="lineno"> 1102</span> }</div>
<div class="line"><a id="l01103" name="l01103"></a><span class="lineno"> 1103</span> }</div>
<div class="line"><a id="l01104" name="l01104"></a><span class="lineno"> 1104</span> </div>
<div class="line"><a id="l01105" name="l01105"></a><span class="lineno"> 1105</span> *sector_status = <a class="code hl_enumvalue" href="enums_8h.html#a74e216af87b18a5fbf0204a52dd1bba0a018d08672ed62f6f147db4f25ce3917c">SectorStatusDumped</a>;</div>
<div class="line"><a id="l01106" name="l01106"></a><span class="lineno"> 1106</span> }</div>
<div class="line"><a id="l01107" name="l01107"></a><span class="lineno"> 1107</span> </div>
<div class="line"><a id="l01108" name="l01108"></a><span class="lineno"> 1108</span> <span class="comment">// Wii re-encryption: if stored decrypted, re-encrypt for caller</span></div>
<div class="line"><a id="l01109" name="l01109"></a><span class="lineno"> 1109</span> <span class="keywordflow">if</span>(*sector_status == <a class="code hl_enumvalue" href="enums_8h.html#a74e216af87b18a5fbf0204a52dd1bba0a4f144fd3d47ebf7e4103c3b89e051735">SectorStatusUnencrypted</a> &amp;&amp; ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a670dec8d59407989fefc361dc26c6832">header</a>.<a class="code hl_variable" href="structAaruHeaderV2.html#a81b114ab2b1fa786f64e9e914af3ba27">mediaType</a> == <a class="code hl_enumvalue" href="group__MediaTypes.html#gga1499e9f8a76cb81b43b7a4b0dbe7e44aa61ed400b8bb5104e7309b3823e85766c">WOD</a> &amp;&amp; !ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a89ccabe4312ac3ea706c594bf4db4753">wii_building_crypto_block</a>)</div>
<div class="line"><a id="l01110" name="l01110"></a><span class="lineno"> 1110</span> {</div>
<div class="line"><a id="l01111" name="l01111"></a><span class="lineno"> 1111</span> <span class="keywordflow">if</span>(!ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#aa97751408e9681a348b9385e28c15680">wii_encryption_initialized</a>)</div>
<div class="line"><a id="l01112" name="l01112"></a><span class="lineno"> 1112</span> {</div>
<div class="line"><a id="l01113" name="l01113"></a><span class="lineno"> 1113</span> <a class="code hl_function" href="wii__crypto_8c.html#aee93568d673177b4ed369b0032c6c68b">wii_lazy_init</a>(ctx);</div>
<div class="line"><a id="l01114" name="l01114"></a><span class="lineno"> 1114</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#aa97751408e9681a348b9385e28c15680">wii_encryption_initialized</a> = <span class="keyword">true</span>;</div>
<div class="line"><a id="l01115" name="l01115"></a><span class="lineno"> 1115</span> }</div>
<div class="line"><a id="l01116" name="l01116"></a><span class="lineno"> 1116</span> </div>
<div class="line"><a id="l01117" name="l01117"></a><span class="lineno"> 1117</span> <span class="keywordflow">if</span>(!ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ae87bda67ebb4a9b27f363a03634ab25c">ngcw_junk_initialized</a>)</div>
<div class="line"><a id="l01118" name="l01118"></a><span class="lineno"> 1118</span> {</div>
<div class="line"><a id="l01119" name="l01119"></a><span class="lineno"> 1119</span> <a class="code hl_function" href="ngcw__junk_8c.html#a8aae28231f89db161998f42c61b2e246">ngcw_junk_lazy_init</a>(ctx);</div>
<div class="line"><a id="l01120" name="l01120"></a><span class="lineno"> 1120</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ae87bda67ebb4a9b27f363a03634ab25c">ngcw_junk_initialized</a> = <span class="keyword">true</span>;</div>
<div class="line"><a id="l01121" name="l01121"></a><span class="lineno"> 1121</span> }</div>
<div class="line"><a id="l01122" name="l01122"></a><span class="lineno"> 1122</span> </div>
<div class="line"><a id="l01123" name="l01123"></a><span class="lineno"> 1123</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#aaf475c0a1941563a9e1598f02ac48b66">wii_partition_regions</a> != NULL &amp;&amp; ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ae1b2a0044c769c469ae161df9ed6de50">wii_encrypted_group_cache</a> != NULL)</div>
<div class="line"><a id="l01124" name="l01124"></a><span class="lineno"> 1124</span> {</div>
<div class="line"><a id="l01125" name="l01125"></a><span class="lineno"> 1125</span> <span class="keyword">const</span> uint8_t *part_key = <a class="code hl_function" href="wii__crypto_8c.html#a1ce70cb0d83e9893accd7f06f218146a">wii_get_sector_key</a>((<span class="keyword">const</span> <a class="code hl_struct" href="structWiiPartitionRegion.html">WiiPartitionRegion</a> *)ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#aaf475c0a1941563a9e1598f02ac48b66">wii_partition_regions</a>,</div>
<div class="line"><a id="l01126" name="l01126"></a><span class="lineno"> 1126</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#aa3dd955c7f01ecb619b3862fecce7110">wii_partition_region_count</a>, sector_address);</div>
<div class="line"><a id="l01127" name="l01127"></a><span class="lineno"> 1127</span> </div>
<div class="line"><a id="l01128" name="l01128"></a><span class="lineno"> 1128</span> <span class="keywordflow">if</span>(part_key != NULL)</div>
<div class="line"><a id="l01129" name="l01129"></a><span class="lineno"> 1129</span> {</div>
<div class="line"><a id="l01130" name="l01130"></a><span class="lineno"> 1130</span> uint64_t phys_group = sector_address / <a class="code hl_define" href="wii__crypto_8h.html#af6ed59742196c351932ad0f0e5e43566">WII_LOGICAL_PER_GROUP</a>;</div>
<div class="line"><a id="l01131" name="l01131"></a><span class="lineno"> 1131</span> uint32_t slice_index = (uint32_t)(sector_address % <a class="code hl_define" href="wii__crypto_8h.html#af6ed59742196c351932ad0f0e5e43566">WII_LOGICAL_PER_GROUP</a>);</div>
<div class="line"><a id="l01132" name="l01132"></a><span class="lineno"> 1132</span> </div>
<div class="line"><a id="l01133" name="l01133"></a><span class="lineno"> 1133</span> <span class="keywordflow">if</span>(!ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ac9f970fc840120793cb8edb909a664f8">wii_cache_valid</a> || ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a4313dd92399b83805575096514d0f473">wii_cached_physical_group</a> != phys_group)</div>
<div class="line"><a id="l01134" name="l01134"></a><span class="lineno"> 1134</span> {</div>
<div class="line"><a id="l01135" name="l01135"></a><span class="lineno"> 1135</span> uint64_t first_logical = phys_group * <a class="code hl_define" href="wii__crypto_8h.html#af6ed59742196c351932ad0f0e5e43566">WII_LOGICAL_PER_GROUP</a>;</div>
<div class="line"><a id="l01136" name="l01136"></a><span class="lineno"> 1136</span> </div>
<div class="line"><a id="l01137" name="l01137"></a><span class="lineno"> 1137</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a89ccabe4312ac3ea706c594bf4db4753">wii_building_crypto_block</a> = <span class="keyword">true</span>;</div>
<div class="line"><a id="l01138" name="l01138"></a><span class="lineno"> 1138</span> </div>
<div class="line"><a id="l01139" name="l01139"></a><span class="lineno"> 1139</span> <span class="keywordflow">for</span>(uint32_t s = 0; s &lt; <a class="code hl_define" href="wii__crypto_8h.html#af6ed59742196c351932ad0f0e5e43566">WII_LOGICAL_PER_GROUP</a>; s++)</div>
<div class="line"><a id="l01140" name="l01140"></a><span class="lineno"> 1140</span> {</div>
<div class="line"><a id="l01141" name="l01141"></a><span class="lineno"> 1141</span> uint64_t logical = first_logical + s;</div>
<div class="line"><a id="l01142" name="l01142"></a><span class="lineno"> 1142</span> </div>
<div class="line"><a id="l01143" name="l01143"></a><span class="lineno"> 1143</span> <span class="keywordflow">if</span>(logical == sector_address)</div>
<div class="line"><a id="l01144" name="l01144"></a><span class="lineno"> 1144</span> {</div>
<div class="line"><a id="l01145" name="l01145"></a><span class="lineno"> 1145</span> memcpy(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ae1b2a0044c769c469ae161df9ed6de50">wii_encrypted_group_cache</a> + s * (*length), data, *length);</div>
<div class="line"><a id="l01146" name="l01146"></a><span class="lineno"> 1146</span> }</div>
<div class="line"><a id="l01147" name="l01147"></a><span class="lineno"> 1147</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l01148" name="l01148"></a><span class="lineno"> 1148</span> {</div>
<div class="line"><a id="l01149" name="l01149"></a><span class="lineno"> 1149</span> uint32_t s_len = *length;</div>
<div class="line"><a id="l01150" name="l01150"></a><span class="lineno"> 1150</span> uint8_t s_status = 0;</div>
<div class="line"><a id="l01151" name="l01151"></a><span class="lineno"> 1151</span> int32_t s_ret = <a class="code hl_function" href="read_8c.html#a6feebf672750fc129fe2802ab738d563">aaruf_read_sector</a>(</div>
<div class="line"><a id="l01152" name="l01152"></a><span class="lineno"> 1152</span> context, logical, <span class="keyword">false</span>, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ae1b2a0044c769c469ae161df9ed6de50">wii_encrypted_group_cache</a> + s * s_len, &amp;s_len, &amp;s_status);</div>
<div class="line"><a id="l01153" name="l01153"></a><span class="lineno"> 1153</span> </div>
<div class="line"><a id="l01154" name="l01154"></a><span class="lineno"> 1154</span> <span class="keywordflow">if</span>(s_ret != <a class="code hl_define" href="errors_8h.html#a1d6e49f7e8a1fa489efa0a582e90b5de">AARUF_STATUS_OK</a>)</div>
<div class="line"><a id="l01155" name="l01155"></a><span class="lineno"> 1155</span> memset(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ae1b2a0044c769c469ae161df9ed6de50">wii_encrypted_group_cache</a> + s * (*length), 0, *length);</div>
<div class="line"><a id="l01156" name="l01156"></a><span class="lineno"> 1156</span> }</div>
<div class="line"><a id="l01157" name="l01157"></a><span class="lineno"> 1157</span> }</div>
<div class="line"><a id="l01158" name="l01158"></a><span class="lineno"> 1158</span> </div>
<div class="line"><a id="l01159" name="l01159"></a><span class="lineno"> 1159</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a89ccabe4312ac3ea706c594bf4db4753">wii_building_crypto_block</a> = <span class="keyword">false</span>;</div>
<div class="line"><a id="l01160" name="l01160"></a><span class="lineno"> 1160</span> </div>
<div class="line"><a id="l01161" name="l01161"></a><span class="lineno"> 1161</span> <span class="comment">// Reconstruct junk in user data area</span></div>
<div class="line"><a id="l01162" name="l01162"></a><span class="lineno"> 1162</span> <a class="code hl_function" href="read_8c.html#a277efc2abbdd8e351eb84542e4eda59a">wii_reconstruct_group_junk</a>(ctx, phys_group, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ae1b2a0044c769c469ae161df9ed6de50">wii_encrypted_group_cache</a>);</div>
<div class="line"><a id="l01163" name="l01163"></a><span class="lineno"> 1163</span> </div>
<div class="line"><a id="l01164" name="l01164"></a><span class="lineno"> 1164</span> <a class="code hl_function" href="wii__crypto_8c.html#a95d508bfdafd91552793ad54a677d511">wii_encrypt_group</a>(part_key, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ae1b2a0044c769c469ae161df9ed6de50">wii_encrypted_group_cache</a>,</div>
<div class="line"><a id="l01165" name="l01165"></a><span class="lineno"> 1165</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ae1b2a0044c769c469ae161df9ed6de50">wii_encrypted_group_cache</a> + <a class="code hl_define" href="wii__crypto_8h.html#ac673ea3e31315ae51d390d06df7340cb">WII_GROUP_HASH_SIZE</a>,</div>
<div class="line"><a id="l01166" name="l01166"></a><span class="lineno"> 1166</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ae1b2a0044c769c469ae161df9ed6de50">wii_encrypted_group_cache</a>);</div>
<div class="line"><a id="l01167" name="l01167"></a><span class="lineno"> 1167</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a4313dd92399b83805575096514d0f473">wii_cached_physical_group</a> = phys_group;</div>
<div class="line"><a id="l01168" name="l01168"></a><span class="lineno"> 1168</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ac9f970fc840120793cb8edb909a664f8">wii_cache_valid</a> = <span class="keyword">true</span>;</div>
<div class="line"><a id="l01169" name="l01169"></a><span class="lineno"> 1169</span> }</div>
<div class="line"><a id="l01170" name="l01170"></a><span class="lineno"> 1170</span> </div>
<div class="line"><a id="l01171" name="l01171"></a><span class="lineno"> 1171</span> memcpy(data, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ae1b2a0044c769c469ae161df9ed6de50">wii_encrypted_group_cache</a> + slice_index * (*length), *length);</div>
<div class="line"><a id="l01172" name="l01172"></a><span class="lineno"> 1172</span> }</div>
<div class="line"><a id="l01173" name="l01173"></a><span class="lineno"> 1173</span> }</div>
<div class="line"><a id="l01174" name="l01174"></a><span class="lineno"> 1174</span> </div>
<div class="line"><a id="l01175" name="l01175"></a><span class="lineno"> 1175</span> *sector_status = <a class="code hl_enumvalue" href="enums_8h.html#a74e216af87b18a5fbf0204a52dd1bba0a018d08672ed62f6f147db4f25ce3917c">SectorStatusDumped</a>;</div>
<div class="line"><a id="l01176" name="l01176"></a><span class="lineno"> 1176</span> }</div>
<div class="line"><a id="l01177" name="l01177"></a><span class="lineno"> 1177</span> </div>
<div class="line"><a id="l01178" name="l01178"></a><span class="lineno"> 1178</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector() = AARUF_STATUS_OK&quot;</span>);</div>
<div class="line"><a id="l01179" name="l01179"></a><span class="lineno"> 1179</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a1d6e49f7e8a1fa489efa0a582e90b5de">AARUF_STATUS_OK</a>;</div>
<div class="line"><a id="l01180" name="l01180"></a><span class="lineno"> 1180</span> </div>
<div class="line"><a id="l01181" name="l01181"></a><span class="lineno"> 1181</span> <span class="comment">/* Erasure coding recovery: attempt to reconstruct a block that failed</span></div>
<div class="line"><a id="l01182" name="l01182"></a><span class="lineno"> 1182</span><span class="comment"> * decompression due to on-disk corruption. ec_recover_data_block()</span></div>
<div class="line"><a id="l01183" name="l01183"></a><span class="lineno"> 1183</span><span class="comment"> * reads the stripe, RS-decodes the erased shard, decompresses it,</span></div>
<div class="line"><a id="l01184" name="l01184"></a><span class="lineno"> 1184</span><span class="comment"> * and extracts the requested sector. */</span></div>
<div class="line"><a id="l01185" name="l01185"></a><span class="lineno"> 1185</span>ec_try_recovery:</div>
<div class="line"><a id="l01186" name="l01186"></a><span class="lineno"> 1186</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#af7b4e0a80f76581b0cb1440d9a689f0f">ec_recovery_available</a> &amp;&amp; !ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a3613b5ea23ce609b6d2c3a047692d455">ec_recovery_in_progress</a>)</div>
<div class="line"><a id="l01187" name="l01187"></a><span class="lineno"> 1187</span> {</div>
<div class="line"><a id="l01188" name="l01188"></a><span class="lineno"> 1188</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Attempting erasure coding recovery for block at offset %&quot;</span> PRIu64, block_offset);</div>
<div class="line"><a id="l01189" name="l01189"></a><span class="lineno"> 1189</span> int32_t rc = <a class="code hl_function" href="erasure__internal_8h.html#a7a9ac507738cdf72e951f152edd4d233">ec_recover_data_block</a>(ctx, block_offset, offset, data, length, *sector_status);</div>
<div class="line"><a id="l01190" name="l01190"></a><span class="lineno"> 1190</span> <span class="keywordflow">if</span>(rc == <a class="code hl_define" href="errors_8h.html#a1d6e49f7e8a1fa489efa0a582e90b5de">AARUF_STATUS_OK</a>)</div>
<div class="line"><a id="l01191" name="l01191"></a><span class="lineno"> 1191</span> {</div>
<div class="line"><a id="l01192" name="l01192"></a><span class="lineno"> 1192</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Erasure coding recovery succeeded&quot;</span>);</div>
<div class="line"><a id="l01193" name="l01193"></a><span class="lineno"> 1193</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a1d6e49f7e8a1fa489efa0a582e90b5de">AARUF_STATUS_OK</a>;</div>
<div class="line"><a id="l01194" name="l01194"></a><span class="lineno"> 1194</span> }</div>
<div class="line"><a id="l01195" name="l01195"></a><span class="lineno"> 1195</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Erasure coding recovery failed: %d&quot;</span>, rc);</div>
<div class="line"><a id="l01196" name="l01196"></a><span class="lineno"> 1196</span> }</div>
<div class="line"><a id="l01197" name="l01197"></a><span class="lineno"> 1197</span> </div>
<div class="line"><a id="l01198" name="l01198"></a><span class="lineno"> 1198</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector() = AARUF_ERROR_CANNOT_DECOMPRESS_BLOCK&quot;</span>);</div>
<div class="line"><a id="l01199" name="l01199"></a><span class="lineno"> 1199</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#ac9f4e38e8d5a1f940c9cd0c7f6788c37">AARUF_ERROR_CANNOT_DECOMPRESS_BLOCK</a>;</div>
<div class="line"><a id="l01200" name="l01200"></a><span class="lineno"> 1200</span>}</div>
</div>
<div class="line"><a id="l01201" name="l01201"></a><span class="lineno"> 1201</span></div>
<div class="foldopen" id="foldopen01274" data-start="{" data-end="}">
<div class="line"><a id="l01274" name="l01274"></a><span class="lineno"><a class="line" href="decls_8h.html#ae0945dde37d57278f14d71bfc9b56d55"> 1274</a></span><a class="code hl_define" href="decls_8h.html#a9001412c35f3c92d3a9320d27b0d97f9">AARU_EXPORT</a> int32_t <a class="code hl_define" href="decls_8h.html#a018e0da1c1f7e4f6187a982c0e40e056">AARU_CALL</a> <a class="code hl_function" href="read_8c.html#a84e3bc8f611af8e9fc77dac24788d53b">aaruf_read_track_sector</a>(<span class="keywordtype">void</span> *context, uint8_t *data, <span class="keyword">const</span> uint64_t sector_address,</div>
<div class="line"><a id="l01275" name="l01275"></a><span class="lineno"> 1275</span> uint32_t *length, <span class="keyword">const</span> uint8_t track, uint8_t *sector_status)</div>
<div class="line"><a id="l01276" name="l01276"></a><span class="lineno"> 1276</span>{</div>
<div class="line"><a id="l01277" name="l01277"></a><span class="lineno"> 1277</span> <span class="keyword">const</span> uint32_t initial_length = length == NULL ? 0U : *length;</div>
<div class="line"><a id="l01278" name="l01278"></a><span class="lineno"> 1278</span> </div>
<div class="line"><a id="l01279" name="l01279"></a><span class="lineno"> 1279</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Entering aaruf_read_track_sector(%p, %p, %&quot;</span> PRIu64 <span class="stringliteral">&quot;, %u, %d)&quot;</span>, context, data, sector_address,</div>
<div class="line"><a id="l01280" name="l01280"></a><span class="lineno"> 1280</span> initial_length, track);</div>
<div class="line"><a id="l01281" name="l01281"></a><span class="lineno"> 1281</span> </div>
<div class="line"><a id="l01282" name="l01282"></a><span class="lineno"> 1282</span> <span class="keywordflow">if</span>(context == NULL)</div>
<div class="line"><a id="l01283" name="l01283"></a><span class="lineno"> 1283</span> {</div>
<div class="line"><a id="l01284" name="l01284"></a><span class="lineno"> 1284</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Invalid context&quot;</span>);</div>
<div class="line"><a id="l01285" name="l01285"></a><span class="lineno"> 1285</span> </div>
<div class="line"><a id="l01286" name="l01286"></a><span class="lineno"> 1286</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_track_sector() = AARUF_ERROR_NOT_AARUFORMAT&quot;</span>);</div>
<div class="line"><a id="l01287" name="l01287"></a><span class="lineno"> 1287</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#abb63e240b11d790da83bd34507b57851">AARUF_ERROR_NOT_AARUFORMAT</a>;</div>
<div class="line"><a id="l01288" name="l01288"></a><span class="lineno"> 1288</span> }</div>
<div class="line"><a id="l01289" name="l01289"></a><span class="lineno"> 1289</span> </div>
<div class="line"><a id="l01290" name="l01290"></a><span class="lineno"> 1290</span> <a class="code hl_struct" href="structaaruformat__context.html">aaruformat_context</a> *ctx = context;</div>
<div class="line"><a id="l01291" name="l01291"></a><span class="lineno"> 1291</span> </div>
<div class="line"><a id="l01292" name="l01292"></a><span class="lineno"> 1292</span> <span class="keywordflow">if</span>(length == NULL)</div>
<div class="line"><a id="l01293" name="l01293"></a><span class="lineno"> 1293</span> {</div>
<div class="line"><a id="l01294" name="l01294"></a><span class="lineno"> 1294</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Invalid length pointer&quot;</span>);</div>
<div class="line"><a id="l01295" name="l01295"></a><span class="lineno"> 1295</span> </div>
<div class="line"><a id="l01296" name="l01296"></a><span class="lineno"> 1296</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_track_sector() = AARUF_ERROR_INCORRECT_DATA_SIZE&quot;</span>);</div>
<div class="line"><a id="l01297" name="l01297"></a><span class="lineno"> 1297</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a8fc3ecb14777e72bebad62084b6caf16">AARUF_ERROR_INCORRECT_DATA_SIZE</a>;</div>
<div class="line"><a id="l01298" name="l01298"></a><span class="lineno"> 1298</span> }</div>
<div class="line"><a id="l01299" name="l01299"></a><span class="lineno"> 1299</span> </div>
<div class="line"><a id="l01300" name="l01300"></a><span class="lineno"> 1300</span> <span class="comment">// Not a libaaruformat context</span></div>
<div class="line"><a id="l01301" name="l01301"></a><span class="lineno"> 1301</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a7dc0a0fe0bf6223ff4587fd01c360b76">magic</a> != <a class="code hl_define" href="consts_8h.html#a3c3ba66fe2b547655c9e4b16a1ba519a">AARU_MAGIC</a>)</div>
<div class="line"><a id="l01302" name="l01302"></a><span class="lineno"> 1302</span> {</div>
<div class="line"><a id="l01303" name="l01303"></a><span class="lineno"> 1303</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Invalid context&quot;</span>);</div>
<div class="line"><a id="l01304" name="l01304"></a><span class="lineno"> 1304</span> </div>
<div class="line"><a id="l01305" name="l01305"></a><span class="lineno"> 1305</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_track_sector() = AARUF_ERROR_NOT_AARUFORMAT&quot;</span>);</div>
<div class="line"><a id="l01306" name="l01306"></a><span class="lineno"> 1306</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#abb63e240b11d790da83bd34507b57851">AARUF_ERROR_NOT_AARUFORMAT</a>;</div>
<div class="line"><a id="l01307" name="l01307"></a><span class="lineno"> 1307</span> }</div>
<div class="line"><a id="l01308" name="l01308"></a><span class="lineno"> 1308</span> </div>
<div class="line"><a id="l01309" name="l01309"></a><span class="lineno"> 1309</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ac970291b3449c04221827b9c2c18ac70">image_info</a>.<a class="code hl_variable" href="structImageInfo.html#a7ed25efcf8cec55d6609b83bcd17b2d0">MetadataMediaType</a> != <a class="code hl_enumvalue" href="enums_8h.html#abaa37b51ab0a4cc3d5d1a0b4820c8466aaf46f69508c3a90e5588c71f410a7f12">OpticalDisc</a>)</div>
<div class="line"><a id="l01310" name="l01310"></a><span class="lineno"> 1310</span> {</div>
<div class="line"><a id="l01311" name="l01311"></a><span class="lineno"> 1311</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Incorrect media type %d, expected OpticalDisc&quot;</span>, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ac970291b3449c04221827b9c2c18ac70">image_info</a>.<a class="code hl_variable" href="structImageInfo.html#a7ed25efcf8cec55d6609b83bcd17b2d0">MetadataMediaType</a>);</div>
<div class="line"><a id="l01312" name="l01312"></a><span class="lineno"> 1312</span> </div>
<div class="line"><a id="l01313" name="l01313"></a><span class="lineno"> 1313</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_track_sector() = AARUF_ERROR_INCORRECT_MEDIA_TYPE&quot;</span>);</div>
<div class="line"><a id="l01314" name="l01314"></a><span class="lineno"> 1314</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a26707b86af4dd4f3bae7d57abd4345b0">AARUF_ERROR_INCORRECT_MEDIA_TYPE</a>;</div>
<div class="line"><a id="l01315" name="l01315"></a><span class="lineno"> 1315</span> }</div>
<div class="line"><a id="l01316" name="l01316"></a><span class="lineno"> 1316</span> </div>
<div class="line"><a id="l01317" name="l01317"></a><span class="lineno"> 1317</span> <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i &lt; ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#adcda13fede7a22da60ef942981aef1b2">number_of_data_tracks</a>; i++)</div>
<div class="line"><a id="l01318" name="l01318"></a><span class="lineno"> 1318</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a2656e1efffab41086f8c580896ea24a1">data_tracks</a>[i].<a class="code hl_variable" href="structTrackEntry.html#aa6464108b61ee648a5aa8e6ffcc9a59a">sequence</a> == track)</div>
<div class="line"><a id="l01319" name="l01319"></a><span class="lineno"> 1319</span> <span class="keywordflow">return</span> <a class="code hl_function" href="read_8c.html#a6feebf672750fc129fe2802ab738d563">aaruf_read_sector</a>(context, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a2656e1efffab41086f8c580896ea24a1">data_tracks</a>[i].<a class="code hl_variable" href="structTrackEntry.html#aa82e4a2aa2cfecee9891f117e9494cdf">start</a> + sector_address, <span class="keyword">false</span>, data, length,</div>
<div class="line"><a id="l01320" name="l01320"></a><span class="lineno"> 1320</span> sector_status);</div>
<div class="line"><a id="l01321" name="l01321"></a><span class="lineno"> 1321</span> </div>
<div class="line"><a id="l01322" name="l01322"></a><span class="lineno"> 1322</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Track %d not found&quot;</span>, track);</div>
<div class="line"><a id="l01323" name="l01323"></a><span class="lineno"> 1323</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_track_sector() = AARUF_ERROR_TRACK_NOT_FOUND&quot;</span>);</div>
<div class="line"><a id="l01324" name="l01324"></a><span class="lineno"> 1324</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a32b645da87003df886a5742d23f8ca19">AARUF_ERROR_TRACK_NOT_FOUND</a>;</div>
<div class="line"><a id="l01325" name="l01325"></a><span class="lineno"> 1325</span>}</div>
</div>
<div class="line"><a id="l01326" name="l01326"></a><span class="lineno"> 1326</span></div>
<div class="foldopen" id="foldopen01430" data-start="{" data-end="}">
<div class="line"><a id="l01430" name="l01430"></a><span class="lineno"><a class="line" href="decls_8h.html#aed40c9ebc6d963b2a8ed5ebec1fed3c5"> 1430</a></span><a class="code hl_define" href="decls_8h.html#a9001412c35f3c92d3a9320d27b0d97f9">AARU_EXPORT</a> int32_t <a class="code hl_define" href="decls_8h.html#a018e0da1c1f7e4f6187a982c0e40e056">AARU_CALL</a> <a class="code hl_function" href="read_8c.html#a7c8786fe6f2a1538bcb2362cfe21563c">aaruf_read_sector_long</a>(<span class="keywordtype">void</span> *context, <span class="keyword">const</span> uint64_t sector_address, <span class="keywordtype">bool</span> negative,</div>
<div class="line"><a id="l01431" name="l01431"></a><span class="lineno"> 1431</span> uint8_t *data, uint32_t *length, uint8_t *sector_status)</div>
<div class="line"><a id="l01432" name="l01432"></a><span class="lineno"> 1432</span>{</div>
<div class="line"><a id="l01433" name="l01433"></a><span class="lineno"> 1433</span> <span class="keyword">const</span> uint32_t initial_length = length == NULL ? 0U : *length;</div>
<div class="line"><a id="l01434" name="l01434"></a><span class="lineno"> 1434</span> </div>
<div class="line"><a id="l01435" name="l01435"></a><span class="lineno"> 1435</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Entering aaruf_read_sector_long(%p, %&quot;</span> PRIu64 <span class="stringliteral">&quot;, %d, %p, %u)&quot;</span>, context, sector_address, data,</div>
<div class="line"><a id="l01436" name="l01436"></a><span class="lineno"> 1436</span> initial_length);</div>
<div class="line"><a id="l01437" name="l01437"></a><span class="lineno"> 1437</span> </div>
<div class="line"><a id="l01438" name="l01438"></a><span class="lineno"> 1438</span> <span class="keyword">const</span> <a class="code hl_struct" href="structaaruformat__context.html">aaruformat_context</a> *ctx = NULL;</div>
<div class="line"><a id="l01439" name="l01439"></a><span class="lineno"> 1439</span> uint32_t bare_length = 0;</div>
<div class="line"><a id="l01440" name="l01440"></a><span class="lineno"> 1440</span> uint32_t tag_length = 0;</div>
<div class="line"><a id="l01441" name="l01441"></a><span class="lineno"> 1441</span> uint8_t *bare_data = NULL;</div>
<div class="line"><a id="l01442" name="l01442"></a><span class="lineno"> 1442</span> int32_t res = 0;</div>
<div class="line"><a id="l01443" name="l01443"></a><span class="lineno"> 1443</span> int32_t query_status;</div>
<div class="line"><a id="l01444" name="l01444"></a><span class="lineno"> 1444</span> <a class="code hl_struct" href="structTrackEntry.html">TrackEntry</a> trk;</div>
<div class="line"><a id="l01445" name="l01445"></a><span class="lineno"> 1445</span> <span class="keywordtype">int</span> i = 0;</div>
<div class="line"><a id="l01446" name="l01446"></a><span class="lineno"> 1446</span> <span class="keywordtype">bool</span> trk_found = <span class="keyword">false</span>;</div>
<div class="line"><a id="l01447" name="l01447"></a><span class="lineno"> 1447</span> </div>
<div class="line"><a id="l01448" name="l01448"></a><span class="lineno"> 1448</span> <span class="keywordflow">if</span>(context == NULL)</div>
<div class="line"><a id="l01449" name="l01449"></a><span class="lineno"> 1449</span> {</div>
<div class="line"><a id="l01450" name="l01450"></a><span class="lineno"> 1450</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Invalid context&quot;</span>);</div>
<div class="line"><a id="l01451" name="l01451"></a><span class="lineno"> 1451</span> </div>
<div class="line"><a id="l01452" name="l01452"></a><span class="lineno"> 1452</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector_long() = AARUF_ERROR_NOT_AARUFORMAT&quot;</span>);</div>
<div class="line"><a id="l01453" name="l01453"></a><span class="lineno"> 1453</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#abb63e240b11d790da83bd34507b57851">AARUF_ERROR_NOT_AARUFORMAT</a>;</div>
<div class="line"><a id="l01454" name="l01454"></a><span class="lineno"> 1454</span> }</div>
<div class="line"><a id="l01455" name="l01455"></a><span class="lineno"> 1455</span> </div>
<div class="line"><a id="l01456" name="l01456"></a><span class="lineno"> 1456</span> ctx = context;</div>
<div class="line"><a id="l01457" name="l01457"></a><span class="lineno"> 1457</span> </div>
<div class="line"><a id="l01458" name="l01458"></a><span class="lineno"> 1458</span> <span class="keywordflow">if</span>(length == NULL)</div>
<div class="line"><a id="l01459" name="l01459"></a><span class="lineno"> 1459</span> {</div>
<div class="line"><a id="l01460" name="l01460"></a><span class="lineno"> 1460</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Invalid length pointer&quot;</span>);</div>
<div class="line"><a id="l01461" name="l01461"></a><span class="lineno"> 1461</span> </div>
<div class="line"><a id="l01462" name="l01462"></a><span class="lineno"> 1462</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector_long() = AARUF_ERROR_INCORRECT_DATA_SIZE&quot;</span>);</div>
<div class="line"><a id="l01463" name="l01463"></a><span class="lineno"> 1463</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a8fc3ecb14777e72bebad62084b6caf16">AARUF_ERROR_INCORRECT_DATA_SIZE</a>;</div>
<div class="line"><a id="l01464" name="l01464"></a><span class="lineno"> 1464</span> }</div>
<div class="line"><a id="l01465" name="l01465"></a><span class="lineno"> 1465</span> </div>
<div class="line"><a id="l01466" name="l01466"></a><span class="lineno"> 1466</span> <span class="comment">// Not a libaaruformat context</span></div>
<div class="line"><a id="l01467" name="l01467"></a><span class="lineno"> 1467</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a7dc0a0fe0bf6223ff4587fd01c360b76">magic</a> != <a class="code hl_define" href="consts_8h.html#a3c3ba66fe2b547655c9e4b16a1ba519a">AARU_MAGIC</a>)</div>
<div class="line"><a id="l01468" name="l01468"></a><span class="lineno"> 1468</span> {</div>
<div class="line"><a id="l01469" name="l01469"></a><span class="lineno"> 1469</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Invalid context&quot;</span>);</div>
<div class="line"><a id="l01470" name="l01470"></a><span class="lineno"> 1470</span> </div>
<div class="line"><a id="l01471" name="l01471"></a><span class="lineno"> 1471</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector_long() = AARUF_ERROR_NOT_AARUFORMAT&quot;</span>);</div>
<div class="line"><a id="l01472" name="l01472"></a><span class="lineno"> 1472</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#abb63e240b11d790da83bd34507b57851">AARUF_ERROR_NOT_AARUFORMAT</a>;</div>
<div class="line"><a id="l01473" name="l01473"></a><span class="lineno"> 1473</span> }</div>
<div class="line"><a id="l01474" name="l01474"></a><span class="lineno"> 1474</span> </div>
<div class="line"><a id="l01475" name="l01475"></a><span class="lineno"> 1475</span> <span class="keywordflow">if</span>(negative &amp;&amp; sector_address &gt; ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#ac48b4ceb64b05b5e7da2ca3df063ac99">negative</a>)</div>
<div class="line"><a id="l01476" name="l01476"></a><span class="lineno"> 1476</span> {</div>
<div class="line"><a id="l01477" name="l01477"></a><span class="lineno"> 1477</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Sector address out of bounds&quot;</span>);</div>
<div class="line"><a id="l01478" name="l01478"></a><span class="lineno"> 1478</span> </div>
<div class="line"><a id="l01479" name="l01479"></a><span class="lineno"> 1479</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector_long() = AARUF_ERROR_SECTOR_OUT_OF_BOUNDS&quot;</span>);</div>
<div class="line"><a id="l01480" name="l01480"></a><span class="lineno"> 1480</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a3f6069602fee5f1264befab13708c0ef">AARUF_ERROR_SECTOR_OUT_OF_BOUNDS</a>;</div>
<div class="line"><a id="l01481" name="l01481"></a><span class="lineno"> 1481</span> }</div>
<div class="line"><a id="l01482" name="l01482"></a><span class="lineno"> 1482</span> </div>
<div class="line"><a id="l01483" name="l01483"></a><span class="lineno"> 1483</span> <span class="keywordflow">if</span>(!negative &amp;&amp; sector_address &gt; ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ac970291b3449c04221827b9c2c18ac70">image_info</a>.<a class="code hl_variable" href="structImageInfo.html#ae3e1b9cde1c51152b00eb1b59e199906">Sectors</a> + ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#ac41f345c4d5db0c249ff171c85992482">overflow</a> - 1)</div>
<div class="line"><a id="l01484" name="l01484"></a><span class="lineno"> 1484</span> {</div>
<div class="line"><a id="l01485" name="l01485"></a><span class="lineno"> 1485</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Sector address out of bounds&quot;</span>);</div>
<div class="line"><a id="l01486" name="l01486"></a><span class="lineno"> 1486</span> </div>
<div class="line"><a id="l01487" name="l01487"></a><span class="lineno"> 1487</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector_long() = AARUF_ERROR_SECTOR_OUT_OF_BOUNDS&quot;</span>);</div>
<div class="line"><a id="l01488" name="l01488"></a><span class="lineno"> 1488</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a3f6069602fee5f1264befab13708c0ef">AARUF_ERROR_SECTOR_OUT_OF_BOUNDS</a>;</div>
<div class="line"><a id="l01489" name="l01489"></a><span class="lineno"> 1489</span> }</div>
<div class="line"><a id="l01490" name="l01490"></a><span class="lineno"> 1490</span> </div>
<div class="line"><a id="l01491" name="l01491"></a><span class="lineno"> 1491</span> uint64_t corrected_sector_address = sector_address;</div>
<div class="line"><a id="l01492" name="l01492"></a><span class="lineno"> 1492</span> </div>
<div class="line"><a id="l01493" name="l01493"></a><span class="lineno"> 1493</span> <span class="comment">// Calculate positive or negative sector</span></div>
<div class="line"><a id="l01494" name="l01494"></a><span class="lineno"> 1494</span> <span class="keywordflow">if</span>(negative)</div>
<div class="line"><a id="l01495" name="l01495"></a><span class="lineno"> 1495</span> corrected_sector_address = ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#ac48b4ceb64b05b5e7da2ca3df063ac99">negative</a> - sector_address;</div>
<div class="line"><a id="l01496" name="l01496"></a><span class="lineno"> 1496</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l01497" name="l01497"></a><span class="lineno"> 1497</span> corrected_sector_address += ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#ac48b4ceb64b05b5e7da2ca3df063ac99">negative</a>;</div>
<div class="line"><a id="l01498" name="l01498"></a><span class="lineno"> 1498</span> </div>
<div class="line"><a id="l01499" name="l01499"></a><span class="lineno"> 1499</span> <span class="keywordflow">switch</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ac970291b3449c04221827b9c2c18ac70">image_info</a>.<a class="code hl_variable" href="structImageInfo.html#a7ed25efcf8cec55d6609b83bcd17b2d0">MetadataMediaType</a>)</div>
<div class="line"><a id="l01500" name="l01500"></a><span class="lineno"> 1500</span> {</div>
<div class="line"><a id="l01501" name="l01501"></a><span class="lineno"> 1501</span> <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="enums_8h.html#abaa37b51ab0a4cc3d5d1a0b4820c8466aaf46f69508c3a90e5588c71f410a7f12">OpticalDisc</a>:</div>
<div class="line"><a id="l01502" name="l01502"></a><span class="lineno"> 1502</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ac970291b3449c04221827b9c2c18ac70">image_info</a>.<a class="code hl_variable" href="structImageInfo.html#a76611d5087e0a9fd4d329fac7c9ec3f3">MediaType</a> == <a class="code hl_enumvalue" href="group__MediaTypes.html#gga1499e9f8a76cb81b43b7a4b0dbe7e44aaf254215c04f84a87eef3702782ba7662">DVDROM</a> || ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ac970291b3449c04221827b9c2c18ac70">image_info</a>.<a class="code hl_variable" href="structImageInfo.html#a76611d5087e0a9fd4d329fac7c9ec3f3">MediaType</a> == <a class="code hl_enumvalue" href="group__MediaTypes.html#gga1499e9f8a76cb81b43b7a4b0dbe7e44aa8dccd9aa3702e0112d3c4d6f3388820e">PS2DVD</a> ||</div>
<div class="line"><a id="l01503" name="l01503"></a><span class="lineno"> 1503</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ac970291b3449c04221827b9c2c18ac70">image_info</a>.<a class="code hl_variable" href="structImageInfo.html#a76611d5087e0a9fd4d329fac7c9ec3f3">MediaType</a> == <a class="code hl_enumvalue" href="group__MediaTypes.html#gga1499e9f8a76cb81b43b7a4b0dbe7e44aa6903c0dd79d234b9379daaaa97e2c0fe">SACD</a> || ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ac970291b3449c04221827b9c2c18ac70">image_info</a>.<a class="code hl_variable" href="structImageInfo.html#a76611d5087e0a9fd4d329fac7c9ec3f3">MediaType</a> == <a class="code hl_enumvalue" href="group__MediaTypes.html#gga1499e9f8a76cb81b43b7a4b0dbe7e44aa727f071d5dd887fd6645e112cfcab197">PS3DVD</a> ||</div>
<div class="line"><a id="l01504" name="l01504"></a><span class="lineno"> 1504</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ac970291b3449c04221827b9c2c18ac70">image_info</a>.<a class="code hl_variable" href="structImageInfo.html#a76611d5087e0a9fd4d329fac7c9ec3f3">MediaType</a> == <a class="code hl_enumvalue" href="group__MediaTypes.html#gga1499e9f8a76cb81b43b7a4b0dbe7e44aa711ac65a3b3a2d5392d2efee1616bcd7">DVDR</a> || ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ac970291b3449c04221827b9c2c18ac70">image_info</a>.<a class="code hl_variable" href="structImageInfo.html#a76611d5087e0a9fd4d329fac7c9ec3f3">MediaType</a> == <a class="code hl_enumvalue" href="group__MediaTypes.html#gga1499e9f8a76cb81b43b7a4b0dbe7e44aa4cfa242859c1a136a740718d0440de9a">DVDRW</a> ||</div>
<div class="line"><a id="l01505" name="l01505"></a><span class="lineno"> 1505</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ac970291b3449c04221827b9c2c18ac70">image_info</a>.<a class="code hl_variable" href="structImageInfo.html#a76611d5087e0a9fd4d329fac7c9ec3f3">MediaType</a> == <a class="code hl_enumvalue" href="group__MediaTypes.html#gga1499e9f8a76cb81b43b7a4b0dbe7e44aac3c8ca46e314f36e5398a97e85b7a3d1">DVDPR</a> || ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ac970291b3449c04221827b9c2c18ac70">image_info</a>.<a class="code hl_variable" href="structImageInfo.html#a76611d5087e0a9fd4d329fac7c9ec3f3">MediaType</a> == <a class="code hl_enumvalue" href="group__MediaTypes.html#gga1499e9f8a76cb81b43b7a4b0dbe7e44aad5de19f38ea842de6d5edc2baa586160">DVDPRW</a> ||</div>
<div class="line"><a id="l01506" name="l01506"></a><span class="lineno"> 1506</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ac970291b3449c04221827b9c2c18ac70">image_info</a>.<a class="code hl_variable" href="structImageInfo.html#a76611d5087e0a9fd4d329fac7c9ec3f3">MediaType</a> == <a class="code hl_enumvalue" href="group__MediaTypes.html#gga1499e9f8a76cb81b43b7a4b0dbe7e44aa44d41093d0d9a56fa5e9fa317c4d795a">DVDPRWDL</a> || ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ac970291b3449c04221827b9c2c18ac70">image_info</a>.<a class="code hl_variable" href="structImageInfo.html#a76611d5087e0a9fd4d329fac7c9ec3f3">MediaType</a> == <a class="code hl_enumvalue" href="group__MediaTypes.html#gga1499e9f8a76cb81b43b7a4b0dbe7e44aadff93972faa98cafc01f4fbb464680a2">DVDRDL</a> ||</div>
<div class="line"><a id="l01507" name="l01507"></a><span class="lineno"> 1507</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ac970291b3449c04221827b9c2c18ac70">image_info</a>.<a class="code hl_variable" href="structImageInfo.html#a76611d5087e0a9fd4d329fac7c9ec3f3">MediaType</a> == <a class="code hl_enumvalue" href="group__MediaTypes.html#gga1499e9f8a76cb81b43b7a4b0dbe7e44aa6a04ebe8862d4f729e9dad48bfe92b99">DVDPRDL</a> || ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ac970291b3449c04221827b9c2c18ac70">image_info</a>.<a class="code hl_variable" href="structImageInfo.html#a76611d5087e0a9fd4d329fac7c9ec3f3">MediaType</a> == <a class="code hl_enumvalue" href="group__MediaTypes.html#gga1499e9f8a76cb81b43b7a4b0dbe7e44aaff04a947594e116dd0adf854660ff00a">DVDRAM</a> ||</div>
<div class="line"><a id="l01508" name="l01508"></a><span class="lineno"> 1508</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ac970291b3449c04221827b9c2c18ac70">image_info</a>.<a class="code hl_variable" href="structImageInfo.html#a76611d5087e0a9fd4d329fac7c9ec3f3">MediaType</a> == <a class="code hl_enumvalue" href="group__MediaTypes.html#gga1499e9f8a76cb81b43b7a4b0dbe7e44aa502cfc3a14e97fdb99a2856c2f230e19">DVDRWDL</a> || ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ac970291b3449c04221827b9c2c18ac70">image_info</a>.<a class="code hl_variable" href="structImageInfo.html#a76611d5087e0a9fd4d329fac7c9ec3f3">MediaType</a> == <a class="code hl_enumvalue" href="group__MediaTypes.html#gga1499e9f8a76cb81b43b7a4b0dbe7e44aadf89869853533586979db286065899af">DVDDownload</a> ||</div>
<div class="line"><a id="l01509" name="l01509"></a><span class="lineno"> 1509</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ac970291b3449c04221827b9c2c18ac70">image_info</a>.<a class="code hl_variable" href="structImageInfo.html#a76611d5087e0a9fd4d329fac7c9ec3f3">MediaType</a> == <a class="code hl_enumvalue" href="group__MediaTypes.html#gga1499e9f8a76cb81b43b7a4b0dbe7e44aad730786bd592903cc42ad7f5a5847171">Nuon</a>)</div>
<div class="line"><a id="l01510" name="l01510"></a><span class="lineno"> 1510</span> {</div>
<div class="line"><a id="l01511" name="l01511"></a><span class="lineno"> 1511</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#acc9cdfdd4be56c4f7016a37e218cee47">sector_id</a> == NULL || ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a3bfc3fceaaf015830913fd7efa794e5a">sector_ied</a> == NULL || ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a1614b9ffbd5e4661a2483eb3f68f8fd1">sector_cpr_mai</a> == NULL ||</div>
<div class="line"><a id="l01512" name="l01512"></a><span class="lineno"> 1512</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a4dc244e21a520e90abd961c38eb6d9ae">sector_edc</a> == NULL)</div>
<div class="line"><a id="l01513" name="l01513"></a><span class="lineno"> 1513</span> <span class="keywordflow">return</span> <a class="code hl_function" href="read_8c.html#a6feebf672750fc129fe2802ab738d563">aaruf_read_sector</a>(context, sector_address, negative, data, length, sector_status);</div>
<div class="line"><a id="l01514" name="l01514"></a><span class="lineno"> 1514</span> </div>
<div class="line"><a id="l01515" name="l01515"></a><span class="lineno"> 1515</span> <span class="keywordflow">if</span>(*length &lt; 2064 || data == NULL)</div>
<div class="line"><a id="l01516" name="l01516"></a><span class="lineno"> 1516</span> {</div>
<div class="line"><a id="l01517" name="l01517"></a><span class="lineno"> 1517</span> *length = 2064;</div>
<div class="line"><a id="l01518" name="l01518"></a><span class="lineno"> 1518</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Buffer too small for sector, required %u bytes&quot;</span>, *length);</div>
<div class="line"><a id="l01519" name="l01519"></a><span class="lineno"> 1519</span> </div>
<div class="line"><a id="l01520" name="l01520"></a><span class="lineno"> 1520</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector_long() = AARUF_ERROR_BUFFER_TOO_SMALL&quot;</span>);</div>
<div class="line"><a id="l01521" name="l01521"></a><span class="lineno"> 1521</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#ae7eea5936a22100db46aac3e4312cdae">AARUF_ERROR_BUFFER_TOO_SMALL</a>;</div>
<div class="line"><a id="l01522" name="l01522"></a><span class="lineno"> 1522</span> }</div>
<div class="line"><a id="l01523" name="l01523"></a><span class="lineno"> 1523</span> </div>
<div class="line"><a id="l01524" name="l01524"></a><span class="lineno"> 1524</span> bare_length = 0;</div>
<div class="line"><a id="l01525" name="l01525"></a><span class="lineno"> 1525</span> query_status = <a class="code hl_function" href="read_8c.html#a6feebf672750fc129fe2802ab738d563">aaruf_read_sector</a>(context, sector_address, negative, NULL, &amp;bare_length, sector_status);</div>
<div class="line"><a id="l01526" name="l01526"></a><span class="lineno"> 1526</span> </div>
<div class="line"><a id="l01527" name="l01527"></a><span class="lineno"> 1527</span> <span class="keywordflow">if</span>(query_status != <a class="code hl_define" href="errors_8h.html#ae7eea5936a22100db46aac3e4312cdae">AARUF_ERROR_BUFFER_TOO_SMALL</a> &amp;&amp; query_status != <a class="code hl_define" href="errors_8h.html#a1d6e49f7e8a1fa489efa0a582e90b5de">AARUF_STATUS_OK</a>)</div>
<div class="line"><a id="l01528" name="l01528"></a><span class="lineno"> 1528</span> {</div>
<div class="line"><a id="l01529" name="l01529"></a><span class="lineno"> 1529</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector_long() = %d&quot;</span>, query_status);</div>
<div class="line"><a id="l01530" name="l01530"></a><span class="lineno"> 1530</span> <span class="keywordflow">return</span> query_status;</div>
<div class="line"><a id="l01531" name="l01531"></a><span class="lineno"> 1531</span> }</div>
<div class="line"><a id="l01532" name="l01532"></a><span class="lineno"> 1532</span> </div>
<div class="line"><a id="l01533" name="l01533"></a><span class="lineno"> 1533</span> <span class="keywordflow">if</span>(bare_length == 0)</div>
<div class="line"><a id="l01534" name="l01534"></a><span class="lineno"> 1534</span> {</div>
<div class="line"><a id="l01535" name="l01535"></a><span class="lineno"> 1535</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Invalid bare sector length (0)&quot;</span>);</div>
<div class="line"><a id="l01536" name="l01536"></a><span class="lineno"> 1536</span> </div>
<div class="line"><a id="l01537" name="l01537"></a><span class="lineno"> 1537</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector_long() = AARUF_ERROR_INCORRECT_DATA_SIZE&quot;</span>);</div>
<div class="line"><a id="l01538" name="l01538"></a><span class="lineno"> 1538</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a8fc3ecb14777e72bebad62084b6caf16">AARUF_ERROR_INCORRECT_DATA_SIZE</a>;</div>
<div class="line"><a id="l01539" name="l01539"></a><span class="lineno"> 1539</span> }</div>
<div class="line"><a id="l01540" name="l01540"></a><span class="lineno"> 1540</span> </div>
<div class="line"><a id="l01541" name="l01541"></a><span class="lineno"> 1541</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Allocating memory for bare data&quot;</span>);</div>
<div class="line"><a id="l01542" name="l01542"></a><span class="lineno"> 1542</span> bare_data = (uint8_t *)malloc(bare_length);</div>
<div class="line"><a id="l01543" name="l01543"></a><span class="lineno"> 1543</span> </div>
<div class="line"><a id="l01544" name="l01544"></a><span class="lineno"> 1544</span> <span class="keywordflow">if</span>(bare_data == NULL)</div>
<div class="line"><a id="l01545" name="l01545"></a><span class="lineno"> 1545</span> {</div>
<div class="line"><a id="l01546" name="l01546"></a><span class="lineno"> 1546</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Could not allocate memory for bare data&quot;</span>);</div>
<div class="line"><a id="l01547" name="l01547"></a><span class="lineno"> 1547</span> </div>
<div class="line"><a id="l01548" name="l01548"></a><span class="lineno"> 1548</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector_long() = AARUF_ERROR_NOT_ENOUGH_MEMORY&quot;</span>);</div>
<div class="line"><a id="l01549" name="l01549"></a><span class="lineno"> 1549</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a35a771e3648bf971a004d4b2be9b5ec4">AARUF_ERROR_NOT_ENOUGH_MEMORY</a>;</div>
<div class="line"><a id="l01550" name="l01550"></a><span class="lineno"> 1550</span> }</div>
<div class="line"><a id="l01551" name="l01551"></a><span class="lineno"> 1551</span> </div>
<div class="line"><a id="l01552" name="l01552"></a><span class="lineno"> 1552</span> res = <a class="code hl_function" href="read_8c.html#a6feebf672750fc129fe2802ab738d563">aaruf_read_sector</a>(context, sector_address, negative, bare_data, &amp;bare_length, sector_status);</div>
<div class="line"><a id="l01553" name="l01553"></a><span class="lineno"> 1553</span> </div>
<div class="line"><a id="l01554" name="l01554"></a><span class="lineno"> 1554</span> <span class="keywordflow">if</span>(res != <a class="code hl_define" href="errors_8h.html#a1d6e49f7e8a1fa489efa0a582e90b5de">AARUF_STATUS_OK</a>)</div>
<div class="line"><a id="l01555" name="l01555"></a><span class="lineno"> 1555</span> {</div>
<div class="line"><a id="l01556" name="l01556"></a><span class="lineno"> 1556</span> *length = 2064;</div>
<div class="line"><a id="l01557" name="l01557"></a><span class="lineno"> 1557</span> free(bare_data);</div>
<div class="line"><a id="l01558" name="l01558"></a><span class="lineno"> 1558</span> </div>
<div class="line"><a id="l01559" name="l01559"></a><span class="lineno"> 1559</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector_long() = %d&quot;</span>, res);</div>
<div class="line"><a id="l01560" name="l01560"></a><span class="lineno"> 1560</span> <span class="keywordflow">return</span> res;</div>
<div class="line"><a id="l01561" name="l01561"></a><span class="lineno"> 1561</span> }</div>
<div class="line"><a id="l01562" name="l01562"></a><span class="lineno"> 1562</span> </div>
<div class="line"><a id="l01563" name="l01563"></a><span class="lineno"> 1563</span> memcpy(data, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#acc9cdfdd4be56c4f7016a37e218cee47">sector_id</a> + corrected_sector_address * 4, 4);</div>
<div class="line"><a id="l01564" name="l01564"></a><span class="lineno"> 1564</span> memcpy(data + 4, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a3bfc3fceaaf015830913fd7efa794e5a">sector_ied</a> + corrected_sector_address * 2, 2);</div>
<div class="line"><a id="l01565" name="l01565"></a><span class="lineno"> 1565</span> memcpy(data + 6, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a1614b9ffbd5e4661a2483eb3f68f8fd1">sector_cpr_mai</a> + corrected_sector_address * 6, 6);</div>
<div class="line"><a id="l01566" name="l01566"></a><span class="lineno"> 1566</span> memcpy(data + 12, bare_data, 2048);</div>
<div class="line"><a id="l01567" name="l01567"></a><span class="lineno"> 1567</span> memcpy(data + 2060, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a4dc244e21a520e90abd961c38eb6d9ae">sector_edc</a> + corrected_sector_address * 4, 4);</div>
<div class="line"><a id="l01568" name="l01568"></a><span class="lineno"> 1568</span> </div>
<div class="line"><a id="l01569" name="l01569"></a><span class="lineno"> 1569</span> *length = 2064;</div>
<div class="line"><a id="l01570" name="l01570"></a><span class="lineno"> 1570</span> </div>
<div class="line"><a id="l01571" name="l01571"></a><span class="lineno"> 1571</span> free(bare_data);</div>
<div class="line"><a id="l01572" name="l01572"></a><span class="lineno"> 1572</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a1d6e49f7e8a1fa489efa0a582e90b5de">AARUF_STATUS_OK</a>;</div>
<div class="line"><a id="l01573" name="l01573"></a><span class="lineno"> 1573</span> }</div>
<div class="line"><a id="l01574" name="l01574"></a><span class="lineno"> 1574</span> </div>
<div class="line"><a id="l01575" name="l01575"></a><span class="lineno"> 1575</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ac970291b3449c04221827b9c2c18ac70">image_info</a>.<a class="code hl_variable" href="structImageInfo.html#a76611d5087e0a9fd4d329fac7c9ec3f3">MediaType</a> == <a class="code hl_enumvalue" href="group__MediaTypes.html#gga1499e9f8a76cb81b43b7a4b0dbe7e44aa34fed1daeb2422887d826d127e6ad488">GOD</a> || ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ac970291b3449c04221827b9c2c18ac70">image_info</a>.<a class="code hl_variable" href="structImageInfo.html#a76611d5087e0a9fd4d329fac7c9ec3f3">MediaType</a> == <a class="code hl_enumvalue" href="group__MediaTypes.html#gga1499e9f8a76cb81b43b7a4b0dbe7e44aa61ed400b8bb5104e7309b3823e85766c">WOD</a>)</div>
<div class="line"><a id="l01576" name="l01576"></a><span class="lineno"> 1576</span> {</div>
<div class="line"><a id="l01577" name="l01577"></a><span class="lineno"> 1577</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#acc9cdfdd4be56c4f7016a37e218cee47">sector_id</a> == NULL || ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a3bfc3fceaaf015830913fd7efa794e5a">sector_ied</a> == NULL || ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a1614b9ffbd5e4661a2483eb3f68f8fd1">sector_cpr_mai</a> == NULL ||</div>
<div class="line"><a id="l01578" name="l01578"></a><span class="lineno"> 1578</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a4dc244e21a520e90abd961c38eb6d9ae">sector_edc</a> == NULL)</div>
<div class="line"><a id="l01579" name="l01579"></a><span class="lineno"> 1579</span> <span class="keywordflow">return</span> <a class="code hl_function" href="read_8c.html#a6feebf672750fc129fe2802ab738d563">aaruf_read_sector</a>(context, sector_address, negative, data, length, sector_status);</div>
<div class="line"><a id="l01580" name="l01580"></a><span class="lineno"> 1580</span> </div>
<div class="line"><a id="l01581" name="l01581"></a><span class="lineno"> 1581</span> <span class="keywordflow">if</span>(*length &lt; 2064 || data == NULL)</div>
<div class="line"><a id="l01582" name="l01582"></a><span class="lineno"> 1582</span> {</div>
<div class="line"><a id="l01583" name="l01583"></a><span class="lineno"> 1583</span> *length = 2064;</div>
<div class="line"><a id="l01584" name="l01584"></a><span class="lineno"> 1584</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Buffer too small for sector, required %u bytes&quot;</span>, *length);</div>
<div class="line"><a id="l01585" name="l01585"></a><span class="lineno"> 1585</span> </div>
<div class="line"><a id="l01586" name="l01586"></a><span class="lineno"> 1586</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector_long() = AARUF_ERROR_BUFFER_TOO_SMALL&quot;</span>);</div>
<div class="line"><a id="l01587" name="l01587"></a><span class="lineno"> 1587</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#ae7eea5936a22100db46aac3e4312cdae">AARUF_ERROR_BUFFER_TOO_SMALL</a>;</div>
<div class="line"><a id="l01588" name="l01588"></a><span class="lineno"> 1588</span> }</div>
<div class="line"><a id="l01589" name="l01589"></a><span class="lineno"> 1589</span> </div>
<div class="line"><a id="l01590" name="l01590"></a><span class="lineno"> 1590</span> bare_length = 0;</div>
<div class="line"><a id="l01591" name="l01591"></a><span class="lineno"> 1591</span> query_status = <a class="code hl_function" href="read_8c.html#a6feebf672750fc129fe2802ab738d563">aaruf_read_sector</a>(context, sector_address, negative, NULL, &amp;bare_length, sector_status);</div>
<div class="line"><a id="l01592" name="l01592"></a><span class="lineno"> 1592</span> </div>
<div class="line"><a id="l01593" name="l01593"></a><span class="lineno"> 1593</span> <span class="keywordflow">if</span>(query_status != <a class="code hl_define" href="errors_8h.html#ae7eea5936a22100db46aac3e4312cdae">AARUF_ERROR_BUFFER_TOO_SMALL</a> &amp;&amp; query_status != <a class="code hl_define" href="errors_8h.html#a1d6e49f7e8a1fa489efa0a582e90b5de">AARUF_STATUS_OK</a>)</div>
<div class="line"><a id="l01594" name="l01594"></a><span class="lineno"> 1594</span> {</div>
<div class="line"><a id="l01595" name="l01595"></a><span class="lineno"> 1595</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector_long() = %d&quot;</span>, query_status);</div>
<div class="line"><a id="l01596" name="l01596"></a><span class="lineno"> 1596</span> <span class="keywordflow">return</span> query_status;</div>
<div class="line"><a id="l01597" name="l01597"></a><span class="lineno"> 1597</span> }</div>
<div class="line"><a id="l01598" name="l01598"></a><span class="lineno"> 1598</span> </div>
<div class="line"><a id="l01599" name="l01599"></a><span class="lineno"> 1599</span> <span class="keywordflow">if</span>(bare_length == 0)</div>
<div class="line"><a id="l01600" name="l01600"></a><span class="lineno"> 1600</span> {</div>
<div class="line"><a id="l01601" name="l01601"></a><span class="lineno"> 1601</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Invalid bare sector length (0)&quot;</span>);</div>
<div class="line"><a id="l01602" name="l01602"></a><span class="lineno"> 1602</span> </div>
<div class="line"><a id="l01603" name="l01603"></a><span class="lineno"> 1603</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector_long() = AARUF_ERROR_INCORRECT_DATA_SIZE&quot;</span>);</div>
<div class="line"><a id="l01604" name="l01604"></a><span class="lineno"> 1604</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a8fc3ecb14777e72bebad62084b6caf16">AARUF_ERROR_INCORRECT_DATA_SIZE</a>;</div>
<div class="line"><a id="l01605" name="l01605"></a><span class="lineno"> 1605</span> }</div>
<div class="line"><a id="l01606" name="l01606"></a><span class="lineno"> 1606</span> </div>
<div class="line"><a id="l01607" name="l01607"></a><span class="lineno"> 1607</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Allocating memory for bare data&quot;</span>);</div>
<div class="line"><a id="l01608" name="l01608"></a><span class="lineno"> 1608</span> bare_data = (uint8_t *)malloc(bare_length);</div>
<div class="line"><a id="l01609" name="l01609"></a><span class="lineno"> 1609</span> </div>
<div class="line"><a id="l01610" name="l01610"></a><span class="lineno"> 1610</span> <span class="keywordflow">if</span>(bare_data == NULL)</div>
<div class="line"><a id="l01611" name="l01611"></a><span class="lineno"> 1611</span> {</div>
<div class="line"><a id="l01612" name="l01612"></a><span class="lineno"> 1612</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Could not allocate memory for bare data&quot;</span>);</div>
<div class="line"><a id="l01613" name="l01613"></a><span class="lineno"> 1613</span> </div>
<div class="line"><a id="l01614" name="l01614"></a><span class="lineno"> 1614</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector_long() = AARUF_ERROR_NOT_ENOUGH_MEMORY&quot;</span>);</div>
<div class="line"><a id="l01615" name="l01615"></a><span class="lineno"> 1615</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a35a771e3648bf971a004d4b2be9b5ec4">AARUF_ERROR_NOT_ENOUGH_MEMORY</a>;</div>
<div class="line"><a id="l01616" name="l01616"></a><span class="lineno"> 1616</span> }</div>
<div class="line"><a id="l01617" name="l01617"></a><span class="lineno"> 1617</span> </div>
<div class="line"><a id="l01618" name="l01618"></a><span class="lineno"> 1618</span> res = <a class="code hl_function" href="read_8c.html#a6feebf672750fc129fe2802ab738d563">aaruf_read_sector</a>(context, sector_address, negative, bare_data, &amp;bare_length, sector_status);</div>
<div class="line"><a id="l01619" name="l01619"></a><span class="lineno"> 1619</span> </div>
<div class="line"><a id="l01620" name="l01620"></a><span class="lineno"> 1620</span> <span class="keywordflow">if</span>(res != <a class="code hl_define" href="errors_8h.html#a1d6e49f7e8a1fa489efa0a582e90b5de">AARUF_STATUS_OK</a>)</div>
<div class="line"><a id="l01621" name="l01621"></a><span class="lineno"> 1621</span> {</div>
<div class="line"><a id="l01622" name="l01622"></a><span class="lineno"> 1622</span> *length = 2064;</div>
<div class="line"><a id="l01623" name="l01623"></a><span class="lineno"> 1623</span> free(bare_data);</div>
<div class="line"><a id="l01624" name="l01624"></a><span class="lineno"> 1624</span> </div>
<div class="line"><a id="l01625" name="l01625"></a><span class="lineno"> 1625</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector_long() = %d&quot;</span>, res);</div>
<div class="line"><a id="l01626" name="l01626"></a><span class="lineno"> 1626</span> <span class="keywordflow">return</span> res;</div>
<div class="line"><a id="l01627" name="l01627"></a><span class="lineno"> 1627</span> }</div>
<div class="line"><a id="l01628" name="l01628"></a><span class="lineno"> 1628</span> </div>
<div class="line"><a id="l01629" name="l01629"></a><span class="lineno"> 1629</span> memcpy(data, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#acc9cdfdd4be56c4f7016a37e218cee47">sector_id</a> + corrected_sector_address * 4, 4);</div>
<div class="line"><a id="l01630" name="l01630"></a><span class="lineno"> 1630</span> memcpy(data + 4, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a3bfc3fceaaf015830913fd7efa794e5a">sector_ied</a> + corrected_sector_address * 2, 2);</div>
<div class="line"><a id="l01631" name="l01631"></a><span class="lineno"> 1631</span> memcpy(data + 6, bare_data, 2048);</div>
<div class="line"><a id="l01632" name="l01632"></a><span class="lineno"> 1632</span> memcpy(data + 2054, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a1614b9ffbd5e4661a2483eb3f68f8fd1">sector_cpr_mai</a> + corrected_sector_address * 6, 6);</div>
<div class="line"><a id="l01633" name="l01633"></a><span class="lineno"> 1633</span> memcpy(data + 2060, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a4dc244e21a520e90abd961c38eb6d9ae">sector_edc</a> + corrected_sector_address * 4, 4);</div>
<div class="line"><a id="l01634" name="l01634"></a><span class="lineno"> 1634</span> </div>
<div class="line"><a id="l01635" name="l01635"></a><span class="lineno"> 1635</span> *length = 2064;</div>
<div class="line"><a id="l01636" name="l01636"></a><span class="lineno"> 1636</span> </div>
<div class="line"><a id="l01637" name="l01637"></a><span class="lineno"> 1637</span> free(bare_data);</div>
<div class="line"><a id="l01638" name="l01638"></a><span class="lineno"> 1638</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a1d6e49f7e8a1fa489efa0a582e90b5de">AARUF_STATUS_OK</a>;</div>
<div class="line"><a id="l01639" name="l01639"></a><span class="lineno"> 1639</span> }</div>
<div class="line"><a id="l01640" name="l01640"></a><span class="lineno"> 1640</span> </div>
<div class="line"><a id="l01641" name="l01641"></a><span class="lineno"> 1641</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ac970291b3449c04221827b9c2c18ac70">image_info</a>.<a class="code hl_variable" href="structImageInfo.html#a76611d5087e0a9fd4d329fac7c9ec3f3">MediaType</a> == <a class="code hl_enumvalue" href="group__MediaTypes.html#gga1499e9f8a76cb81b43b7a4b0dbe7e44aa79ba622fe51ab85f82ac1fef5d91ecf0">BDROM</a> || ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ac970291b3449c04221827b9c2c18ac70">image_info</a>.<a class="code hl_variable" href="structImageInfo.html#a76611d5087e0a9fd4d329fac7c9ec3f3">MediaType</a> == <a class="code hl_enumvalue" href="group__MediaTypes.html#gga1499e9f8a76cb81b43b7a4b0dbe7e44aaac8f48f5db15c7112e6fe4a466582b33">BDR</a> ||</div>
<div class="line"><a id="l01642" name="l01642"></a><span class="lineno"> 1642</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ac970291b3449c04221827b9c2c18ac70">image_info</a>.<a class="code hl_variable" href="structImageInfo.html#a76611d5087e0a9fd4d329fac7c9ec3f3">MediaType</a> == <a class="code hl_enumvalue" href="group__MediaTypes.html#gga1499e9f8a76cb81b43b7a4b0dbe7e44aac38c8f08c0f5b53d87aca57202eaf123">BDRE</a> || ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ac970291b3449c04221827b9c2c18ac70">image_info</a>.<a class="code hl_variable" href="structImageInfo.html#a76611d5087e0a9fd4d329fac7c9ec3f3">MediaType</a> == <a class="code hl_enumvalue" href="group__MediaTypes.html#gga1499e9f8a76cb81b43b7a4b0dbe7e44aa47f36801fd65d252e56797ef3d9bf67f">BDRXL</a> ||</div>
<div class="line"><a id="l01643" name="l01643"></a><span class="lineno"> 1643</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ac970291b3449c04221827b9c2c18ac70">image_info</a>.<a class="code hl_variable" href="structImageInfo.html#a76611d5087e0a9fd4d329fac7c9ec3f3">MediaType</a> == <a class="code hl_enumvalue" href="group__MediaTypes.html#gga1499e9f8a76cb81b43b7a4b0dbe7e44aa0125edd84c12e1352cd217e927bcb0c0">BDREXL</a> || ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ac970291b3449c04221827b9c2c18ac70">image_info</a>.<a class="code hl_variable" href="structImageInfo.html#a76611d5087e0a9fd4d329fac7c9ec3f3">MediaType</a> == <a class="code hl_enumvalue" href="group__MediaTypes.html#gga1499e9f8a76cb81b43b7a4b0dbe7e44aa696d00e6341b0de368ea07ef7ae0e174">UHDBD</a> ||</div>
<div class="line"><a id="l01644" name="l01644"></a><span class="lineno"> 1644</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ac970291b3449c04221827b9c2c18ac70">image_info</a>.<a class="code hl_variable" href="structImageInfo.html#a76611d5087e0a9fd4d329fac7c9ec3f3">MediaType</a> == <a class="code hl_enumvalue" href="group__MediaTypes.html#gga1499e9f8a76cb81b43b7a4b0dbe7e44aa933052f31f7e81b8c25f959861039774">XGD4</a> || ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ac970291b3449c04221827b9c2c18ac70">image_info</a>.<a class="code hl_variable" href="structImageInfo.html#a76611d5087e0a9fd4d329fac7c9ec3f3">MediaType</a> == <a class="code hl_enumvalue" href="group__MediaTypes.html#gga1499e9f8a76cb81b43b7a4b0dbe7e44aa626b10297c3bc07fbff69cf639208453">PS3BD</a> ||</div>
<div class="line"><a id="l01645" name="l01645"></a><span class="lineno"> 1645</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ac970291b3449c04221827b9c2c18ac70">image_info</a>.<a class="code hl_variable" href="structImageInfo.html#a76611d5087e0a9fd4d329fac7c9ec3f3">MediaType</a> == <a class="code hl_enumvalue" href="group__MediaTypes.html#gga1499e9f8a76cb81b43b7a4b0dbe7e44aaafd24844aa48e831be04f4a6446c9e48">PS4BD</a> || ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ac970291b3449c04221827b9c2c18ac70">image_info</a>.<a class="code hl_variable" href="structImageInfo.html#a76611d5087e0a9fd4d329fac7c9ec3f3">MediaType</a> == <a class="code hl_enumvalue" href="group__MediaTypes.html#gga1499e9f8a76cb81b43b7a4b0dbe7e44aa22814704db9e2b9cb176a4ce374e52eb">PS5BD</a>)</div>
<div class="line"><a id="l01646" name="l01646"></a><span class="lineno"> 1646</span> {</div>
<div class="line"><a id="l01647" name="l01647"></a><span class="lineno"> 1647</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a4dc244e21a520e90abd961c38eb6d9ae">sector_edc</a> == NULL) <span class="keywordflow">return</span> <a class="code hl_function" href="read_8c.html#a6feebf672750fc129fe2802ab738d563">aaruf_read_sector</a>(context, sector_address, negative, data, length, sector_status);</div>
<div class="line"><a id="l01648" name="l01648"></a><span class="lineno"> 1648</span> </div>
<div class="line"><a id="l01649" name="l01649"></a><span class="lineno"> 1649</span> <span class="keywordflow">if</span>(*length &lt; 2052 || data == NULL)</div>
<div class="line"><a id="l01650" name="l01650"></a><span class="lineno"> 1650</span> {</div>
<div class="line"><a id="l01651" name="l01651"></a><span class="lineno"> 1651</span> *length = 2052;</div>
<div class="line"><a id="l01652" name="l01652"></a><span class="lineno"> 1652</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Buffer too small for sector, required %u bytes&quot;</span>, *length);</div>
<div class="line"><a id="l01653" name="l01653"></a><span class="lineno"> 1653</span> </div>
<div class="line"><a id="l01654" name="l01654"></a><span class="lineno"> 1654</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector_long() = AARUF_ERROR_BUFFER_TOO_SMALL&quot;</span>);</div>
<div class="line"><a id="l01655" name="l01655"></a><span class="lineno"> 1655</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#ae7eea5936a22100db46aac3e4312cdae">AARUF_ERROR_BUFFER_TOO_SMALL</a>;</div>
<div class="line"><a id="l01656" name="l01656"></a><span class="lineno"> 1656</span> }</div>
<div class="line"><a id="l01657" name="l01657"></a><span class="lineno"> 1657</span> </div>
<div class="line"><a id="l01658" name="l01658"></a><span class="lineno"> 1658</span> bare_length = 0;</div>
<div class="line"><a id="l01659" name="l01659"></a><span class="lineno"> 1659</span> query_status = <a class="code hl_function" href="read_8c.html#a6feebf672750fc129fe2802ab738d563">aaruf_read_sector</a>(context, sector_address, negative, NULL, &amp;bare_length, sector_status);</div>
<div class="line"><a id="l01660" name="l01660"></a><span class="lineno"> 1660</span> </div>
<div class="line"><a id="l01661" name="l01661"></a><span class="lineno"> 1661</span> <span class="keywordflow">if</span>(query_status != <a class="code hl_define" href="errors_8h.html#ae7eea5936a22100db46aac3e4312cdae">AARUF_ERROR_BUFFER_TOO_SMALL</a> &amp;&amp; query_status != <a class="code hl_define" href="errors_8h.html#a1d6e49f7e8a1fa489efa0a582e90b5de">AARUF_STATUS_OK</a>)</div>
<div class="line"><a id="l01662" name="l01662"></a><span class="lineno"> 1662</span> {</div>
<div class="line"><a id="l01663" name="l01663"></a><span class="lineno"> 1663</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector_long() = %d&quot;</span>, query_status);</div>
<div class="line"><a id="l01664" name="l01664"></a><span class="lineno"> 1664</span> <span class="keywordflow">return</span> query_status;</div>
<div class="line"><a id="l01665" name="l01665"></a><span class="lineno"> 1665</span> }</div>
<div class="line"><a id="l01666" name="l01666"></a><span class="lineno"> 1666</span> </div>
<div class="line"><a id="l01667" name="l01667"></a><span class="lineno"> 1667</span> <span class="keywordflow">if</span>(bare_length == 0)</div>
<div class="line"><a id="l01668" name="l01668"></a><span class="lineno"> 1668</span> {</div>
<div class="line"><a id="l01669" name="l01669"></a><span class="lineno"> 1669</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Invalid bare sector length (0)&quot;</span>);</div>
<div class="line"><a id="l01670" name="l01670"></a><span class="lineno"> 1670</span> </div>
<div class="line"><a id="l01671" name="l01671"></a><span class="lineno"> 1671</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector_long() = AARUF_ERROR_INCORRECT_DATA_SIZE&quot;</span>);</div>
<div class="line"><a id="l01672" name="l01672"></a><span class="lineno"> 1672</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a8fc3ecb14777e72bebad62084b6caf16">AARUF_ERROR_INCORRECT_DATA_SIZE</a>;</div>
<div class="line"><a id="l01673" name="l01673"></a><span class="lineno"> 1673</span> }</div>
<div class="line"><a id="l01674" name="l01674"></a><span class="lineno"> 1674</span> </div>
<div class="line"><a id="l01675" name="l01675"></a><span class="lineno"> 1675</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Allocating memory for bare data&quot;</span>);</div>
<div class="line"><a id="l01676" name="l01676"></a><span class="lineno"> 1676</span> bare_data = (uint8_t *)malloc(bare_length);</div>
<div class="line"><a id="l01677" name="l01677"></a><span class="lineno"> 1677</span> </div>
<div class="line"><a id="l01678" name="l01678"></a><span class="lineno"> 1678</span> <span class="keywordflow">if</span>(bare_data == NULL)</div>
<div class="line"><a id="l01679" name="l01679"></a><span class="lineno"> 1679</span> {</div>
<div class="line"><a id="l01680" name="l01680"></a><span class="lineno"> 1680</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Could not allocate memory for bare data&quot;</span>);</div>
<div class="line"><a id="l01681" name="l01681"></a><span class="lineno"> 1681</span> </div>
<div class="line"><a id="l01682" name="l01682"></a><span class="lineno"> 1682</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector_long() = AARUF_ERROR_NOT_ENOUGH_MEMORY&quot;</span>);</div>
<div class="line"><a id="l01683" name="l01683"></a><span class="lineno"> 1683</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a35a771e3648bf971a004d4b2be9b5ec4">AARUF_ERROR_NOT_ENOUGH_MEMORY</a>;</div>
<div class="line"><a id="l01684" name="l01684"></a><span class="lineno"> 1684</span> }</div>
<div class="line"><a id="l01685" name="l01685"></a><span class="lineno"> 1685</span> </div>
<div class="line"><a id="l01686" name="l01686"></a><span class="lineno"> 1686</span> res = <a class="code hl_function" href="read_8c.html#a6feebf672750fc129fe2802ab738d563">aaruf_read_sector</a>(context, sector_address, negative, bare_data, &amp;bare_length, sector_status);</div>
<div class="line"><a id="l01687" name="l01687"></a><span class="lineno"> 1687</span> </div>
<div class="line"><a id="l01688" name="l01688"></a><span class="lineno"> 1688</span> <span class="keywordflow">if</span>(res != <a class="code hl_define" href="errors_8h.html#a1d6e49f7e8a1fa489efa0a582e90b5de">AARUF_STATUS_OK</a>)</div>
<div class="line"><a id="l01689" name="l01689"></a><span class="lineno"> 1689</span> {</div>
<div class="line"><a id="l01690" name="l01690"></a><span class="lineno"> 1690</span> free(bare_data);</div>
<div class="line"><a id="l01691" name="l01691"></a><span class="lineno"> 1691</span> </div>
<div class="line"><a id="l01692" name="l01692"></a><span class="lineno"> 1692</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector_long() = %d&quot;</span>, res);</div>
<div class="line"><a id="l01693" name="l01693"></a><span class="lineno"> 1693</span> <span class="keywordflow">return</span> res;</div>
<div class="line"><a id="l01694" name="l01694"></a><span class="lineno"> 1694</span> }</div>
<div class="line"><a id="l01695" name="l01695"></a><span class="lineno"> 1695</span> </div>
<div class="line"><a id="l01696" name="l01696"></a><span class="lineno"> 1696</span> memcpy(data, bare_data, 2048);</div>
<div class="line"><a id="l01697" name="l01697"></a><span class="lineno"> 1697</span> memcpy(data + 2048, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a4dc244e21a520e90abd961c38eb6d9ae">sector_edc</a> + corrected_sector_address * 4, 4);</div>
<div class="line"><a id="l01698" name="l01698"></a><span class="lineno"> 1698</span> </div>
<div class="line"><a id="l01699" name="l01699"></a><span class="lineno"> 1699</span> *length = 2052;</div>
<div class="line"><a id="l01700" name="l01700"></a><span class="lineno"> 1700</span> </div>
<div class="line"><a id="l01701" name="l01701"></a><span class="lineno"> 1701</span> free(bare_data);</div>
<div class="line"><a id="l01702" name="l01702"></a><span class="lineno"> 1702</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a1d6e49f7e8a1fa489efa0a582e90b5de">AARUF_STATUS_OK</a>;</div>
<div class="line"><a id="l01703" name="l01703"></a><span class="lineno"> 1703</span> }</div>
<div class="line"><a id="l01704" name="l01704"></a><span class="lineno"> 1704</span> </div>
<div class="line"><a id="l01705" name="l01705"></a><span class="lineno"> 1705</span> <span class="keywordflow">if</span>(*length &lt; 2352 || data == NULL)</div>
<div class="line"><a id="l01706" name="l01706"></a><span class="lineno"> 1706</span> {</div>
<div class="line"><a id="l01707" name="l01707"></a><span class="lineno"> 1707</span> *length = 2352;</div>
<div class="line"><a id="l01708" name="l01708"></a><span class="lineno"> 1708</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Buffer too small for sector, required %u bytes&quot;</span>, *length);</div>
<div class="line"><a id="l01709" name="l01709"></a><span class="lineno"> 1709</span> </div>
<div class="line"><a id="l01710" name="l01710"></a><span class="lineno"> 1710</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector_long() = AARUF_ERROR_BUFFER_TOO_SMALL&quot;</span>);</div>
<div class="line"><a id="l01711" name="l01711"></a><span class="lineno"> 1711</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#ae7eea5936a22100db46aac3e4312cdae">AARUF_ERROR_BUFFER_TOO_SMALL</a>;</div>
<div class="line"><a id="l01712" name="l01712"></a><span class="lineno"> 1712</span> }</div>
<div class="line"><a id="l01713" name="l01713"></a><span class="lineno"> 1713</span> </div>
<div class="line"><a id="l01714" name="l01714"></a><span class="lineno"> 1714</span> <span class="keywordflow">if</span>((ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a64870438f8f560a0b9973dedb3dd7e0e">sector_suffix</a> == NULL || ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a413a99e4e86b7121adca2cfce8f02d63">sector_prefix</a> == NULL) &amp;&amp;</div>
<div class="line"><a id="l01715" name="l01715"></a><span class="lineno"> 1715</span> (ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a5ec94a7912a165e5e7cacbeb8b65cbdf">sector_suffix_ddt</a> == NULL || ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ad9e40dfb41ec80b902869354b052dd7d">sector_prefix_ddt</a> == NULL) &amp;&amp;</div>
<div class="line"><a id="l01716" name="l01716"></a><span class="lineno"> 1716</span> (ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a46d0ccdc69758165c0468afbd05b9ffe">sector_suffix_ddt2</a> == NULL || ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8317a42c16f1a140053f01808929f43f">sector_prefix_ddt2</a> == NULL))</div>
<div class="line"><a id="l01717" name="l01717"></a><span class="lineno"> 1717</span> <span class="keywordflow">return</span> <a class="code hl_function" href="read_8c.html#a6feebf672750fc129fe2802ab738d563">aaruf_read_sector</a>(context, sector_address, negative, data, length, sector_status);</div>
<div class="line"><a id="l01718" name="l01718"></a><span class="lineno"> 1718</span> </div>
<div class="line"><a id="l01719" name="l01719"></a><span class="lineno"> 1719</span> bare_length = 0;</div>
<div class="line"><a id="l01720" name="l01720"></a><span class="lineno"> 1720</span> query_status = <a class="code hl_function" href="read_8c.html#a6feebf672750fc129fe2802ab738d563">aaruf_read_sector</a>(context, sector_address, negative, NULL, &amp;bare_length, sector_status);</div>
<div class="line"><a id="l01721" name="l01721"></a><span class="lineno"> 1721</span> </div>
<div class="line"><a id="l01722" name="l01722"></a><span class="lineno"> 1722</span> <span class="keywordflow">if</span>(query_status != <a class="code hl_define" href="errors_8h.html#ae7eea5936a22100db46aac3e4312cdae">AARUF_ERROR_BUFFER_TOO_SMALL</a> &amp;&amp; query_status != <a class="code hl_define" href="errors_8h.html#a1d6e49f7e8a1fa489efa0a582e90b5de">AARUF_STATUS_OK</a>)</div>
<div class="line"><a id="l01723" name="l01723"></a><span class="lineno"> 1723</span> {</div>
<div class="line"><a id="l01724" name="l01724"></a><span class="lineno"> 1724</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector_long() = %d&quot;</span>, query_status);</div>
<div class="line"><a id="l01725" name="l01725"></a><span class="lineno"> 1725</span> <span class="keywordflow">return</span> query_status;</div>
<div class="line"><a id="l01726" name="l01726"></a><span class="lineno"> 1726</span> }</div>
<div class="line"><a id="l01727" name="l01727"></a><span class="lineno"> 1727</span> </div>
<div class="line"><a id="l01728" name="l01728"></a><span class="lineno"> 1728</span> <span class="keywordflow">if</span>(bare_length == 0)</div>
<div class="line"><a id="l01729" name="l01729"></a><span class="lineno"> 1729</span> {</div>
<div class="line"><a id="l01730" name="l01730"></a><span class="lineno"> 1730</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Invalid bare sector length (0)&quot;</span>);</div>
<div class="line"><a id="l01731" name="l01731"></a><span class="lineno"> 1731</span> </div>
<div class="line"><a id="l01732" name="l01732"></a><span class="lineno"> 1732</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector_long() = AARUF_ERROR_INCORRECT_DATA_SIZE&quot;</span>);</div>
<div class="line"><a id="l01733" name="l01733"></a><span class="lineno"> 1733</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a8fc3ecb14777e72bebad62084b6caf16">AARUF_ERROR_INCORRECT_DATA_SIZE</a>;</div>
<div class="line"><a id="l01734" name="l01734"></a><span class="lineno"> 1734</span> }</div>
<div class="line"><a id="l01735" name="l01735"></a><span class="lineno"> 1735</span> </div>
<div class="line"><a id="l01736" name="l01736"></a><span class="lineno"> 1736</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Allocating memory for bare data&quot;</span>);</div>
<div class="line"><a id="l01737" name="l01737"></a><span class="lineno"> 1737</span> bare_data = (uint8_t *)malloc(bare_length);</div>
<div class="line"><a id="l01738" name="l01738"></a><span class="lineno"> 1738</span> </div>
<div class="line"><a id="l01739" name="l01739"></a><span class="lineno"> 1739</span> <span class="keywordflow">if</span>(bare_data == NULL)</div>
<div class="line"><a id="l01740" name="l01740"></a><span class="lineno"> 1740</span> {</div>
<div class="line"><a id="l01741" name="l01741"></a><span class="lineno"> 1741</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Could not allocate memory for bare data&quot;</span>);</div>
<div class="line"><a id="l01742" name="l01742"></a><span class="lineno"> 1742</span> </div>
<div class="line"><a id="l01743" name="l01743"></a><span class="lineno"> 1743</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector_long() = AARUF_ERROR_NOT_ENOUGH_MEMORY&quot;</span>);</div>
<div class="line"><a id="l01744" name="l01744"></a><span class="lineno"> 1744</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a35a771e3648bf971a004d4b2be9b5ec4">AARUF_ERROR_NOT_ENOUGH_MEMORY</a>;</div>
<div class="line"><a id="l01745" name="l01745"></a><span class="lineno"> 1745</span> }</div>
<div class="line"><a id="l01746" name="l01746"></a><span class="lineno"> 1746</span> </div>
<div class="line"><a id="l01747" name="l01747"></a><span class="lineno"> 1747</span> res = <a class="code hl_function" href="read_8c.html#a6feebf672750fc129fe2802ab738d563">aaruf_read_sector</a>(context, sector_address, negative, bare_data, &amp;bare_length, sector_status);</div>
<div class="line"><a id="l01748" name="l01748"></a><span class="lineno"> 1748</span> </div>
<div class="line"><a id="l01749" name="l01749"></a><span class="lineno"> 1749</span> <span class="keywordflow">if</span>(res != <a class="code hl_define" href="errors_8h.html#a1d6e49f7e8a1fa489efa0a582e90b5de">AARUF_STATUS_OK</a>)</div>
<div class="line"><a id="l01750" name="l01750"></a><span class="lineno"> 1750</span> {</div>
<div class="line"><a id="l01751" name="l01751"></a><span class="lineno"> 1751</span> free(bare_data);</div>
<div class="line"><a id="l01752" name="l01752"></a><span class="lineno"> 1752</span> </div>
<div class="line"><a id="l01753" name="l01753"></a><span class="lineno"> 1753</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector_long() = %d&quot;</span>, res);</div>
<div class="line"><a id="l01754" name="l01754"></a><span class="lineno"> 1754</span> <span class="keywordflow">return</span> res;</div>
<div class="line"><a id="l01755" name="l01755"></a><span class="lineno"> 1755</span> }</div>
<div class="line"><a id="l01756" name="l01756"></a><span class="lineno"> 1756</span> </div>
<div class="line"><a id="l01757" name="l01757"></a><span class="lineno"> 1757</span> trk_found = <span class="keyword">false</span>;</div>
<div class="line"><a id="l01758" name="l01758"></a><span class="lineno"> 1758</span> </div>
<div class="line"><a id="l01759" name="l01759"></a><span class="lineno"> 1759</span> <span class="keywordflow">for</span>(i = 0; i &lt; ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#adcda13fede7a22da60ef942981aef1b2">number_of_data_tracks</a>; i++)</div>
<div class="line"><a id="l01760" name="l01760"></a><span class="lineno"> 1760</span> <span class="keywordflow">if</span>(sector_address &gt;= ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a2656e1efffab41086f8c580896ea24a1">data_tracks</a>[i].<a class="code hl_variable" href="structTrackEntry.html#aa82e4a2aa2cfecee9891f117e9494cdf">start</a> &amp;&amp; sector_address &lt;= ctx-&gt;data_tracks[i].end)</div>
<div class="line"><a id="l01761" name="l01761"></a><span class="lineno"> 1761</span> {</div>
<div class="line"><a id="l01762" name="l01762"></a><span class="lineno"> 1762</span> trk_found = <span class="keyword">true</span>;</div>
<div class="line"><a id="l01763" name="l01763"></a><span class="lineno"> 1763</span> trk = ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a2656e1efffab41086f8c580896ea24a1">data_tracks</a>[i];</div>
<div class="line"><a id="l01764" name="l01764"></a><span class="lineno"> 1764</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l01765" name="l01765"></a><span class="lineno"> 1765</span> }</div>
<div class="line"><a id="l01766" name="l01766"></a><span class="lineno"> 1766</span> </div>
<div class="line"><a id="l01767" name="l01767"></a><span class="lineno"> 1767</span> <span class="keywordflow">if</span>(!trk_found)</div>
<div class="line"><a id="l01768" name="l01768"></a><span class="lineno"> 1768</span> {</div>
<div class="line"><a id="l01769" name="l01769"></a><span class="lineno"> 1769</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Track not found&quot;</span>);</div>
<div class="line"><a id="l01770" name="l01770"></a><span class="lineno"> 1770</span> free(bare_data);</div>
<div class="line"><a id="l01771" name="l01771"></a><span class="lineno"> 1771</span> </div>
<div class="line"><a id="l01772" name="l01772"></a><span class="lineno"> 1772</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector_long() = AARUF_ERROR_TRACK_NOT_FOUND&quot;</span>);</div>
<div class="line"><a id="l01773" name="l01773"></a><span class="lineno"> 1773</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a32b645da87003df886a5742d23f8ca19">AARUF_ERROR_TRACK_NOT_FOUND</a>;</div>
<div class="line"><a id="l01774" name="l01774"></a><span class="lineno"> 1774</span> }</div>
<div class="line"><a id="l01775" name="l01775"></a><span class="lineno"> 1775</span> </div>
<div class="line"><a id="l01776" name="l01776"></a><span class="lineno"> 1776</span> <span class="keywordflow">switch</span>(trk.<a class="code hl_variable" href="structTrackEntry.html#ac8dd4cd45f2757b51a27385c7731dde4">type</a>)</div>
<div class="line"><a id="l01777" name="l01777"></a><span class="lineno"> 1777</span> {</div>
<div class="line"><a id="l01778" name="l01778"></a><span class="lineno"> 1778</span> <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="enums_8h.html#ad80740dd555f7d3688d2c4d9f44d3b04aa0b36876016ed857ef77f94cdc753b52">kTrackTypeAudio</a>:</div>
<div class="line"><a id="l01779" name="l01779"></a><span class="lineno"> 1779</span> <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="enums_8h.html#ad80740dd555f7d3688d2c4d9f44d3b04a5d3dc0fd97f23ece1341779f859279d3">kTrackTypeData</a>:</div>
<div class="line"><a id="l01780" name="l01780"></a><span class="lineno"> 1780</span> memcpy(data, bare_data, bare_length);</div>
<div class="line"><a id="l01781" name="l01781"></a><span class="lineno"> 1781</span> *length = bare_length;</div>
<div class="line"><a id="l01782" name="l01782"></a><span class="lineno"> 1782</span> free(bare_data);</div>
<div class="line"><a id="l01783" name="l01783"></a><span class="lineno"> 1783</span> <span class="keywordflow">return</span> res;</div>
<div class="line"><a id="l01784" name="l01784"></a><span class="lineno"> 1784</span> <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="enums_8h.html#ad80740dd555f7d3688d2c4d9f44d3b04ae91029165f582169f52f9633d0485147">kTrackTypeCdMode1</a>:</div>
<div class="line"><a id="l01785" name="l01785"></a><span class="lineno"> 1785</span> memcpy(data + 16, bare_data, 2048);</div>
<div class="line"><a id="l01786" name="l01786"></a><span class="lineno"> 1786</span> </div>
<div class="line"><a id="l01787" name="l01787"></a><span class="lineno"> 1787</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8317a42c16f1a140053f01808929f43f">sector_prefix_ddt2</a> != NULL)</div>
<div class="line"><a id="l01788" name="l01788"></a><span class="lineno"> 1788</span> {</div>
<div class="line"><a id="l01789" name="l01789"></a><span class="lineno"> 1789</span> <span class="keyword">const</span> uint64_t prefix_ddt_entry = ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8317a42c16f1a140053f01808929f43f">sector_prefix_ddt2</a>[corrected_sector_address];</div>
<div class="line"><a id="l01790" name="l01790"></a><span class="lineno"> 1790</span> <span class="keyword">const</span> uint32_t prefix_status = prefix_ddt_entry &gt;&gt; 60;</div>
<div class="line"><a id="l01791" name="l01791"></a><span class="lineno"> 1791</span> <span class="keyword">const</span> uint64_t prefix_index = prefix_ddt_entry &amp; 0x0FFFFFFFFFFFFFFF;</div>
<div class="line"><a id="l01792" name="l01792"></a><span class="lineno"> 1792</span> </div>
<div class="line"><a id="l01793" name="l01793"></a><span class="lineno"> 1793</span> <span class="keywordflow">if</span>(prefix_status == <a class="code hl_enumvalue" href="enums_8h.html#a74e216af87b18a5fbf0204a52dd1bba0a98ca0ee5ee0653575fc98b501a3387cf">SectorStatusMode1Correct</a>)</div>
<div class="line"><a id="l01794" name="l01794"></a><span class="lineno"> 1794</span> {</div>
<div class="line"><a id="l01795" name="l01795"></a><span class="lineno"> 1795</span> <a class="code hl_function" href="decls_8h.html#a73c3788f7376196abd596d6d846466b1">aaruf_ecc_cd_reconstruct_prefix</a>(data, trk.<a class="code hl_variable" href="structTrackEntry.html#ac8dd4cd45f2757b51a27385c7731dde4">type</a>, sector_address);</div>
<div class="line"><a id="l01796" name="l01796"></a><span class="lineno"> 1796</span> res = <a class="code hl_define" href="errors_8h.html#a1d6e49f7e8a1fa489efa0a582e90b5de">AARUF_STATUS_OK</a>;</div>
<div class="line"><a id="l01797" name="l01797"></a><span class="lineno"> 1797</span> }</div>
<div class="line"><a id="l01798" name="l01798"></a><span class="lineno"> 1798</span> <span class="keywordflow">else</span> <span class="keywordflow">if</span>(prefix_status == <a class="code hl_enumvalue" href="enums_8h.html#a74e216af87b18a5fbf0204a52dd1bba0a032ffcff283d253414768f0fa035af4d">SectorStatusNotDumped</a>)</div>
<div class="line"><a id="l01799" name="l01799"></a><span class="lineno"> 1799</span> res = <a class="code hl_define" href="errors_8h.html#ab629288e7ddaf4dd8419621e6963e2cf">AARUF_STATUS_SECTOR_NOT_DUMPED</a>;</div>
<div class="line"><a id="l01800" name="l01800"></a><span class="lineno"> 1800</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l01801" name="l01801"></a><span class="lineno"> 1801</span> memcpy(data, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a413a99e4e86b7121adca2cfce8f02d63">sector_prefix</a> + prefix_index * 16, 16);</div>
<div class="line"><a id="l01802" name="l01802"></a><span class="lineno"> 1802</span> }</div>
<div class="line"><a id="l01803" name="l01803"></a><span class="lineno"> 1803</span> <span class="keywordflow">else</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a413a99e4e86b7121adca2cfce8f02d63">sector_prefix</a> != NULL)</div>
<div class="line"><a id="l01804" name="l01804"></a><span class="lineno"> 1804</span> memcpy(data, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a413a99e4e86b7121adca2cfce8f02d63">sector_prefix</a> + corrected_sector_address * 16, 16);</div>
<div class="line"><a id="l01805" name="l01805"></a><span class="lineno"> 1805</span> <span class="keywordflow">else</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ad9e40dfb41ec80b902869354b052dd7d">sector_prefix_ddt</a> != NULL)</div>
<div class="line"><a id="l01806" name="l01806"></a><span class="lineno"> 1806</span> {</div>
<div class="line"><a id="l01807" name="l01807"></a><span class="lineno"> 1807</span> <span class="keywordflow">if</span>((ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ad9e40dfb41ec80b902869354b052dd7d">sector_prefix_ddt</a>[corrected_sector_address] &amp; <a class="code hl_define" href="consts_8h.html#aa64757ba31a320f675fca1062111180f">CD_XFIX_MASK</a>) == <a class="code hl_enumvalue" href="enums_8h.html#ab72dc399e3946b3c40a5ad8c8e3254b7a1b85919d51f4333b17766b19a7c7372d">Correct</a>)</div>
<div class="line"><a id="l01808" name="l01808"></a><span class="lineno"> 1808</span> {</div>
<div class="line"><a id="l01809" name="l01809"></a><span class="lineno"> 1809</span> <a class="code hl_function" href="decls_8h.html#a73c3788f7376196abd596d6d846466b1">aaruf_ecc_cd_reconstruct_prefix</a>(data, trk.<a class="code hl_variable" href="structTrackEntry.html#ac8dd4cd45f2757b51a27385c7731dde4">type</a>, sector_address);</div>
<div class="line"><a id="l01810" name="l01810"></a><span class="lineno"> 1810</span> res = <a class="code hl_define" href="errors_8h.html#a1d6e49f7e8a1fa489efa0a582e90b5de">AARUF_STATUS_OK</a>;</div>
<div class="line"><a id="l01811" name="l01811"></a><span class="lineno"> 1811</span> }</div>
<div class="line"><a id="l01812" name="l01812"></a><span class="lineno"> 1812</span> <span class="keywordflow">else</span> <span class="keywordflow">if</span>((ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ad9e40dfb41ec80b902869354b052dd7d">sector_prefix_ddt</a>[corrected_sector_address] &amp; <a class="code hl_define" href="consts_8h.html#aa64757ba31a320f675fca1062111180f">CD_XFIX_MASK</a>) == <a class="code hl_enumvalue" href="enums_8h.html#ab72dc399e3946b3c40a5ad8c8e3254b7ab3fac5cd103786d64f7ee67bcb9ac458">NotDumped</a>)</div>
<div class="line"><a id="l01813" name="l01813"></a><span class="lineno"> 1813</span> res = <a class="code hl_define" href="errors_8h.html#ab629288e7ddaf4dd8419621e6963e2cf">AARUF_STATUS_SECTOR_NOT_DUMPED</a>;</div>
<div class="line"><a id="l01814" name="l01814"></a><span class="lineno"> 1814</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l01815" name="l01815"></a><span class="lineno"> 1815</span> memcpy(data,</div>
<div class="line"><a id="l01816" name="l01816"></a><span class="lineno"> 1816</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a1d021776e9101370c7e6ed00c8049be1">sector_prefix_corrected</a> +</div>
<div class="line"><a id="l01817" name="l01817"></a><span class="lineno"> 1817</span> ((ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ad9e40dfb41ec80b902869354b052dd7d">sector_prefix_ddt</a>[corrected_sector_address] &amp; <a class="code hl_define" href="consts_8h.html#a0b24c62ef1b78b72b9f4a42918f39e13">CD_DFIX_MASK</a>) - 1) * 16,</div>
<div class="line"><a id="l01818" name="l01818"></a><span class="lineno"> 1818</span> 16);</div>
<div class="line"><a id="l01819" name="l01819"></a><span class="lineno"> 1819</span> }</div>
<div class="line"><a id="l01820" name="l01820"></a><span class="lineno"> 1820</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l01821" name="l01821"></a><span class="lineno"> 1821</span> {</div>
<div class="line"><a id="l01822" name="l01822"></a><span class="lineno"> 1822</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector_long() = AARUF_ERROR_REACHED_UNREACHABLE_CODE&quot;</span>);</div>
<div class="line"><a id="l01823" name="l01823"></a><span class="lineno"> 1823</span> free(bare_data);</div>
<div class="line"><a id="l01824" name="l01824"></a><span class="lineno"> 1824</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#afac13facfc59d6710c31daee0302e39d">AARUF_ERROR_REACHED_UNREACHABLE_CODE</a>;</div>
<div class="line"><a id="l01825" name="l01825"></a><span class="lineno"> 1825</span> }</div>
<div class="line"><a id="l01826" name="l01826"></a><span class="lineno"> 1826</span> </div>
<div class="line"><a id="l01827" name="l01827"></a><span class="lineno"> 1827</span> <span class="keywordflow">if</span>(res != <a class="code hl_define" href="errors_8h.html#a1d6e49f7e8a1fa489efa0a582e90b5de">AARUF_STATUS_OK</a>)</div>
<div class="line"><a id="l01828" name="l01828"></a><span class="lineno"> 1828</span> {</div>
<div class="line"><a id="l01829" name="l01829"></a><span class="lineno"> 1829</span> *length = 2352;</div>
<div class="line"><a id="l01830" name="l01830"></a><span class="lineno"> 1830</span> free(bare_data);</div>
<div class="line"><a id="l01831" name="l01831"></a><span class="lineno"> 1831</span> <span class="keywordflow">return</span> res;</div>
<div class="line"><a id="l01832" name="l01832"></a><span class="lineno"> 1832</span> }</div>
<div class="line"><a id="l01833" name="l01833"></a><span class="lineno"> 1833</span> </div>
<div class="line"><a id="l01834" name="l01834"></a><span class="lineno"> 1834</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a46d0ccdc69758165c0468afbd05b9ffe">sector_suffix_ddt2</a> != NULL)</div>
<div class="line"><a id="l01835" name="l01835"></a><span class="lineno"> 1835</span> {</div>
<div class="line"><a id="l01836" name="l01836"></a><span class="lineno"> 1836</span> <span class="keyword">const</span> uint64_t suffix_ddt_entry = ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a46d0ccdc69758165c0468afbd05b9ffe">sector_suffix_ddt2</a>[corrected_sector_address];</div>
<div class="line"><a id="l01837" name="l01837"></a><span class="lineno"> 1837</span> <span class="keyword">const</span> uint64_t suffix_status = suffix_ddt_entry &gt;&gt; 60;</div>
<div class="line"><a id="l01838" name="l01838"></a><span class="lineno"> 1838</span> <span class="keyword">const</span> uint64_t suffix_index = suffix_ddt_entry &amp; 0x0FFFFFFFFFFFFFFF;</div>
<div class="line"><a id="l01839" name="l01839"></a><span class="lineno"> 1839</span> </div>
<div class="line"><a id="l01840" name="l01840"></a><span class="lineno"> 1840</span> <span class="keywordflow">if</span>(suffix_status == <a class="code hl_enumvalue" href="enums_8h.html#a74e216af87b18a5fbf0204a52dd1bba0a98ca0ee5ee0653575fc98b501a3387cf">SectorStatusMode1Correct</a>)</div>
<div class="line"><a id="l01841" name="l01841"></a><span class="lineno"> 1841</span> {</div>
<div class="line"><a id="l01842" name="l01842"></a><span class="lineno"> 1842</span> <a class="code hl_function" href="decls_8h.html#a9c9e2440119b8d7e67cb2c40125bf295">aaruf_ecc_cd_reconstruct</a>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a510b72290e2bd50e02ef8a2387aa829d">ecc_cd_context</a>, data, trk.<a class="code hl_variable" href="structTrackEntry.html#ac8dd4cd45f2757b51a27385c7731dde4">type</a>);</div>
<div class="line"><a id="l01843" name="l01843"></a><span class="lineno"> 1843</span> res = <a class="code hl_define" href="errors_8h.html#a1d6e49f7e8a1fa489efa0a582e90b5de">AARUF_STATUS_OK</a>;</div>
<div class="line"><a id="l01844" name="l01844"></a><span class="lineno"> 1844</span> }</div>
<div class="line"><a id="l01845" name="l01845"></a><span class="lineno"> 1845</span> <span class="keywordflow">else</span> <span class="keywordflow">if</span>(suffix_status == <a class="code hl_enumvalue" href="enums_8h.html#a74e216af87b18a5fbf0204a52dd1bba0a032ffcff283d253414768f0fa035af4d">SectorStatusNotDumped</a>)</div>
<div class="line"><a id="l01846" name="l01846"></a><span class="lineno"> 1846</span> res = <a class="code hl_define" href="errors_8h.html#ab629288e7ddaf4dd8419621e6963e2cf">AARUF_STATUS_SECTOR_NOT_DUMPED</a>;</div>
<div class="line"><a id="l01847" name="l01847"></a><span class="lineno"> 1847</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l01848" name="l01848"></a><span class="lineno"> 1848</span> memcpy(data + 2064, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a64870438f8f560a0b9973dedb3dd7e0e">sector_suffix</a> + suffix_index * 288, 288);</div>
<div class="line"><a id="l01849" name="l01849"></a><span class="lineno"> 1849</span> }</div>
<div class="line"><a id="l01850" name="l01850"></a><span class="lineno"> 1850</span> <span class="keywordflow">else</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a64870438f8f560a0b9973dedb3dd7e0e">sector_suffix</a> != NULL)</div>
<div class="line"><a id="l01851" name="l01851"></a><span class="lineno"> 1851</span> memcpy(data + 2064, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a64870438f8f560a0b9973dedb3dd7e0e">sector_suffix</a> + corrected_sector_address * 288, 288);</div>
<div class="line"><a id="l01852" name="l01852"></a><span class="lineno"> 1852</span> <span class="keywordflow">else</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a5ec94a7912a165e5e7cacbeb8b65cbdf">sector_suffix_ddt</a> != NULL)</div>
<div class="line"><a id="l01853" name="l01853"></a><span class="lineno"> 1853</span> {</div>
<div class="line"><a id="l01854" name="l01854"></a><span class="lineno"> 1854</span> <span class="keywordflow">if</span>((ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a5ec94a7912a165e5e7cacbeb8b65cbdf">sector_suffix_ddt</a>[corrected_sector_address] &amp; <a class="code hl_define" href="consts_8h.html#aa64757ba31a320f675fca1062111180f">CD_XFIX_MASK</a>) == <a class="code hl_enumvalue" href="enums_8h.html#ab72dc399e3946b3c40a5ad8c8e3254b7a1b85919d51f4333b17766b19a7c7372d">Correct</a>)</div>
<div class="line"><a id="l01855" name="l01855"></a><span class="lineno"> 1855</span> {</div>
<div class="line"><a id="l01856" name="l01856"></a><span class="lineno"> 1856</span> <a class="code hl_function" href="decls_8h.html#a9c9e2440119b8d7e67cb2c40125bf295">aaruf_ecc_cd_reconstruct</a>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a510b72290e2bd50e02ef8a2387aa829d">ecc_cd_context</a>, data, trk.<a class="code hl_variable" href="structTrackEntry.html#ac8dd4cd45f2757b51a27385c7731dde4">type</a>);</div>
<div class="line"><a id="l01857" name="l01857"></a><span class="lineno"> 1857</span> res = <a class="code hl_define" href="errors_8h.html#a1d6e49f7e8a1fa489efa0a582e90b5de">AARUF_STATUS_OK</a>;</div>
<div class="line"><a id="l01858" name="l01858"></a><span class="lineno"> 1858</span> }</div>
<div class="line"><a id="l01859" name="l01859"></a><span class="lineno"> 1859</span> <span class="keywordflow">else</span> <span class="keywordflow">if</span>((ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a5ec94a7912a165e5e7cacbeb8b65cbdf">sector_suffix_ddt</a>[corrected_sector_address] &amp; <a class="code hl_define" href="consts_8h.html#aa64757ba31a320f675fca1062111180f">CD_XFIX_MASK</a>) == <a class="code hl_enumvalue" href="enums_8h.html#ab72dc399e3946b3c40a5ad8c8e3254b7ab3fac5cd103786d64f7ee67bcb9ac458">NotDumped</a>)</div>
<div class="line"><a id="l01860" name="l01860"></a><span class="lineno"> 1860</span> res = <a class="code hl_define" href="errors_8h.html#ab629288e7ddaf4dd8419621e6963e2cf">AARUF_STATUS_SECTOR_NOT_DUMPED</a>;</div>
<div class="line"><a id="l01861" name="l01861"></a><span class="lineno"> 1861</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l01862" name="l01862"></a><span class="lineno"> 1862</span> memcpy(data + 2064,</div>
<div class="line"><a id="l01863" name="l01863"></a><span class="lineno"> 1863</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#adfcfa339aded095de2143ffff0931288">sector_suffix_corrected</a> +</div>
<div class="line"><a id="l01864" name="l01864"></a><span class="lineno"> 1864</span> ((ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a5ec94a7912a165e5e7cacbeb8b65cbdf">sector_suffix_ddt</a>[corrected_sector_address] &amp; <a class="code hl_define" href="consts_8h.html#a0b24c62ef1b78b72b9f4a42918f39e13">CD_DFIX_MASK</a>) - 1) * 288,</div>
<div class="line"><a id="l01865" name="l01865"></a><span class="lineno"> 1865</span> 288);</div>
<div class="line"><a id="l01866" name="l01866"></a><span class="lineno"> 1866</span> }</div>
<div class="line"><a id="l01867" name="l01867"></a><span class="lineno"> 1867</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l01868" name="l01868"></a><span class="lineno"> 1868</span> {</div>
<div class="line"><a id="l01869" name="l01869"></a><span class="lineno"> 1869</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector_long() = AARUF_ERROR_REACHED_UNREACHABLE_CODE&quot;</span>);</div>
<div class="line"><a id="l01870" name="l01870"></a><span class="lineno"> 1870</span> free(bare_data);</div>
<div class="line"><a id="l01871" name="l01871"></a><span class="lineno"> 1871</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#afac13facfc59d6710c31daee0302e39d">AARUF_ERROR_REACHED_UNREACHABLE_CODE</a>;</div>
<div class="line"><a id="l01872" name="l01872"></a><span class="lineno"> 1872</span> }</div>
<div class="line"><a id="l01873" name="l01873"></a><span class="lineno"> 1873</span> </div>
<div class="line"><a id="l01874" name="l01874"></a><span class="lineno"> 1874</span> *length = 2352;</div>
<div class="line"><a id="l01875" name="l01875"></a><span class="lineno"> 1875</span> free(bare_data);</div>
<div class="line"><a id="l01876" name="l01876"></a><span class="lineno"> 1876</span> <span class="keywordflow">return</span> res;</div>
<div class="line"><a id="l01877" name="l01877"></a><span class="lineno"> 1877</span> <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="enums_8h.html#ad80740dd555f7d3688d2c4d9f44d3b04ad491750f90b88817fdaeda1263d7527d">kTrackTypeCdMode2Formless</a>:</div>
<div class="line"><a id="l01878" name="l01878"></a><span class="lineno"> 1878</span> <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="enums_8h.html#ad80740dd555f7d3688d2c4d9f44d3b04a7fa55ee91679f9a53c45d1fcfdaf3192">kTrackTypeCdMode2Form1</a>:</div>
<div class="line"><a id="l01879" name="l01879"></a><span class="lineno"> 1879</span> <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="enums_8h.html#ad80740dd555f7d3688d2c4d9f44d3b04a38e1c68f36d8936ca82aac98c2007df0">kTrackTypeCdMode2Form2</a>:</div>
<div class="line"><a id="l01880" name="l01880"></a><span class="lineno"> 1880</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8317a42c16f1a140053f01808929f43f">sector_prefix_ddt2</a> != NULL)</div>
<div class="line"><a id="l01881" name="l01881"></a><span class="lineno"> 1881</span> {</div>
<div class="line"><a id="l01882" name="l01882"></a><span class="lineno"> 1882</span> <span class="keyword">const</span> uint64_t prefix_ddt_entry = ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a8317a42c16f1a140053f01808929f43f">sector_prefix_ddt2</a>[corrected_sector_address];</div>
<div class="line"><a id="l01883" name="l01883"></a><span class="lineno"> 1883</span> <span class="keyword">const</span> uint64_t prefix_status = prefix_ddt_entry &gt;&gt; 60;</div>
<div class="line"><a id="l01884" name="l01884"></a><span class="lineno"> 1884</span> <span class="keyword">const</span> uint64_t prefix_index = prefix_ddt_entry &amp; 0x0FFFFFFFFFFFFFFF;</div>
<div class="line"><a id="l01885" name="l01885"></a><span class="lineno"> 1885</span> </div>
<div class="line"><a id="l01886" name="l01886"></a><span class="lineno"> 1886</span> <span class="keywordflow">if</span>(prefix_status == <a class="code hl_enumvalue" href="enums_8h.html#a74e216af87b18a5fbf0204a52dd1bba0af8e8f72cb68b416548d729560b23ff7d">SectorStatusMode2Form1Ok</a> || prefix_status == <a class="code hl_enumvalue" href="enums_8h.html#a74e216af87b18a5fbf0204a52dd1bba0aa651286b685968cf12dbf8949c7c209d">SectorStatusMode2Form2Ok</a>)</div>
<div class="line"><a id="l01887" name="l01887"></a><span class="lineno"> 1887</span> {</div>
<div class="line"><a id="l01888" name="l01888"></a><span class="lineno"> 1888</span> <a class="code hl_function" href="decls_8h.html#a73c3788f7376196abd596d6d846466b1">aaruf_ecc_cd_reconstruct_prefix</a>(data, trk.<a class="code hl_variable" href="structTrackEntry.html#ac8dd4cd45f2757b51a27385c7731dde4">type</a>, sector_address);</div>
<div class="line"><a id="l01889" name="l01889"></a><span class="lineno"> 1889</span> res = <a class="code hl_define" href="errors_8h.html#a1d6e49f7e8a1fa489efa0a582e90b5de">AARUF_STATUS_OK</a>;</div>
<div class="line"><a id="l01890" name="l01890"></a><span class="lineno"> 1890</span> }</div>
<div class="line"><a id="l01891" name="l01891"></a><span class="lineno"> 1891</span> <span class="keywordflow">else</span> <span class="keywordflow">if</span>(prefix_status == <a class="code hl_enumvalue" href="enums_8h.html#a74e216af87b18a5fbf0204a52dd1bba0a032ffcff283d253414768f0fa035af4d">SectorStatusNotDumped</a>)</div>
<div class="line"><a id="l01892" name="l01892"></a><span class="lineno"> 1892</span> res = <a class="code hl_define" href="errors_8h.html#ab629288e7ddaf4dd8419621e6963e2cf">AARUF_STATUS_SECTOR_NOT_DUMPED</a>;</div>
<div class="line"><a id="l01893" name="l01893"></a><span class="lineno"> 1893</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l01894" name="l01894"></a><span class="lineno"> 1894</span> memcpy(data, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a413a99e4e86b7121adca2cfce8f02d63">sector_prefix</a> + prefix_index * 16, 16);</div>
<div class="line"><a id="l01895" name="l01895"></a><span class="lineno"> 1895</span> }</div>
<div class="line"><a id="l01896" name="l01896"></a><span class="lineno"> 1896</span> <span class="keywordflow">else</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a413a99e4e86b7121adca2cfce8f02d63">sector_prefix</a> != NULL)</div>
<div class="line"><a id="l01897" name="l01897"></a><span class="lineno"> 1897</span> memcpy(data, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a413a99e4e86b7121adca2cfce8f02d63">sector_prefix</a> + corrected_sector_address * 16, 16);</div>
<div class="line"><a id="l01898" name="l01898"></a><span class="lineno"> 1898</span> <span class="keywordflow">else</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ad9e40dfb41ec80b902869354b052dd7d">sector_prefix_ddt</a> != NULL)</div>
<div class="line"><a id="l01899" name="l01899"></a><span class="lineno"> 1899</span> {</div>
<div class="line"><a id="l01900" name="l01900"></a><span class="lineno"> 1900</span> <span class="keywordflow">if</span>((ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ad9e40dfb41ec80b902869354b052dd7d">sector_prefix_ddt</a>[corrected_sector_address] &amp; <a class="code hl_define" href="consts_8h.html#aa64757ba31a320f675fca1062111180f">CD_XFIX_MASK</a>) == <a class="code hl_enumvalue" href="enums_8h.html#ab72dc399e3946b3c40a5ad8c8e3254b7a1b85919d51f4333b17766b19a7c7372d">Correct</a>)</div>
<div class="line"><a id="l01901" name="l01901"></a><span class="lineno"> 1901</span> {</div>
<div class="line"><a id="l01902" name="l01902"></a><span class="lineno"> 1902</span> <a class="code hl_function" href="decls_8h.html#a73c3788f7376196abd596d6d846466b1">aaruf_ecc_cd_reconstruct_prefix</a>(data, trk.<a class="code hl_variable" href="structTrackEntry.html#ac8dd4cd45f2757b51a27385c7731dde4">type</a>, sector_address);</div>
<div class="line"><a id="l01903" name="l01903"></a><span class="lineno"> 1903</span> res = <a class="code hl_define" href="errors_8h.html#a1d6e49f7e8a1fa489efa0a582e90b5de">AARUF_STATUS_OK</a>;</div>
<div class="line"><a id="l01904" name="l01904"></a><span class="lineno"> 1904</span> }</div>
<div class="line"><a id="l01905" name="l01905"></a><span class="lineno"> 1905</span> <span class="keywordflow">else</span> <span class="keywordflow">if</span>((ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ad9e40dfb41ec80b902869354b052dd7d">sector_prefix_ddt</a>[corrected_sector_address] &amp; <a class="code hl_define" href="consts_8h.html#aa64757ba31a320f675fca1062111180f">CD_XFIX_MASK</a>) == <a class="code hl_enumvalue" href="enums_8h.html#ab72dc399e3946b3c40a5ad8c8e3254b7ab3fac5cd103786d64f7ee67bcb9ac458">NotDumped</a>)</div>
<div class="line"><a id="l01906" name="l01906"></a><span class="lineno"> 1906</span> res = <a class="code hl_define" href="errors_8h.html#ab629288e7ddaf4dd8419621e6963e2cf">AARUF_STATUS_SECTOR_NOT_DUMPED</a>;</div>
<div class="line"><a id="l01907" name="l01907"></a><span class="lineno"> 1907</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l01908" name="l01908"></a><span class="lineno"> 1908</span> memcpy(data,</div>
<div class="line"><a id="l01909" name="l01909"></a><span class="lineno"> 1909</span> ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a1d021776e9101370c7e6ed00c8049be1">sector_prefix_corrected</a> +</div>
<div class="line"><a id="l01910" name="l01910"></a><span class="lineno"> 1910</span> ((ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ad9e40dfb41ec80b902869354b052dd7d">sector_prefix_ddt</a>[corrected_sector_address] &amp; <a class="code hl_define" href="consts_8h.html#a0b24c62ef1b78b72b9f4a42918f39e13">CD_DFIX_MASK</a>) - 1) * 16,</div>
<div class="line"><a id="l01911" name="l01911"></a><span class="lineno"> 1911</span> 16);</div>
<div class="line"><a id="l01912" name="l01912"></a><span class="lineno"> 1912</span> }</div>
<div class="line"><a id="l01913" name="l01913"></a><span class="lineno"> 1913</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l01914" name="l01914"></a><span class="lineno"> 1914</span> {</div>
<div class="line"><a id="l01915" name="l01915"></a><span class="lineno"> 1915</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector_long() = AARUF_ERROR_REACHED_UNREACHABLE_CODE&quot;</span>);</div>
<div class="line"><a id="l01916" name="l01916"></a><span class="lineno"> 1916</span> free(bare_data);</div>
<div class="line"><a id="l01917" name="l01917"></a><span class="lineno"> 1917</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#afac13facfc59d6710c31daee0302e39d">AARUF_ERROR_REACHED_UNREACHABLE_CODE</a>;</div>
<div class="line"><a id="l01918" name="l01918"></a><span class="lineno"> 1918</span> }</div>
<div class="line"><a id="l01919" name="l01919"></a><span class="lineno"> 1919</span> </div>
<div class="line"><a id="l01920" name="l01920"></a><span class="lineno"> 1920</span> <span class="keywordflow">if</span>(res != <a class="code hl_define" href="errors_8h.html#a1d6e49f7e8a1fa489efa0a582e90b5de">AARUF_STATUS_OK</a>)</div>
<div class="line"><a id="l01921" name="l01921"></a><span class="lineno"> 1921</span> {</div>
<div class="line"><a id="l01922" name="l01922"></a><span class="lineno"> 1922</span> *length = 2352;</div>
<div class="line"><a id="l01923" name="l01923"></a><span class="lineno"> 1923</span> free(bare_data);</div>
<div class="line"><a id="l01924" name="l01924"></a><span class="lineno"> 1924</span> <span class="keywordflow">return</span> res;</div>
<div class="line"><a id="l01925" name="l01925"></a><span class="lineno"> 1925</span> }</div>
<div class="line"><a id="l01926" name="l01926"></a><span class="lineno"> 1926</span> </div>
<div class="line"><a id="l01927" name="l01927"></a><span class="lineno"> 1927</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ac6734b2de73a4b6147aadc49bf3e96f8">mode2_subheaders</a> != NULL &amp;&amp; ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a46d0ccdc69758165c0468afbd05b9ffe">sector_suffix_ddt2</a> != NULL)</div>
<div class="line"><a id="l01928" name="l01928"></a><span class="lineno"> 1928</span> {</div>
<div class="line"><a id="l01929" name="l01929"></a><span class="lineno"> 1929</span> memcpy(data + 16, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ac6734b2de73a4b6147aadc49bf3e96f8">mode2_subheaders</a> + corrected_sector_address * 8, 8);</div>
<div class="line"><a id="l01930" name="l01930"></a><span class="lineno"> 1930</span> <span class="keyword">const</span> uint64_t suffix_ddt_entry = ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a46d0ccdc69758165c0468afbd05b9ffe">sector_suffix_ddt2</a>[corrected_sector_address];</div>
<div class="line"><a id="l01931" name="l01931"></a><span class="lineno"> 1931</span> <span class="keyword">const</span> uint64_t suffix_status = suffix_ddt_entry &gt;&gt; 60;</div>
<div class="line"><a id="l01932" name="l01932"></a><span class="lineno"> 1932</span> <span class="keyword">const</span> uint64_t suffix_index = suffix_ddt_entry &amp; 0x0FFFFFFFFFFFFFFF;</div>
<div class="line"><a id="l01933" name="l01933"></a><span class="lineno"> 1933</span> </div>
<div class="line"><a id="l01934" name="l01934"></a><span class="lineno"> 1934</span> <span class="keywordflow">if</span>(suffix_status == <a class="code hl_enumvalue" href="enums_8h.html#a74e216af87b18a5fbf0204a52dd1bba0af8e8f72cb68b416548d729560b23ff7d">SectorStatusMode2Form1Ok</a>)</div>
<div class="line"><a id="l01935" name="l01935"></a><span class="lineno"> 1935</span> {</div>
<div class="line"><a id="l01936" name="l01936"></a><span class="lineno"> 1936</span> memcpy(data + 24, bare_data, 2048);</div>
<div class="line"><a id="l01937" name="l01937"></a><span class="lineno"> 1937</span> <a class="code hl_function" href="decls_8h.html#a9c9e2440119b8d7e67cb2c40125bf295">aaruf_ecc_cd_reconstruct</a>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a510b72290e2bd50e02ef8a2387aa829d">ecc_cd_context</a>, data, <a class="code hl_enumvalue" href="enums_8h.html#ad80740dd555f7d3688d2c4d9f44d3b04a7fa55ee91679f9a53c45d1fcfdaf3192">kTrackTypeCdMode2Form1</a>);</div>
<div class="line"><a id="l01938" name="l01938"></a><span class="lineno"> 1938</span> }</div>
<div class="line"><a id="l01939" name="l01939"></a><span class="lineno"> 1939</span> <span class="keywordflow">else</span> <span class="keywordflow">if</span>(suffix_status == <a class="code hl_enumvalue" href="enums_8h.html#a74e216af87b18a5fbf0204a52dd1bba0aa651286b685968cf12dbf8949c7c209d">SectorStatusMode2Form2Ok</a> ||</div>
<div class="line"><a id="l01940" name="l01940"></a><span class="lineno"> 1940</span> suffix_status == <a class="code hl_enumvalue" href="enums_8h.html#a74e216af87b18a5fbf0204a52dd1bba0a6a9daca7b82c2929eaf1b081ba7c7437">SectorStatusMode2Form2NoCrc</a>)</div>
<div class="line"><a id="l01941" name="l01941"></a><span class="lineno"> 1941</span> {</div>
<div class="line"><a id="l01942" name="l01942"></a><span class="lineno"> 1942</span> memcpy(data + 24, bare_data, 2324);</div>
<div class="line"><a id="l01943" name="l01943"></a><span class="lineno"> 1943</span> <span class="keywordflow">if</span>(suffix_status == <a class="code hl_enumvalue" href="enums_8h.html#a74e216af87b18a5fbf0204a52dd1bba0aa651286b685968cf12dbf8949c7c209d">SectorStatusMode2Form2Ok</a>)</div>
<div class="line"><a id="l01944" name="l01944"></a><span class="lineno"> 1944</span> <a class="code hl_function" href="decls_8h.html#a9c9e2440119b8d7e67cb2c40125bf295">aaruf_ecc_cd_reconstruct</a>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a510b72290e2bd50e02ef8a2387aa829d">ecc_cd_context</a>, data, <a class="code hl_enumvalue" href="enums_8h.html#ad80740dd555f7d3688d2c4d9f44d3b04a38e1c68f36d8936ca82aac98c2007df0">kTrackTypeCdMode2Form2</a>);</div>
<div class="line"><a id="l01945" name="l01945"></a><span class="lineno"> 1945</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l01946" name="l01946"></a><span class="lineno"> 1946</span> memset(data + 2348, 0, 4);</div>
<div class="line"><a id="l01947" name="l01947"></a><span class="lineno"> 1947</span> }</div>
<div class="line"><a id="l01948" name="l01948"></a><span class="lineno"> 1948</span> <span class="keywordflow">else</span> <span class="keywordflow">if</span>(suffix_status == <a class="code hl_enumvalue" href="enums_8h.html#a74e216af87b18a5fbf0204a52dd1bba0a032ffcff283d253414768f0fa035af4d">SectorStatusNotDumped</a>)</div>
<div class="line"><a id="l01949" name="l01949"></a><span class="lineno"> 1949</span> res = <a class="code hl_define" href="errors_8h.html#ab629288e7ddaf4dd8419621e6963e2cf">AARUF_STATUS_SECTOR_NOT_DUMPED</a>;</div>
<div class="line"><a id="l01950" name="l01950"></a><span class="lineno"> 1950</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l01951" name="l01951"></a><span class="lineno"> 1951</span> {</div>
<div class="line"><a id="l01952" name="l01952"></a><span class="lineno"> 1952</span> <span class="comment">// Mode 2 where ECC/EDC failed — restore user data + stored suffix.</span></div>
<div class="line"><a id="l01953" name="l01953"></a><span class="lineno"> 1953</span> <span class="comment">// Check both subheader copies to match write path form detection.</span></div>
<div class="line"><a id="l01954" name="l01954"></a><span class="lineno"> 1954</span> <span class="keywordflow">if</span>((data[0x12] &amp; 0x20) || (data[0x16] &amp; 0x20))</div>
<div class="line"><a id="l01955" name="l01955"></a><span class="lineno"> 1955</span> {</div>
<div class="line"><a id="l01956" name="l01956"></a><span class="lineno"> 1956</span> <span class="comment">// Form 2: 2324 bytes user data, 4 bytes EDC suffix</span></div>
<div class="line"><a id="l01957" name="l01957"></a><span class="lineno"> 1957</span> memcpy(data + 24, bare_data, 2324);</div>
<div class="line"><a id="l01958" name="l01958"></a><span class="lineno"> 1958</span> memcpy(data + 2348, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a64870438f8f560a0b9973dedb3dd7e0e">sector_suffix</a> + suffix_index * 288, 4);</div>
<div class="line"><a id="l01959" name="l01959"></a><span class="lineno"> 1959</span> }</div>
<div class="line"><a id="l01960" name="l01960"></a><span class="lineno"> 1960</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l01961" name="l01961"></a><span class="lineno"> 1961</span> {</div>
<div class="line"><a id="l01962" name="l01962"></a><span class="lineno"> 1962</span> <span class="comment">// Form 1: 2048 bytes user data, 280 bytes EDC+ECC suffix</span></div>
<div class="line"><a id="l01963" name="l01963"></a><span class="lineno"> 1963</span> memcpy(data + 24, bare_data, 2048);</div>
<div class="line"><a id="l01964" name="l01964"></a><span class="lineno"> 1964</span> memcpy(data + 2072, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a64870438f8f560a0b9973dedb3dd7e0e">sector_suffix</a> + suffix_index * 288, 280);</div>
<div class="line"><a id="l01965" name="l01965"></a><span class="lineno"> 1965</span> }</div>
<div class="line"><a id="l01966" name="l01966"></a><span class="lineno"> 1966</span> }</div>
<div class="line"><a id="l01967" name="l01967"></a><span class="lineno"> 1967</span> }</div>
<div class="line"><a id="l01968" name="l01968"></a><span class="lineno"> 1968</span> <span class="keywordflow">else</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ac6734b2de73a4b6147aadc49bf3e96f8">mode2_subheaders</a> != NULL &amp;&amp; ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a5ec94a7912a165e5e7cacbeb8b65cbdf">sector_suffix_ddt</a> != NULL)</div>
<div class="line"><a id="l01969" name="l01969"></a><span class="lineno"> 1969</span> {</div>
<div class="line"><a id="l01970" name="l01970"></a><span class="lineno"> 1970</span> memcpy(data + 16, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ac6734b2de73a4b6147aadc49bf3e96f8">mode2_subheaders</a> + corrected_sector_address * 8, 8);</div>
<div class="line"><a id="l01971" name="l01971"></a><span class="lineno"> 1971</span> </div>
<div class="line"><a id="l01972" name="l01972"></a><span class="lineno"> 1972</span> <span class="keywordflow">if</span>((ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a5ec94a7912a165e5e7cacbeb8b65cbdf">sector_suffix_ddt</a>[corrected_sector_address] &amp; <a class="code hl_define" href="consts_8h.html#aa64757ba31a320f675fca1062111180f">CD_XFIX_MASK</a>) == <a class="code hl_enumvalue" href="enums_8h.html#ab72dc399e3946b3c40a5ad8c8e3254b7aa0182bd12e0fed2c6f2ea368cc9a94a8">Mode2Form1Ok</a>)</div>
<div class="line"><a id="l01973" name="l01973"></a><span class="lineno"> 1973</span> {</div>
<div class="line"><a id="l01974" name="l01974"></a><span class="lineno"> 1974</span> memcpy(data + 24, bare_data, 2048);</div>
<div class="line"><a id="l01975" name="l01975"></a><span class="lineno"> 1975</span> <a class="code hl_function" href="decls_8h.html#a9c9e2440119b8d7e67cb2c40125bf295">aaruf_ecc_cd_reconstruct</a>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a510b72290e2bd50e02ef8a2387aa829d">ecc_cd_context</a>, data, <a class="code hl_enumvalue" href="enums_8h.html#ad80740dd555f7d3688d2c4d9f44d3b04a7fa55ee91679f9a53c45d1fcfdaf3192">kTrackTypeCdMode2Form1</a>);</div>
<div class="line"><a id="l01976" name="l01976"></a><span class="lineno"> 1976</span> }</div>
<div class="line"><a id="l01977" name="l01977"></a><span class="lineno"> 1977</span> <span class="keywordflow">else</span> <span class="keywordflow">if</span>((ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a5ec94a7912a165e5e7cacbeb8b65cbdf">sector_suffix_ddt</a>[corrected_sector_address] &amp; <a class="code hl_define" href="consts_8h.html#aa64757ba31a320f675fca1062111180f">CD_XFIX_MASK</a>) == <a class="code hl_enumvalue" href="enums_8h.html#ab72dc399e3946b3c40a5ad8c8e3254b7a347d3d74e3c5f56a3e41eb82e59b952f">Mode2Form2Ok</a> ||</div>
<div class="line"><a id="l01978" name="l01978"></a><span class="lineno"> 1978</span> (ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a5ec94a7912a165e5e7cacbeb8b65cbdf">sector_suffix_ddt</a>[corrected_sector_address] &amp; <a class="code hl_define" href="consts_8h.html#aa64757ba31a320f675fca1062111180f">CD_XFIX_MASK</a>) == <a class="code hl_enumvalue" href="enums_8h.html#ab72dc399e3946b3c40a5ad8c8e3254b7abe4c0f68addb6b935a63401cafcb8d28">Mode2Form2NoCrc</a>)</div>
<div class="line"><a id="l01979" name="l01979"></a><span class="lineno"> 1979</span> {</div>
<div class="line"><a id="l01980" name="l01980"></a><span class="lineno"> 1980</span> memcpy(data + 24, bare_data, 2324);</div>
<div class="line"><a id="l01981" name="l01981"></a><span class="lineno"> 1981</span> <span class="keywordflow">if</span>((ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a5ec94a7912a165e5e7cacbeb8b65cbdf">sector_suffix_ddt</a>[corrected_sector_address] &amp; <a class="code hl_define" href="consts_8h.html#aa64757ba31a320f675fca1062111180f">CD_XFIX_MASK</a>) == <a class="code hl_enumvalue" href="enums_8h.html#ab72dc399e3946b3c40a5ad8c8e3254b7a347d3d74e3c5f56a3e41eb82e59b952f">Mode2Form2Ok</a>)</div>
<div class="line"><a id="l01982" name="l01982"></a><span class="lineno"> 1982</span> <a class="code hl_function" href="decls_8h.html#a9c9e2440119b8d7e67cb2c40125bf295">aaruf_ecc_cd_reconstruct</a>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a510b72290e2bd50e02ef8a2387aa829d">ecc_cd_context</a>, data, <a class="code hl_enumvalue" href="enums_8h.html#ad80740dd555f7d3688d2c4d9f44d3b04a38e1c68f36d8936ca82aac98c2007df0">kTrackTypeCdMode2Form2</a>);</div>
<div class="line"><a id="l01983" name="l01983"></a><span class="lineno"> 1983</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l01984" name="l01984"></a><span class="lineno"> 1984</span> memset(data + 2348, 0, 4);</div>
<div class="line"><a id="l01985" name="l01985"></a><span class="lineno"> 1985</span> }</div>
<div class="line"><a id="l01986" name="l01986"></a><span class="lineno"> 1986</span> <span class="keywordflow">else</span> <span class="keywordflow">if</span>((ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a5ec94a7912a165e5e7cacbeb8b65cbdf">sector_suffix_ddt</a>[corrected_sector_address] &amp; <a class="code hl_define" href="consts_8h.html#aa64757ba31a320f675fca1062111180f">CD_XFIX_MASK</a>) == <a class="code hl_enumvalue" href="enums_8h.html#ab72dc399e3946b3c40a5ad8c8e3254b7ab3fac5cd103786d64f7ee67bcb9ac458">NotDumped</a>)</div>
<div class="line"><a id="l01987" name="l01987"></a><span class="lineno"> 1987</span> res = <a class="code hl_define" href="errors_8h.html#ab629288e7ddaf4dd8419621e6963e2cf">AARUF_STATUS_SECTOR_NOT_DUMPED</a>;</div>
<div class="line"><a id="l01988" name="l01988"></a><span class="lineno"> 1988</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l01989" name="l01989"></a><span class="lineno"> 1989</span> {</div>
<div class="line"><a id="l01990" name="l01990"></a><span class="lineno"> 1990</span> <span class="comment">// Mode 2 where ECC/EDC failed — restore user data + stored suffix.</span></div>
<div class="line"><a id="l01991" name="l01991"></a><span class="lineno"> 1991</span> <span class="comment">// Check both subheader copies to match write path form detection.</span></div>
<div class="line"><a id="l01992" name="l01992"></a><span class="lineno"> 1992</span> <span class="keyword">const</span> uint32_t sfx_index =</div>
<div class="line"><a id="l01993" name="l01993"></a><span class="lineno"> 1993</span> (ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a5ec94a7912a165e5e7cacbeb8b65cbdf">sector_suffix_ddt</a>[corrected_sector_address] &amp; <a class="code hl_define" href="consts_8h.html#a0b24c62ef1b78b72b9f4a42918f39e13">CD_DFIX_MASK</a>) - 1;</div>
<div class="line"><a id="l01994" name="l01994"></a><span class="lineno"> 1994</span> <span class="keywordflow">if</span>((data[0x12] &amp; 0x20) || (data[0x16] &amp; 0x20))</div>
<div class="line"><a id="l01995" name="l01995"></a><span class="lineno"> 1995</span> {</div>
<div class="line"><a id="l01996" name="l01996"></a><span class="lineno"> 1996</span> memcpy(data + 24, bare_data, 2324);</div>
<div class="line"><a id="l01997" name="l01997"></a><span class="lineno"> 1997</span> memcpy(data + 2348, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#adfcfa339aded095de2143ffff0931288">sector_suffix_corrected</a> + sfx_index * 288, 4);</div>
<div class="line"><a id="l01998" name="l01998"></a><span class="lineno"> 1998</span> }</div>
<div class="line"><a id="l01999" name="l01999"></a><span class="lineno"> 1999</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l02000" name="l02000"></a><span class="lineno"> 2000</span> {</div>
<div class="line"><a id="l02001" name="l02001"></a><span class="lineno"> 2001</span> memcpy(data + 24, bare_data, 2048);</div>
<div class="line"><a id="l02002" name="l02002"></a><span class="lineno"> 2002</span> memcpy(data + 2072, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#adfcfa339aded095de2143ffff0931288">sector_suffix_corrected</a> + sfx_index * 288, 280);</div>
<div class="line"><a id="l02003" name="l02003"></a><span class="lineno"> 2003</span> }</div>
<div class="line"><a id="l02004" name="l02004"></a><span class="lineno"> 2004</span> }</div>
<div class="line"><a id="l02005" name="l02005"></a><span class="lineno"> 2005</span> }</div>
<div class="line"><a id="l02006" name="l02006"></a><span class="lineno"> 2006</span> <span class="keywordflow">else</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ac6734b2de73a4b6147aadc49bf3e96f8">mode2_subheaders</a> != NULL)</div>
<div class="line"><a id="l02007" name="l02007"></a><span class="lineno"> 2007</span> {</div>
<div class="line"><a id="l02008" name="l02008"></a><span class="lineno"> 2008</span> memcpy(data + 16, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ac6734b2de73a4b6147aadc49bf3e96f8">mode2_subheaders</a> + corrected_sector_address * 8, 8);</div>
<div class="line"><a id="l02009" name="l02009"></a><span class="lineno"> 2009</span> memcpy(data + 24, bare_data, 2328);</div>
<div class="line"><a id="l02010" name="l02010"></a><span class="lineno"> 2010</span> }</div>
<div class="line"><a id="l02011" name="l02011"></a><span class="lineno"> 2011</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l02012" name="l02012"></a><span class="lineno"> 2012</span> memcpy(data + 16, bare_data, 2336);</div>
<div class="line"><a id="l02013" name="l02013"></a><span class="lineno"> 2013</span> </div>
<div class="line"><a id="l02014" name="l02014"></a><span class="lineno"> 2014</span> *length = 2352;</div>
<div class="line"><a id="l02015" name="l02015"></a><span class="lineno"> 2015</span> free(bare_data);</div>
<div class="line"><a id="l02016" name="l02016"></a><span class="lineno"> 2016</span> <span class="keywordflow">return</span> res;</div>
<div class="line"><a id="l02017" name="l02017"></a><span class="lineno"> 2017</span> <span class="keywordflow">default</span>:</div>
<div class="line"><a id="l02018" name="l02018"></a><span class="lineno"> 2018</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Invalid track type %d&quot;</span>, trk.<a class="code hl_variable" href="structTrackEntry.html#ac8dd4cd45f2757b51a27385c7731dde4">type</a>);</div>
<div class="line"><a id="l02019" name="l02019"></a><span class="lineno"> 2019</span> free(bare_data);</div>
<div class="line"><a id="l02020" name="l02020"></a><span class="lineno"> 2020</span> </div>
<div class="line"><a id="l02021" name="l02021"></a><span class="lineno"> 2021</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector_long() = AARUF_ERROR_INVALID_TRACK_FORMAT&quot;</span>);</div>
<div class="line"><a id="l02022" name="l02022"></a><span class="lineno"> 2022</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a604a2b6b7bf491f7e62a817b6c887f32">AARUF_ERROR_INVALID_TRACK_FORMAT</a>;</div>
<div class="line"><a id="l02023" name="l02023"></a><span class="lineno"> 2023</span> }</div>
<div class="line"><a id="l02024" name="l02024"></a><span class="lineno"> 2024</span> <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="enums_8h.html#abaa37b51ab0a4cc3d5d1a0b4820c8466ad45ebea105994c5fe86200f36d9e6ccd">BlockMedia</a>:</div>
<div class="line"><a id="l02025" name="l02025"></a><span class="lineno"> 2025</span> <span class="keywordflow">switch</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ac970291b3449c04221827b9c2c18ac70">image_info</a>.<a class="code hl_variable" href="structImageInfo.html#a76611d5087e0a9fd4d329fac7c9ec3f3">MediaType</a>)</div>
<div class="line"><a id="l02026" name="l02026"></a><span class="lineno"> 2026</span> {</div>
<div class="line"><a id="l02027" name="l02027"></a><span class="lineno"> 2027</span> <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="group__MediaTypes.html#gga1499e9f8a76cb81b43b7a4b0dbe7e44aac08b59f9e8ecf5e380092edddb0340ec">AppleFileWare</a>:</div>
<div class="line"><a id="l02028" name="l02028"></a><span class="lineno"> 2028</span> <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="group__MediaTypes.html#gga1499e9f8a76cb81b43b7a4b0dbe7e44aa0a8ba83da933d4ad284631784a991f19">AppleProfile</a>:</div>
<div class="line"><a id="l02029" name="l02029"></a><span class="lineno"> 2029</span> <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="group__MediaTypes.html#gga1499e9f8a76cb81b43b7a4b0dbe7e44aa3d003ea60d3ecb7018a671e1302938a0">AppleSonySS</a>:</div>
<div class="line"><a id="l02030" name="l02030"></a><span class="lineno"> 2030</span> <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="group__MediaTypes.html#gga1499e9f8a76cb81b43b7a4b0dbe7e44aae809315e2cd79c3fd74d1604c38f3ae6">AppleSonyDS</a>:</div>
<div class="line"><a id="l02031" name="l02031"></a><span class="lineno"> 2031</span> <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="group__MediaTypes.html#gga1499e9f8a76cb81b43b7a4b0dbe7e44aacd42dba7780092d737e7d51a3819cb4b">AppleWidget</a>:</div>
<div class="line"><a id="l02032" name="l02032"></a><span class="lineno"> 2032</span> <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="group__MediaTypes.html#gga1499e9f8a76cb81b43b7a4b0dbe7e44aab933939a09397f9311004f3dd137226d">PriamDataTower</a>:</div>
<div class="line"><a id="l02033" name="l02033"></a><span class="lineno"> 2033</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#aaf16c9ee5b05bac1ef44d29abef6134a">sector_subchannel</a> == NULL)</div>
<div class="line"><a id="l02034" name="l02034"></a><span class="lineno"> 2034</span> <span class="keywordflow">return</span> <a class="code hl_function" href="read_8c.html#a6feebf672750fc129fe2802ab738d563">aaruf_read_sector</a>(context, sector_address, negative, data, length, sector_status);</div>
<div class="line"><a id="l02035" name="l02035"></a><span class="lineno"> 2035</span> </div>
<div class="line"><a id="l02036" name="l02036"></a><span class="lineno"> 2036</span> <span class="keywordflow">switch</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ac970291b3449c04221827b9c2c18ac70">image_info</a>.<a class="code hl_variable" href="structImageInfo.html#a76611d5087e0a9fd4d329fac7c9ec3f3">MediaType</a>)</div>
<div class="line"><a id="l02037" name="l02037"></a><span class="lineno"> 2037</span> {</div>
<div class="line"><a id="l02038" name="l02038"></a><span class="lineno"> 2038</span> <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="group__MediaTypes.html#gga1499e9f8a76cb81b43b7a4b0dbe7e44aac08b59f9e8ecf5e380092edddb0340ec">AppleFileWare</a>:</div>
<div class="line"><a id="l02039" name="l02039"></a><span class="lineno"> 2039</span> <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="group__MediaTypes.html#gga1499e9f8a76cb81b43b7a4b0dbe7e44aa0a8ba83da933d4ad284631784a991f19">AppleProfile</a>:</div>
<div class="line"><a id="l02040" name="l02040"></a><span class="lineno"> 2040</span> <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="group__MediaTypes.html#gga1499e9f8a76cb81b43b7a4b0dbe7e44aacd42dba7780092d737e7d51a3819cb4b">AppleWidget</a>:</div>
<div class="line"><a id="l02041" name="l02041"></a><span class="lineno"> 2041</span> tag_length = 20;</div>
<div class="line"><a id="l02042" name="l02042"></a><span class="lineno"> 2042</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l02043" name="l02043"></a><span class="lineno"> 2043</span> <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="group__MediaTypes.html#gga1499e9f8a76cb81b43b7a4b0dbe7e44aa3d003ea60d3ecb7018a671e1302938a0">AppleSonySS</a>:</div>
<div class="line"><a id="l02044" name="l02044"></a><span class="lineno"> 2044</span> <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="group__MediaTypes.html#gga1499e9f8a76cb81b43b7a4b0dbe7e44aae809315e2cd79c3fd74d1604c38f3ae6">AppleSonyDS</a>:</div>
<div class="line"><a id="l02045" name="l02045"></a><span class="lineno"> 2045</span> tag_length = 12;</div>
<div class="line"><a id="l02046" name="l02046"></a><span class="lineno"> 2046</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l02047" name="l02047"></a><span class="lineno"> 2047</span> <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="group__MediaTypes.html#gga1499e9f8a76cb81b43b7a4b0dbe7e44aab933939a09397f9311004f3dd137226d">PriamDataTower</a>:</div>
<div class="line"><a id="l02048" name="l02048"></a><span class="lineno"> 2048</span> tag_length = 24;</div>
<div class="line"><a id="l02049" name="l02049"></a><span class="lineno"> 2049</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l02050" name="l02050"></a><span class="lineno"> 2050</span> <span class="keywordflow">default</span>:</div>
<div class="line"><a id="l02051" name="l02051"></a><span class="lineno"> 2051</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Unsupported media type %d&quot;</span>, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ac970291b3449c04221827b9c2c18ac70">image_info</a>.<a class="code hl_variable" href="structImageInfo.html#a76611d5087e0a9fd4d329fac7c9ec3f3">MediaType</a>);</div>
<div class="line"><a id="l02052" name="l02052"></a><span class="lineno"> 2052</span> </div>
<div class="line"><a id="l02053" name="l02053"></a><span class="lineno"> 2053</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector_long() = AARUF_ERROR_INCORRECT_MEDIA_TYPE&quot;</span>);</div>
<div class="line"><a id="l02054" name="l02054"></a><span class="lineno"> 2054</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a26707b86af4dd4f3bae7d57abd4345b0">AARUF_ERROR_INCORRECT_MEDIA_TYPE</a>;</div>
<div class="line"><a id="l02055" name="l02055"></a><span class="lineno"> 2055</span> }</div>
<div class="line"><a id="l02056" name="l02056"></a><span class="lineno"> 2056</span> </div>
<div class="line"><a id="l02057" name="l02057"></a><span class="lineno"> 2057</span> bare_length = 512;</div>
<div class="line"><a id="l02058" name="l02058"></a><span class="lineno"> 2058</span> </div>
<div class="line"><a id="l02059" name="l02059"></a><span class="lineno"> 2059</span> <span class="keywordflow">if</span>(*length &lt; tag_length + bare_length || data == NULL)</div>
<div class="line"><a id="l02060" name="l02060"></a><span class="lineno"> 2060</span> {</div>
<div class="line"><a id="l02061" name="l02061"></a><span class="lineno"> 2061</span> *length = tag_length + bare_length;</div>
<div class="line"><a id="l02062" name="l02062"></a><span class="lineno"> 2062</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Buffer too small for sector, required %u bytes&quot;</span>, *length);</div>
<div class="line"><a id="l02063" name="l02063"></a><span class="lineno"> 2063</span> </div>
<div class="line"><a id="l02064" name="l02064"></a><span class="lineno"> 2064</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector_long() = AARUF_ERROR_BUFFER_TOO_SMALL&quot;</span>);</div>
<div class="line"><a id="l02065" name="l02065"></a><span class="lineno"> 2065</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#ae7eea5936a22100db46aac3e4312cdae">AARUF_ERROR_BUFFER_TOO_SMALL</a>;</div>
<div class="line"><a id="l02066" name="l02066"></a><span class="lineno"> 2066</span> }</div>
<div class="line"><a id="l02067" name="l02067"></a><span class="lineno"> 2067</span> </div>
<div class="line"><a id="l02068" name="l02068"></a><span class="lineno"> 2068</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Allocating memory for bare data of size %u bytes&quot;</span>, bare_length);</div>
<div class="line"><a id="l02069" name="l02069"></a><span class="lineno"> 2069</span> bare_data = malloc(bare_length);</div>
<div class="line"><a id="l02070" name="l02070"></a><span class="lineno"> 2070</span> </div>
<div class="line"><a id="l02071" name="l02071"></a><span class="lineno"> 2071</span> <span class="keywordflow">if</span>(bare_data == NULL)</div>
<div class="line"><a id="l02072" name="l02072"></a><span class="lineno"> 2072</span> {</div>
<div class="line"><a id="l02073" name="l02073"></a><span class="lineno"> 2073</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Could not allocate memory for bare data&quot;</span>);</div>
<div class="line"><a id="l02074" name="l02074"></a><span class="lineno"> 2074</span> </div>
<div class="line"><a id="l02075" name="l02075"></a><span class="lineno"> 2075</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector_long() = AARUF_ERROR_NOT_ENOUGH_MEMORY&quot;</span>);</div>
<div class="line"><a id="l02076" name="l02076"></a><span class="lineno"> 2076</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a35a771e3648bf971a004d4b2be9b5ec4">AARUF_ERROR_NOT_ENOUGH_MEMORY</a>;</div>
<div class="line"><a id="l02077" name="l02077"></a><span class="lineno"> 2077</span> }</div>
<div class="line"><a id="l02078" name="l02078"></a><span class="lineno"> 2078</span> </div>
<div class="line"><a id="l02079" name="l02079"></a><span class="lineno"> 2079</span> res = <a class="code hl_function" href="read_8c.html#a6feebf672750fc129fe2802ab738d563">aaruf_read_sector</a>(context, sector_address, negative, bare_data, &amp;bare_length, sector_status);</div>
<div class="line"><a id="l02080" name="l02080"></a><span class="lineno"> 2080</span> </div>
<div class="line"><a id="l02081" name="l02081"></a><span class="lineno"> 2081</span> <span class="keywordflow">if</span>(res != <a class="code hl_define" href="errors_8h.html#a1d6e49f7e8a1fa489efa0a582e90b5de">AARUF_STATUS_OK</a>)</div>
<div class="line"><a id="l02082" name="l02082"></a><span class="lineno"> 2082</span> {</div>
<div class="line"><a id="l02083" name="l02083"></a><span class="lineno"> 2083</span> free(bare_data);</div>
<div class="line"><a id="l02084" name="l02084"></a><span class="lineno"> 2084</span> </div>
<div class="line"><a id="l02085" name="l02085"></a><span class="lineno"> 2085</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector_long() = %d&quot;</span>, res);</div>
<div class="line"><a id="l02086" name="l02086"></a><span class="lineno"> 2086</span> <span class="keywordflow">return</span> res;</div>
<div class="line"><a id="l02087" name="l02087"></a><span class="lineno"> 2087</span> }</div>
<div class="line"><a id="l02088" name="l02088"></a><span class="lineno"> 2088</span> </div>
<div class="line"><a id="l02089" name="l02089"></a><span class="lineno"> 2089</span> <span class="keywordflow">if</span>(bare_length != 512)</div>
<div class="line"><a id="l02090" name="l02090"></a><span class="lineno"> 2090</span> {</div>
<div class="line"><a id="l02091" name="l02091"></a><span class="lineno"> 2091</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Bare data length is %u, expected 512&quot;</span>, bare_length);</div>
<div class="line"><a id="l02092" name="l02092"></a><span class="lineno"> 2092</span> free(bare_data);</div>
<div class="line"><a id="l02093" name="l02093"></a><span class="lineno"> 2093</span> </div>
<div class="line"><a id="l02094" name="l02094"></a><span class="lineno"> 2094</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector_long() = AARUF_ERROR_INCORRECT_DATA_SIZE&quot;</span>);</div>
<div class="line"><a id="l02095" name="l02095"></a><span class="lineno"> 2095</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a8fc3ecb14777e72bebad62084b6caf16">AARUF_ERROR_INCORRECT_DATA_SIZE</a>;</div>
<div class="line"><a id="l02096" name="l02096"></a><span class="lineno"> 2096</span> }</div>
<div class="line"><a id="l02097" name="l02097"></a><span class="lineno"> 2097</span> </div>
<div class="line"><a id="l02098" name="l02098"></a><span class="lineno"> 2098</span> memcpy(data + bare_length, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#aaf16c9ee5b05bac1ef44d29abef6134a">sector_subchannel</a> + corrected_sector_address * tag_length,</div>
<div class="line"><a id="l02099" name="l02099"></a><span class="lineno"> 2099</span> tag_length);</div>
<div class="line"><a id="l02100" name="l02100"></a><span class="lineno"> 2100</span> memcpy(data, bare_data, bare_length);</div>
<div class="line"><a id="l02101" name="l02101"></a><span class="lineno"> 2101</span> *length = tag_length + bare_length;</div>
<div class="line"><a id="l02102" name="l02102"></a><span class="lineno"> 2102</span> </div>
<div class="line"><a id="l02103" name="l02103"></a><span class="lineno"> 2103</span> free(bare_data);</div>
<div class="line"><a id="l02104" name="l02104"></a><span class="lineno"> 2104</span> </div>
<div class="line"><a id="l02105" name="l02105"></a><span class="lineno"> 2105</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector_long() = AARUF_STATUS_OK&quot;</span>);</div>
<div class="line"><a id="l02106" name="l02106"></a><span class="lineno"> 2106</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a1d6e49f7e8a1fa489efa0a582e90b5de">AARUF_STATUS_OK</a>;</div>
<div class="line"><a id="l02107" name="l02107"></a><span class="lineno"> 2107</span> <span class="keywordflow">default</span>:</div>
<div class="line"><a id="l02108" name="l02108"></a><span class="lineno"> 2108</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Incorrect media type %d for long sector reading&quot;</span>, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ac970291b3449c04221827b9c2c18ac70">image_info</a>.<a class="code hl_variable" href="structImageInfo.html#a76611d5087e0a9fd4d329fac7c9ec3f3">MediaType</a>);</div>
<div class="line"><a id="l02109" name="l02109"></a><span class="lineno"> 2109</span> </div>
<div class="line"><a id="l02110" name="l02110"></a><span class="lineno"> 2110</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector_long() = AARUF_ERROR_INCORRECT_MEDIA_TYPE&quot;</span>);</div>
<div class="line"><a id="l02111" name="l02111"></a><span class="lineno"> 2111</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a26707b86af4dd4f3bae7d57abd4345b0">AARUF_ERROR_INCORRECT_MEDIA_TYPE</a>;</div>
<div class="line"><a id="l02112" name="l02112"></a><span class="lineno"> 2112</span> }</div>
<div class="line"><a id="l02113" name="l02113"></a><span class="lineno"> 2113</span> <span class="keywordflow">default</span>:</div>
<div class="line"><a id="l02114" name="l02114"></a><span class="lineno"> 2114</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Incorrect media type %d for long sector reading&quot;</span>, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ac970291b3449c04221827b9c2c18ac70">image_info</a>.<a class="code hl_variable" href="structImageInfo.html#a76611d5087e0a9fd4d329fac7c9ec3f3">MediaType</a>);</div>
<div class="line"><a id="l02115" name="l02115"></a><span class="lineno"> 2115</span> </div>
<div class="line"><a id="l02116" name="l02116"></a><span class="lineno"> 2116</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector_long() = AARUF_ERROR_INCORRECT_MEDIA_TYPE&quot;</span>);</div>
<div class="line"><a id="l02117" name="l02117"></a><span class="lineno"> 2117</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a26707b86af4dd4f3bae7d57abd4345b0">AARUF_ERROR_INCORRECT_MEDIA_TYPE</a>;</div>
<div class="line"><a id="l02118" name="l02118"></a><span class="lineno"> 2118</span> }</div>
<div class="line"><a id="l02119" name="l02119"></a><span class="lineno"> 2119</span>}</div>
</div>
<div class="line"><a id="l02120" name="l02120"></a><span class="lineno"> 2120</span></div>
<div class="foldopen" id="foldopen02240" data-start="{" data-end="}">
<div class="line"><a id="l02240" name="l02240"></a><span class="lineno"><a class="line" href="decls_8h.html#ae5a85524a6e27339c02c4a5791e0db57"> 2240</a></span><a class="code hl_define" href="decls_8h.html#a9001412c35f3c92d3a9320d27b0d97f9">AARU_EXPORT</a> int32_t <a class="code hl_define" href="decls_8h.html#a018e0da1c1f7e4f6187a982c0e40e056">AARU_CALL</a> <a class="code hl_function" href="read_8c.html#ac6c55f931eb4c113d19ff7c194fce65a">aaruf_read_sector_tag</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *context, <span class="keyword">const</span> uint64_t sector_address,</div>
<div class="line"><a id="l02241" name="l02241"></a><span class="lineno"> 2241</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> negative, uint8_t *<a class="code hl_variable" href="structngc__lfg__ctx.html#a9b5c7dbc3b197b77bef259cd8bbb408a">buffer</a>, uint32_t *length,</div>
<div class="line"><a id="l02242" name="l02242"></a><span class="lineno"> 2242</span> <span class="keyword">const</span> int32_t tag)</div>
<div class="line"><a id="l02243" name="l02243"></a><span class="lineno"> 2243</span>{</div>
<div class="line"><a id="l02244" name="l02244"></a><span class="lineno"> 2244</span> <span class="keyword">const</span> uint32_t initial_length = length == NULL ? 0U : *length;</div>
<div class="line"><a id="l02245" name="l02245"></a><span class="lineno"> 2245</span> </div>
<div class="line"><a id="l02246" name="l02246"></a><span class="lineno"> 2246</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Entering aaruf_read_sector_tag(%p, %&quot;</span> PRIu64 <span class="stringliteral">&quot;, %d, %p, %u, %d)&quot;</span>, context, sector_address, negative, <a class="code hl_variable" href="structngc__lfg__ctx.html#a9b5c7dbc3b197b77bef259cd8bbb408a">buffer</a>,</div>
<div class="line"><a id="l02247" name="l02247"></a><span class="lineno"> 2247</span> initial_length, tag);</div>
<div class="line"><a id="l02248" name="l02248"></a><span class="lineno"> 2248</span> </div>
<div class="line"><a id="l02249" name="l02249"></a><span class="lineno"> 2249</span> <span class="keyword">const</span> <a class="code hl_struct" href="structaaruformat__context.html">aaruformat_context</a> *ctx = NULL;</div>
<div class="line"><a id="l02250" name="l02250"></a><span class="lineno"> 2250</span> </div>
<div class="line"><a id="l02251" name="l02251"></a><span class="lineno"> 2251</span> <span class="keywordflow">if</span>(context == NULL)</div>
<div class="line"><a id="l02252" name="l02252"></a><span class="lineno"> 2252</span> {</div>
<div class="line"><a id="l02253" name="l02253"></a><span class="lineno"> 2253</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Invalid context&quot;</span>);</div>
<div class="line"><a id="l02254" name="l02254"></a><span class="lineno"> 2254</span> </div>
<div class="line"><a id="l02255" name="l02255"></a><span class="lineno"> 2255</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector_tag() = AARUF_ERROR_NOT_AARUFORMAT&quot;</span>);</div>
<div class="line"><a id="l02256" name="l02256"></a><span class="lineno"> 2256</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#abb63e240b11d790da83bd34507b57851">AARUF_ERROR_NOT_AARUFORMAT</a>;</div>
<div class="line"><a id="l02257" name="l02257"></a><span class="lineno"> 2257</span> }</div>
<div class="line"><a id="l02258" name="l02258"></a><span class="lineno"> 2258</span> </div>
<div class="line"><a id="l02259" name="l02259"></a><span class="lineno"> 2259</span> ctx = context;</div>
<div class="line"><a id="l02260" name="l02260"></a><span class="lineno"> 2260</span> </div>
<div class="line"><a id="l02261" name="l02261"></a><span class="lineno"> 2261</span> <span class="keywordflow">if</span>(length == NULL)</div>
<div class="line"><a id="l02262" name="l02262"></a><span class="lineno"> 2262</span> {</div>
<div class="line"><a id="l02263" name="l02263"></a><span class="lineno"> 2263</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Invalid length pointer&quot;</span>);</div>
<div class="line"><a id="l02264" name="l02264"></a><span class="lineno"> 2264</span> </div>
<div class="line"><a id="l02265" name="l02265"></a><span class="lineno"> 2265</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector_tag() = AARUF_ERROR_INCORRECT_DATA_SIZE&quot;</span>);</div>
<div class="line"><a id="l02266" name="l02266"></a><span class="lineno"> 2266</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a8fc3ecb14777e72bebad62084b6caf16">AARUF_ERROR_INCORRECT_DATA_SIZE</a>;</div>
<div class="line"><a id="l02267" name="l02267"></a><span class="lineno"> 2267</span> }</div>
<div class="line"><a id="l02268" name="l02268"></a><span class="lineno"> 2268</span> </div>
<div class="line"><a id="l02269" name="l02269"></a><span class="lineno"> 2269</span> <span class="comment">// Not a libaaruformat context</span></div>
<div class="line"><a id="l02270" name="l02270"></a><span class="lineno"> 2270</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a7dc0a0fe0bf6223ff4587fd01c360b76">magic</a> != <a class="code hl_define" href="consts_8h.html#a3c3ba66fe2b547655c9e4b16a1ba519a">AARU_MAGIC</a>)</div>
<div class="line"><a id="l02271" name="l02271"></a><span class="lineno"> 2271</span> {</div>
<div class="line"><a id="l02272" name="l02272"></a><span class="lineno"> 2272</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Invalid context&quot;</span>);</div>
<div class="line"><a id="l02273" name="l02273"></a><span class="lineno"> 2273</span> </div>
<div class="line"><a id="l02274" name="l02274"></a><span class="lineno"> 2274</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector_tag() = AARUF_ERROR_NOT_AARUFORMAT&quot;</span>);</div>
<div class="line"><a id="l02275" name="l02275"></a><span class="lineno"> 2275</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#abb63e240b11d790da83bd34507b57851">AARUF_ERROR_NOT_AARUFORMAT</a>;</div>
<div class="line"><a id="l02276" name="l02276"></a><span class="lineno"> 2276</span> }</div>
<div class="line"><a id="l02277" name="l02277"></a><span class="lineno"> 2277</span> </div>
<div class="line"><a id="l02278" name="l02278"></a><span class="lineno"> 2278</span> <span class="keywordflow">if</span>(negative &amp;&amp; sector_address &gt; ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#ac48b4ceb64b05b5e7da2ca3df063ac99">negative</a>)</div>
<div class="line"><a id="l02279" name="l02279"></a><span class="lineno"> 2279</span> {</div>
<div class="line"><a id="l02280" name="l02280"></a><span class="lineno"> 2280</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Sector address out of bounds&quot;</span>);</div>
<div class="line"><a id="l02281" name="l02281"></a><span class="lineno"> 2281</span> </div>
<div class="line"><a id="l02282" name="l02282"></a><span class="lineno"> 2282</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector_tag() = AARUF_ERROR_SECTOR_OUT_OF_BOUNDS&quot;</span>);</div>
<div class="line"><a id="l02283" name="l02283"></a><span class="lineno"> 2283</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a3f6069602fee5f1264befab13708c0ef">AARUF_ERROR_SECTOR_OUT_OF_BOUNDS</a>;</div>
<div class="line"><a id="l02284" name="l02284"></a><span class="lineno"> 2284</span> }</div>
<div class="line"><a id="l02285" name="l02285"></a><span class="lineno"> 2285</span> </div>
<div class="line"><a id="l02286" name="l02286"></a><span class="lineno"> 2286</span> <span class="keywordflow">if</span>(!negative &amp;&amp; sector_address &gt; ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ac970291b3449c04221827b9c2c18ac70">image_info</a>.<a class="code hl_variable" href="structImageInfo.html#ae3e1b9cde1c51152b00eb1b59e199906">Sectors</a> + ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#ac41f345c4d5db0c249ff171c85992482">overflow</a> - 1)</div>
<div class="line"><a id="l02287" name="l02287"></a><span class="lineno"> 2287</span> {</div>
<div class="line"><a id="l02288" name="l02288"></a><span class="lineno"> 2288</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Sector address out of bounds&quot;</span>);</div>
<div class="line"><a id="l02289" name="l02289"></a><span class="lineno"> 2289</span> </div>
<div class="line"><a id="l02290" name="l02290"></a><span class="lineno"> 2290</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector_tag() = AARUF_ERROR_SECTOR_OUT_OF_BOUNDS&quot;</span>);</div>
<div class="line"><a id="l02291" name="l02291"></a><span class="lineno"> 2291</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a3f6069602fee5f1264befab13708c0ef">AARUF_ERROR_SECTOR_OUT_OF_BOUNDS</a>;</div>
<div class="line"><a id="l02292" name="l02292"></a><span class="lineno"> 2292</span> }</div>
<div class="line"><a id="l02293" name="l02293"></a><span class="lineno"> 2293</span> </div>
<div class="line"><a id="l02294" name="l02294"></a><span class="lineno"> 2294</span> uint64_t corrected_sector_address = sector_address;</div>
<div class="line"><a id="l02295" name="l02295"></a><span class="lineno"> 2295</span> </div>
<div class="line"><a id="l02296" name="l02296"></a><span class="lineno"> 2296</span> <span class="comment">// Calculate positive or negative sector</span></div>
<div class="line"><a id="l02297" name="l02297"></a><span class="lineno"> 2297</span> <span class="keywordflow">if</span>(negative)</div>
<div class="line"><a id="l02298" name="l02298"></a><span class="lineno"> 2298</span> corrected_sector_address = ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#ac48b4ceb64b05b5e7da2ca3df063ac99">negative</a> - sector_address;</div>
<div class="line"><a id="l02299" name="l02299"></a><span class="lineno"> 2299</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l02300" name="l02300"></a><span class="lineno"> 2300</span> corrected_sector_address += ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">user_data_ddt_header</a>.<a class="code hl_variable" href="structDdtHeader2.html#ac48b4ceb64b05b5e7da2ca3df063ac99">negative</a>;</div>
<div class="line"><a id="l02301" name="l02301"></a><span class="lineno"> 2301</span> </div>
<div class="line"><a id="l02302" name="l02302"></a><span class="lineno"> 2302</span> <span class="keywordflow">switch</span>(tag)</div>
<div class="line"><a id="l02303" name="l02303"></a><span class="lineno"> 2303</span> {</div>
<div class="line"><a id="l02304" name="l02304"></a><span class="lineno"> 2304</span> <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="group__SectorTags.html#ggaf863e81d172ce7a216d8687a8a23293aa0a87d255508de17d3745cfd86c1a97c6">kSectorTagCdTrackFlags</a>:</div>
<div class="line"><a id="l02305" name="l02305"></a><span class="lineno"> 2305</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ac970291b3449c04221827b9c2c18ac70">image_info</a>.<a class="code hl_variable" href="structImageInfo.html#a7ed25efcf8cec55d6609b83bcd17b2d0">MetadataMediaType</a> != <a class="code hl_enumvalue" href="enums_8h.html#abaa37b51ab0a4cc3d5d1a0b4820c8466aaf46f69508c3a90e5588c71f410a7f12">OpticalDisc</a>)</div>
<div class="line"><a id="l02306" name="l02306"></a><span class="lineno"> 2306</span> {</div>
<div class="line"><a id="l02307" name="l02307"></a><span class="lineno"> 2307</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Invalid media type for tag&quot;</span>);</div>
<div class="line"><a id="l02308" name="l02308"></a><span class="lineno"> 2308</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector_tag() = AARUF_ERROR_INCORRECT_MEDIA_TYPE&quot;</span>);</div>
<div class="line"><a id="l02309" name="l02309"></a><span class="lineno"> 2309</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a26707b86af4dd4f3bae7d57abd4345b0">AARUF_ERROR_INCORRECT_MEDIA_TYPE</a>;</div>
<div class="line"><a id="l02310" name="l02310"></a><span class="lineno"> 2310</span> }</div>
<div class="line"><a id="l02311" name="l02311"></a><span class="lineno"> 2311</span> </div>
<div class="line"><a id="l02312" name="l02312"></a><span class="lineno"> 2312</span> <span class="keywordflow">if</span>(*length != 1 || <a class="code hl_variable" href="structngc__lfg__ctx.html#a9b5c7dbc3b197b77bef259cd8bbb408a">buffer</a> == NULL)</div>
<div class="line"><a id="l02313" name="l02313"></a><span class="lineno"> 2313</span> {</div>
<div class="line"><a id="l02314" name="l02314"></a><span class="lineno"> 2314</span> *length = 1;</div>
<div class="line"><a id="l02315" name="l02315"></a><span class="lineno"> 2315</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Incorrect tag size&quot;</span>);</div>
<div class="line"><a id="l02316" name="l02316"></a><span class="lineno"> 2316</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector_tag() = AARUF_ERROR_INCORRECT_DATA_SIZE&quot;</span>);</div>
<div class="line"><a id="l02317" name="l02317"></a><span class="lineno"> 2317</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a8fc3ecb14777e72bebad62084b6caf16">AARUF_ERROR_INCORRECT_DATA_SIZE</a>;</div>
<div class="line"><a id="l02318" name="l02318"></a><span class="lineno"> 2318</span> }</div>
<div class="line"><a id="l02319" name="l02319"></a><span class="lineno"> 2319</span> </div>
<div class="line"><a id="l02320" name="l02320"></a><span class="lineno"> 2320</span> <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i &lt; ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#aff71b0229a1c4c78572cfdb0824e601e">tracks_header</a>.<a class="code hl_variable" href="structTracksHeader.html#a98df23dccacc04396f07f450a742527a">entries</a>; i++)</div>
<div class="line"><a id="l02321" name="l02321"></a><span class="lineno"> 2321</span> <span class="keywordflow">if</span>(sector_address &gt;= ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#adcabe3b59f532d036adf16b78faba58e">track_entries</a>[i].<a class="code hl_variable" href="structTrackEntry.html#aa82e4a2aa2cfecee9891f117e9494cdf">start</a> &amp;&amp; sector_address &lt;= ctx-&gt;track_entries[i].end)</div>
<div class="line"><a id="l02322" name="l02322"></a><span class="lineno"> 2322</span> {</div>
<div class="line"><a id="l02323" name="l02323"></a><span class="lineno"> 2323</span> <a class="code hl_variable" href="structngc__lfg__ctx.html#a9b5c7dbc3b197b77bef259cd8bbb408a">buffer</a>[0] = ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#adcabe3b59f532d036adf16b78faba58e">track_entries</a>[i].<a class="code hl_variable" href="structTrackEntry.html#a7ae98d532f6dff50c2439b64d2cddb45">flags</a>;</div>
<div class="line"><a id="l02324" name="l02324"></a><span class="lineno"> 2324</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector_tag() = AARUF_STATUS_OK&quot;</span>);</div>
<div class="line"><a id="l02325" name="l02325"></a><span class="lineno"> 2325</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a1d6e49f7e8a1fa489efa0a582e90b5de">AARUF_STATUS_OK</a>;</div>
<div class="line"><a id="l02326" name="l02326"></a><span class="lineno"> 2326</span> }</div>
<div class="line"><a id="l02327" name="l02327"></a><span class="lineno"> 2327</span> </div>
<div class="line"><a id="l02328" name="l02328"></a><span class="lineno"> 2328</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Track not found&quot;</span>);</div>
<div class="line"><a id="l02329" name="l02329"></a><span class="lineno"> 2329</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a32b645da87003df886a5742d23f8ca19">AARUF_ERROR_TRACK_NOT_FOUND</a>;</div>
<div class="line"><a id="l02330" name="l02330"></a><span class="lineno"> 2330</span> <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="group__SectorTags.html#ggaf863e81d172ce7a216d8687a8a23293aaac2ac524def4118a80cb586b791d1f11">kSectorTagCdTrackIsrc</a>:</div>
<div class="line"><a id="l02331" name="l02331"></a><span class="lineno"> 2331</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ac970291b3449c04221827b9c2c18ac70">image_info</a>.<a class="code hl_variable" href="structImageInfo.html#a7ed25efcf8cec55d6609b83bcd17b2d0">MetadataMediaType</a> != <a class="code hl_enumvalue" href="enums_8h.html#abaa37b51ab0a4cc3d5d1a0b4820c8466aaf46f69508c3a90e5588c71f410a7f12">OpticalDisc</a>)</div>
<div class="line"><a id="l02332" name="l02332"></a><span class="lineno"> 2332</span> {</div>
<div class="line"><a id="l02333" name="l02333"></a><span class="lineno"> 2333</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Invalid media type for tag&quot;</span>);</div>
<div class="line"><a id="l02334" name="l02334"></a><span class="lineno"> 2334</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector_tag() = AARUF_ERROR_INCORRECT_MEDIA_TYPE&quot;</span>);</div>
<div class="line"><a id="l02335" name="l02335"></a><span class="lineno"> 2335</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a26707b86af4dd4f3bae7d57abd4345b0">AARUF_ERROR_INCORRECT_MEDIA_TYPE</a>;</div>
<div class="line"><a id="l02336" name="l02336"></a><span class="lineno"> 2336</span> }</div>
<div class="line"><a id="l02337" name="l02337"></a><span class="lineno"> 2337</span> </div>
<div class="line"><a id="l02338" name="l02338"></a><span class="lineno"> 2338</span> <span class="keywordflow">if</span>(*length != 12 || <a class="code hl_variable" href="structngc__lfg__ctx.html#a9b5c7dbc3b197b77bef259cd8bbb408a">buffer</a> == NULL)</div>
<div class="line"><a id="l02339" name="l02339"></a><span class="lineno"> 2339</span> {</div>
<div class="line"><a id="l02340" name="l02340"></a><span class="lineno"> 2340</span> *length = 12;</div>
<div class="line"><a id="l02341" name="l02341"></a><span class="lineno"> 2341</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Incorrect tag size&quot;</span>);</div>
<div class="line"><a id="l02342" name="l02342"></a><span class="lineno"> 2342</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector_tag() = AARUF_ERROR_INCORRECT_DATA_SIZE&quot;</span>);</div>
<div class="line"><a id="l02343" name="l02343"></a><span class="lineno"> 2343</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a8fc3ecb14777e72bebad62084b6caf16">AARUF_ERROR_INCORRECT_DATA_SIZE</a>;</div>
<div class="line"><a id="l02344" name="l02344"></a><span class="lineno"> 2344</span> }</div>
<div class="line"><a id="l02345" name="l02345"></a><span class="lineno"> 2345</span> </div>
<div class="line"><a id="l02346" name="l02346"></a><span class="lineno"> 2346</span> <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i &lt; ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#aff71b0229a1c4c78572cfdb0824e601e">tracks_header</a>.<a class="code hl_variable" href="structTracksHeader.html#a98df23dccacc04396f07f450a742527a">entries</a>; i++)</div>
<div class="line"><a id="l02347" name="l02347"></a><span class="lineno"> 2347</span> <span class="keywordflow">if</span>(sector_address &gt;= ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#adcabe3b59f532d036adf16b78faba58e">track_entries</a>[i].<a class="code hl_variable" href="structTrackEntry.html#aa82e4a2aa2cfecee9891f117e9494cdf">start</a> &amp;&amp; sector_address &lt;= ctx-&gt;track_entries[i].end)</div>
<div class="line"><a id="l02348" name="l02348"></a><span class="lineno"> 2348</span> {</div>
<div class="line"><a id="l02349" name="l02349"></a><span class="lineno"> 2349</span> memcpy(<a class="code hl_variable" href="structngc__lfg__ctx.html#a9b5c7dbc3b197b77bef259cd8bbb408a">buffer</a>, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#adcabe3b59f532d036adf16b78faba58e">track_entries</a>[i].<a class="code hl_variable" href="structTrackEntry.html#acb023e4728c59964c83fe85474c512c8">isrc</a>, 12);</div>
<div class="line"><a id="l02350" name="l02350"></a><span class="lineno"> 2350</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector_tag() = AARUF_STATUS_OK&quot;</span>);</div>
<div class="line"><a id="l02351" name="l02351"></a><span class="lineno"> 2351</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a1d6e49f7e8a1fa489efa0a582e90b5de">AARUF_STATUS_OK</a>;</div>
<div class="line"><a id="l02352" name="l02352"></a><span class="lineno"> 2352</span> }</div>
<div class="line"><a id="l02353" name="l02353"></a><span class="lineno"> 2353</span> </div>
<div class="line"><a id="l02354" name="l02354"></a><span class="lineno"> 2354</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Track not found&quot;</span>);</div>
<div class="line"><a id="l02355" name="l02355"></a><span class="lineno"> 2355</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a32b645da87003df886a5742d23f8ca19">AARUF_ERROR_TRACK_NOT_FOUND</a>;</div>
<div class="line"><a id="l02356" name="l02356"></a><span class="lineno"> 2356</span> <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="group__SectorTags.html#ggaf863e81d172ce7a216d8687a8a23293aa517983b65e64021dc389c78f2fff48ba">kSectorTagCdSubchannel</a>:</div>
<div class="line"><a id="l02357" name="l02357"></a><span class="lineno"> 2357</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ac970291b3449c04221827b9c2c18ac70">image_info</a>.<a class="code hl_variable" href="structImageInfo.html#a7ed25efcf8cec55d6609b83bcd17b2d0">MetadataMediaType</a> != <a class="code hl_enumvalue" href="enums_8h.html#abaa37b51ab0a4cc3d5d1a0b4820c8466aaf46f69508c3a90e5588c71f410a7f12">OpticalDisc</a>)</div>
<div class="line"><a id="l02358" name="l02358"></a><span class="lineno"> 2358</span> {</div>
<div class="line"><a id="l02359" name="l02359"></a><span class="lineno"> 2359</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Invalid media type for tag&quot;</span>);</div>
<div class="line"><a id="l02360" name="l02360"></a><span class="lineno"> 2360</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector_tag() = AARUF_ERROR_INCORRECT_MEDIA_TYPE&quot;</span>);</div>
<div class="line"><a id="l02361" name="l02361"></a><span class="lineno"> 2361</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a26707b86af4dd4f3bae7d57abd4345b0">AARUF_ERROR_INCORRECT_MEDIA_TYPE</a>;</div>
<div class="line"><a id="l02362" name="l02362"></a><span class="lineno"> 2362</span> }</div>
<div class="line"><a id="l02363" name="l02363"></a><span class="lineno"> 2363</span> </div>
<div class="line"><a id="l02364" name="l02364"></a><span class="lineno"> 2364</span> <span class="keywordflow">if</span>(*length != 96 || <a class="code hl_variable" href="structngc__lfg__ctx.html#a9b5c7dbc3b197b77bef259cd8bbb408a">buffer</a> == NULL)</div>
<div class="line"><a id="l02365" name="l02365"></a><span class="lineno"> 2365</span> {</div>
<div class="line"><a id="l02366" name="l02366"></a><span class="lineno"> 2366</span> *length = 96;</div>
<div class="line"><a id="l02367" name="l02367"></a><span class="lineno"> 2367</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Incorrect tag size&quot;</span>);</div>
<div class="line"><a id="l02368" name="l02368"></a><span class="lineno"> 2368</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector_tag() = AARUF_ERROR_INCORRECT_DATA_SIZE&quot;</span>);</div>
<div class="line"><a id="l02369" name="l02369"></a><span class="lineno"> 2369</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a8fc3ecb14777e72bebad62084b6caf16">AARUF_ERROR_INCORRECT_DATA_SIZE</a>;</div>
<div class="line"><a id="l02370" name="l02370"></a><span class="lineno"> 2370</span> }</div>
<div class="line"><a id="l02371" name="l02371"></a><span class="lineno"> 2371</span> </div>
<div class="line"><a id="l02372" name="l02372"></a><span class="lineno"> 2372</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#aaf16c9ee5b05bac1ef44d29abef6134a">sector_subchannel</a> == NULL)</div>
<div class="line"><a id="l02373" name="l02373"></a><span class="lineno"> 2373</span> {</div>
<div class="line"><a id="l02374" name="l02374"></a><span class="lineno"> 2374</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Sector tag not found&quot;</span>);</div>
<div class="line"><a id="l02375" name="l02375"></a><span class="lineno"> 2375</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector_tag() = AARUF_ERROR_SECTOR_TAG_NOT_PRESENT&quot;</span>);</div>
<div class="line"><a id="l02376" name="l02376"></a><span class="lineno"> 2376</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#aa70d43d59e04b7147c14771c4821e670">AARUF_ERROR_SECTOR_TAG_NOT_PRESENT</a>;</div>
<div class="line"><a id="l02377" name="l02377"></a><span class="lineno"> 2377</span> }</div>
<div class="line"><a id="l02378" name="l02378"></a><span class="lineno"> 2378</span> </div>
<div class="line"><a id="l02379" name="l02379"></a><span class="lineno"> 2379</span> memcpy(<a class="code hl_variable" href="structngc__lfg__ctx.html#a9b5c7dbc3b197b77bef259cd8bbb408a">buffer</a>, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#aaf16c9ee5b05bac1ef44d29abef6134a">sector_subchannel</a> + corrected_sector_address * 96, 96);</div>
<div class="line"><a id="l02380" name="l02380"></a><span class="lineno"> 2380</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector_tag() = AARUF_STATUS_OK&quot;</span>);</div>
<div class="line"><a id="l02381" name="l02381"></a><span class="lineno"> 2381</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a1d6e49f7e8a1fa489efa0a582e90b5de">AARUF_STATUS_OK</a>;</div>
<div class="line"><a id="l02382" name="l02382"></a><span class="lineno"> 2382</span> <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="group__SectorTags.html#ggaf863e81d172ce7a216d8687a8a23293aa45fa5c82687c1aebf2b1620ede26f91b">kSectorTagDvdCmi</a>:</div>
<div class="line"><a id="l02383" name="l02383"></a><span class="lineno"> 2383</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ac970291b3449c04221827b9c2c18ac70">image_info</a>.<a class="code hl_variable" href="structImageInfo.html#a7ed25efcf8cec55d6609b83bcd17b2d0">MetadataMediaType</a> != <a class="code hl_enumvalue" href="enums_8h.html#abaa37b51ab0a4cc3d5d1a0b4820c8466aaf46f69508c3a90e5588c71f410a7f12">OpticalDisc</a>)</div>
<div class="line"><a id="l02384" name="l02384"></a><span class="lineno"> 2384</span> {</div>
<div class="line"><a id="l02385" name="l02385"></a><span class="lineno"> 2385</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Invalid media type for tag&quot;</span>);</div>
<div class="line"><a id="l02386" name="l02386"></a><span class="lineno"> 2386</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector_tag() = AARUF_ERROR_INCORRECT_MEDIA_TYPE&quot;</span>);</div>
<div class="line"><a id="l02387" name="l02387"></a><span class="lineno"> 2387</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a26707b86af4dd4f3bae7d57abd4345b0">AARUF_ERROR_INCORRECT_MEDIA_TYPE</a>;</div>
<div class="line"><a id="l02388" name="l02388"></a><span class="lineno"> 2388</span> }</div>
<div class="line"><a id="l02389" name="l02389"></a><span class="lineno"> 2389</span> </div>
<div class="line"><a id="l02390" name="l02390"></a><span class="lineno"> 2390</span> <span class="keywordflow">if</span>(*length != 1 || <a class="code hl_variable" href="structngc__lfg__ctx.html#a9b5c7dbc3b197b77bef259cd8bbb408a">buffer</a> == NULL)</div>
<div class="line"><a id="l02391" name="l02391"></a><span class="lineno"> 2391</span> {</div>
<div class="line"><a id="l02392" name="l02392"></a><span class="lineno"> 2392</span> *length = 1;</div>
<div class="line"><a id="l02393" name="l02393"></a><span class="lineno"> 2393</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Incorrect tag size&quot;</span>);</div>
<div class="line"><a id="l02394" name="l02394"></a><span class="lineno"> 2394</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector_tag() = AARUF_ERROR_INCORRECT_DATA_SIZE&quot;</span>);</div>
<div class="line"><a id="l02395" name="l02395"></a><span class="lineno"> 2395</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a8fc3ecb14777e72bebad62084b6caf16">AARUF_ERROR_INCORRECT_DATA_SIZE</a>;</div>
<div class="line"><a id="l02396" name="l02396"></a><span class="lineno"> 2396</span> }</div>
<div class="line"><a id="l02397" name="l02397"></a><span class="lineno"> 2397</span> </div>
<div class="line"><a id="l02398" name="l02398"></a><span class="lineno"> 2398</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a1614b9ffbd5e4661a2483eb3f68f8fd1">sector_cpr_mai</a> == NULL)</div>
<div class="line"><a id="l02399" name="l02399"></a><span class="lineno"> 2399</span> {</div>
<div class="line"><a id="l02400" name="l02400"></a><span class="lineno"> 2400</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Sector tag not found&quot;</span>);</div>
<div class="line"><a id="l02401" name="l02401"></a><span class="lineno"> 2401</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector_tag() = AARUF_ERROR_SECTOR_TAG_NOT_PRESENT&quot;</span>);</div>
<div class="line"><a id="l02402" name="l02402"></a><span class="lineno"> 2402</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#aa70d43d59e04b7147c14771c4821e670">AARUF_ERROR_SECTOR_TAG_NOT_PRESENT</a>;</div>
<div class="line"><a id="l02403" name="l02403"></a><span class="lineno"> 2403</span> }</div>
<div class="line"><a id="l02404" name="l02404"></a><span class="lineno"> 2404</span> </div>
<div class="line"><a id="l02405" name="l02405"></a><span class="lineno"> 2405</span> memcpy(<a class="code hl_variable" href="structngc__lfg__ctx.html#a9b5c7dbc3b197b77bef259cd8bbb408a">buffer</a>, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a1614b9ffbd5e4661a2483eb3f68f8fd1">sector_cpr_mai</a> + corrected_sector_address * 6, 1);</div>
<div class="line"><a id="l02406" name="l02406"></a><span class="lineno"> 2406</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector_tag() = AARUF_STATUS_OK&quot;</span>);</div>
<div class="line"><a id="l02407" name="l02407"></a><span class="lineno"> 2407</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a1d6e49f7e8a1fa489efa0a582e90b5de">AARUF_STATUS_OK</a>;</div>
<div class="line"><a id="l02408" name="l02408"></a><span class="lineno"> 2408</span> <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="group__SectorTags.html#ggaf863e81d172ce7a216d8687a8a23293aac8db8e7fd60c8c805263e44eaffe9277">kSectorTagDvdSectorInformation</a>:</div>
<div class="line"><a id="l02409" name="l02409"></a><span class="lineno"> 2409</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ac970291b3449c04221827b9c2c18ac70">image_info</a>.<a class="code hl_variable" href="structImageInfo.html#a7ed25efcf8cec55d6609b83bcd17b2d0">MetadataMediaType</a> != <a class="code hl_enumvalue" href="enums_8h.html#abaa37b51ab0a4cc3d5d1a0b4820c8466aaf46f69508c3a90e5588c71f410a7f12">OpticalDisc</a>)</div>
<div class="line"><a id="l02410" name="l02410"></a><span class="lineno"> 2410</span> {</div>
<div class="line"><a id="l02411" name="l02411"></a><span class="lineno"> 2411</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Invalid media type for tag&quot;</span>);</div>
<div class="line"><a id="l02412" name="l02412"></a><span class="lineno"> 2412</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector_tag() = AARUF_ERROR_INCORRECT_MEDIA_TYPE&quot;</span>);</div>
<div class="line"><a id="l02413" name="l02413"></a><span class="lineno"> 2413</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a26707b86af4dd4f3bae7d57abd4345b0">AARUF_ERROR_INCORRECT_MEDIA_TYPE</a>;</div>
<div class="line"><a id="l02414" name="l02414"></a><span class="lineno"> 2414</span> }</div>
<div class="line"><a id="l02415" name="l02415"></a><span class="lineno"> 2415</span> </div>
<div class="line"><a id="l02416" name="l02416"></a><span class="lineno"> 2416</span> <span class="keywordflow">if</span>(*length != 1 || <a class="code hl_variable" href="structngc__lfg__ctx.html#a9b5c7dbc3b197b77bef259cd8bbb408a">buffer</a> == NULL)</div>
<div class="line"><a id="l02417" name="l02417"></a><span class="lineno"> 2417</span> {</div>
<div class="line"><a id="l02418" name="l02418"></a><span class="lineno"> 2418</span> *length = 1;</div>
<div class="line"><a id="l02419" name="l02419"></a><span class="lineno"> 2419</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Incorrect tag size&quot;</span>);</div>
<div class="line"><a id="l02420" name="l02420"></a><span class="lineno"> 2420</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector_tag() = AARUF_ERROR_INCORRECT_DATA_SIZE&quot;</span>);</div>
<div class="line"><a id="l02421" name="l02421"></a><span class="lineno"> 2421</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a8fc3ecb14777e72bebad62084b6caf16">AARUF_ERROR_INCORRECT_DATA_SIZE</a>;</div>
<div class="line"><a id="l02422" name="l02422"></a><span class="lineno"> 2422</span> }</div>
<div class="line"><a id="l02423" name="l02423"></a><span class="lineno"> 2423</span> </div>
<div class="line"><a id="l02424" name="l02424"></a><span class="lineno"> 2424</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#acc9cdfdd4be56c4f7016a37e218cee47">sector_id</a> == NULL)</div>
<div class="line"><a id="l02425" name="l02425"></a><span class="lineno"> 2425</span> {</div>
<div class="line"><a id="l02426" name="l02426"></a><span class="lineno"> 2426</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Sector tag not found&quot;</span>);</div>
<div class="line"><a id="l02427" name="l02427"></a><span class="lineno"> 2427</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector_tag() = AARUF_ERROR_SECTOR_TAG_NOT_PRESENT&quot;</span>);</div>
<div class="line"><a id="l02428" name="l02428"></a><span class="lineno"> 2428</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#aa70d43d59e04b7147c14771c4821e670">AARUF_ERROR_SECTOR_TAG_NOT_PRESENT</a>;</div>
<div class="line"><a id="l02429" name="l02429"></a><span class="lineno"> 2429</span> }</div>
<div class="line"><a id="l02430" name="l02430"></a><span class="lineno"> 2430</span> </div>
<div class="line"><a id="l02431" name="l02431"></a><span class="lineno"> 2431</span> memcpy(<a class="code hl_variable" href="structngc__lfg__ctx.html#a9b5c7dbc3b197b77bef259cd8bbb408a">buffer</a>, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#acc9cdfdd4be56c4f7016a37e218cee47">sector_id</a> + corrected_sector_address * 4, 1);</div>
<div class="line"><a id="l02432" name="l02432"></a><span class="lineno"> 2432</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector_tag() = AARUF_STATUS_OK&quot;</span>);</div>
<div class="line"><a id="l02433" name="l02433"></a><span class="lineno"> 2433</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a1d6e49f7e8a1fa489efa0a582e90b5de">AARUF_STATUS_OK</a>;</div>
<div class="line"><a id="l02434" name="l02434"></a><span class="lineno"> 2434</span> <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="group__SectorTags.html#ggaf863e81d172ce7a216d8687a8a23293aad161555539302d75b8810baa247420af">kSectorTagDvdSectorNumber</a>:</div>
<div class="line"><a id="l02435" name="l02435"></a><span class="lineno"> 2435</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ac970291b3449c04221827b9c2c18ac70">image_info</a>.<a class="code hl_variable" href="structImageInfo.html#a7ed25efcf8cec55d6609b83bcd17b2d0">MetadataMediaType</a> != <a class="code hl_enumvalue" href="enums_8h.html#abaa37b51ab0a4cc3d5d1a0b4820c8466aaf46f69508c3a90e5588c71f410a7f12">OpticalDisc</a>)</div>
<div class="line"><a id="l02436" name="l02436"></a><span class="lineno"> 2436</span> {</div>
<div class="line"><a id="l02437" name="l02437"></a><span class="lineno"> 2437</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Invalid media type for tag&quot;</span>);</div>
<div class="line"><a id="l02438" name="l02438"></a><span class="lineno"> 2438</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector_tag() = AARUF_ERROR_INCORRECT_MEDIA_TYPE&quot;</span>);</div>
<div class="line"><a id="l02439" name="l02439"></a><span class="lineno"> 2439</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a26707b86af4dd4f3bae7d57abd4345b0">AARUF_ERROR_INCORRECT_MEDIA_TYPE</a>;</div>
<div class="line"><a id="l02440" name="l02440"></a><span class="lineno"> 2440</span> }</div>
<div class="line"><a id="l02441" name="l02441"></a><span class="lineno"> 2441</span> </div>
<div class="line"><a id="l02442" name="l02442"></a><span class="lineno"> 2442</span> <span class="keywordflow">if</span>(*length != 3 || <a class="code hl_variable" href="structngc__lfg__ctx.html#a9b5c7dbc3b197b77bef259cd8bbb408a">buffer</a> == NULL)</div>
<div class="line"><a id="l02443" name="l02443"></a><span class="lineno"> 2443</span> {</div>
<div class="line"><a id="l02444" name="l02444"></a><span class="lineno"> 2444</span> *length = 3;</div>
<div class="line"><a id="l02445" name="l02445"></a><span class="lineno"> 2445</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Incorrect tag size&quot;</span>);</div>
<div class="line"><a id="l02446" name="l02446"></a><span class="lineno"> 2446</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector_tag() = AARUF_ERROR_INCORRECT_DATA_SIZE&quot;</span>);</div>
<div class="line"><a id="l02447" name="l02447"></a><span class="lineno"> 2447</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a8fc3ecb14777e72bebad62084b6caf16">AARUF_ERROR_INCORRECT_DATA_SIZE</a>;</div>
<div class="line"><a id="l02448" name="l02448"></a><span class="lineno"> 2448</span> }</div>
<div class="line"><a id="l02449" name="l02449"></a><span class="lineno"> 2449</span> </div>
<div class="line"><a id="l02450" name="l02450"></a><span class="lineno"> 2450</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#acc9cdfdd4be56c4f7016a37e218cee47">sector_id</a> == NULL)</div>
<div class="line"><a id="l02451" name="l02451"></a><span class="lineno"> 2451</span> {</div>
<div class="line"><a id="l02452" name="l02452"></a><span class="lineno"> 2452</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Sector tag not found&quot;</span>);</div>
<div class="line"><a id="l02453" name="l02453"></a><span class="lineno"> 2453</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector_tag() = AARUF_ERROR_SECTOR_TAG_NOT_PRESENT&quot;</span>);</div>
<div class="line"><a id="l02454" name="l02454"></a><span class="lineno"> 2454</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#aa70d43d59e04b7147c14771c4821e670">AARUF_ERROR_SECTOR_TAG_NOT_PRESENT</a>;</div>
<div class="line"><a id="l02455" name="l02455"></a><span class="lineno"> 2455</span> }</div>
<div class="line"><a id="l02456" name="l02456"></a><span class="lineno"> 2456</span> </div>
<div class="line"><a id="l02457" name="l02457"></a><span class="lineno"> 2457</span> memcpy(<a class="code hl_variable" href="structngc__lfg__ctx.html#a9b5c7dbc3b197b77bef259cd8bbb408a">buffer</a>, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#acc9cdfdd4be56c4f7016a37e218cee47">sector_id</a> + corrected_sector_address * 4 + 1, 3);</div>
<div class="line"><a id="l02458" name="l02458"></a><span class="lineno"> 2458</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector_tag() = AARUF_STATUS_OK&quot;</span>);</div>
<div class="line"><a id="l02459" name="l02459"></a><span class="lineno"> 2459</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a1d6e49f7e8a1fa489efa0a582e90b5de">AARUF_STATUS_OK</a>;</div>
<div class="line"><a id="l02460" name="l02460"></a><span class="lineno"> 2460</span> <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="group__SectorTags.html#ggaf863e81d172ce7a216d8687a8a23293aa4e5718bc178697c722f928a7500453d8">kSectorTagDvdSectorIed</a>:</div>
<div class="line"><a id="l02461" name="l02461"></a><span class="lineno"> 2461</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ac970291b3449c04221827b9c2c18ac70">image_info</a>.<a class="code hl_variable" href="structImageInfo.html#a7ed25efcf8cec55d6609b83bcd17b2d0">MetadataMediaType</a> != <a class="code hl_enumvalue" href="enums_8h.html#abaa37b51ab0a4cc3d5d1a0b4820c8466aaf46f69508c3a90e5588c71f410a7f12">OpticalDisc</a>)</div>
<div class="line"><a id="l02462" name="l02462"></a><span class="lineno"> 2462</span> {</div>
<div class="line"><a id="l02463" name="l02463"></a><span class="lineno"> 2463</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Invalid media type for tag&quot;</span>);</div>
<div class="line"><a id="l02464" name="l02464"></a><span class="lineno"> 2464</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector_tag() = AARUF_ERROR_INCORRECT_MEDIA_TYPE&quot;</span>);</div>
<div class="line"><a id="l02465" name="l02465"></a><span class="lineno"> 2465</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a26707b86af4dd4f3bae7d57abd4345b0">AARUF_ERROR_INCORRECT_MEDIA_TYPE</a>;</div>
<div class="line"><a id="l02466" name="l02466"></a><span class="lineno"> 2466</span> }</div>
<div class="line"><a id="l02467" name="l02467"></a><span class="lineno"> 2467</span> </div>
<div class="line"><a id="l02468" name="l02468"></a><span class="lineno"> 2468</span> <span class="keywordflow">if</span>(*length != 2 || <a class="code hl_variable" href="structngc__lfg__ctx.html#a9b5c7dbc3b197b77bef259cd8bbb408a">buffer</a> == NULL)</div>
<div class="line"><a id="l02469" name="l02469"></a><span class="lineno"> 2469</span> {</div>
<div class="line"><a id="l02470" name="l02470"></a><span class="lineno"> 2470</span> *length = 2;</div>
<div class="line"><a id="l02471" name="l02471"></a><span class="lineno"> 2471</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Incorrect tag size&quot;</span>);</div>
<div class="line"><a id="l02472" name="l02472"></a><span class="lineno"> 2472</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector_tag() = AARUF_ERROR_INCORRECT_DATA_SIZE&quot;</span>);</div>
<div class="line"><a id="l02473" name="l02473"></a><span class="lineno"> 2473</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a8fc3ecb14777e72bebad62084b6caf16">AARUF_ERROR_INCORRECT_DATA_SIZE</a>;</div>
<div class="line"><a id="l02474" name="l02474"></a><span class="lineno"> 2474</span> }</div>
<div class="line"><a id="l02475" name="l02475"></a><span class="lineno"> 2475</span> </div>
<div class="line"><a id="l02476" name="l02476"></a><span class="lineno"> 2476</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a3bfc3fceaaf015830913fd7efa794e5a">sector_ied</a> == NULL)</div>
<div class="line"><a id="l02477" name="l02477"></a><span class="lineno"> 2477</span> {</div>
<div class="line"><a id="l02478" name="l02478"></a><span class="lineno"> 2478</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Sector tag not found&quot;</span>);</div>
<div class="line"><a id="l02479" name="l02479"></a><span class="lineno"> 2479</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector_tag() = AARUF_ERROR_SECTOR_TAG_NOT_PRESENT&quot;</span>);</div>
<div class="line"><a id="l02480" name="l02480"></a><span class="lineno"> 2480</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#aa70d43d59e04b7147c14771c4821e670">AARUF_ERROR_SECTOR_TAG_NOT_PRESENT</a>;</div>
<div class="line"><a id="l02481" name="l02481"></a><span class="lineno"> 2481</span> }</div>
<div class="line"><a id="l02482" name="l02482"></a><span class="lineno"> 2482</span> </div>
<div class="line"><a id="l02483" name="l02483"></a><span class="lineno"> 2483</span> memcpy(<a class="code hl_variable" href="structngc__lfg__ctx.html#a9b5c7dbc3b197b77bef259cd8bbb408a">buffer</a>, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a3bfc3fceaaf015830913fd7efa794e5a">sector_ied</a> + corrected_sector_address * 2, 2);</div>
<div class="line"><a id="l02484" name="l02484"></a><span class="lineno"> 2484</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector_tag() = AARUF_STATUS_OK&quot;</span>);</div>
<div class="line"><a id="l02485" name="l02485"></a><span class="lineno"> 2485</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a1d6e49f7e8a1fa489efa0a582e90b5de">AARUF_STATUS_OK</a>;</div>
<div class="line"><a id="l02486" name="l02486"></a><span class="lineno"> 2486</span> <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="group__SectorTags.html#ggaf863e81d172ce7a216d8687a8a23293aace07acdeb01af35b602c966b764568d5">kSectorTagDvdSectorEdc</a>:</div>
<div class="line"><a id="l02487" name="l02487"></a><span class="lineno"> 2487</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ac970291b3449c04221827b9c2c18ac70">image_info</a>.<a class="code hl_variable" href="structImageInfo.html#a7ed25efcf8cec55d6609b83bcd17b2d0">MetadataMediaType</a> != <a class="code hl_enumvalue" href="enums_8h.html#abaa37b51ab0a4cc3d5d1a0b4820c8466aaf46f69508c3a90e5588c71f410a7f12">OpticalDisc</a>)</div>
<div class="line"><a id="l02488" name="l02488"></a><span class="lineno"> 2488</span> {</div>
<div class="line"><a id="l02489" name="l02489"></a><span class="lineno"> 2489</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Invalid media type for tag&quot;</span>);</div>
<div class="line"><a id="l02490" name="l02490"></a><span class="lineno"> 2490</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector_tag() = AARUF_ERROR_INCORRECT_MEDIA_TYPE&quot;</span>);</div>
<div class="line"><a id="l02491" name="l02491"></a><span class="lineno"> 2491</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a26707b86af4dd4f3bae7d57abd4345b0">AARUF_ERROR_INCORRECT_MEDIA_TYPE</a>;</div>
<div class="line"><a id="l02492" name="l02492"></a><span class="lineno"> 2492</span> }</div>
<div class="line"><a id="l02493" name="l02493"></a><span class="lineno"> 2493</span> </div>
<div class="line"><a id="l02494" name="l02494"></a><span class="lineno"> 2494</span> <span class="keywordflow">if</span>(*length != 4 || <a class="code hl_variable" href="structngc__lfg__ctx.html#a9b5c7dbc3b197b77bef259cd8bbb408a">buffer</a> == NULL)</div>
<div class="line"><a id="l02495" name="l02495"></a><span class="lineno"> 2495</span> {</div>
<div class="line"><a id="l02496" name="l02496"></a><span class="lineno"> 2496</span> *length = 4;</div>
<div class="line"><a id="l02497" name="l02497"></a><span class="lineno"> 2497</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Incorrect tag size&quot;</span>);</div>
<div class="line"><a id="l02498" name="l02498"></a><span class="lineno"> 2498</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector_tag() = AARUF_ERROR_INCORRECT_DATA_SIZE&quot;</span>);</div>
<div class="line"><a id="l02499" name="l02499"></a><span class="lineno"> 2499</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a8fc3ecb14777e72bebad62084b6caf16">AARUF_ERROR_INCORRECT_DATA_SIZE</a>;</div>
<div class="line"><a id="l02500" name="l02500"></a><span class="lineno"> 2500</span> }</div>
<div class="line"><a id="l02501" name="l02501"></a><span class="lineno"> 2501</span> </div>
<div class="line"><a id="l02502" name="l02502"></a><span class="lineno"> 2502</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a4dc244e21a520e90abd961c38eb6d9ae">sector_edc</a> == NULL)</div>
<div class="line"><a id="l02503" name="l02503"></a><span class="lineno"> 2503</span> {</div>
<div class="line"><a id="l02504" name="l02504"></a><span class="lineno"> 2504</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Sector tag not found&quot;</span>);</div>
<div class="line"><a id="l02505" name="l02505"></a><span class="lineno"> 2505</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector_tag() = AARUF_ERROR_SECTOR_TAG_NOT_PRESENT&quot;</span>);</div>
<div class="line"><a id="l02506" name="l02506"></a><span class="lineno"> 2506</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#aa70d43d59e04b7147c14771c4821e670">AARUF_ERROR_SECTOR_TAG_NOT_PRESENT</a>;</div>
<div class="line"><a id="l02507" name="l02507"></a><span class="lineno"> 2507</span> }</div>
<div class="line"><a id="l02508" name="l02508"></a><span class="lineno"> 2508</span> </div>
<div class="line"><a id="l02509" name="l02509"></a><span class="lineno"> 2509</span> memcpy(<a class="code hl_variable" href="structngc__lfg__ctx.html#a9b5c7dbc3b197b77bef259cd8bbb408a">buffer</a>, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#a4dc244e21a520e90abd961c38eb6d9ae">sector_edc</a> + corrected_sector_address * 4, 4);</div>
<div class="line"><a id="l02510" name="l02510"></a><span class="lineno"> 2510</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector_tag() = AARUF_STATUS_OK&quot;</span>);</div>
<div class="line"><a id="l02511" name="l02511"></a><span class="lineno"> 2511</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a1d6e49f7e8a1fa489efa0a582e90b5de">AARUF_STATUS_OK</a>;</div>
<div class="line"><a id="l02512" name="l02512"></a><span class="lineno"> 2512</span> <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="group__SectorTags.html#ggaf863e81d172ce7a216d8687a8a23293aae7d3bd89f6d2ee69a8752b6bcbcdfdfa">kSectorTagDvdTitleKeyDecrypted</a>:</div>
<div class="line"><a id="l02513" name="l02513"></a><span class="lineno"> 2513</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ac970291b3449c04221827b9c2c18ac70">image_info</a>.<a class="code hl_variable" href="structImageInfo.html#a7ed25efcf8cec55d6609b83bcd17b2d0">MetadataMediaType</a> != <a class="code hl_enumvalue" href="enums_8h.html#abaa37b51ab0a4cc3d5d1a0b4820c8466aaf46f69508c3a90e5588c71f410a7f12">OpticalDisc</a>)</div>
<div class="line"><a id="l02514" name="l02514"></a><span class="lineno"> 2514</span> {</div>
<div class="line"><a id="l02515" name="l02515"></a><span class="lineno"> 2515</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Invalid media type for tag&quot;</span>);</div>
<div class="line"><a id="l02516" name="l02516"></a><span class="lineno"> 2516</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector_tag() = AARUF_ERROR_INCORRECT_MEDIA_TYPE&quot;</span>);</div>
<div class="line"><a id="l02517" name="l02517"></a><span class="lineno"> 2517</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a26707b86af4dd4f3bae7d57abd4345b0">AARUF_ERROR_INCORRECT_MEDIA_TYPE</a>;</div>
<div class="line"><a id="l02518" name="l02518"></a><span class="lineno"> 2518</span> }</div>
<div class="line"><a id="l02519" name="l02519"></a><span class="lineno"> 2519</span> </div>
<div class="line"><a id="l02520" name="l02520"></a><span class="lineno"> 2520</span> <span class="keywordflow">if</span>(*length != 5 || <a class="code hl_variable" href="structngc__lfg__ctx.html#a9b5c7dbc3b197b77bef259cd8bbb408a">buffer</a> == NULL)</div>
<div class="line"><a id="l02521" name="l02521"></a><span class="lineno"> 2521</span> {</div>
<div class="line"><a id="l02522" name="l02522"></a><span class="lineno"> 2522</span> *length = 5;</div>
<div class="line"><a id="l02523" name="l02523"></a><span class="lineno"> 2523</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Incorrect tag size&quot;</span>);</div>
<div class="line"><a id="l02524" name="l02524"></a><span class="lineno"> 2524</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector_tag() = AARUF_ERROR_INCORRECT_DATA_SIZE&quot;</span>);</div>
<div class="line"><a id="l02525" name="l02525"></a><span class="lineno"> 2525</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a8fc3ecb14777e72bebad62084b6caf16">AARUF_ERROR_INCORRECT_DATA_SIZE</a>;</div>
<div class="line"><a id="l02526" name="l02526"></a><span class="lineno"> 2526</span> }</div>
<div class="line"><a id="l02527" name="l02527"></a><span class="lineno"> 2527</span> </div>
<div class="line"><a id="l02528" name="l02528"></a><span class="lineno"> 2528</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#aa943f49c5e77c98bc4cddc9d0c2ae284">sector_decrypted_title_key</a> == NULL)</div>
<div class="line"><a id="l02529" name="l02529"></a><span class="lineno"> 2529</span> {</div>
<div class="line"><a id="l02530" name="l02530"></a><span class="lineno"> 2530</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Sector tag not found&quot;</span>);</div>
<div class="line"><a id="l02531" name="l02531"></a><span class="lineno"> 2531</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector_tag() = AARUF_ERROR_SECTOR_TAG_NOT_PRESENT&quot;</span>);</div>
<div class="line"><a id="l02532" name="l02532"></a><span class="lineno"> 2532</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#aa70d43d59e04b7147c14771c4821e670">AARUF_ERROR_SECTOR_TAG_NOT_PRESENT</a>;</div>
<div class="line"><a id="l02533" name="l02533"></a><span class="lineno"> 2533</span> }</div>
<div class="line"><a id="l02534" name="l02534"></a><span class="lineno"> 2534</span> </div>
<div class="line"><a id="l02535" name="l02535"></a><span class="lineno"> 2535</span> memcpy(<a class="code hl_variable" href="structngc__lfg__ctx.html#a9b5c7dbc3b197b77bef259cd8bbb408a">buffer</a>, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#aa943f49c5e77c98bc4cddc9d0c2ae284">sector_decrypted_title_key</a> + corrected_sector_address * 5, 5);</div>
<div class="line"><a id="l02536" name="l02536"></a><span class="lineno"> 2536</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector_tag() = AARUF_STATUS_OK&quot;</span>);</div>
<div class="line"><a id="l02537" name="l02537"></a><span class="lineno"> 2537</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a1d6e49f7e8a1fa489efa0a582e90b5de">AARUF_STATUS_OK</a>;</div>
<div class="line"><a id="l02538" name="l02538"></a><span class="lineno"> 2538</span> <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="group__SectorTags.html#ggaf863e81d172ce7a216d8687a8a23293aa67fa799c9ae13957ff80d10c6b98a935">kSectorTagAppleSony</a>:</div>
<div class="line"><a id="l02539" name="l02539"></a><span class="lineno"> 2539</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ac970291b3449c04221827b9c2c18ac70">image_info</a>.<a class="code hl_variable" href="structImageInfo.html#a7ed25efcf8cec55d6609b83bcd17b2d0">MetadataMediaType</a> != <a class="code hl_enumvalue" href="enums_8h.html#abaa37b51ab0a4cc3d5d1a0b4820c8466ad45ebea105994c5fe86200f36d9e6ccd">BlockMedia</a>)</div>
<div class="line"><a id="l02540" name="l02540"></a><span class="lineno"> 2540</span> {</div>
<div class="line"><a id="l02541" name="l02541"></a><span class="lineno"> 2541</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Invalid media type for tag&quot;</span>);</div>
<div class="line"><a id="l02542" name="l02542"></a><span class="lineno"> 2542</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector_tag() = AARUF_ERROR_INCORRECT_MEDIA_TYPE&quot;</span>);</div>
<div class="line"><a id="l02543" name="l02543"></a><span class="lineno"> 2543</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a26707b86af4dd4f3bae7d57abd4345b0">AARUF_ERROR_INCORRECT_MEDIA_TYPE</a>;</div>
<div class="line"><a id="l02544" name="l02544"></a><span class="lineno"> 2544</span> }</div>
<div class="line"><a id="l02545" name="l02545"></a><span class="lineno"> 2545</span> </div>
<div class="line"><a id="l02546" name="l02546"></a><span class="lineno"> 2546</span> <span class="keywordflow">if</span>(*length != 12 || <a class="code hl_variable" href="structngc__lfg__ctx.html#a9b5c7dbc3b197b77bef259cd8bbb408a">buffer</a> == NULL)</div>
<div class="line"><a id="l02547" name="l02547"></a><span class="lineno"> 2547</span> {</div>
<div class="line"><a id="l02548" name="l02548"></a><span class="lineno"> 2548</span> *length = 12;</div>
<div class="line"><a id="l02549" name="l02549"></a><span class="lineno"> 2549</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Incorrect tag size&quot;</span>);</div>
<div class="line"><a id="l02550" name="l02550"></a><span class="lineno"> 2550</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector_tag() = AARUF_ERROR_INCORRECT_DATA_SIZE&quot;</span>);</div>
<div class="line"><a id="l02551" name="l02551"></a><span class="lineno"> 2551</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a8fc3ecb14777e72bebad62084b6caf16">AARUF_ERROR_INCORRECT_DATA_SIZE</a>;</div>
<div class="line"><a id="l02552" name="l02552"></a><span class="lineno"> 2552</span> }</div>
<div class="line"><a id="l02553" name="l02553"></a><span class="lineno"> 2553</span> </div>
<div class="line"><a id="l02554" name="l02554"></a><span class="lineno"> 2554</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#aaf16c9ee5b05bac1ef44d29abef6134a">sector_subchannel</a> == NULL)</div>
<div class="line"><a id="l02555" name="l02555"></a><span class="lineno"> 2555</span> {</div>
<div class="line"><a id="l02556" name="l02556"></a><span class="lineno"> 2556</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Sector tag not found&quot;</span>);</div>
<div class="line"><a id="l02557" name="l02557"></a><span class="lineno"> 2557</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector_tag() = AARUF_ERROR_SECTOR_TAG_NOT_PRESENT&quot;</span>);</div>
<div class="line"><a id="l02558" name="l02558"></a><span class="lineno"> 2558</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#aa70d43d59e04b7147c14771c4821e670">AARUF_ERROR_SECTOR_TAG_NOT_PRESENT</a>;</div>
<div class="line"><a id="l02559" name="l02559"></a><span class="lineno"> 2559</span> }</div>
<div class="line"><a id="l02560" name="l02560"></a><span class="lineno"> 2560</span> </div>
<div class="line"><a id="l02561" name="l02561"></a><span class="lineno"> 2561</span> memcpy(<a class="code hl_variable" href="structngc__lfg__ctx.html#a9b5c7dbc3b197b77bef259cd8bbb408a">buffer</a>, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#aaf16c9ee5b05bac1ef44d29abef6134a">sector_subchannel</a> + corrected_sector_address * 12, 12);</div>
<div class="line"><a id="l02562" name="l02562"></a><span class="lineno"> 2562</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector_tag() = AARUF_STATUS_OK&quot;</span>);</div>
<div class="line"><a id="l02563" name="l02563"></a><span class="lineno"> 2563</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a1d6e49f7e8a1fa489efa0a582e90b5de">AARUF_STATUS_OK</a>;</div>
<div class="line"><a id="l02564" name="l02564"></a><span class="lineno"> 2564</span> <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="group__SectorTags.html#ggaf863e81d172ce7a216d8687a8a23293aa90d2b1fece121d351ab9f47c277f7f07">kSectorTagAppleProfile</a>:</div>
<div class="line"><a id="l02565" name="l02565"></a><span class="lineno"> 2565</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ac970291b3449c04221827b9c2c18ac70">image_info</a>.<a class="code hl_variable" href="structImageInfo.html#a7ed25efcf8cec55d6609b83bcd17b2d0">MetadataMediaType</a> != <a class="code hl_enumvalue" href="enums_8h.html#abaa37b51ab0a4cc3d5d1a0b4820c8466ad45ebea105994c5fe86200f36d9e6ccd">BlockMedia</a>)</div>
<div class="line"><a id="l02566" name="l02566"></a><span class="lineno"> 2566</span> {</div>
<div class="line"><a id="l02567" name="l02567"></a><span class="lineno"> 2567</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Invalid media type for tag&quot;</span>);</div>
<div class="line"><a id="l02568" name="l02568"></a><span class="lineno"> 2568</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector_tag() = AARUF_ERROR_INCORRECT_MEDIA_TYPE&quot;</span>);</div>
<div class="line"><a id="l02569" name="l02569"></a><span class="lineno"> 2569</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a26707b86af4dd4f3bae7d57abd4345b0">AARUF_ERROR_INCORRECT_MEDIA_TYPE</a>;</div>
<div class="line"><a id="l02570" name="l02570"></a><span class="lineno"> 2570</span> }</div>
<div class="line"><a id="l02571" name="l02571"></a><span class="lineno"> 2571</span> </div>
<div class="line"><a id="l02572" name="l02572"></a><span class="lineno"> 2572</span> <span class="keywordflow">if</span>(*length != 20 || <a class="code hl_variable" href="structngc__lfg__ctx.html#a9b5c7dbc3b197b77bef259cd8bbb408a">buffer</a> == NULL)</div>
<div class="line"><a id="l02573" name="l02573"></a><span class="lineno"> 2573</span> {</div>
<div class="line"><a id="l02574" name="l02574"></a><span class="lineno"> 2574</span> *length = 20;</div>
<div class="line"><a id="l02575" name="l02575"></a><span class="lineno"> 2575</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Incorrect tag size&quot;</span>);</div>
<div class="line"><a id="l02576" name="l02576"></a><span class="lineno"> 2576</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector_tag() = AARUF_ERROR_INCORRECT_DATA_SIZE&quot;</span>);</div>
<div class="line"><a id="l02577" name="l02577"></a><span class="lineno"> 2577</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a8fc3ecb14777e72bebad62084b6caf16">AARUF_ERROR_INCORRECT_DATA_SIZE</a>;</div>
<div class="line"><a id="l02578" name="l02578"></a><span class="lineno"> 2578</span> }</div>
<div class="line"><a id="l02579" name="l02579"></a><span class="lineno"> 2579</span> </div>
<div class="line"><a id="l02580" name="l02580"></a><span class="lineno"> 2580</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#aaf16c9ee5b05bac1ef44d29abef6134a">sector_subchannel</a> == NULL)</div>
<div class="line"><a id="l02581" name="l02581"></a><span class="lineno"> 2581</span> {</div>
<div class="line"><a id="l02582" name="l02582"></a><span class="lineno"> 2582</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Sector tag not found&quot;</span>);</div>
<div class="line"><a id="l02583" name="l02583"></a><span class="lineno"> 2583</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector_tag() = AARUF_ERROR_SECTOR_TAG_NOT_PRESENT&quot;</span>);</div>
<div class="line"><a id="l02584" name="l02584"></a><span class="lineno"> 2584</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#aa70d43d59e04b7147c14771c4821e670">AARUF_ERROR_SECTOR_TAG_NOT_PRESENT</a>;</div>
<div class="line"><a id="l02585" name="l02585"></a><span class="lineno"> 2585</span> }</div>
<div class="line"><a id="l02586" name="l02586"></a><span class="lineno"> 2586</span> </div>
<div class="line"><a id="l02587" name="l02587"></a><span class="lineno"> 2587</span> memcpy(<a class="code hl_variable" href="structngc__lfg__ctx.html#a9b5c7dbc3b197b77bef259cd8bbb408a">buffer</a>, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#aaf16c9ee5b05bac1ef44d29abef6134a">sector_subchannel</a> + corrected_sector_address * 20, 20);</div>
<div class="line"><a id="l02588" name="l02588"></a><span class="lineno"> 2588</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector_tag() = AARUF_STATUS_OK&quot;</span>);</div>
<div class="line"><a id="l02589" name="l02589"></a><span class="lineno"> 2589</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a1d6e49f7e8a1fa489efa0a582e90b5de">AARUF_STATUS_OK</a>;</div>
<div class="line"><a id="l02590" name="l02590"></a><span class="lineno"> 2590</span> <span class="keywordflow">case</span> <a class="code hl_enumvalue" href="group__SectorTags.html#ggaf863e81d172ce7a216d8687a8a23293aade55c2c3f852f5d6b0ef06e64e642e74">kSectorTagPriamDataTower</a>:</div>
<div class="line"><a id="l02591" name="l02591"></a><span class="lineno"> 2591</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#ac970291b3449c04221827b9c2c18ac70">image_info</a>.<a class="code hl_variable" href="structImageInfo.html#a7ed25efcf8cec55d6609b83bcd17b2d0">MetadataMediaType</a> != <a class="code hl_enumvalue" href="enums_8h.html#abaa37b51ab0a4cc3d5d1a0b4820c8466ad45ebea105994c5fe86200f36d9e6ccd">BlockMedia</a>)</div>
<div class="line"><a id="l02592" name="l02592"></a><span class="lineno"> 2592</span> {</div>
<div class="line"><a id="l02593" name="l02593"></a><span class="lineno"> 2593</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Invalid media type for tag&quot;</span>);</div>
<div class="line"><a id="l02594" name="l02594"></a><span class="lineno"> 2594</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector_tag() = AARUF_ERROR_INCORRECT_MEDIA_TYPE&quot;</span>);</div>
<div class="line"><a id="l02595" name="l02595"></a><span class="lineno"> 2595</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a26707b86af4dd4f3bae7d57abd4345b0">AARUF_ERROR_INCORRECT_MEDIA_TYPE</a>;</div>
<div class="line"><a id="l02596" name="l02596"></a><span class="lineno"> 2596</span> }</div>
<div class="line"><a id="l02597" name="l02597"></a><span class="lineno"> 2597</span> </div>
<div class="line"><a id="l02598" name="l02598"></a><span class="lineno"> 2598</span> <span class="keywordflow">if</span>(*length != 24 || <a class="code hl_variable" href="structngc__lfg__ctx.html#a9b5c7dbc3b197b77bef259cd8bbb408a">buffer</a> == NULL)</div>
<div class="line"><a id="l02599" name="l02599"></a><span class="lineno"> 2599</span> {</div>
<div class="line"><a id="l02600" name="l02600"></a><span class="lineno"> 2600</span> *length = 24;</div>
<div class="line"><a id="l02601" name="l02601"></a><span class="lineno"> 2601</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Incorrect tag size&quot;</span>);</div>
<div class="line"><a id="l02602" name="l02602"></a><span class="lineno"> 2602</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector_tag() = AARUF_ERROR_INCORRECT_DATA_SIZE&quot;</span>);</div>
<div class="line"><a id="l02603" name="l02603"></a><span class="lineno"> 2603</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a8fc3ecb14777e72bebad62084b6caf16">AARUF_ERROR_INCORRECT_DATA_SIZE</a>;</div>
<div class="line"><a id="l02604" name="l02604"></a><span class="lineno"> 2604</span> }</div>
<div class="line"><a id="l02605" name="l02605"></a><span class="lineno"> 2605</span> </div>
<div class="line"><a id="l02606" name="l02606"></a><span class="lineno"> 2606</span> <span class="keywordflow">if</span>(ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#aaf16c9ee5b05bac1ef44d29abef6134a">sector_subchannel</a> == NULL)</div>
<div class="line"><a id="l02607" name="l02607"></a><span class="lineno"> 2607</span> {</div>
<div class="line"><a id="l02608" name="l02608"></a><span class="lineno"> 2608</span> <a class="code hl_define" href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a>(<span class="stringliteral">&quot;Sector tag not found&quot;</span>);</div>
<div class="line"><a id="l02609" name="l02609"></a><span class="lineno"> 2609</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector_tag() = AARUF_ERROR_SECTOR_TAG_NOT_PRESENT&quot;</span>);</div>
<div class="line"><a id="l02610" name="l02610"></a><span class="lineno"> 2610</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#aa70d43d59e04b7147c14771c4821e670">AARUF_ERROR_SECTOR_TAG_NOT_PRESENT</a>;</div>
<div class="line"><a id="l02611" name="l02611"></a><span class="lineno"> 2611</span> }</div>
<div class="line"><a id="l02612" name="l02612"></a><span class="lineno"> 2612</span> </div>
<div class="line"><a id="l02613" name="l02613"></a><span class="lineno"> 2613</span> memcpy(<a class="code hl_variable" href="structngc__lfg__ctx.html#a9b5c7dbc3b197b77bef259cd8bbb408a">buffer</a>, ctx-&gt;<a class="code hl_variable" href="structaaruformat__context.html#aaf16c9ee5b05bac1ef44d29abef6134a">sector_subchannel</a> + corrected_sector_address * 24, 24);</div>
<div class="line"><a id="l02614" name="l02614"></a><span class="lineno"> 2614</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Exiting aaruf_read_sector_tag() = AARUF_STATUS_OK&quot;</span>);</div>
<div class="line"><a id="l02615" name="l02615"></a><span class="lineno"> 2615</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#a1d6e49f7e8a1fa489efa0a582e90b5de">AARUF_STATUS_OK</a>;</div>
<div class="line"><a id="l02616" name="l02616"></a><span class="lineno"> 2616</span> <span class="keywordflow">default</span>:</div>
<div class="line"><a id="l02617" name="l02617"></a><span class="lineno"> 2617</span> <a class="code hl_define" href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a>(<span class="stringliteral">&quot;Do not know how to read sector tag %d&quot;</span>, tag);</div>
<div class="line"><a id="l02618" name="l02618"></a><span class="lineno"> 2618</span> <span class="keywordflow">return</span> <a class="code hl_define" href="errors_8h.html#ad3340e78aca685a8ea4739fdfd04292f">AARUF_ERROR_INVALID_TAG</a>;</div>
<div class="line"><a id="l02619" name="l02619"></a><span class="lineno"> 2619</span> }</div>
<div class="line"><a id="l02620" name="l02620"></a><span class="lineno"> 2620</span>}</div>
</div>
<div class="ttc" id="aaaruformat_8h_html"><div class="ttname"><a href="aaruformat_8h.html">aaruformat.h</a></div></div>
<div class="ttc" id="aconsts_8h_html_a0b24c62ef1b78b72b9f4a42918f39e13"><div class="ttname"><a href="consts_8h.html#a0b24c62ef1b78b72b9f4a42918f39e13">CD_DFIX_MASK</a></div><div class="ttdeci">#define CD_DFIX_MASK</div><div class="ttdoc">Mask for extracting positional index (lower 24 bits) in Compact Disc suffix/prefix deduplicated block...</div><div class="ttdef"><b>Definition</b> <a href="consts_8h_source.html#l00112">consts.h:112</a></div></div>
<div class="ttc" id="aconsts_8h_html_a25fd08252b97a0230d3efc899bddd240"><div class="ttname"><a href="consts_8h.html#a25fd08252b97a0230d3efc899bddd240">LZMA_PROPERTIES_LENGTH</a></div><div class="ttdeci">#define LZMA_PROPERTIES_LENGTH</div><div class="ttdoc">Size in bytes of the fixed LZMA properties header (lc/lp/pb + dictionary size).</div><div class="ttdef"><b>Definition</b> <a href="consts_8h_source.html#l00082">consts.h:82</a></div></div>
<div class="ttc" id="aconsts_8h_html_a3c3ba66fe2b547655c9e4b16a1ba519a"><div class="ttname"><a href="consts_8h.html#a3c3ba66fe2b547655c9e4b16a1ba519a">AARU_MAGIC</a></div><div class="ttdeci">#define AARU_MAGIC</div><div class="ttdoc">Magic identifier for AaruFormat container (ASCII &quot;AARUFRMT&quot;).</div><div class="ttdef"><b>Definition</b> <a href="consts_8h_source.html#l00064">consts.h:64</a></div></div>
<div class="ttc" id="aconsts_8h_html_aa64757ba31a320f675fca1062111180f"><div class="ttname"><a href="consts_8h.html#aa64757ba31a320f675fca1062111180f">CD_XFIX_MASK</a></div><div class="ttdeci">#define CD_XFIX_MASK</div><div class="ttdoc">Mask for extracting correction / fix flags in Compact Disc suffix/prefix DDT entries.</div><div class="ttdef"><b>Definition</b> <a href="consts_8h_source.html#l00100">consts.h:100</a></div></div>
<div class="ttc" id="adecls_8h_html_a018e0da1c1f7e4f6187a982c0e40e056"><div class="ttname"><a href="decls_8h.html#a018e0da1c1f7e4f6187a982c0e40e056">AARU_CALL</a></div><div class="ttdeci">#define AARU_CALL</div><div class="ttdef"><b>Definition</b> <a href="decls_8h_source.html#l00046">decls.h:46</a></div></div>
<div class="ttc" id="adecls_8h_html_a12f3cbc43c2f57a11fbba32a71ba2704"><div class="ttname"><a href="decls_8h.html#a12f3cbc43c2f57a11fbba32a71ba2704">aaruf_lzma_decode_buffer</a></div><div class="ttdeci">int32_t aaruf_lzma_decode_buffer(uint8_t *dst_buffer, size_t *dst_size, const uint8_t *src_buffer, size_t *src_size, const uint8_t *props, size_t props_size)</div><div class="ttdoc">Decodes an LZMA-compressed buffer.</div><div class="ttdef"><b>Definition</b> <a href="lzma_8c_source.html#l00039">lzma.c:39</a></div></div>
<div class="ttc" id="adecls_8h_html_a73c3788f7376196abd596d6d846466b1"><div class="ttname"><a href="decls_8h.html#a73c3788f7376196abd596d6d846466b1">aaruf_ecc_cd_reconstruct_prefix</a></div><div class="ttdeci">void aaruf_ecc_cd_reconstruct_prefix(uint8_t *sector, uint8_t type, int64_t lba)</div><div class="ttdoc">Reconstructs the prefix (sync, address, mode) of a CD sector.</div><div class="ttdef"><b>Definition</b> <a href="ecc__cd_8c_source.html#l00409">ecc_cd.c:409</a></div></div>
<div class="ttc" id="adecls_8h_html_a9001412c35f3c92d3a9320d27b0d97f9"><div class="ttname"><a href="decls_8h.html#a9001412c35f3c92d3a9320d27b0d97f9">AARU_EXPORT</a></div><div class="ttdeci">#define AARU_EXPORT</div><div class="ttdef"><b>Definition</b> <a href="decls_8h_source.html#l00055">decls.h:55</a></div></div>
<div class="ttc" id="adecls_8h_html_a9c9e2440119b8d7e67cb2c40125bf295"><div class="ttname"><a href="decls_8h.html#a9c9e2440119b8d7e67cb2c40125bf295">aaruf_ecc_cd_reconstruct</a></div><div class="ttdeci">void aaruf_ecc_cd_reconstruct(void *context, uint8_t *sector, uint8_t type)</div><div class="ttdoc">Reconstructs the EDC and ECC fields of a CD sector.</div><div class="ttdef"><b>Definition</b> <a href="ecc__cd_8c_source.html#l00476">ecc_cd.c:476</a></div></div>
<div class="ttc" id="adecls_8h_html_ac0f8004dbea44979bf8b58c3e3a1a6ae"><div class="ttname"><a href="decls_8h.html#ac0f8004dbea44979bf8b58c3e3a1a6ae">aaruf_zstd_decode_buffer</a></div><div class="ttdeci">size_t aaruf_zstd_decode_buffer(uint8_t *dst_buffer, size_t dst_size, const uint8_t *src_buffer, size_t src_size)</div><div class="ttdoc">Decodes a Zstandard-compressed buffer.</div><div class="ttdef"><b>Definition</b> <a href="zstd_8c_source.html#l00034">zstd.c:34</a></div></div>
<div class="ttc" id="adecls_8h_html_af0ff6ad1495d50a8fa0ce0005be69471"><div class="ttname"><a href="decls_8h.html#af0ff6ad1495d50a8fa0ce0005be69471">aaruf_flac_decode_redbook_buffer</a></div><div class="ttdeci">size_t aaruf_flac_decode_redbook_buffer(uint8_t *dst_buffer, size_t dst_size, const uint8_t *src_buffer, size_t src_size)</div><div class="ttdoc">Decodes a FLAC-compressed Red Book audio buffer.</div><div class="ttdef"><b>Definition</b> <a href="flac_8c_source.html#l00048">flac.c:48</a></div></div>
<div class="ttc" id="aenums_8h_html_a54420623f26ab6bb61042b41cccf37a3a5a0811c5ee97536aef900cecb8787713"><div class="ttname"><a href="enums_8h.html#a54420623f26ab6bb61042b41cccf37a3a5a0811c5ee97536aef900cecb8787713">DataBlock</a></div><div class="ttdeci">@ DataBlock</div><div class="ttdoc">Block containing data.</div><div class="ttdef"><b>Definition</b> <a href="enums_8h_source.html#l00164">enums.h:164</a></div></div>
<div class="ttc" id="aenums_8h_html_a74e216af87b18a5fbf0204a52dd1bba0a018d08672ed62f6f147db4f25ce3917c"><div class="ttname"><a href="enums_8h.html#a74e216af87b18a5fbf0204a52dd1bba0a018d08672ed62f6f147db4f25ce3917c">SectorStatusDumped</a></div><div class="ttdeci">@ SectorStatusDumped</div><div class="ttdoc">Sector(s) successfully dumped without error.</div><div class="ttdef"><b>Definition</b> <a href="enums_8h_source.html#l00259">enums.h:259</a></div></div>
<div class="ttc" id="aenums_8h_html_a74e216af87b18a5fbf0204a52dd1bba0a032ffcff283d253414768f0fa035af4d"><div class="ttname"><a href="enums_8h.html#a74e216af87b18a5fbf0204a52dd1bba0a032ffcff283d253414768f0fa035af4d">SectorStatusNotDumped</a></div><div class="ttdeci">@ SectorStatusNotDumped</div><div class="ttdoc">Sector(s) not yet acquired during image dumping.</div><div class="ttdef"><b>Definition</b> <a href="enums_8h_source.html#l00258">enums.h:258</a></div></div>
<div class="ttc" id="aenums_8h_html_a74e216af87b18a5fbf0204a52dd1bba0a0aee129dfb9ac43234206185e777975c"><div class="ttname"><a href="enums_8h.html#a74e216af87b18a5fbf0204a52dd1bba0a0aee129dfb9ac43234206185e777975c">SectorStatusGenerable</a></div><div class="ttdeci">@ SectorStatusGenerable</div><div class="ttdoc">Content can be generated using a known algorithm.</div><div class="ttdef"><b>Definition</b> <a href="enums_8h_source.html#l00269">enums.h:269</a></div></div>
<div class="ttc" id="aenums_8h_html_a74e216af87b18a5fbf0204a52dd1bba0a4f144fd3d47ebf7e4103c3b89e051735"><div class="ttname"><a href="enums_8h.html#a74e216af87b18a5fbf0204a52dd1bba0a4f144fd3d47ebf7e4103c3b89e051735">SectorStatusUnencrypted</a></div><div class="ttdeci">@ SectorStatusUnencrypted</div><div class="ttdoc">Content originally encrypted but stored decrypted in image.</div><div class="ttdef"><b>Definition</b> <a href="enums_8h_source.html#l00268">enums.h:268</a></div></div>
<div class="ttc" id="aenums_8h_html_a74e216af87b18a5fbf0204a52dd1bba0a6a9daca7b82c2929eaf1b081ba7c7437"><div class="ttname"><a href="enums_8h.html#a74e216af87b18a5fbf0204a52dd1bba0a6a9daca7b82c2929eaf1b081ba7c7437">SectorStatusMode2Form2NoCrc</a></div><div class="ttdeci">@ SectorStatusMode2Form2NoCrc</div><div class="ttdoc">Suffix matches MODE 2 Form 2 but CRC empty/missing.</div><div class="ttdef"><b>Definition</b> <a href="enums_8h_source.html#l00264">enums.h:264</a></div></div>
<div class="ttc" id="aenums_8h_html_a74e216af87b18a5fbf0204a52dd1bba0a98ca0ee5ee0653575fc98b501a3387cf"><div class="ttname"><a href="enums_8h.html#a74e216af87b18a5fbf0204a52dd1bba0a98ca0ee5ee0653575fc98b501a3387cf">SectorStatusMode1Correct</a></div><div class="ttdeci">@ SectorStatusMode1Correct</div><div class="ttdoc">Valid MODE 1 data with regenerable suffix/prefix.</div><div class="ttdef"><b>Definition</b> <a href="enums_8h_source.html#l00261">enums.h:261</a></div></div>
<div class="ttc" id="aenums_8h_html_a74e216af87b18a5fbf0204a52dd1bba0aa651286b685968cf12dbf8949c7c209d"><div class="ttname"><a href="enums_8h.html#a74e216af87b18a5fbf0204a52dd1bba0aa651286b685968cf12dbf8949c7c209d">SectorStatusMode2Form2Ok</a></div><div class="ttdeci">@ SectorStatusMode2Form2Ok</div><div class="ttdoc">Suffix matches MODE 2 Form 2 with valid CRC.</div><div class="ttdef"><b>Definition</b> <a href="enums_8h_source.html#l00263">enums.h:263</a></div></div>
<div class="ttc" id="aenums_8h_html_a74e216af87b18a5fbf0204a52dd1bba0af8e8f72cb68b416548d729560b23ff7d"><div class="ttname"><a href="enums_8h.html#a74e216af87b18a5fbf0204a52dd1bba0af8e8f72cb68b416548d729560b23ff7d">SectorStatusMode2Form1Ok</a></div><div class="ttdeci">@ SectorStatusMode2Form1Ok</div><div class="ttdoc">Suffix verified/regenerable for MODE 2 Form 1.</div><div class="ttdef"><b>Definition</b> <a href="enums_8h_source.html#l00262">enums.h:262</a></div></div>
<div class="ttc" id="aenums_8h_html_ab72dc399e3946b3c40a5ad8c8e3254b7a1b85919d51f4333b17766b19a7c7372d"><div class="ttname"><a href="enums_8h.html#ab72dc399e3946b3c40a5ad8c8e3254b7a1b85919d51f4333b17766b19a7c7372d">Correct</a></div><div class="ttdeci">@ Correct</div><div class="ttdoc">Sector(s) contain valid MODE 1 data with regenerable suffix/prefix.</div><div class="ttdef"><b>Definition</b> <a href="enums_8h_source.html#l00211">enums.h:211</a></div></div>
<div class="ttc" id="aenums_8h_html_ab72dc399e3946b3c40a5ad8c8e3254b7a347d3d74e3c5f56a3e41eb82e59b952f"><div class="ttname"><a href="enums_8h.html#ab72dc399e3946b3c40a5ad8c8e3254b7a347d3d74e3c5f56a3e41eb82e59b952f">Mode2Form2Ok</a></div><div class="ttdeci">@ Mode2Form2Ok</div><div class="ttdoc">Sector suffix valid for MODE 2 Form 2 with correct CRC.</div><div class="ttdef"><b>Definition</b> <a href="enums_8h_source.html#l00213">enums.h:213</a></div></div>
<div class="ttc" id="aenums_8h_html_ab72dc399e3946b3c40a5ad8c8e3254b7aa0182bd12e0fed2c6f2ea368cc9a94a8"><div class="ttname"><a href="enums_8h.html#ab72dc399e3946b3c40a5ad8c8e3254b7aa0182bd12e0fed2c6f2ea368cc9a94a8">Mode2Form1Ok</a></div><div class="ttdeci">@ Mode2Form1Ok</div><div class="ttdoc">Sector suffix valid for MODE 2 Form 1; regenerable.</div><div class="ttdef"><b>Definition</b> <a href="enums_8h_source.html#l00212">enums.h:212</a></div></div>
<div class="ttc" id="aenums_8h_html_ab72dc399e3946b3c40a5ad8c8e3254b7ab3fac5cd103786d64f7ee67bcb9ac458"><div class="ttname"><a href="enums_8h.html#ab72dc399e3946b3c40a5ad8c8e3254b7ab3fac5cd103786d64f7ee67bcb9ac458">NotDumped</a></div><div class="ttdeci">@ NotDumped</div><div class="ttdoc">Sector(s) have not yet been dumped.</div><div class="ttdef"><b>Definition</b> <a href="enums_8h_source.html#l00210">enums.h:210</a></div></div>
<div class="ttc" id="aenums_8h_html_ab72dc399e3946b3c40a5ad8c8e3254b7abe4c0f68addb6b935a63401cafcb8d28"><div class="ttname"><a href="enums_8h.html#ab72dc399e3946b3c40a5ad8c8e3254b7abe4c0f68addb6b935a63401cafcb8d28">Mode2Form2NoCrc</a></div><div class="ttdeci">@ Mode2Form2NoCrc</div><div class="ttdoc">Sector suffix valid for MODE 2 Form 2 but CRC absent/empty.</div><div class="ttdef"><b>Definition</b> <a href="enums_8h_source.html#l00214">enums.h:214</a></div></div>
<div class="ttc" id="aenums_8h_html_abaa37b51ab0a4cc3d5d1a0b4820c8466aaf46f69508c3a90e5588c71f410a7f12"><div class="ttname"><a href="enums_8h.html#abaa37b51ab0a4cc3d5d1a0b4820c8466aaf46f69508c3a90e5588c71f410a7f12">OpticalDisc</a></div><div class="ttdeci">@ OpticalDisc</div><div class="ttdoc">Purely optical discs.</div><div class="ttdef"><b>Definition</b> <a href="enums_8h_source.html#l00246">enums.h:246</a></div></div>
<div class="ttc" id="aenums_8h_html_abaa37b51ab0a4cc3d5d1a0b4820c8466ad45ebea105994c5fe86200f36d9e6ccd"><div class="ttname"><a href="enums_8h.html#abaa37b51ab0a4cc3d5d1a0b4820c8466ad45ebea105994c5fe86200f36d9e6ccd">BlockMedia</a></div><div class="ttdeci">@ BlockMedia</div><div class="ttdoc">Media that is physically block-based or abstracted like that.</div><div class="ttdef"><b>Definition</b> <a href="enums_8h_source.html#l00247">enums.h:247</a></div></div>
<div class="ttc" id="aenums_8h_html_ad80740dd555f7d3688d2c4d9f44d3b04a38e1c68f36d8936ca82aac98c2007df0"><div class="ttname"><a href="enums_8h.html#ad80740dd555f7d3688d2c4d9f44d3b04a38e1c68f36d8936ca82aac98c2007df0">kTrackTypeCdMode2Form2</a></div><div class="ttdeci">@ kTrackTypeCdMode2Form2</div><div class="ttdoc">Compact Disc Mode 2 Form 2 data track.</div><div class="ttdef"><b>Definition</b> <a href="enums_8h_source.html#l00228">enums.h:228</a></div></div>
<div class="ttc" id="aenums_8h_html_ad80740dd555f7d3688d2c4d9f44d3b04a5d3dc0fd97f23ece1341779f859279d3"><div class="ttname"><a href="enums_8h.html#ad80740dd555f7d3688d2c4d9f44d3b04a5d3dc0fd97f23ece1341779f859279d3">kTrackTypeData</a></div><div class="ttdeci">@ kTrackTypeData</div><div class="ttdoc">Generic data track (not further specified).</div><div class="ttdef"><b>Definition</b> <a href="enums_8h_source.html#l00224">enums.h:224</a></div></div>
<div class="ttc" id="aenums_8h_html_ad80740dd555f7d3688d2c4d9f44d3b04a7fa55ee91679f9a53c45d1fcfdaf3192"><div class="ttname"><a href="enums_8h.html#ad80740dd555f7d3688d2c4d9f44d3b04a7fa55ee91679f9a53c45d1fcfdaf3192">kTrackTypeCdMode2Form1</a></div><div class="ttdeci">@ kTrackTypeCdMode2Form1</div><div class="ttdoc">Compact Disc Mode 2 Form 1 data track.</div><div class="ttdef"><b>Definition</b> <a href="enums_8h_source.html#l00227">enums.h:227</a></div></div>
<div class="ttc" id="aenums_8h_html_ad80740dd555f7d3688d2c4d9f44d3b04aa0b36876016ed857ef77f94cdc753b52"><div class="ttname"><a href="enums_8h.html#ad80740dd555f7d3688d2c4d9f44d3b04aa0b36876016ed857ef77f94cdc753b52">kTrackTypeAudio</a></div><div class="ttdeci">@ kTrackTypeAudio</div><div class="ttdoc">Audio track.</div><div class="ttdef"><b>Definition</b> <a href="enums_8h_source.html#l00223">enums.h:223</a></div></div>
<div class="ttc" id="aenums_8h_html_ad80740dd555f7d3688d2c4d9f44d3b04ad491750f90b88817fdaeda1263d7527d"><div class="ttname"><a href="enums_8h.html#ad80740dd555f7d3688d2c4d9f44d3b04ad491750f90b88817fdaeda1263d7527d">kTrackTypeCdMode2Formless</a></div><div class="ttdeci">@ kTrackTypeCdMode2Formless</div><div class="ttdoc">Compact Disc Mode 2 (formless) data track.</div><div class="ttdef"><b>Definition</b> <a href="enums_8h_source.html#l00226">enums.h:226</a></div></div>
<div class="ttc" id="aenums_8h_html_ad80740dd555f7d3688d2c4d9f44d3b04ae91029165f582169f52f9633d0485147"><div class="ttname"><a href="enums_8h.html#ad80740dd555f7d3688d2c4d9f44d3b04ae91029165f582169f52f9633d0485147">kTrackTypeCdMode1</a></div><div class="ttdeci">@ kTrackTypeCdMode1</div><div class="ttdoc">Compact Disc Mode 1 data track.</div><div class="ttdef"><b>Definition</b> <a href="enums_8h_source.html#l00225">enums.h:225</a></div></div>
<div class="ttc" id="aenums_8h_html_affec749ed88365143745313ae9168263a66b049c2b816874ab71b06cebf5afcd7"><div class="ttname"><a href="enums_8h.html#affec749ed88365143745313ae9168263a66b049c2b816874ab71b06cebf5afcd7">kCompressionLzma</a></div><div class="ttdeci">@ kCompressionLzma</div><div class="ttdoc">LZMA compression.</div><div class="ttdef"><b>Definition</b> <a href="enums_8h_source.html#l00034">enums.h:34</a></div></div>
<div class="ttc" id="aenums_8h_html_affec749ed88365143745313ae9168263a6925460497824fd20caa5ba1925cde84"><div class="ttname"><a href="enums_8h.html#affec749ed88365143745313ae9168263a6925460497824fd20caa5ba1925cde84">kCompressionNone</a></div><div class="ttdeci">@ kCompressionNone</div><div class="ttdoc">Not compressed.</div><div class="ttdef"><b>Definition</b> <a href="enums_8h_source.html#l00033">enums.h:33</a></div></div>
<div class="ttc" id="aenums_8h_html_affec749ed88365143745313ae9168263a6ee0deaccf9cd167806cc479afffc0cc"><div class="ttname"><a href="enums_8h.html#affec749ed88365143745313ae9168263a6ee0deaccf9cd167806cc479afffc0cc">kCompressionZstd</a></div><div class="ttdeci">@ kCompressionZstd</div><div class="ttdoc">Zstandard compression.</div><div class="ttdef"><b>Definition</b> <a href="enums_8h_source.html#l00037">enums.h:37</a></div></div>
<div class="ttc" id="aenums_8h_html_affec749ed88365143745313ae9168263ab68094bb67edceda03f5044de1e54428"><div class="ttname"><a href="enums_8h.html#affec749ed88365143745313ae9168263ab68094bb67edceda03f5044de1e54428">kCompressionFlac</a></div><div class="ttdeci">@ kCompressionFlac</div><div class="ttdoc">FLAC compression.</div><div class="ttdef"><b>Definition</b> <a href="enums_8h_source.html#l00035">enums.h:35</a></div></div>
<div class="ttc" id="aerasure__internal_8h_html"><div class="ttname"><a href="erasure__internal_8h.html">erasure_internal.h</a></div></div>
<div class="ttc" id="aerasure__internal_8h_html_a7a9ac507738cdf72e951f152edd4d233"><div class="ttname"><a href="erasure__internal_8h.html#a7a9ac507738cdf72e951f152edd4d233">ec_recover_data_block</a></div><div class="ttdeci">int32_t ec_recover_data_block(aaruformat_context *ctx, uint64_t block_offset, uint64_t offset, uint8_t *data, uint32_t *length, uint8_t sector_status)</div><div class="ttdoc">Attempt to recover a data block that failed decompression or CRC verification.</div><div class="ttdef"><b>Definition</b> <a href="erasure_8c_source.html#l01145">erasure.c:1145</a></div></div>
<div class="ttc" id="aerrors_8h_html_a1d6e49f7e8a1fa489efa0a582e90b5de"><div class="ttname"><a href="errors_8h.html#a1d6e49f7e8a1fa489efa0a582e90b5de">AARUF_STATUS_OK</a></div><div class="ttdeci">#define AARUF_STATUS_OK</div><div class="ttdoc">Sector present and read without uncorrectable errors.</div><div class="ttdef"><b>Definition</b> <a href="errors_8h_source.html#l00081">errors.h:81</a></div></div>
<div class="ttc" id="aerrors_8h_html_a26707b86af4dd4f3bae7d57abd4345b0"><div class="ttname"><a href="errors_8h.html#a26707b86af4dd4f3bae7d57abd4345b0">AARUF_ERROR_INCORRECT_MEDIA_TYPE</a></div><div class="ttdeci">#define AARUF_ERROR_INCORRECT_MEDIA_TYPE</div><div class="ttdoc">Operation incompatible with image media type.</div><div class="ttdef"><b>Definition</b> <a href="errors_8h_source.html#l00051">errors.h:51</a></div></div>
<div class="ttc" id="aerrors_8h_html_a32b645da87003df886a5742d23f8ca19"><div class="ttname"><a href="errors_8h.html#a32b645da87003df886a5742d23f8ca19">AARUF_ERROR_TRACK_NOT_FOUND</a></div><div class="ttdeci">#define AARUF_ERROR_TRACK_NOT_FOUND</div><div class="ttdoc">Referenced track number not present.</div><div class="ttdef"><b>Definition</b> <a href="errors_8h_source.html#l00052">errors.h:52</a></div></div>
<div class="ttc" id="aerrors_8h_html_a3459a04771fe04f8f77bfa90563a4375"><div class="ttname"><a href="errors_8h.html#a3459a04771fe04f8f77bfa90563a4375">AARUF_ERROR_CANNOT_READ_HEADER</a></div><div class="ttdeci">#define AARUF_ERROR_CANNOT_READ_HEADER</div><div class="ttdoc">Failed to read container header.</div><div class="ttdef"><b>Definition</b> <a href="errors_8h_source.html#l00045">errors.h:45</a></div></div>
<div class="ttc" id="aerrors_8h_html_a35a771e3648bf971a004d4b2be9b5ec4"><div class="ttname"><a href="errors_8h.html#a35a771e3648bf971a004d4b2be9b5ec4">AARUF_ERROR_NOT_ENOUGH_MEMORY</a></div><div class="ttdeci">#define AARUF_ERROR_NOT_ENOUGH_MEMORY</div><div class="ttdoc">Memory allocation failure (critical).</div><div class="ttdef"><b>Definition</b> <a href="errors_8h_source.html#l00048">errors.h:48</a></div></div>
<div class="ttc" id="aerrors_8h_html_a3f6069602fee5f1264befab13708c0ef"><div class="ttname"><a href="errors_8h.html#a3f6069602fee5f1264befab13708c0ef">AARUF_ERROR_SECTOR_OUT_OF_BOUNDS</a></div><div class="ttdeci">#define AARUF_ERROR_SECTOR_OUT_OF_BOUNDS</div><div class="ttdoc">Requested logical sector outside media bounds.</div><div class="ttdef"><b>Definition</b> <a href="errors_8h_source.html#l00044">errors.h:44</a></div></div>
<div class="ttc" id="aerrors_8h_html_a604a2b6b7bf491f7e62a817b6c887f32"><div class="ttname"><a href="errors_8h.html#a604a2b6b7bf491f7e62a817b6c887f32">AARUF_ERROR_INVALID_TRACK_FORMAT</a></div><div class="ttdeci">#define AARUF_ERROR_INVALID_TRACK_FORMAT</div><div class="ttdoc">Track metadata internally inconsistent or malformed.</div><div class="ttdef"><b>Definition</b> <a href="errors_8h_source.html#l00054">errors.h:54</a></div></div>
<div class="ttc" id="aerrors_8h_html_a67753dacbd0ffdd397e563a8a5ecd271"><div class="ttname"><a href="errors_8h.html#a67753dacbd0ffdd397e563a8a5ecd271">AARUF_ERROR_CANNOT_READ_BLOCK</a></div><div class="ttdeci">#define AARUF_ERROR_CANNOT_READ_BLOCK</div><div class="ttdoc">Generic block read failure (seek/read error).</div><div class="ttdef"><b>Definition</b> <a href="errors_8h_source.html#l00046">errors.h:46</a></div></div>
<div class="ttc" id="aerrors_8h_html_a8fc3ecb14777e72bebad62084b6caf16"><div class="ttname"><a href="errors_8h.html#a8fc3ecb14777e72bebad62084b6caf16">AARUF_ERROR_INCORRECT_DATA_SIZE</a></div><div class="ttdeci">#define AARUF_ERROR_INCORRECT_DATA_SIZE</div><div class="ttdoc">Data size does not match expected size.</div><div class="ttdef"><b>Definition</b> <a href="errors_8h_source.html#l00065">errors.h:65</a></div></div>
<div class="ttc" id="aerrors_8h_html_aa70d43d59e04b7147c14771c4821e670"><div class="ttname"><a href="errors_8h.html#aa70d43d59e04b7147c14771c4821e670">AARUF_ERROR_SECTOR_TAG_NOT_PRESENT</a></div><div class="ttdeci">#define AARUF_ERROR_SECTOR_TAG_NOT_PRESENT</div><div class="ttdoc">Requested sector tag (e.g. subchannel/prefix) not stored.</div><div class="ttdef"><b>Definition</b> <a href="errors_8h_source.html#l00055">errors.h:55</a></div></div>
<div class="ttc" id="aerrors_8h_html_ab629288e7ddaf4dd8419621e6963e2cf"><div class="ttname"><a href="errors_8h.html#ab629288e7ddaf4dd8419621e6963e2cf">AARUF_STATUS_SECTOR_NOT_DUMPED</a></div><div class="ttdeci">#define AARUF_STATUS_SECTOR_NOT_DUMPED</div><div class="ttdoc">Sector not captured (gap / missing / intentionally skipped).</div><div class="ttdef"><b>Definition</b> <a href="errors_8h_source.html#l00082">errors.h:82</a></div></div>
<div class="ttc" id="aerrors_8h_html_abb63e240b11d790da83bd34507b57851"><div class="ttname"><a href="errors_8h.html#abb63e240b11d790da83bd34507b57851">AARUF_ERROR_NOT_AARUFORMAT</a></div><div class="ttdeci">#define AARUF_ERROR_NOT_AARUFORMAT</div><div class="ttdoc">Input file/stream failed magic or structural validation.</div><div class="ttdef"><b>Definition</b> <a href="errors_8h_source.html#l00040">errors.h:40</a></div></div>
<div class="ttc" id="aerrors_8h_html_ac9f4e38e8d5a1f940c9cd0c7f6788c37"><div class="ttname"><a href="errors_8h.html#ac9f4e38e8d5a1f940c9cd0c7f6788c37">AARUF_ERROR_CANNOT_DECOMPRESS_BLOCK</a></div><div class="ttdeci">#define AARUF_ERROR_CANNOT_DECOMPRESS_BLOCK</div><div class="ttdoc">Decompression routine failed or size mismatch.</div><div class="ttdef"><b>Definition</b> <a href="errors_8h_source.html#l00056">errors.h:56</a></div></div>
<div class="ttc" id="aerrors_8h_html_ad3340e78aca685a8ea4739fdfd04292f"><div class="ttname"><a href="errors_8h.html#ad3340e78aca685a8ea4739fdfd04292f">AARUF_ERROR_INVALID_TAG</a></div><div class="ttdeci">#define AARUF_ERROR_INVALID_TAG</div><div class="ttdoc">Invalid or unsupported media or sector tag format.</div><div class="ttdef"><b>Definition</b> <a href="errors_8h_source.html#l00066">errors.h:66</a></div></div>
<div class="ttc" id="aerrors_8h_html_ad87e52bef1f48eebb49458a5f64f7016"><div class="ttname"><a href="errors_8h.html#ad87e52bef1f48eebb49458a5f64f7016">AARUF_ERROR_MEDIA_TAG_NOT_PRESENT</a></div><div class="ttdeci">#define AARUF_ERROR_MEDIA_TAG_NOT_PRESENT</div><div class="ttdoc">Requested media tag absent.</div><div class="ttdef"><b>Definition</b> <a href="errors_8h_source.html#l00050">errors.h:50</a></div></div>
<div class="ttc" id="aerrors_8h_html_ae7eea5936a22100db46aac3e4312cdae"><div class="ttname"><a href="errors_8h.html#ae7eea5936a22100db46aac3e4312cdae">AARUF_ERROR_BUFFER_TOO_SMALL</a></div><div class="ttdeci">#define AARUF_ERROR_BUFFER_TOO_SMALL</div><div class="ttdoc">Caller-supplied buffer insufficient for data.</div><div class="ttdef"><b>Definition</b> <a href="errors_8h_source.html#l00049">errors.h:49</a></div></div>
<div class="ttc" id="aerrors_8h_html_afac13facfc59d6710c31daee0302e39d"><div class="ttname"><a href="errors_8h.html#afac13facfc59d6710c31daee0302e39d">AARUF_ERROR_REACHED_UNREACHABLE_CODE</a></div><div class="ttdeci">#define AARUF_ERROR_REACHED_UNREACHABLE_CODE</div><div class="ttdoc">Internal logic assertion hit unexpected path.</div><div class="ttdef"><b>Definition</b> <a href="errors_8h_source.html#l00053">errors.h:53</a></div></div>
<div class="ttc" id="agroup__MediaTypes_html_gga1499e9f8a76cb81b43b7a4b0dbe7e44aa0125edd84c12e1352cd217e927bcb0c0"><div class="ttname"><a href="group__MediaTypes.html#gga1499e9f8a76cb81b43b7a4b0dbe7e44aa0125edd84c12e1352cd217e927bcb0c0">BDREXL</a></div><div class="ttdeci">@ BDREXL</div><div class="ttdoc">BD-RE XL.</div><div class="ttdef"><b>Definition</b> <a href="aaru_8h_source.html#l00163">aaru.h:163</a></div></div>
<div class="ttc" id="agroup__MediaTypes_html_gga1499e9f8a76cb81b43b7a4b0dbe7e44aa0a8ba83da933d4ad284631784a991f19"><div class="ttname"><a href="group__MediaTypes.html#gga1499e9f8a76cb81b43b7a4b0dbe7e44aa0a8ba83da933d4ad284631784a991f19">AppleProfile</a></div><div class="ttdeci">@ AppleProfile</div><div class="ttdef"><b>Definition</b> <a href="aaru_8h_source.html#l00710">aaru.h:710</a></div></div>
<div class="ttc" id="agroup__MediaTypes_html_gga1499e9f8a76cb81b43b7a4b0dbe7e44aa22814704db9e2b9cb176a4ce374e52eb"><div class="ttname"><a href="group__MediaTypes.html#gga1499e9f8a76cb81b43b7a4b0dbe7e44aa22814704db9e2b9cb176a4ce374e52eb">PS5BD</a></div><div class="ttdeci">@ PS5BD</div><div class="ttdoc">Sony PlayStation 5 game Blu-ray.</div><div class="ttdef"><b>Definition</b> <a href="aaru_8h_source.html#l00215">aaru.h:215</a></div></div>
<div class="ttc" id="agroup__MediaTypes_html_gga1499e9f8a76cb81b43b7a4b0dbe7e44aa34fed1daeb2422887d826d127e6ad488"><div class="ttname"><a href="group__MediaTypes.html#gga1499e9f8a76cb81b43b7a4b0dbe7e44aa34fed1daeb2422887d826d127e6ad488">GOD</a></div><div class="ttdeci">@ GOD</div><div class="ttdoc">Nintendo GameCube Optical Disc.</div><div class="ttdef"><b>Definition</b> <a href="aaru_8h_source.html#l00514">aaru.h:514</a></div></div>
<div class="ttc" id="agroup__MediaTypes_html_gga1499e9f8a76cb81b43b7a4b0dbe7e44aa3d003ea60d3ecb7018a671e1302938a0"><div class="ttname"><a href="group__MediaTypes.html#gga1499e9f8a76cb81b43b7a4b0dbe7e44aa3d003ea60d3ecb7018a671e1302938a0">AppleSonySS</a></div><div class="ttdeci">@ AppleSonySS</div><div class="ttdoc">3.5&quot;, SS, DD, 80 tracks, 8 to 12 spt, 512 bytes/sector, GCR</div><div class="ttdef"><b>Definition</b> <a href="aaru_8h_source.html#l00252">aaru.h:252</a></div></div>
<div class="ttc" id="agroup__MediaTypes_html_gga1499e9f8a76cb81b43b7a4b0dbe7e44aa44d41093d0d9a56fa5e9fa317c4d795a"><div class="ttname"><a href="group__MediaTypes.html#gga1499e9f8a76cb81b43b7a4b0dbe7e44aa44d41093d0d9a56fa5e9fa317c4d795a">DVDPRWDL</a></div><div class="ttdeci">@ DVDPRWDL</div><div class="ttdoc">DVD+RW DL.</div><div class="ttdef"><b>Definition</b> <a href="aaru_8h_source.html#l00141">aaru.h:141</a></div></div>
<div class="ttc" id="agroup__MediaTypes_html_gga1499e9f8a76cb81b43b7a4b0dbe7e44aa47f36801fd65d252e56797ef3d9bf67f"><div class="ttname"><a href="group__MediaTypes.html#gga1499e9f8a76cb81b43b7a4b0dbe7e44aa47f36801fd65d252e56797ef3d9bf67f">BDRXL</a></div><div class="ttdeci">@ BDRXL</div><div class="ttdoc">BD-R XL.</div><div class="ttdef"><b>Definition</b> <a href="aaru_8h_source.html#l00162">aaru.h:162</a></div></div>
<div class="ttc" id="agroup__MediaTypes_html_gga1499e9f8a76cb81b43b7a4b0dbe7e44aa4cfa242859c1a136a740718d0440de9a"><div class="ttname"><a href="group__MediaTypes.html#gga1499e9f8a76cb81b43b7a4b0dbe7e44aa4cfa242859c1a136a740718d0440de9a">DVDRW</a></div><div class="ttdeci">@ DVDRW</div><div class="ttdoc">DVD-RW.</div><div class="ttdef"><b>Definition</b> <a href="aaru_8h_source.html#l00138">aaru.h:138</a></div></div>
<div class="ttc" id="agroup__MediaTypes_html_gga1499e9f8a76cb81b43b7a4b0dbe7e44aa502cfc3a14e97fdb99a2856c2f230e19"><div class="ttname"><a href="group__MediaTypes.html#gga1499e9f8a76cb81b43b7a4b0dbe7e44aa502cfc3a14e97fdb99a2856c2f230e19">DVDRWDL</a></div><div class="ttdeci">@ DVDRWDL</div><div class="ttdoc">DVD-RW DL.</div><div class="ttdef"><b>Definition</b> <a href="aaru_8h_source.html#l00145">aaru.h:145</a></div></div>
<div class="ttc" id="agroup__MediaTypes_html_gga1499e9f8a76cb81b43b7a4b0dbe7e44aa61ed400b8bb5104e7309b3823e85766c"><div class="ttname"><a href="group__MediaTypes.html#gga1499e9f8a76cb81b43b7a4b0dbe7e44aa61ed400b8bb5104e7309b3823e85766c">WOD</a></div><div class="ttdeci">@ WOD</div><div class="ttdoc">Nintendo Wii Optical Disc.</div><div class="ttdef"><b>Definition</b> <a href="aaru_8h_source.html#l00524">aaru.h:524</a></div></div>
<div class="ttc" id="agroup__MediaTypes_html_gga1499e9f8a76cb81b43b7a4b0dbe7e44aa626b10297c3bc07fbff69cf639208453"><div class="ttname"><a href="group__MediaTypes.html#gga1499e9f8a76cb81b43b7a4b0dbe7e44aa626b10297c3bc07fbff69cf639208453">PS3BD</a></div><div class="ttdeci">@ PS3BD</div><div class="ttdoc">Sony PlayStation 3 game Blu-ray.</div><div class="ttdef"><b>Definition</b> <a href="aaru_8h_source.html#l00211">aaru.h:211</a></div></div>
<div class="ttc" id="agroup__MediaTypes_html_gga1499e9f8a76cb81b43b7a4b0dbe7e44aa6903c0dd79d234b9379daaaa97e2c0fe"><div class="ttname"><a href="group__MediaTypes.html#gga1499e9f8a76cb81b43b7a4b0dbe7e44aa6903c0dd79d234b9379daaaa97e2c0fe">SACD</a></div><div class="ttdeci">@ SACD</div><div class="ttdoc">Super Audio CD (Scarlet Book).</div><div class="ttdef"><b>Definition</b> <a href="aaru_8h_source.html#l00121">aaru.h:121</a></div></div>
<div class="ttc" id="agroup__MediaTypes_html_gga1499e9f8a76cb81b43b7a4b0dbe7e44aa696d00e6341b0de368ea07ef7ae0e174"><div class="ttname"><a href="group__MediaTypes.html#gga1499e9f8a76cb81b43b7a4b0dbe7e44aa696d00e6341b0de368ea07ef7ae0e174">UHDBD</a></div><div class="ttdeci">@ UHDBD</div><div class="ttdoc">Ultra HD Blu-ray.</div><div class="ttdef"><b>Definition</b> <a href="aaru_8h_source.html#l00164">aaru.h:164</a></div></div>
<div class="ttc" id="agroup__MediaTypes_html_gga1499e9f8a76cb81b43b7a4b0dbe7e44aa6a04ebe8862d4f729e9dad48bfe92b99"><div class="ttname"><a href="group__MediaTypes.html#gga1499e9f8a76cb81b43b7a4b0dbe7e44aa6a04ebe8862d4f729e9dad48bfe92b99">DVDPRDL</a></div><div class="ttdeci">@ DVDPRDL</div><div class="ttdoc">DVD+R DL.</div><div class="ttdef"><b>Definition</b> <a href="aaru_8h_source.html#l00143">aaru.h:143</a></div></div>
<div class="ttc" id="agroup__MediaTypes_html_gga1499e9f8a76cb81b43b7a4b0dbe7e44aa711ac65a3b3a2d5392d2efee1616bcd7"><div class="ttname"><a href="group__MediaTypes.html#gga1499e9f8a76cb81b43b7a4b0dbe7e44aa711ac65a3b3a2d5392d2efee1616bcd7">DVDR</a></div><div class="ttdeci">@ DVDR</div><div class="ttdoc">DVD-R.</div><div class="ttdef"><b>Definition</b> <a href="aaru_8h_source.html#l00137">aaru.h:137</a></div></div>
<div class="ttc" id="agroup__MediaTypes_html_gga1499e9f8a76cb81b43b7a4b0dbe7e44aa727f071d5dd887fd6645e112cfcab197"><div class="ttname"><a href="group__MediaTypes.html#gga1499e9f8a76cb81b43b7a4b0dbe7e44aa727f071d5dd887fd6645e112cfcab197">PS3DVD</a></div><div class="ttdeci">@ PS3DVD</div><div class="ttdoc">Sony PlayStation 3 game DVD.</div><div class="ttdef"><b>Definition</b> <a href="aaru_8h_source.html#l00210">aaru.h:210</a></div></div>
<div class="ttc" id="agroup__MediaTypes_html_gga1499e9f8a76cb81b43b7a4b0dbe7e44aa79ba622fe51ab85f82ac1fef5d91ecf0"><div class="ttname"><a href="group__MediaTypes.html#gga1499e9f8a76cb81b43b7a4b0dbe7e44aa79ba622fe51ab85f82ac1fef5d91ecf0">BDROM</a></div><div class="ttdeci">@ BDROM</div><div class="ttdoc">BD-ROM (and BD Video).</div><div class="ttdef"><b>Definition</b> <a href="aaru_8h_source.html#l00159">aaru.h:159</a></div></div>
<div class="ttc" id="agroup__MediaTypes_html_gga1499e9f8a76cb81b43b7a4b0dbe7e44aa8dccd9aa3702e0112d3c4d6f3388820e"><div class="ttname"><a href="group__MediaTypes.html#gga1499e9f8a76cb81b43b7a4b0dbe7e44aa8dccd9aa3702e0112d3c4d6f3388820e">PS2DVD</a></div><div class="ttdeci">@ PS2DVD</div><div class="ttdoc">Sony PlayStation 2 game DVD.</div><div class="ttdef"><b>Definition</b> <a href="aaru_8h_source.html#l00209">aaru.h:209</a></div></div>
<div class="ttc" id="agroup__MediaTypes_html_gga1499e9f8a76cb81b43b7a4b0dbe7e44aa933052f31f7e81b8c25f959861039774"><div class="ttname"><a href="group__MediaTypes.html#gga1499e9f8a76cb81b43b7a4b0dbe7e44aa933052f31f7e81b8c25f959861039774">XGD4</a></div><div class="ttdeci">@ XGD4</div><div class="ttdoc">Microsoft X-box One Game Disc.</div><div class="ttdef"><b>Definition</b> <a href="aaru_8h_source.html#l00222">aaru.h:222</a></div></div>
<div class="ttc" id="agroup__MediaTypes_html_gga1499e9f8a76cb81b43b7a4b0dbe7e44aaac8f48f5db15c7112e6fe4a466582b33"><div class="ttname"><a href="group__MediaTypes.html#gga1499e9f8a76cb81b43b7a4b0dbe7e44aaac8f48f5db15c7112e6fe4a466582b33">BDR</a></div><div class="ttdeci">@ BDR</div><div class="ttdoc">BD-R.</div><div class="ttdef"><b>Definition</b> <a href="aaru_8h_source.html#l00160">aaru.h:160</a></div></div>
<div class="ttc" id="agroup__MediaTypes_html_gga1499e9f8a76cb81b43b7a4b0dbe7e44aaafd24844aa48e831be04f4a6446c9e48"><div class="ttname"><a href="group__MediaTypes.html#gga1499e9f8a76cb81b43b7a4b0dbe7e44aaafd24844aa48e831be04f4a6446c9e48">PS4BD</a></div><div class="ttdeci">@ PS4BD</div><div class="ttdoc">Sony PlayStation 4 game Blu-ray.</div><div class="ttdef"><b>Definition</b> <a href="aaru_8h_source.html#l00212">aaru.h:212</a></div></div>
<div class="ttc" id="agroup__MediaTypes_html_gga1499e9f8a76cb81b43b7a4b0dbe7e44aab933939a09397f9311004f3dd137226d"><div class="ttname"><a href="group__MediaTypes.html#gga1499e9f8a76cb81b43b7a4b0dbe7e44aab933939a09397f9311004f3dd137226d">PriamDataTower</a></div><div class="ttdeci">@ PriamDataTower</div><div class="ttdef"><b>Definition</b> <a href="aaru_8h_source.html#l00713">aaru.h:713</a></div></div>
<div class="ttc" id="agroup__MediaTypes_html_gga1499e9f8a76cb81b43b7a4b0dbe7e44aac08b59f9e8ecf5e380092edddb0340ec"><div class="ttname"><a href="group__MediaTypes.html#gga1499e9f8a76cb81b43b7a4b0dbe7e44aac08b59f9e8ecf5e380092edddb0340ec">AppleFileWare</a></div><div class="ttdeci">@ AppleFileWare</div><div class="ttdoc">5.25&quot;, DS, ?D, ?? tracks, ?? spt, 512 bytes/sector, GCR, opposite side heads, aka Twiggy</div><div class="ttdef"><b>Definition</b> <a href="aaru_8h_source.html#l00254">aaru.h:254</a></div></div>
<div class="ttc" id="agroup__MediaTypes_html_gga1499e9f8a76cb81b43b7a4b0dbe7e44aac38c8f08c0f5b53d87aca57202eaf123"><div class="ttname"><a href="group__MediaTypes.html#gga1499e9f8a76cb81b43b7a4b0dbe7e44aac38c8f08c0f5b53d87aca57202eaf123">BDRE</a></div><div class="ttdeci">@ BDRE</div><div class="ttdoc">BD-RE.</div><div class="ttdef"><b>Definition</b> <a href="aaru_8h_source.html#l00161">aaru.h:161</a></div></div>
<div class="ttc" id="agroup__MediaTypes_html_gga1499e9f8a76cb81b43b7a4b0dbe7e44aac3c8ca46e314f36e5398a97e85b7a3d1"><div class="ttname"><a href="group__MediaTypes.html#gga1499e9f8a76cb81b43b7a4b0dbe7e44aac3c8ca46e314f36e5398a97e85b7a3d1">DVDPR</a></div><div class="ttdeci">@ DVDPR</div><div class="ttdoc">DVD+R.</div><div class="ttdef"><b>Definition</b> <a href="aaru_8h_source.html#l00139">aaru.h:139</a></div></div>
<div class="ttc" id="agroup__MediaTypes_html_gga1499e9f8a76cb81b43b7a4b0dbe7e44aacd42dba7780092d737e7d51a3819cb4b"><div class="ttname"><a href="group__MediaTypes.html#gga1499e9f8a76cb81b43b7a4b0dbe7e44aacd42dba7780092d737e7d51a3819cb4b">AppleWidget</a></div><div class="ttdeci">@ AppleWidget</div><div class="ttdef"><b>Definition</b> <a href="aaru_8h_source.html#l00711">aaru.h:711</a></div></div>
<div class="ttc" id="agroup__MediaTypes_html_gga1499e9f8a76cb81b43b7a4b0dbe7e44aad5de19f38ea842de6d5edc2baa586160"><div class="ttname"><a href="group__MediaTypes.html#gga1499e9f8a76cb81b43b7a4b0dbe7e44aad5de19f38ea842de6d5edc2baa586160">DVDPRW</a></div><div class="ttdeci">@ DVDPRW</div><div class="ttdoc">DVD+RW.</div><div class="ttdef"><b>Definition</b> <a href="aaru_8h_source.html#l00140">aaru.h:140</a></div></div>
<div class="ttc" id="agroup__MediaTypes_html_gga1499e9f8a76cb81b43b7a4b0dbe7e44aad730786bd592903cc42ad7f5a5847171"><div class="ttname"><a href="group__MediaTypes.html#gga1499e9f8a76cb81b43b7a4b0dbe7e44aad730786bd592903cc42ad7f5a5847171">Nuon</a></div><div class="ttdeci">@ Nuon</div><div class="ttdoc">Nuon (DVD based videogame console).</div><div class="ttdef"><b>Definition</b> <a href="aaru_8h_source.html#l00243">aaru.h:243</a></div></div>
<div class="ttc" id="agroup__MediaTypes_html_gga1499e9f8a76cb81b43b7a4b0dbe7e44aadf89869853533586979db286065899af"><div class="ttname"><a href="group__MediaTypes.html#gga1499e9f8a76cb81b43b7a4b0dbe7e44aadf89869853533586979db286065899af">DVDDownload</a></div><div class="ttdeci">@ DVDDownload</div><div class="ttdoc">DVD-Download.</div><div class="ttdef"><b>Definition</b> <a href="aaru_8h_source.html#l00146">aaru.h:146</a></div></div>
<div class="ttc" id="agroup__MediaTypes_html_gga1499e9f8a76cb81b43b7a4b0dbe7e44aadff93972faa98cafc01f4fbb464680a2"><div class="ttname"><a href="group__MediaTypes.html#gga1499e9f8a76cb81b43b7a4b0dbe7e44aadff93972faa98cafc01f4fbb464680a2">DVDRDL</a></div><div class="ttdeci">@ DVDRDL</div><div class="ttdoc">DVD-R DL.</div><div class="ttdef"><b>Definition</b> <a href="aaru_8h_source.html#l00142">aaru.h:142</a></div></div>
<div class="ttc" id="agroup__MediaTypes_html_gga1499e9f8a76cb81b43b7a4b0dbe7e44aae809315e2cd79c3fd74d1604c38f3ae6"><div class="ttname"><a href="group__MediaTypes.html#gga1499e9f8a76cb81b43b7a4b0dbe7e44aae809315e2cd79c3fd74d1604c38f3ae6">AppleSonyDS</a></div><div class="ttdeci">@ AppleSonyDS</div><div class="ttdoc">3.5&quot;, DS, DD, 80 tracks, 8 to 12 spt, 512 bytes/sector, GCR</div><div class="ttdef"><b>Definition</b> <a href="aaru_8h_source.html#l00253">aaru.h:253</a></div></div>
<div class="ttc" id="agroup__MediaTypes_html_gga1499e9f8a76cb81b43b7a4b0dbe7e44aaee394a7c6e389c9b3734850e1666ee04"><div class="ttname"><a href="group__MediaTypes.html#gga1499e9f8a76cb81b43b7a4b0dbe7e44aaee394a7c6e389c9b3734850e1666ee04">WUOD</a></div><div class="ttdeci">@ WUOD</div><div class="ttdoc">Nintendo Wii U Optical Disc.</div><div class="ttdef"><b>Definition</b> <a href="aaru_8h_source.html#l00525">aaru.h:525</a></div></div>
<div class="ttc" id="agroup__MediaTypes_html_gga1499e9f8a76cb81b43b7a4b0dbe7e44aaf254215c04f84a87eef3702782ba7662"><div class="ttname"><a href="group__MediaTypes.html#gga1499e9f8a76cb81b43b7a4b0dbe7e44aaf254215c04f84a87eef3702782ba7662">DVDROM</a></div><div class="ttdeci">@ DVDROM</div><div class="ttdoc">DVD-ROM (applies to DVD Video and DVD Audio).</div><div class="ttdef"><b>Definition</b> <a href="aaru_8h_source.html#l00136">aaru.h:136</a></div></div>
<div class="ttc" id="agroup__MediaTypes_html_gga1499e9f8a76cb81b43b7a4b0dbe7e44aaff04a947594e116dd0adf854660ff00a"><div class="ttname"><a href="group__MediaTypes.html#gga1499e9f8a76cb81b43b7a4b0dbe7e44aaff04a947594e116dd0adf854660ff00a">DVDRAM</a></div><div class="ttdeci">@ DVDRAM</div><div class="ttdoc">DVD-RAM.</div><div class="ttdef"><b>Definition</b> <a href="aaru_8h_source.html#l00144">aaru.h:144</a></div></div>
<div class="ttc" id="agroup__SectorTags_html_ggaf863e81d172ce7a216d8687a8a23293aa0a87d255508de17d3745cfd86c1a97c6"><div class="ttname"><a href="group__SectorTags.html#ggaf863e81d172ce7a216d8687a8a23293aa0a87d255508de17d3745cfd86c1a97c6">kSectorTagCdTrackFlags</a></div><div class="ttdeci">@ kSectorTagCdTrackFlags</div><div class="ttdoc">Track flags (audio/data, copy permitted, pre-emphasis).</div><div class="ttdef"><b>Definition</b> <a href="aaru_8h_source.html#l00971">aaru.h:971</a></div></div>
<div class="ttc" id="agroup__SectorTags_html_ggaf863e81d172ce7a216d8687a8a23293aa45fa5c82687c1aebf2b1620ede26f91b"><div class="ttname"><a href="group__SectorTags.html#ggaf863e81d172ce7a216d8687a8a23293aa45fa5c82687c1aebf2b1620ede26f91b">kSectorTagDvdCmi</a></div><div class="ttdeci">@ kSectorTagDvdCmi</div><div class="ttdoc">DVD Copyright Management Information (CSS).</div><div class="ttdef"><b>Definition</b> <a href="aaru_8h_source.html#l00972">aaru.h:972</a></div></div>
<div class="ttc" id="agroup__SectorTags_html_ggaf863e81d172ce7a216d8687a8a23293aa4e5718bc178697c722f928a7500453d8"><div class="ttname"><a href="group__SectorTags.html#ggaf863e81d172ce7a216d8687a8a23293aa4e5718bc178697c722f928a7500453d8">kSectorTagDvdSectorIed</a></div><div class="ttdeci">@ kSectorTagDvdSectorIed</div><div class="ttdoc">DVD sector ID error detection, 2 bytes.</div><div class="ttdef"><b>Definition</b> <a href="aaru_8h_source.html#l00978">aaru.h:978</a></div></div>
<div class="ttc" id="agroup__SectorTags_html_ggaf863e81d172ce7a216d8687a8a23293aa517983b65e64021dc389c78f2fff48ba"><div class="ttname"><a href="group__SectorTags.html#ggaf863e81d172ce7a216d8687a8a23293aa517983b65e64021dc389c78f2fff48ba">kSectorTagCdSubchannel</a></div><div class="ttdeci">@ kSectorTagCdSubchannel</div><div class="ttdoc">96 raw subchannel bytes (P-W)</div><div class="ttdef"><b>Definition</b> <a href="aaru_8h_source.html#l00968">aaru.h:968</a></div></div>
<div class="ttc" id="agroup__SectorTags_html_ggaf863e81d172ce7a216d8687a8a23293aa67fa799c9ae13957ff80d10c6b98a935"><div class="ttname"><a href="group__SectorTags.html#ggaf863e81d172ce7a216d8687a8a23293aa67fa799c9ae13957ff80d10c6b98a935">kSectorTagAppleSony</a></div><div class="ttdeci">@ kSectorTagAppleSony</div><div class="ttdoc">Apple&#39;s Sony sector tags, 12 bytes (address prolog + checksum).</div><div class="ttdef"><b>Definition</b> <a href="aaru_8h_source.html#l00960">aaru.h:960</a></div></div>
<div class="ttc" id="agroup__SectorTags_html_ggaf863e81d172ce7a216d8687a8a23293aa90d2b1fece121d351ab9f47c277f7f07"><div class="ttname"><a href="group__SectorTags.html#ggaf863e81d172ce7a216d8687a8a23293aa90d2b1fece121d351ab9f47c277f7f07">kSectorTagAppleProfile</a></div><div class="ttdeci">@ kSectorTagAppleProfile</div><div class="ttdoc">Apple&#39;s Profile sector tags, 20 bytes.</div><div class="ttdef"><b>Definition</b> <a href="aaru_8h_source.html#l00980">aaru.h:980</a></div></div>
<div class="ttc" id="agroup__SectorTags_html_ggaf863e81d172ce7a216d8687a8a23293aaac2ac524def4118a80cb586b791d1f11"><div class="ttname"><a href="group__SectorTags.html#ggaf863e81d172ce7a216d8687a8a23293aaac2ac524def4118a80cb586b791d1f11">kSectorTagCdTrackIsrc</a></div><div class="ttdeci">@ kSectorTagCdTrackIsrc</div><div class="ttdoc">Track ISRC (12 ASCII chars, no terminator).</div><div class="ttdef"><b>Definition</b> <a href="aaru_8h_source.html#l00969">aaru.h:969</a></div></div>
<div class="ttc" id="agroup__SectorTags_html_ggaf863e81d172ce7a216d8687a8a23293aac8db8e7fd60c8c805263e44eaffe9277"><div class="ttname"><a href="group__SectorTags.html#ggaf863e81d172ce7a216d8687a8a23293aac8db8e7fd60c8c805263e44eaffe9277">kSectorTagDvdSectorInformation</a></div><div class="ttdeci">@ kSectorTagDvdSectorInformation</div><div class="ttdoc">DVD sector information, 1 bytes.</div><div class="ttdef"><b>Definition</b> <a href="aaru_8h_source.html#l00976">aaru.h:976</a></div></div>
<div class="ttc" id="agroup__SectorTags_html_ggaf863e81d172ce7a216d8687a8a23293aace07acdeb01af35b602c966b764568d5"><div class="ttname"><a href="group__SectorTags.html#ggaf863e81d172ce7a216d8687a8a23293aace07acdeb01af35b602c966b764568d5">kSectorTagDvdSectorEdc</a></div><div class="ttdeci">@ kSectorTagDvdSectorEdc</div><div class="ttdoc">DVD sector EDC, 4 bytes.</div><div class="ttdef"><b>Definition</b> <a href="aaru_8h_source.html#l00979">aaru.h:979</a></div></div>
<div class="ttc" id="agroup__SectorTags_html_ggaf863e81d172ce7a216d8687a8a23293aad161555539302d75b8810baa247420af"><div class="ttname"><a href="group__SectorTags.html#ggaf863e81d172ce7a216d8687a8a23293aad161555539302d75b8810baa247420af">kSectorTagDvdSectorNumber</a></div><div class="ttdeci">@ kSectorTagDvdSectorNumber</div><div class="ttdoc">DVD sector number, 3 bytes.</div><div class="ttdef"><b>Definition</b> <a href="aaru_8h_source.html#l00977">aaru.h:977</a></div></div>
<div class="ttc" id="agroup__SectorTags_html_ggaf863e81d172ce7a216d8687a8a23293aade55c2c3f852f5d6b0ef06e64e642e74"><div class="ttname"><a href="group__SectorTags.html#ggaf863e81d172ce7a216d8687a8a23293aade55c2c3f852f5d6b0ef06e64e642e74">kSectorTagPriamDataTower</a></div><div class="ttdeci">@ kSectorTagPriamDataTower</div><div class="ttdoc">Priam DataTower sector tags, 24 bytes.</div><div class="ttdef"><b>Definition</b> <a href="aaru_8h_source.html#l00981">aaru.h:981</a></div></div>
<div class="ttc" id="agroup__SectorTags_html_ggaf863e81d172ce7a216d8687a8a23293aae7d3bd89f6d2ee69a8752b6bcbcdfdfa"><div class="ttname"><a href="group__SectorTags.html#ggaf863e81d172ce7a216d8687a8a23293aae7d3bd89f6d2ee69a8752b6bcbcdfdfa">kSectorTagDvdTitleKeyDecrypted</a></div><div class="ttdeci">@ kSectorTagDvdTitleKeyDecrypted</div><div class="ttdoc">Decrypted DVD sector title key, 5 bytes.</div><div class="ttdef"><b>Definition</b> <a href="aaru_8h_source.html#l00975">aaru.h:975</a></div></div>
<div class="ttc" id="ainternal_8h_html"><div class="ttname"><a href="internal_8h.html">internal.h</a></div></div>
<div class="ttc" id="ainternal_8h_html_a26e5fd58cdfd39948f1b724fafffcdc2"><div class="ttname"><a href="internal_8h.html#a26e5fd58cdfd39948f1b724fafffcdc2">decode_ddt_entry_v1</a></div><div class="ttdeci">int32_t decode_ddt_entry_v1(aaruformat_context *ctx, uint64_t sector_address, uint64_t *offset, uint64_t *block_offset, uint8_t *sector_status)</div><div class="ttdoc">Decodes a DDT v1 entry for a given sector address.</div><div class="ttdef"><b>Definition</b> <a href="ddt__v1_8c_source.html#l00496">ddt_v1.c:496</a></div></div>
<div class="ttc" id="ainternal_8h_html_a60c57e3b2e8e233d0be91f3690bf077c"><div class="ttname"><a href="internal_8h.html#a60c57e3b2e8e233d0be91f3690bf077c">aaruf_fseek</a></div><div class="ttdeci">static int aaruf_fseek(FILE *stream, aaru_off_t offset, int origin)</div><div class="ttdef"><b>Definition</b> <a href="internal_8h_source.html#l00046">internal.h:46</a></div></div>
<div class="ttc" id="ainternal_8h_html_a805d607b45bb8ad8a3e6b0bcfabe3265"><div class="ttname"><a href="internal_8h.html#a805d607b45bb8ad8a3e6b0bcfabe3265">decode_ddt_entry_v2</a></div><div class="ttdeci">int32_t decode_ddt_entry_v2(aaruformat_context *ctx, uint64_t sector_address, bool negative, uint64_t *offset, uint64_t *block_offset, uint8_t *sector_status)</div><div class="ttdoc">Decodes a DDT v2 entry for a given sector address.</div><div class="ttdef"><b>Definition</b> <a href="ddt__v2_8c_source.html#l00662">ddt_v2.c:662</a></div></div>
<div class="ttc" id="ainternal_8h_html_afb4a123eeae51c668333248fb666e0f2"><div class="ttname"><a href="internal_8h.html#afb4a123eeae51c668333248fb666e0f2">aaru_off_t</a></div><div class="ttdeci">int64_t aaru_off_t</div><div class="ttdef"><b>Definition</b> <a href="internal_8h_source.html#l00042">internal.h:42</a></div></div>
<div class="ttc" id="alfg_8c_html_a25e6df5ee051a324d943185f193d3418"><div class="ttname"><a href="lfg_8c.html#a25e6df5ee051a324d943185f193d3418">ngc_lfg_get_bytes</a></div><div class="ttdeci">void ngc_lfg_get_bytes(struct ngc_lfg_ctx *ctx, uint8_t *out, size_t count)</div><div class="ttdoc">Generate count bytes of junk data into out.</div><div class="ttdef"><b>Definition</b> <a href="lfg_8c_source.html#l00082">lfg.c:82</a></div></div>
<div class="ttc" id="alfg_8c_html_abc583da3bb66cab3eafc3496bc46e193"><div class="ttname"><a href="lfg_8c.html#abc583da3bb66cab3eafc3496bc46e193">ngc_lfg_set_seed</a></div><div class="ttdeci">void ngc_lfg_set_seed(struct ngc_lfg_ctx *ctx, const uint32_t seed[17])</div><div class="ttdoc">Initialize the LFG from a 17-word big-endian seed.</div><div class="ttdef"><b>Definition</b> <a href="lfg_8c_source.html#l00073">lfg.c:73</a></div></div>
<div class="ttc" id="alfg_8h_html"><div class="ttname"><a href="lfg_8h.html">lfg.h</a></div></div>
<div class="ttc" id="alfg_8h_html_a2c4db3d8d295f706dcacc8a4d039beed"><div class="ttname"><a href="lfg_8h.html#a2c4db3d8d295f706dcacc8a4d039beed">NGC_LFG_SEED_SIZE</a></div><div class="ttdeci">#define NGC_LFG_SEED_SIZE</div><div class="ttdoc">Number of uint32 words needed to seed the LFG.</div><div class="ttdef"><b>Definition</b> <a href="lfg_8h_source.html#l00036">lfg.h:36</a></div></div>
<div class="ttc" id="alog_8h_html"><div class="ttname"><a href="log_8h.html">log.h</a></div></div>
<div class="ttc" id="alog_8h_html_a053d6037d543b84ce59308ce71d15cd1"><div class="ttname"><a href="log_8h.html#a053d6037d543b84ce59308ce71d15cd1">FATAL</a></div><div class="ttdeci">#define FATAL(fmt,...)</div><div class="ttdef"><b>Definition</b> <a href="log_8h_source.html#l00040">log.h:40</a></div></div>
<div class="ttc" id="alog_8h_html_a21cc0459b78d5f2d7bd737e5aae1278a"><div class="ttname"><a href="log_8h.html#a21cc0459b78d5f2d7bd737e5aae1278a">TRACE</a></div><div class="ttdeci">#define TRACE(fmt,...)</div><div class="ttdef"><b>Definition</b> <a href="log_8h_source.html#l00025">log.h:25</a></div></div>
<div class="ttc" id="alru_8h_html_a0735969939ca80db3fe439ed92b787bb"><div class="ttname"><a href="lru_8h.html#a0735969939ca80db3fe439ed92b787bb">add_to_cache_uint64</a></div><div class="ttdeci">void add_to_cache_uint64(struct CacheHeader *cache, uint64_t key, void *value)</div><div class="ttdoc">Adds a value to the cache with a uint64_t key, evicting LRU if full.</div><div class="ttdef"><b>Definition</b> <a href="lru_8c_source.html#l00048">lru.c:48</a></div></div>
<div class="ttc" id="alru_8h_html_a8cb7ac8e057627210732ee61d2966e35"><div class="ttname"><a href="lru_8h.html#a8cb7ac8e057627210732ee61d2966e35">find_in_cache_uint64</a></div><div class="ttdeci">void * find_in_cache_uint64(struct CacheHeader *cache, uint64_t key)</div><div class="ttdoc">Finds a value in the cache by uint64_t key.</div><div class="ttdef"><b>Definition</b> <a href="lru_8c_source.html#l00024">lru.c:24</a></div></div>
<div class="ttc" id="angcw__junk_8c_html_a8aae28231f89db161998f42c61b2e246"><div class="ttname"><a href="ngcw__junk_8c.html#a8aae28231f89db161998f42c61b2e246">ngcw_junk_lazy_init</a></div><div class="ttdeci">void ngcw_junk_lazy_init(aaruformat_context *ctx)</div><div class="ttdoc">Lazy initialization: load junk map from media tags.</div><div class="ttdef"><b>Definition</b> <a href="ngcw__junk_8c_source.html#l00211">ngcw_junk.c:211</a></div></div>
<div class="ttc" id="angcw__junk_8c_html_af61bca5a962d01d631b0a7135be54f08"><div class="ttname"><a href="ngcw__junk_8c.html#af61bca5a962d01d631b0a7135be54f08">ngcw_regenerate_junk_sector</a></div><div class="ttdeci">int ngcw_regenerate_junk_sector(const NgcwJunkEntry *entries, uint32_t entry_count, uint64_t disc_offset, uint8_t *output, uint32_t length)</div><div class="ttdoc">Regenerate a junk sector from the junk map.</div><div class="ttdef"><b>Definition</b> <a href="ngcw__junk_8c_source.html#l00154">ngcw_junk.c:154</a></div></div>
<div class="ttc" id="angcw__junk_8h_html"><div class="ttname"><a href="ngcw__junk_8h.html">ngcw_junk.h</a></div></div>
<div class="ttc" id="aps3__crypto_8c_html_a8c99822e07011d07362d5d40487eded6"><div class="ttname"><a href="ps3__crypto_8c.html#a8c99822e07011d07362d5d40487eded6">ps3_lazy_init</a></div><div class="ttdeci">void ps3_lazy_init(aaruformat_context *ctx)</div><div class="ttdoc">Lazy-initialize PS3 encryption state from context media tags.</div><div class="ttdef"><b>Definition</b> <a href="ps3__crypto_8c_source.html#l00070">ps3_crypto.c:70</a></div></div>
<div class="ttc" id="aps3__crypto_8c_html_af9a3081e827ba140edc64fda2e93ee96"><div class="ttname"><a href="ps3__crypto_8c.html#af9a3081e827ba140edc64fda2e93ee96">ps3_encrypt_sector</a></div><div class="ttdeci">void ps3_encrypt_sector(const uint8_t disc_key[16], uint64_t sector_num, uint8_t *data, uint32_t length)</div><div class="ttdoc">Encrypt a sector using PS3 disc encryption (AES-128-CBC).</div><div class="ttdef"><b>Definition</b> <a href="ps3__crypto_8c_source.html#l00056">ps3_crypto.c:56</a></div></div>
<div class="ttc" id="aps3__crypto_8h_html"><div class="ttname"><a href="ps3__crypto_8h.html">ps3_crypto.h</a></div></div>
<div class="ttc" id="aps3__encryption__map_8c_html_a058b5191df4b4a83a6bc55052fad503f"><div class="ttname"><a href="ps3__encryption__map_8c.html#a058b5191df4b4a83a6bc55052fad503f">ps3_is_sector_encrypted</a></div><div class="ttdeci">bool ps3_is_sector_encrypted(const Ps3PlaintextRegion *plaintext_regions, uint32_t region_count, uint64_t sector_address)</div><div class="ttdoc">Check whether a sector is encrypted (i.e., not in any plaintext region).</div><div class="ttdef"><b>Definition</b> <a href="ps3__encryption__map_8c_source.html#l00151">ps3_encryption_map.c:151</a></div></div>
<div class="ttc" id="aps3__encryption__map_8h_html"><div class="ttname"><a href="ps3__encryption__map_8h.html">ps3_encryption_map.h</a></div></div>
<div class="ttc" id="aread_8c_html_a277efc2abbdd8e351eb84542e4eda59a"><div class="ttname"><a href="read_8c.html#a277efc2abbdd8e351eb84542e4eda59a">wii_reconstruct_group_junk</a></div><div class="ttdeci">static void wii_reconstruct_group_junk(aaruformat_context *ctx, uint64_t phys_group, uint8_t *group_cache)</div><div class="ttdoc">Reconstruct junk in a Wii group&#39;s user data area before re-encryption.</div><div class="ttdef"><b>Definition</b> <a href="#l00044">read.c:44</a></div></div>
<div class="ttc" id="aread_8c_html_a6feebf672750fc129fe2802ab738d563"><div class="ttname"><a href="read_8c.html#a6feebf672750fc129fe2802ab738d563">aaruf_read_sector</a></div><div class="ttdeci">int32_t aaruf_read_sector(void *context, const uint64_t sector_address, bool negative, uint8_t *data, uint32_t *length, uint8_t *sector_status)</div><div class="ttdoc">Reads a sector from the AaruFormat image.</div><div class="ttdef"><b>Definition</b> <a href="#l00352">read.c:352</a></div></div>
<div class="ttc" id="aread_8c_html_a7c8786fe6f2a1538bcb2362cfe21563c"><div class="ttname"><a href="read_8c.html#a7c8786fe6f2a1538bcb2362cfe21563c">aaruf_read_sector_long</a></div><div class="ttdeci">int32_t aaruf_read_sector_long(void *context, const uint64_t sector_address, bool negative, uint8_t *data, uint32_t *length, uint8_t *sector_status)</div><div class="ttdoc">Reads a complete sector with all metadata from the AaruFormat image.</div><div class="ttdef"><b>Definition</b> <a href="#l01430">read.c:1430</a></div></div>
<div class="ttc" id="aread_8c_html_a84e3bc8f611af8e9fc77dac24788d53b"><div class="ttname"><a href="read_8c.html#a84e3bc8f611af8e9fc77dac24788d53b">aaruf_read_track_sector</a></div><div class="ttdeci">int32_t aaruf_read_track_sector(void *context, uint8_t *data, const uint64_t sector_address, uint32_t *length, const uint8_t track, uint8_t *sector_status)</div><div class="ttdoc">Reads a sector from a specific track in the AaruFormat image.</div><div class="ttdef"><b>Definition</b> <a href="#l01274">read.c:1274</a></div></div>
<div class="ttc" id="aread_8c_html_aa8588f3b6c705666833c84e6cd4cfe62"><div class="ttname"><a href="read_8c.html#aa8588f3b6c705666833c84e6cd4cfe62">aaruf_read_media_tag</a></div><div class="ttdeci">int32_t aaruf_read_media_tag(void *context, uint8_t *data, const int32_t tag, uint32_t *length)</div><div class="ttdoc">Reads a media tag from the AaruFormat image.</div><div class="ttdef"><b>Definition</b> <a href="#l00184">read.c:184</a></div></div>
<div class="ttc" id="aread_8c_html_ac6c55f931eb4c113d19ff7c194fce65a"><div class="ttname"><a href="read_8c.html#ac6c55f931eb4c113d19ff7c194fce65a">aaruf_read_sector_tag</a></div><div class="ttdeci">int32_t aaruf_read_sector_tag(const void *context, const uint64_t sector_address, const bool negative, uint8_t *buffer, uint32_t *length, const int32_t tag)</div><div class="ttdoc">Reads a specific sector tag from the AaruFormat image.</div><div class="ttdef"><b>Definition</b> <a href="#l02240">read.c:2240</a></div></div>
<div class="ttc" id="astructAaruHeaderV2_html_a81b114ab2b1fa786f64e9e914af3ba27"><div class="ttname"><a href="structAaruHeaderV2.html#a81b114ab2b1fa786f64e9e914af3ba27">AaruHeaderV2::mediaType</a></div><div class="ttdeci">uint32_t mediaType</div><div class="ttdoc">Media type enumeration (value from MediaType).</div><div class="ttdef"><b>Definition</b> <a href="header_8h_source.html#l00114">header.h:114</a></div></div>
<div class="ttc" id="astructBlockHeader_html"><div class="ttname"><a href="structBlockHeader.html">BlockHeader</a></div><div class="ttdoc">Header preceding the compressed data payload of a data block (BlockType::DataBlock).</div><div class="ttdef"><b>Definition</b> <a href="data_8h_source.html#l00070">data.h:71</a></div></div>
<div class="ttc" id="astructBlockHeader_html_a0ee87beb4362823260f70a87ac17379f"><div class="ttname"><a href="structBlockHeader.html#a0ee87beb4362823260f70a87ac17379f">BlockHeader::cmpLength</a></div><div class="ttdeci">uint32_t cmpLength</div><div class="ttdoc">Size in bytes of the compressed payload immediately following this header.</div><div class="ttdef"><b>Definition</b> <a href="data_8h_source.html#l00076">data.h:76</a></div></div>
<div class="ttc" id="astructBlockHeader_html_a1f9f3204a10090709b28d0df4bb547e5"><div class="ttname"><a href="structBlockHeader.html#a1f9f3204a10090709b28d0df4bb547e5">BlockHeader::length</a></div><div class="ttdeci">uint32_t length</div><div class="ttdoc">Size in bytes of the uncompressed payload resulting after decompression.</div><div class="ttdef"><b>Definition</b> <a href="data_8h_source.html#l00077">data.h:77</a></div></div>
<div class="ttc" id="astructBlockHeader_html_a3b03f118fb2dc3dcef3f87a82238e358"><div class="ttname"><a href="structBlockHeader.html#a3b03f118fb2dc3dcef3f87a82238e358">BlockHeader::identifier</a></div><div class="ttdeci">uint32_t identifier</div><div class="ttdoc">Block identifier, must be BlockType::DataBlock.</div><div class="ttdef"><b>Definition</b> <a href="data_8h_source.html#l00072">data.h:72</a></div></div>
<div class="ttc" id="astructBlockHeader_html_a5bd50f95c8c1f91e5013a1a154690beb"><div class="ttname"><a href="structBlockHeader.html#a5bd50f95c8c1f91e5013a1a154690beb">BlockHeader::sectorSize</a></div><div class="ttdeci">uint32_t sectorSize</div><div class="ttdoc">Size in bytes of each logical sector represented in this block.</div><div class="ttdef"><b>Definition</b> <a href="data_8h_source.html#l00075">data.h:75</a></div></div>
<div class="ttc" id="astructBlockHeader_html_ad68963422fd2a5f6d0e0be751cbef559"><div class="ttname"><a href="structBlockHeader.html#ad68963422fd2a5f6d0e0be751cbef559">BlockHeader::compression</a></div><div class="ttdeci">uint16_t compression</div><div class="ttdoc">Compression algorithm used (value from CompressionType).</div><div class="ttdef"><b>Definition</b> <a href="data_8h_source.html#l00074">data.h:74</a></div></div>
<div class="ttc" id="astructDdtHeader2_html_ac41f345c4d5db0c249ff171c85992482"><div class="ttname"><a href="structDdtHeader2.html#ac41f345c4d5db0c249ff171c85992482">DdtHeader2::overflow</a></div><div class="ttdeci">uint32_t overflow</div><div class="ttdoc">Trailing dumped sectors beyond user area (overflow range), still mapped with entries.</div><div class="ttdef"><b>Definition</b> <a href="ddt_8h_source.html#l00151">ddt.h:151</a></div></div>
<div class="ttc" id="astructDdtHeader2_html_ac48b4ceb64b05b5e7da2ca3df063ac99"><div class="ttname"><a href="structDdtHeader2.html#ac48b4ceb64b05b5e7da2ca3df063ac99">DdtHeader2::negative</a></div><div class="ttdeci">uint32_t negative</div><div class="ttdoc">Leading negative LBA count; added to external L to build internal index.</div><div class="ttdef"><b>Definition</b> <a href="ddt_8h_source.html#l00149">ddt.h:149</a></div></div>
<div class="ttc" id="astructImageInfo_html_a76611d5087e0a9fd4d329fac7c9ec3f3"><div class="ttname"><a href="structImageInfo.html#a76611d5087e0a9fd4d329fac7c9ec3f3">ImageInfo::MediaType</a></div><div class="ttdeci">uint32_t MediaType</div><div class="ttdoc">Media type identifier (see MediaType enum; 0=Unknown).</div><div class="ttdef"><b>Definition</b> <a href="aaru_8h_source.html#l00945">aaru.h:945</a></div></div>
<div class="ttc" id="astructImageInfo_html_a7ed25efcf8cec55d6609b83bcd17b2d0"><div class="ttname"><a href="structImageInfo.html#a7ed25efcf8cec55d6609b83bcd17b2d0">ImageInfo::MetadataMediaType</a></div><div class="ttdeci">uint8_t MetadataMediaType</div><div class="ttdoc">Media type for sidecar generation (internal archival use).</div><div class="ttdef"><b>Definition</b> <a href="aaru_8h_source.html#l00946">aaru.h:946</a></div></div>
<div class="ttc" id="astructImageInfo_html_aac1ac48f57afd415467cd6f13f01644b"><div class="ttname"><a href="structImageInfo.html#aac1ac48f57afd415467cd6f13f01644b">ImageInfo::SectorSize</a></div><div class="ttdeci">uint32_t SectorSize</div><div class="ttdoc">Size of each logical sector in bytes (512, 2048, 2352, 4096, etc.).</div><div class="ttdef"><b>Definition</b> <a href="aaru_8h_source.html#l00939">aaru.h:939</a></div></div>
<div class="ttc" id="astructImageInfo_html_ae3e1b9cde1c51152b00eb1b59e199906"><div class="ttname"><a href="structImageInfo.html#ae3e1b9cde1c51152b00eb1b59e199906">ImageInfo::Sectors</a></div><div class="ttdeci">uint64_t Sectors</div><div class="ttdoc">Total count of addressable logical sectors/blocks.</div><div class="ttdef"><b>Definition</b> <a href="aaru_8h_source.html#l00938">aaru.h:938</a></div></div>
<div class="ttc" id="astructNgcwJunkEntry_html"><div class="ttname"><a href="structNgcwJunkEntry.html">NgcwJunkEntry</a></div><div class="ttdoc">In-memory junk map entry.</div><div class="ttdef"><b>Definition</b> <a href="ngcw__junk_8h_source.html#l00047">ngcw_junk.h:48</a></div></div>
<div class="ttc" id="astructNgcwJunkEntry_html_a082ed622c7be36afb188f0c6f75e7127"><div class="ttname"><a href="structNgcwJunkEntry.html#a082ed622c7be36afb188f0c6f75e7127">NgcwJunkEntry::length</a></div><div class="ttdeci">uint64_t length</div><div class="ttdoc">Length of junk region in bytes.</div><div class="ttdef"><b>Definition</b> <a href="ngcw__junk_8h_source.html#l00050">ngcw_junk.h:50</a></div></div>
<div class="ttc" id="astructNgcwJunkEntry_html_a80885eaf7c79a421d9565dbb7397fa2b"><div class="ttname"><a href="structNgcwJunkEntry.html#a80885eaf7c79a421d9565dbb7397fa2b">NgcwJunkEntry::offset</a></div><div class="ttdeci">uint64_t offset</div><div class="ttdoc">Disc byte offset where junk starts.</div><div class="ttdef"><b>Definition</b> <a href="ngcw__junk_8h_source.html#l00049">ngcw_junk.h:49</a></div></div>
<div class="ttc" id="astructPs3PlaintextRegion_html"><div class="ttname"><a href="structPs3PlaintextRegion.html">Ps3PlaintextRegion</a></div><div class="ttdoc">A plaintext (unencrypted) region on a PS3 disc.</div><div class="ttdef"><b>Definition</b> <a href="ps3__encryption__map_8h_source.html#l00033">ps3_encryption_map.h:34</a></div></div>
<div class="ttc" id="astructTrackEntry_html"><div class="ttname"><a href="structTrackEntry.html">TrackEntry</a></div><div class="ttdoc">Single optical disc track descriptor (sequence, type, LBAs, session, ISRC, flags).</div><div class="ttdef"><b>Definition</b> <a href="optical_8h_source.html#l00071">optical.h:72</a></div></div>
<div class="ttc" id="astructTrackEntry_html_a7ae98d532f6dff50c2439b64d2cddb45"><div class="ttname"><a href="structTrackEntry.html#a7ae98d532f6dff50c2439b64d2cddb45">TrackEntry::flags</a></div><div class="ttdeci">uint8_t flags</div><div class="ttdoc">Control / attribute bitfield (see file documentation for suggested bit mapping).</div><div class="ttdef"><b>Definition</b> <a href="optical_8h_source.html#l00080">optical.h:80</a></div></div>
<div class="ttc" id="astructTrackEntry_html_aa6464108b61ee648a5aa8e6ffcc9a59a"><div class="ttname"><a href="structTrackEntry.html#aa6464108b61ee648a5aa8e6ffcc9a59a">TrackEntry::sequence</a></div><div class="ttdeci">uint8_t sequence</div><div class="ttdoc">Track number (1..99 typical for CD audio/data). 0 may indicate placeholder/non-standard.</div><div class="ttdef"><b>Definition</b> <a href="optical_8h_source.html#l00073">optical.h:73</a></div></div>
<div class="ttc" id="astructTrackEntry_html_aa82e4a2aa2cfecee9891f117e9494cdf"><div class="ttname"><a href="structTrackEntry.html#aa82e4a2aa2cfecee9891f117e9494cdf">TrackEntry::start</a></div><div class="ttdeci">int64_t start</div><div class="ttdoc">Inclusive starting LBA of the track.</div><div class="ttdef"><b>Definition</b> <a href="optical_8h_source.html#l00075">optical.h:75</a></div></div>
<div class="ttc" id="astructTrackEntry_html_ac8dd4cd45f2757b51a27385c7731dde4"><div class="ttname"><a href="structTrackEntry.html#ac8dd4cd45f2757b51a27385c7731dde4">TrackEntry::type</a></div><div class="ttdeci">uint8_t type</div><div class="ttdoc">Track type (value from TrackType).</div><div class="ttdef"><b>Definition</b> <a href="optical_8h_source.html#l00074">optical.h:74</a></div></div>
<div class="ttc" id="astructTrackEntry_html_acb023e4728c59964c83fe85474c512c8"><div class="ttname"><a href="structTrackEntry.html#acb023e4728c59964c83fe85474c512c8">TrackEntry::isrc</a></div><div class="ttdeci">uint8_t isrc[13]</div><div class="ttdoc">ISRC raw 13-byte code (no null terminator). All zeros if not present.</div><div class="ttdef"><b>Definition</b> <a href="optical_8h_source.html#l00079">optical.h:79</a></div></div>
<div class="ttc" id="astructTracksHeader_html_a98df23dccacc04396f07f450a742527a"><div class="ttname"><a href="structTracksHeader.html#a98df23dccacc04396f07f450a742527a">TracksHeader::entries</a></div><div class="ttdeci">uint16_t entries</div><div class="ttdoc">Number of TrackEntry records following this header.</div><div class="ttdef"><b>Definition</b> <a href="optical_8h_source.html#l00064">optical.h:64</a></div></div>
<div class="ttc" id="astructWiiPartitionRegion_html"><div class="ttname"><a href="structWiiPartitionRegion.html">WiiPartitionRegion</a></div><div class="ttdoc">A Wii partition region entry (in-memory representation).</div><div class="ttdef"><b>Definition</b> <a href="wii__crypto_8h_source.html#l00051">wii_crypto.h:52</a></div></div>
<div class="ttc" id="astructWiiPartitionRegion_html_a06eb8901b0a0b652c573d3879024efbb"><div class="ttname"><a href="structWiiPartitionRegion.html#a06eb8901b0a0b652c573d3879024efbb">WiiPartitionRegion::start_sector</a></div><div class="ttdeci">uint32_t start_sector</div><div class="ttdoc">First physical sector of partition.</div><div class="ttdef"><b>Definition</b> <a href="wii__crypto_8h_source.html#l00053">wii_crypto.h:53</a></div></div>
<div class="ttc" id="astructWiiuPartitionRegion_html"><div class="ttname"><a href="structWiiuPartitionRegion.html">WiiuPartitionRegion</a></div><div class="ttdoc">A Wii U partition region entry (in-memory representation).</div><div class="ttdef"><b>Definition</b> <a href="wiiu__crypto_8h_source.html#l00048">wiiu_crypto.h:49</a></div></div>
<div class="ttc" id="astructaaruformat__context_html"><div class="ttname"><a href="structaaruformat__context.html">aaruformat_context</a></div><div class="ttdoc">Master context representing an open or increation Aaru image.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00174">context.h:175</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_a016a2c15a10105ff17628c9ee7f5c424"><div class="ttname"><a href="structaaruformat__context.html#a016a2c15a10105ff17628c9ee7f5c424">aaruformat_context::ps3_disc_key</a></div><div class="ttdeci">uint8_t * ps3_disc_key</div><div class="ttdoc">Cached disc key (16 bytes), NULL if not loaded.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00348">context.h:348</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_a02680ed9c8af17fe614dc0fc96549f8f"><div class="ttname"><a href="structaaruformat__context.html#a02680ed9c8af17fe614dc0fc96549f8f">aaruformat_context::wiiu_building_crypto_block</a></div><div class="ttdeci">bool wiiu_building_crypto_block</div><div class="ttdoc">True while gathering sectors for re-encryption (suppresses recursion).</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00361">context.h:361</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_a04c5fb367458a6e9dd0a50b39f6edec2"><div class="ttname"><a href="structaaruformat__context.html#a04c5fb367458a6e9dd0a50b39f6edec2">aaruformat_context::user_data_ddt_header</a></div><div class="ttdeci">DdtHeader2 user_data_ddt_header</div><div class="ttdoc">Active user data DDT v2 header (primary table meta).</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00192">context.h:192</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_a12239886f41707864eafb8e2d5a79cb9"><div class="ttname"><a href="structaaruformat__context.html#a12239886f41707864eafb8e2d5a79cb9">aaruformat_context::wiiu_partition_regions</a></div><div class="ttdeci">void * wiiu_partition_regions</div><div class="ttdoc">Parsed WiiuPartitionRegion array, NULL if not loaded.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00355">context.h:355</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_a1614b9ffbd5e4661a2483eb3f68f8fd1"><div class="ttname"><a href="structaaruformat__context.html#a1614b9ffbd5e4661a2483eb3f68f8fd1">aaruformat_context::sector_cpr_mai</a></div><div class="ttdeci">uint8_t * sector_cpr_mai</div><div class="ttdoc">DVD sector CPR_MAI (6 bytes) if present.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00210">context.h:210</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_a1bfda8e3b76471a7b526d05f4855f8f1"><div class="ttname"><a href="structaaruformat__context.html#a1bfda8e3b76471a7b526d05f4855f8f1">aaruformat_context::ps3_plaintext_region_count</a></div><div class="ttdeci">uint32_t ps3_plaintext_region_count</div><div class="ttdoc">Number of plaintext regions.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00350">context.h:350</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_a1d021776e9101370c7e6ed00c8049be1"><div class="ttname"><a href="structaaruformat__context.html#a1d021776e9101370c7e6ed00c8049be1">aaruformat_context::sector_prefix_corrected</a></div><div class="ttdeci">uint8_t * sector_prefix_corrected</div><div class="ttdoc">Corrected variant (post error correction) if stored.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00203">context.h:203</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_a1d6387bb1c83151c5096beb51de37a8d"><div class="ttname"><a href="structaaruformat__context.html#a1d6387bb1c83151c5096beb51de37a8d">aaruformat_context::wiiu_partition_region_count</a></div><div class="ttdeci">uint32_t wiiu_partition_region_count</div><div class="ttdoc">Number of partition regions.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00356">context.h:356</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_a2656e1efffab41086f8c580896ea24a1"><div class="ttname"><a href="structaaruformat__context.html#a2656e1efffab41086f8c580896ea24a1">aaruformat_context::data_tracks</a></div><div class="ttdeci">TrackEntry * data_tracks</div><div class="ttdoc">Filtered list of data tracks (subset of trackEntries).</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00246">context.h:246</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_a35916280b5c71a844f41aeaf4cc28a3e"><div class="ttname"><a href="structaaruformat__context.html#a35916280b5c71a844f41aeaf4cc28a3e">aaruformat_context::wiiu_encrypted_block_cache</a></div><div class="ttdeci">uint8_t * wiiu_encrypted_block_cache</div><div class="ttdoc">Cached re-encrypted 0x8000-byte physical sector.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00358">context.h:358</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_a3613b5ea23ce609b6d2c3a047692d455"><div class="ttname"><a href="structaaruformat__context.html#a3613b5ea23ce609b6d2c3a047692d455">aaruformat_context::ec_recovery_in_progress</a></div><div class="ttdeci">bool ec_recovery_in_progress</div><div class="ttdoc">Recursion guard for recovery (prevents infinite loops).</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00398">context.h:398</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_a369261f4f02c9997195c062ba7940468"><div class="ttname"><a href="structaaruformat__context.html#a369261f4f02c9997195c062ba7940468">aaruformat_context::ngcw_junk_entries</a></div><div class="ttdeci">void * ngcw_junk_entries</div><div class="ttdoc">Parsed NgcwJunkEntry array, NULL if not loaded.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00364">context.h:364</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_a3a12addf4a338cc04471709604d48ae1"><div class="ttname"><a href="structaaruformat__context.html#a3a12addf4a338cc04471709604d48ae1">aaruformat_context::block_header_cache</a></div><div class="ttdeci">struct CacheHeader block_header_cache</div><div class="ttdoc">LRU/Cache header for block headers.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00259">context.h:259</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_a3bfc3fceaaf015830913fd7efa794e5a"><div class="ttname"><a href="structaaruformat__context.html#a3bfc3fceaaf015830913fd7efa794e5a">aaruformat_context::sector_ied</a></div><div class="ttdeci">uint8_t * sector_ied</div><div class="ttdoc">DVD sector IED (2 bytes) if present.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00209">context.h:209</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_a413a99e4e86b7121adca2cfce8f02d63"><div class="ttname"><a href="structaaruformat__context.html#a413a99e4e86b7121adca2cfce8f02d63">aaruformat_context::sector_prefix</a></div><div class="ttdeci">uint8_t * sector_prefix</div><div class="ttdoc">Raw per-sector prefix (e.g., sync+header) uncorrected.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00202">context.h:202</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_a4313dd92399b83805575096514d0f473"><div class="ttname"><a href="structaaruformat__context.html#a4313dd92399b83805575096514d0f473">aaruformat_context::wii_cached_physical_group</a></div><div class="ttdeci">uint64_t wii_cached_physical_group</div><div class="ttdoc">Physical group number of cached block.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00374">context.h:374</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_a46d0ccdc69758165c0468afbd05b9ffe"><div class="ttname"><a href="structaaruformat__context.html#a46d0ccdc69758165c0468afbd05b9ffe">aaruformat_context::sector_suffix_ddt2</a></div><div class="ttdeci">uint64_t * sector_suffix_ddt2</div><div class="ttdoc">CD sector suffix DDT V2.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00189">context.h:189</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_a4dc244e21a520e90abd961c38eb6d9ae"><div class="ttname"><a href="structaaruformat__context.html#a4dc244e21a520e90abd961c38eb6d9ae">aaruformat_context::sector_edc</a></div><div class="ttdeci">uint8_t * sector_edc</div><div class="ttdoc">DVD sector EDC (4 bytes) if present.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00211">context.h:211</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_a510b72290e2bd50e02ef8a2387aa829d"><div class="ttname"><a href="structaaruformat__context.html#a510b72290e2bd50e02ef8a2387aa829d">aaruformat_context::ecc_cd_context</a></div><div class="ttdeci">CdEccContext * ecc_cd_context</div><div class="ttdoc">CD ECC/EDC helper tables (allocated on demand).</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00251">context.h:251</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_a58359ec8607d1d10e0af8699be238e77"><div class="ttname"><a href="structaaruformat__context.html#a58359ec8607d1d10e0af8699be238e77">aaruformat_context::block_cache</a></div><div class="ttdeci">struct CacheHeader block_cache</div><div class="ttdoc">LRU/Cache header for block payloads.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00260">context.h:260</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_a59525c7915fbc51ab0f2ef184db8bf6d"><div class="ttname"><a href="structaaruformat__context.html#a59525c7915fbc51ab0f2ef184db8bf6d">aaruformat_context::ps3_encryption_initialized</a></div><div class="ttdeci">bool ps3_encryption_initialized</div><div class="ttdoc">Whether lazy init has occurred.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00351">context.h:351</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_a5cbb6adfdc95162c1723955730a7b26d"><div class="ttname"><a href="structaaruformat__context.html#a5cbb6adfdc95162c1723955730a7b26d">aaruformat_context::wiiu_cached_physical_sector</a></div><div class="ttdeci">uint64_t wiiu_cached_physical_sector</div><div class="ttdoc">Physical sector number of cached block.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00359">context.h:359</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_a5ec94a7912a165e5e7cacbeb8b65cbdf"><div class="ttname"><a href="structaaruformat__context.html#a5ec94a7912a165e5e7cacbeb8b65cbdf">aaruformat_context::sector_suffix_ddt</a></div><div class="ttdeci">uint32_t * sector_suffix_ddt</div><div class="ttdoc">Legacy CD sector suffix DDT.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00187">context.h:187</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_a64870438f8f560a0b9973dedb3dd7e0e"><div class="ttname"><a href="structaaruformat__context.html#a64870438f8f560a0b9973dedb3dd7e0e">aaruformat_context::sector_suffix</a></div><div class="ttdeci">uint8_t * sector_suffix</div><div class="ttdoc">Raw per-sector suffix (EDC/ECC) uncorrected.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00204">context.h:204</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_a670dec8d59407989fefc361dc26c6832"><div class="ttname"><a href="structaaruformat__context.html#a670dec8d59407989fefc361dc26c6832">aaruformat_context::header</a></div><div class="ttdeci">AaruHeaderV2 header</div><div class="ttdoc">Parsed container header (v2).</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00178">context.h:178</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_a7c284949fdbfecfddeac2ba6687213b0"><div class="ttname"><a href="structaaruformat__context.html#a7c284949fdbfecfddeac2ba6687213b0">aaruformat_context::ddt_version</a></div><div class="ttdeci">int ddt_version</div><div class="ttdoc">DDT version in use (1=legacy, 2=v2 hierarchical).</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00197">context.h:197</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_a7dc0a0fe0bf6223ff4587fd01c360b76"><div class="ttname"><a href="structaaruformat__context.html#a7dc0a0fe0bf6223ff4587fd01c360b76">aaruformat_context::magic</a></div><div class="ttdeci">uint64_t magic</div><div class="ttdoc">File magic (AARU_MAGIC) post-open.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00177">context.h:177</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_a8317a42c16f1a140053f01808929f43f"><div class="ttname"><a href="structaaruformat__context.html#a8317a42c16f1a140053f01808929f43f">aaruformat_context::sector_prefix_ddt2</a></div><div class="ttdeci">uint64_t * sector_prefix_ddt2</div><div class="ttdoc">CD sector prefix DDT V2.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00188">context.h:188</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_a89ccabe4312ac3ea706c594bf4db4753"><div class="ttname"><a href="structaaruformat__context.html#a89ccabe4312ac3ea706c594bf4db4753">aaruformat_context::wii_building_crypto_block</a></div><div class="ttdeci">bool wii_building_crypto_block</div><div class="ttdoc">True while gathering sectors for re-encryption (suppresses recursion).</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00376">context.h:376</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_a8b769e9fb9467aa11d4a2936cf5cf5ed"><div class="ttname"><a href="structaaruformat__context.html#a8b769e9fb9467aa11d4a2936cf5cf5ed">aaruformat_context::mediaTags</a></div><div class="ttdeci">mediaTagEntry * mediaTags</div><div class="ttdoc">Hash table of extra media tags (uthash root).</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00267">context.h:267</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_a9307ffe59ce5d5b4f6c9c9a63b0ef70d"><div class="ttname"><a href="structaaruformat__context.html#a9307ffe59ce5d5b4f6c9c9a63b0ef70d">aaruformat_context::ngcw_junk_entry_count</a></div><div class="ttdeci">uint32_t ngcw_junk_entry_count</div><div class="ttdoc">Number of junk entries.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00365">context.h:365</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_aa3dd955c7f01ecb619b3862fecce7110"><div class="ttname"><a href="structaaruformat__context.html#aa3dd955c7f01ecb619b3862fecce7110">aaruformat_context::wii_partition_region_count</a></div><div class="ttdeci">uint32_t wii_partition_region_count</div><div class="ttdoc">Number of partition regions.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00371">context.h:371</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_aa518fbc0528e85d7bd69dd331433b4bf"><div class="ttname"><a href="structaaruformat__context.html#aa518fbc0528e85d7bd69dd331433b4bf">aaruformat_context::wiiu_encryption_initialized</a></div><div class="ttdeci">bool wiiu_encryption_initialized</div><div class="ttdoc">Whether lazy init has occurred.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00357">context.h:357</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_aa943f49c5e77c98bc4cddc9d0c2ae284"><div class="ttname"><a href="structaaruformat__context.html#aa943f49c5e77c98bc4cddc9d0c2ae284">aaruformat_context::sector_decrypted_title_key</a></div><div class="ttdeci">uint8_t * sector_decrypted_title_key</div><div class="ttdoc">DVD decrypted title key (5 bytes) if present.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00212">context.h:212</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_aa97751408e9681a348b9385e28c15680"><div class="ttname"><a href="structaaruformat__context.html#aa97751408e9681a348b9385e28c15680">aaruformat_context::wii_encryption_initialized</a></div><div class="ttdeci">bool wii_encryption_initialized</div><div class="ttdoc">Whether lazy init has occurred.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00372">context.h:372</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_aaf16c9ee5b05bac1ef44d29abef6134a"><div class="ttname"><a href="structaaruformat__context.html#aaf16c9ee5b05bac1ef44d29abef6134a">aaruformat_context::sector_subchannel</a></div><div class="ttdeci">uint8_t * sector_subchannel</div><div class="ttdoc">Raw 96-byte subchannel (if captured).</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00206">context.h:206</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_aaf475c0a1941563a9e1598f02ac48b66"><div class="ttname"><a href="structaaruformat__context.html#aaf475c0a1941563a9e1598f02ac48b66">aaruformat_context::wii_partition_regions</a></div><div class="ttdeci">void * wii_partition_regions</div><div class="ttdoc">Parsed WiiPartitionRegion array, NULL if not loaded.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00370">context.h:370</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_ab516fae594bde4f76b75488d0a3ca3a8"><div class="ttname"><a href="structaaruformat__context.html#ab516fae594bde4f76b75488d0a3ca3a8">aaruformat_context::imageStream</a></div><div class="ttdeci">FILE * imageStream</div><div class="ttdoc">Underlying FILE* stream (binary mode).</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00179">context.h:179</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_ac6734b2de73a4b6147aadc49bf3e96f8"><div class="ttname"><a href="structaaruformat__context.html#ac6734b2de73a4b6147aadc49bf3e96f8">aaruformat_context::mode2_subheaders</a></div><div class="ttdeci">uint8_t * mode2_subheaders</div><div class="ttdoc">MODE2 Form1/Form2 8-byte subheaders (concatenated).</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00207">context.h:207</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_ac970291b3449c04221827b9c2c18ac70"><div class="ttname"><a href="structaaruformat__context.html#ac970291b3449c04221827b9c2c18ac70">aaruformat_context::image_info</a></div><div class="ttdeci">ImageInfo image_info</div><div class="ttdoc">Exposed high-level image info summary.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00263">context.h:263</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_ac9f970fc840120793cb8edb909a664f8"><div class="ttname"><a href="structaaruformat__context.html#ac9f970fc840120793cb8edb909a664f8">aaruformat_context::wii_cache_valid</a></div><div class="ttdeci">bool wii_cache_valid</div><div class="ttdoc">Whether the encrypted group cache is valid.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00375">context.h:375</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_acc9cdfdd4be56c4f7016a37e218cee47"><div class="ttname"><a href="structaaruformat__context.html#acc9cdfdd4be56c4f7016a37e218cee47">aaruformat_context::sector_id</a></div><div class="ttdeci">uint8_t * sector_id</div><div class="ttdoc">DVD sector ID (4 bytes) if present.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00208">context.h:208</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_acf62eadb2e019323fdbe8bbf536ad82c"><div class="ttname"><a href="structaaruformat__context.html#acf62eadb2e019323fdbe8bbf536ad82c">aaruformat_context::ps3_plaintext_regions</a></div><div class="ttdeci">void * ps3_plaintext_regions</div><div class="ttdoc">Parsed Ps3PlaintextRegion array (max 32), NULL if not loaded.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00349">context.h:349</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_ad9e40dfb41ec80b902869354b052dd7d"><div class="ttname"><a href="structaaruformat__context.html#ad9e40dfb41ec80b902869354b052dd7d">aaruformat_context::sector_prefix_ddt</a></div><div class="ttdeci">uint32_t * sector_prefix_ddt</div><div class="ttdoc">Legacy CD sector prefix DDT (deprecated by *2).</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00186">context.h:186</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_adc79d62a5bbb4d1db9aa35a36e0d2396"><div class="ttname"><a href="structaaruformat__context.html#adc79d62a5bbb4d1db9aa35a36e0d2396">aaruformat_context::wiiu_cache_valid</a></div><div class="ttdeci">bool wiiu_cache_valid</div><div class="ttdoc">Whether the encrypted block cache is valid.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00360">context.h:360</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_adcabe3b59f532d036adf16b78faba58e"><div class="ttname"><a href="structaaruformat__context.html#adcabe3b59f532d036adf16b78faba58e">aaruformat_context::track_entries</a></div><div class="ttdeci">TrackEntry * track_entries</div><div class="ttdoc">Full track list (tracksHeader.entries elements).</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00245">context.h:245</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_adcda13fede7a22da60ef942981aef1b2"><div class="ttname"><a href="structaaruformat__context.html#adcda13fede7a22da60ef942981aef1b2">aaruformat_context::number_of_data_tracks</a></div><div class="ttdeci">uint8_t number_of_data_tracks</div><div class="ttdoc">Count of tracks considered &quot;data&quot; (sequence 1..99 heuristics).</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00248">context.h:248</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_adfcfa339aded095de2143ffff0931288"><div class="ttname"><a href="structaaruformat__context.html#adfcfa339aded095de2143ffff0931288">aaruformat_context::sector_suffix_corrected</a></div><div class="ttdeci">uint8_t * sector_suffix_corrected</div><div class="ttdoc">Corrected suffix if stored separately.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00205">context.h:205</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_ae1b2a0044c769c469ae161df9ed6de50"><div class="ttname"><a href="structaaruformat__context.html#ae1b2a0044c769c469ae161df9ed6de50">aaruformat_context::wii_encrypted_group_cache</a></div><div class="ttdeci">uint8_t * wii_encrypted_group_cache</div><div class="ttdoc">Cached re-encrypted 0x8000-byte group.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00373">context.h:373</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_ae87bda67ebb4a9b27f363a03634ab25c"><div class="ttname"><a href="structaaruformat__context.html#ae87bda67ebb4a9b27f363a03634ab25c">aaruformat_context::ngcw_junk_initialized</a></div><div class="ttdeci">bool ngcw_junk_initialized</div><div class="ttdoc">Whether junk map has been loaded.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00367">context.h:367</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_af7b4e0a80f76581b0cb1440d9a689f0f"><div class="ttname"><a href="structaaruformat__context.html#af7b4e0a80f76581b0cb1440d9a689f0f">aaruformat_context::ec_recovery_available</a></div><div class="ttdeci">bool ec_recovery_available</div><div class="ttdoc">True if ECMB loaded and recovery is possible.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00397">context.h:397</a></div></div>
<div class="ttc" id="astructaaruformat__context_html_aff71b0229a1c4c78572cfdb0824e601e"><div class="ttname"><a href="structaaruformat__context.html#aff71b0229a1c4c78572cfdb0824e601e">aaruformat_context::tracks_header</a></div><div class="ttdeci">TracksHeader tracks_header</div><div class="ttdoc">Tracks header (optical) if present.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00247">context.h:247</a></div></div>
<div class="ttc" id="astructmediaTagEntry_html"><div class="ttname"><a href="structmediaTagEntry.html">mediaTagEntry</a></div><div class="ttdoc">Hash table entry for an arbitrary media tag (e.g., proprietary drive/medium descriptor).</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00121">context.h:122</a></div></div>
<div class="ttc" id="astructmediaTagEntry_html_a334fc65b37efdfb624e804e98c398927"><div class="ttname"><a href="structmediaTagEntry.html#a334fc65b37efdfb624e804e98c398927">mediaTagEntry::data</a></div><div class="ttdeci">uint8_t * data</div><div class="ttdoc">Tag data blob (opaque to library core); length bytes long.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00123">context.h:123</a></div></div>
<div class="ttc" id="astructmediaTagEntry_html_aa96c6684fd98145d0089d72957d2afa7"><div class="ttname"><a href="structmediaTagEntry.html#aa96c6684fd98145d0089d72957d2afa7">mediaTagEntry::length</a></div><div class="ttdeci">uint32_t length</div><div class="ttdoc">Length in bytes of data.</div><div class="ttdef"><b>Definition</b> <a href="context_8h_source.html#l00125">context.h:125</a></div></div>
<div class="ttc" id="astructngc__lfg__ctx_html"><div class="ttname"><a href="structngc__lfg__ctx.html">ngc_lfg_ctx</a></div><div class="ttdoc">LFG context holding the 521-word circular buffer and byte position.</div><div class="ttdef"><b>Definition</b> <a href="lfg_8h_source.html#l00041">lfg.h:42</a></div></div>
<div class="ttc" id="astructngc__lfg__ctx_html_a9b5c7dbc3b197b77bef259cd8bbb408a"><div class="ttname"><a href="structngc__lfg__ctx.html#a9b5c7dbc3b197b77bef259cd8bbb408a">ngc_lfg_ctx::buffer</a></div><div class="ttdeci">uint32_t buffer[521]</div><div class="ttdef"><b>Definition</b> <a href="lfg_8h_source.html#l00043">lfg.h:43</a></div></div>
<div class="ttc" id="awii__crypto_8c_html_a1ce70cb0d83e9893accd7f06f218146a"><div class="ttname"><a href="wii__crypto_8c.html#a1ce70cb0d83e9893accd7f06f218146a">wii_get_sector_key</a></div><div class="ttdeci">const uint8_t * wii_get_sector_key(const WiiPartitionRegion *regions, uint32_t region_count, uint64_t logical_sector)</div><div class="ttdoc">Get the encryption key for a given logical sector (2048-byte).</div><div class="ttdef"><b>Definition</b> <a href="wii__crypto_8c_source.html#l00045">wii_crypto.c:45</a></div></div>
<div class="ttc" id="awii__crypto_8c_html_a95d508bfdafd91552793ad54a677d511"><div class="ttname"><a href="wii__crypto_8c.html#a95d508bfdafd91552793ad54a677d511">wii_encrypt_group</a></div><div class="ttdeci">void wii_encrypt_group(const uint8_t key[16], const uint8_t *hash_block, const uint8_t *data_in, uint8_t *out)</div><div class="ttdoc">Encrypt a Wii group (0x8000 bytes) from separate hash_block + data.</div><div class="ttdef"><b>Definition</b> <a href="wii__crypto_8c_source.html#l00071">wii_crypto.c:71</a></div></div>
<div class="ttc" id="awii__crypto_8c_html_aee93568d673177b4ed369b0032c6c68b"><div class="ttname"><a href="wii__crypto_8c.html#aee93568d673177b4ed369b0032c6c68b">wii_lazy_init</a></div><div class="ttdeci">void wii_lazy_init(aaruformat_context *ctx)</div><div class="ttdoc">Lazy initialization: load partition key map from media tags.</div><div class="ttdef"><b>Definition</b> <a href="wii__crypto_8c_source.html#l00180">wii_crypto.c:180</a></div></div>
<div class="ttc" id="awii__crypto_8h_html"><div class="ttname"><a href="wii__crypto_8h.html">wii_crypto.h</a></div></div>
<div class="ttc" id="awii__crypto_8h_html_a938e4b044436cfa7be47752ae7b58956"><div class="ttname"><a href="wii__crypto_8h.html#a938e4b044436cfa7be47752ae7b58956">WII_GROUP_SIZE</a></div><div class="ttdeci">#define WII_GROUP_SIZE</div><div class="ttdoc">Wii physical group size (32 KiB).</div><div class="ttdef"><b>Definition</b> <a href="wii__crypto_8h_source.html#l00038">wii_crypto.h:38</a></div></div>
<div class="ttc" id="awii__crypto_8h_html_a9ee328ed858e3139fbae54c007a00d64"><div class="ttname"><a href="wii__crypto_8h.html#a9ee328ed858e3139fbae54c007a00d64">WII_SECTOR_SIZE</a></div><div class="ttdeci">#define WII_SECTOR_SIZE</div><div class="ttdoc">Logical sector size in bytes.</div><div class="ttdef"><b>Definition</b> <a href="wii__crypto_8h_source.html#l00042">wii_crypto.h:42</a></div></div>
<div class="ttc" id="awii__crypto_8h_html_ab21867411a4f988431fc692baa0389d6"><div class="ttname"><a href="wii__crypto_8h.html#ab21867411a4f988431fc692baa0389d6">WII_GROUP_DATA_SIZE</a></div><div class="ttdeci">#define WII_GROUP_DATA_SIZE</div><div class="ttdoc">User data size within a group (31 KiB).</div><div class="ttdef"><b>Definition</b> <a href="wii__crypto_8h_source.html#l00040">wii_crypto.h:40</a></div></div>
<div class="ttc" id="awii__crypto_8h_html_ac673ea3e31315ae51d390d06df7340cb"><div class="ttname"><a href="wii__crypto_8h.html#ac673ea3e31315ae51d390d06df7340cb">WII_GROUP_HASH_SIZE</a></div><div class="ttdeci">#define WII_GROUP_HASH_SIZE</div><div class="ttdoc">Hash block size within a group (1 KiB).</div><div class="ttdef"><b>Definition</b> <a href="wii__crypto_8h_source.html#l00039">wii_crypto.h:39</a></div></div>
<div class="ttc" id="awii__crypto_8h_html_af6ed59742196c351932ad0f0e5e43566"><div class="ttname"><a href="wii__crypto_8h.html#af6ed59742196c351932ad0f0e5e43566">WII_LOGICAL_PER_GROUP</a></div><div class="ttdeci">#define WII_LOGICAL_PER_GROUP</div><div class="ttdoc">Number of 2048-byte logical sectors per group.</div><div class="ttdef"><b>Definition</b> <a href="wii__crypto_8h_source.html#l00041">wii_crypto.h:41</a></div></div>
<div class="ttc" id="awiiu__crypto_8c_html_a50434d7209fe488e67c983d276bd002c"><div class="ttname"><a href="wiiu__crypto_8c.html#a50434d7209fe488e67c983d276bd002c">wiiu_encrypt_physical_sector</a></div><div class="ttdeci">void wiiu_encrypt_physical_sector(const uint8_t key[16], uint8_t *data, uint32_t length)</div><div class="ttdoc">Encrypt a full 0x8000-byte physical sector in-place.</div><div class="ttdef"><b>Definition</b> <a href="wiiu__crypto_8c_source.html#l00072">wiiu_crypto.c:72</a></div></div>
<div class="ttc" id="awiiu__crypto_8c_html_a791f63da879f72714851b7c7fb707b77"><div class="ttname"><a href="wiiu__crypto_8c.html#a791f63da879f72714851b7c7fb707b77">wiiu_lazy_init</a></div><div class="ttdeci">void wiiu_lazy_init(aaruformat_context *ctx)</div><div class="ttdoc">Lazy initialization: load disc key and partition key map from media tags.</div><div class="ttdef"><b>Definition</b> <a href="wiiu__crypto_8c_source.html#l00155">wiiu_crypto.c:155</a></div></div>
<div class="ttc" id="awiiu__crypto_8c_html_ad545b76f7c59ef6f446fb1eb0dffae51"><div class="ttname"><a href="wiiu__crypto_8c.html#ad545b76f7c59ef6f446fb1eb0dffae51">wiiu_get_sector_key</a></div><div class="ttdeci">const uint8_t * wiiu_get_sector_key(const WiiuPartitionRegion *regions, uint32_t region_count, uint64_t logical_sector)</div><div class="ttdoc">Get the encryption key for a given logical sector (2048-byte).</div><div class="ttdef"><b>Definition</b> <a href="wiiu__crypto_8c_source.html#l00043">wiiu_crypto.c:43</a></div></div>
<div class="ttc" id="awiiu__crypto_8h_html"><div class="ttname"><a href="wiiu__crypto_8h.html">wiiu_crypto.h</a></div></div>
<div class="ttc" id="awiiu__crypto_8h_html_a1445016762d8e7fe5a0220e3cdded2d3"><div class="ttname"><a href="wiiu__crypto_8h.html#a1445016762d8e7fe5a0220e3cdded2d3">WIIU_CRYPTO_SECTOR_SIZE</a></div><div class="ttdeci">#define WIIU_CRYPTO_SECTOR_SIZE</div><div class="ttdoc">Wii U physical sector size (32 KiB).</div><div class="ttdef"><b>Definition</b> <a href="wiiu__crypto_8h_source.html#l00035">wiiu_crypto.h:35</a></div></div>
<div class="ttc" id="awiiu__crypto_8h_html_ae5a3916c486e8afd292c8ea9bebef9fd"><div class="ttname"><a href="wiiu__crypto_8h.html#ae5a3916c486e8afd292c8ea9bebef9fd">WIIU_LOGICAL_PER_PHYSICAL</a></div><div class="ttdeci">#define WIIU_LOGICAL_PER_PHYSICAL</div><div class="ttdoc">Number of 2048-byte logical sectors per physical sector.</div><div class="ttdef"><b>Definition</b> <a href="wiiu__crypto_8h_source.html#l00036">wiiu_crypto.h:36</a></div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
</div><!-- container -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a href="read_8c.html">read.c</a></li>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.16.1 </li>
</ul>
</div>
</body>
</html>