From 05c92ac4936fcd3027d8e477b1a89e1cd6b4ac5c Mon Sep 17 00:00:00 2001 From: Michael Gernoth Date: Sat, 31 Jan 2009 00:23:17 +0100 Subject: [PATCH] fn_5993c implemented --- rsb-lz.c | 57 +++++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 40 insertions(+), 17 deletions(-) diff --git a/rsb-lz.c b/rsb-lz.c index e43b74b..a776e8d 100644 --- a/rsb-lz.c +++ b/rsb-lz.c @@ -466,28 +466,51 @@ void fn_5993c(struct s_59b78 *data, unsigned int mem[]) unsigned int r5; unsigned int r2; unsigned int r4; + unsigned int r6; + unsigned int r7; + unsigned int r11; unsigned char arr_59b64[1024]; r5 = 1; 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; - r2 = r5 + 1; - r2 = r2 << 22; - r2 = r2 >> 22; - r5 = r2; + 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); } while(1); - - /* CONT: 599a4 */ - } unsigned int crc_check_59684(unsigned char *arg1, unsigned int arg2, unsigned int magic) @@ -519,7 +542,7 @@ unsigned int crc_check_59684(unsigned char *arg1, unsigned int arg2, unsigned in if (r3 == r5) return 0; - return 0; + return 4; } void fn_59508() -- 2.39.5