+ do {
+ r2 = fn_59848(data);
+ if (r2 == 0)
+ break;
+
+ r2 = fn_598b4(data, 8) & 0xff;
+ r4 = r2;
+
+ fn_5980c(r4, mem);
+ arr_59b64[r5] = r4 & 0xff;
+ r2 = r5 + 1;
+ r2 = r2 << 22;
+ r2 = r2 >> 22;
+ r5 = r2;
+ } while(1);
+
+ r11 = fn_598b4(data, 0x0a);
+ if(r11 == 0)
+ return;
+
+ r2 = fn_598b4(data, 0x04);
+ r7 = r2 + 1;
+ r6 = 0;
+ do {
+ r2 = r6 + r11;
+ r2 = r2 << 22;
+ r2 = r2 >> 22;
+ r4 = arr_59b64[r2];
+ fn_5980c(r4, mem);
+ arr_59b64[r5] = r4 & 0xff;
+ r2 = r5 + 1;
+ r2 = r2 << 22;
+ r2 = r2 >> 22;
+ r5 = r2;
+ r6++;
+ } while(r6 <= r7);