void zz_80024d90_(undefined4 param_1,undefined4 param_2,int *param_3) { char cVar1; int *piVar2; char *pcVar3; uint uVar4; undefined4 uVar5; int iVar6; undefined4 uVar7; char *pcVar8; char *pcVar9; int *piVar10; int *piVar11; int *piVar12; int *piVar13; char *pcVar14; int iVar15; undefined8 uVar16; int local_58; int local_54; char local_50 [40]; undefined4 local_28; undefined4 local_24; uVar16 = zz_80033960_(); uVar5 = (undefined4)((ulonglong)uVar16 >> 0x20); pcVar8 = (char *)uVar16; zz_803f89c0_(uVar5,&local_54); iVar6 = zz_803f8e30_(local_50,local_54); if (iVar6 == 0) { printf(s_ghstchal:_couldn't_get_friend_in_80479255); uVar7 = 0; } else { uVar4 = countLeadingZeros(local_54 + 2); printf(s_ghstchal:_replay_from_%s_8047930e,local_50); uVar7 = 0; iVar6 = zz_803f8880_(uVar5,DAT_805a1ac4,0x10b04); if (iVar6 == 0) { printf(s_ghstchal:_can't_get_attachment_804792c1); } else { local_58 = 0x10af4; iVar6 = zz_80178210_(DAT_805a1ac0,&local_58,DAT_805a1ac4,0x10b04); if (iVar6 == 0) { printf(s_ghstchal:_can't_uncompress_804792a6); } else { if (((local_58 == 0x10af4) && (*DAT_805a1ac0 == 0x5265706c)) && (DAT_805a1ac0[1] == 0xd)) { iVar15 = DAT_805a1ac0[0x7e]; iVar6 = zz_800193b0_(); piVar2 = DAT_805a1ac0; if (iVar15 < iVar6) { if (pcVar8 != (char *)0x0) { pcVar9 = local_50; iVar6 = 0x18; pcVar3 = pcVar8; do { pcVar14 = pcVar3; cVar1 = *pcVar9; pcVar9 = pcVar9 + 1; *pcVar14 = cVar1; if (cVar1 == '\0') goto LAB_80024f0c; iVar6 = iVar6 + -1; pcVar3 = pcVar14 + 1; } while (0 < iVar6); *pcVar14 = '\0'; LAB_80024f0c: *(undefined4 *)(pcVar8 + 0x1c) = local_24; *(undefined4 *)(pcVar8 + 0x18) = local_28; *(int *)(pcVar8 + 100) = piVar2[0x7c]; if ((uVar4 >> 5 != 0) && (iVar6 = zz_800176b0_(), -1 < iVar6)) { uVar7 = zz_800174d0_(); zz_80176e60_(pcVar8,0x18,s_\ALT%s\ALT_804790d0,uVar7); } *(int *)(pcVar8 + 0x70) = piVar2[0x7e]; *(int *)(pcVar8 + 0x74) = piVar2[0x7f]; *(int *)(pcVar8 + 0x68) = piVar2[0x307]; *(int *)(pcVar8 + 0x6c) = piVar2[0x309]; *(int *)(pcVar8 + 0x78) = piVar2[0x42bc]; FUN_80170e50(pcVar8 + 0x20,0x44,piVar2 + 2); zz_803f8b40_(uVar5,pcVar8 + 0x7c); } piVar2 = DAT_805a1ac0; if (param_3 != (int *)0x0) { piVar11 = DAT_805a1ac0 + 1; *param_3 = *DAT_805a1ac0; param_3[1] = piVar2[1]; iVar6 = 8; piVar13 = param_3 + 1; do { piVar12 = piVar13; piVar10 = piVar11; iVar15 = piVar10[2]; piVar12[1] = piVar10[1]; piVar12[2] = iVar15; iVar6 = iVar6 + -1; piVar11 = piVar10 + 2; piVar13 = piVar12 + 2; } while (iVar6 != 0); piVar12[3] = piVar10[3]; piVar13 = param_3 + 0x12; piVar11 = piVar2 + 0x12; iVar6 = 0x37; do { piVar10 = piVar11 + 1; piVar11 = piVar11 + 2; iVar15 = *piVar11; piVar13[1] = *piVar10; piVar13 = piVar13 + 2; *piVar13 = iVar15; iVar6 = iVar6 + -1; } while (iVar6 != 0); piVar13 = param_3 + 0x80; piVar11 = piVar2 + 0x80; iVar6 = 0x143; do { piVar10 = piVar11 + 1; piVar11 = piVar11 + 2; iVar15 = *piVar11; piVar13[1] = *piVar10; piVar13 = piVar13 + 2; *piVar13 = iVar15; iVar6 = iVar6 + -1; } while (iVar6 != 0); iVar6 = piVar2[0x307]; param_3[0x308] = piVar2[0x308]; param_3[0x307] = iVar6; param_3[0x309] = piVar2[0x309]; iVar6 = 0x34; piVar11 = piVar2 + 0x309; piVar13 = param_3 + 0x309; do { piVar12 = piVar13; piVar10 = piVar11; iVar15 = piVar10[2]; piVar12[1] = piVar10[1]; piVar12[2] = iVar15; iVar6 = iVar6 + -1; piVar11 = piVar10 + 2; piVar13 = piVar12 + 2; } while (iVar6 != 0); piVar12[3] = piVar10[3]; piVar13 = param_3 + 0x373; piVar11 = piVar2 + 0x373; param_3[0x373] = piVar2[0x373]; iVar6 = 0x1fa4; do { piVar10 = piVar11 + 1; piVar11 = piVar11 + 2; iVar15 = *piVar11; piVar13[1] = *piVar10; piVar13 = piVar13 + 2; *piVar13 = iVar15; iVar6 = iVar6 + -1; } while (iVar6 != 0); param_3[0x42bc] = piVar2[0x42bc]; } uVar7 = 1; } else { printf(s_ghstchal:_out_of_range_response_c_804792e0,iVar15); } } else { printf(s_ghstchal:_bad_version_80479290); } } } } zz_800339ac_(uVar7); return; }