
int compress_frag(z_stream_s *strm,char *contents,int in_size,fragS **last_newf,obstack *ob)

{
  int iVar1;
  char *pcVar2;
  fragS *pfVar3;
  char *pcVar4;
  int iVar5;
  int local_54;
  char *local_50;
  int avail_out;
  char *next_out;
  
  iVar5 = 0;
  pfVar3 = *last_newf;
  local_54 = in_size;
  local_50 = contents;
  do {
    if (local_54 < 1) {
      return iVar5;
    }
    while( true ) {
      pcVar4 = ob->chunk_limit;
      pcVar2 = ob->next_free;
      avail_out = (int)pcVar4 - (int)pcVar2;
      if (avail_out < 1) {
        if (pcVar2 == ob->object_base) {
          ob->field_0x50 = ob->field_0x50 | 2;
        }
        pcVar2 = (char *)((ulong)(pcVar2 + ob->alignment_mask) & ~ob->alignment_mask);
        ob->next_free = pcVar2;
        if ((ulong)((long)pcVar4 - (long)ob->chunk) < (ulong)((long)pcVar2 - (long)ob->chunk)) {
          ob->next_free = pcVar4;
          pcVar2 = pcVar4;
        }
        ob->object_base = pcVar2;
        pfVar3 = frag_alloc(ob);
        pcVar4 = ob->chunk_limit;
        pfVar3->fr_type = rs_fill;
        (*last_newf)->fr_next = pfVar3;
        pcVar2 = ob->next_free;
        *last_newf = pfVar3;
        avail_out = (int)pcVar4 - (int)pcVar2;
        if (avail_out < 1) {
          pcVar4 = (char *)dcgettext(0,"can\'t extend frag",5);
                    /* WARNING: Subroutine does not return */
          as_fatal(pcVar4);
        }
      }
      ob->next_free = pcVar2 + avail_out;
      next_out = pcVar2;
      iVar1 = compress_data(strm,&local_50,&local_54,&next_out,&avail_out);
      if (iVar1 < 0) {
        return -1;
      }
      iVar5 = iVar5 + iVar1;
      pfVar3->fr_fix = pfVar3->fr_fix + (long)iVar1;
      if (avail_out < 1) break;
      ob->next_free = ob->next_free + -avail_out;
      if (local_54 < 1) {
        return iVar5;
      }
    }
  } while( true );
}



int FUN_00130c90(undefined8 param_1,undefined8 param_2,int param_3,long *param_4,long param_5)

{
  ulong uVar1;
  int iVar2;
  long lVar3;
  ulong uVar4;
  long lVar5;
  undefined8 uVar6;
  int iVar7;
  int local_54;
  undefined8 local_50;
  int local_44;
  long local_40 [2];
  
  iVar7 = 0;
  lVar5 = *param_4;
  local_54 = param_3;
  local_50 = param_2;
  do {
    if (local_54 < 1) {
      return iVar7;
    }
    while( true ) {
      uVar1 = *(ulong *)(param_5 + 0x20);
      lVar3 = *(long *)(param_5 + 0x18);
      local_44 = (int)uVar1 - (int)lVar3;
      if (local_44 < 1) {
        if (lVar3 == *(long *)(param_5 + 0x10)) {
          *(byte *)(param_5 + 0x50) = *(byte *)(param_5 + 0x50) | 2;
        }
        uVar4 = lVar3 + *(ulong *)(param_5 + 0x30) & ~*(ulong *)(param_5 + 0x30);
        *(ulong *)(param_5 + 0x18) = uVar4;
        if (uVar1 - *(long *)(param_5 + 8) < uVar4 - *(long *)(param_5 + 8)) {
          *(ulong *)(param_5 + 0x18) = uVar1;
          uVar4 = uVar1;
        }
        *(ulong *)(param_5 + 0x10) = uVar4;
        lVar5 = FUN_0011a8d0(param_5);
        uVar6 = *(undefined8 *)(param_5 + 0x20);
        *(undefined4 *)(lVar5 + 0x5c) = 1;
        *(long *)(*param_4 + 0x38) = lVar5;
        lVar3 = *(long *)(param_5 + 0x18);
        *param_4 = lVar5;
        local_44 = (int)uVar6 - (int)lVar3;
        if (local_44 < 1) {
          uVar6 = dcgettext(0,"can\'t extend frag",5);
                    /* WARNING: Subroutine does not return */
          FUN_00121900(uVar6);
        }
      }
      *(long *)(param_5 + 0x18) = lVar3 + local_44;
      local_40[0] = lVar3;
      iVar2 = FUN_00110300(param_1,&local_50,&local_54,local_40,&local_44);
      if (iVar2 < 0) {
        return -1;
      }
      iVar7 = iVar7 + iVar2;
      *(long *)(lVar5 + 0x10) = *(long *)(lVar5 + 0x10) + (long)iVar2;
      if (local_44 < 1) break;
      *(long *)(param_5 + 0x18) = *(long *)(param_5 + 0x18) + (long)-local_44;
      if (local_54 < 1) {
        return iVar7;
      }
    }
  } while( true );
}


PUSH R15
MOV R15,RCX
PUSH R14
MOV R14,RDI
PUSH R13
PUSH R12
MOV R12,R8
PUSH RBP
PUSH RBX
XOR EBX,EBX
SUB RSP,0x48
MOV RBP,qword ptr [RCX]
LEA RAX,[RSP + 0x38]
MOV qword ptr [RSP + 0x28],RSI
LEA R13,[RSP + 0x34]
MOV qword ptr [RSP + 0x8],RAX
LEA RAX,[RSP + 0x24]
MOV qword ptr [RSP + 0x10],RAX
LEA RAX,[RSP + 0x28]
MOV dword ptr [RSP + 0x24],EDX
MOV qword ptr [RSP + 0x18],RAX
NOP dword ptr [RAX + RAX*0x1]
MOV EAX,dword ptr [RSP + 0x24]
TEST EAX,EAX
JLE 0x00130d54
MOV RSI,qword ptr [R12 + 0x20]
MOV RAX,qword ptr [R12 + 0x18]
MOV RCX,RSI
SUB RCX,RAX
MOVSXD RDX,ECX
MOV dword ptr [RSP + 0x34],ECX
TEST ECX,ECX
JLE 0x00130d68
MOV qword ptr [RSP + 0x38],RAX
ADD RAX,RDX
MOV RCX,qword ptr [RSP + 0x8]
MOV R8,R13
MOV qword ptr [R12 + 0x18],RAX
MOV RDX,qword ptr [RSP + 0x10]
MOV RDI,R14
MOV RSI,qword ptr [RSP + 0x18]
CALL 0x00110300
TEST EAX,EAX
JS 0x00130e10
MOVSXD RDX,EAX
ADD EBX,EAX
MOV EAX,dword ptr [RSP + 0x34]
ADD qword ptr [RBP + 0x10],RDX
TEST EAX,EAX
JLE 0x00130ce0
NEG EAX
CDQE
ADD qword ptr [R12 + 0x18],RAX
MOV EAX,dword ptr [RSP + 0x24]
TEST EAX,EAX
JG 0x00130ce8
ADD RSP,0x48
MOV EAX,EBX
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
CMP RAX,qword ptr [R12 + 0x10]
JZ 0x00130e00
MOV RDX,qword ptr [R12 + 0x30]
MOV RDI,RSI
ADD RAX,RDX
NOT RDX
AND RAX,RDX
MOV RDX,qword ptr [R12 + 0x8]
MOV RCX,RAX
MOV qword ptr [R12 + 0x18],RAX
SUB RCX,RDX
SUB RDI,RDX
CMP RCX,RDI
JBE 0x00130da4
MOV qword ptr [R12 + 0x18],RSI
MOV RAX,RSI
MOV qword ptr [R12 + 0x10],RAX
MOV RDI,R12
CALL 0x0011a8d0
MOV RCX,qword ptr [R12 + 0x20]
MOV RBP,RAX
MOV dword ptr [RAX + 0x5c],0x1
MOV RAX,qword ptr [R15]
MOV qword ptr [RAX + 0x38],RBP
MOV RAX,qword ptr [R12 + 0x18]
MOV qword ptr [R15],RBP
SUB RCX,RAX
MOVSXD RDX,ECX
MOV dword ptr [RSP + 0x34],ECX
TEST ECX,ECX
JG 0x00130d03
XOR EDI,EDI
MOV EDX,0x5
LEA RSI,[0x14bc5e]
CALL 0x0010c1f0
MOV RDI,RAX
XOR EAX,EAX
CALL 0x00121900
OR byte ptr [R12 + 0x50],0x2
JMP 0x00130d73
MOV EBX,0xffffffff
JMP 0x00130d54
(translation_unit "int FUN_00130c90(undefined8 param_1,undefined8 param_2,int param_3,long *param_4,long param_5)\n\n{\n  ulong uVar1;\n  int iVar2;\n  long lVar3;\n  ulong uVar4;\n  long lVar5;\n  undefined8 uVar6;\n  int iVar7;\n  int local_54;\n  undefined8 local_50;\n  int local_44;\n  long local_40 [2];\n  \n  iVar7 = 0;\n  lVar5 = *param_4;\n  local_54 = param_3;\n  local_50 = param_2;\n  do {\n    if (local_54 < 1) {\n      return iVar7;\n    }\n    while( true ) {\n      uVar1 = *(ulong *)(param_5 + 0x20);\n      lVar3 = *(long *)(param_5 + 0x18);\n      local_44 = (int)uVar1 - (int)lVar3;\n      if (local_44 < 1) {\n        if (lVar3 == *(long *)(param_5 + 0x10)) {\n          *(byte *)(param_5 + 0x50) = *(byte *)(param_5 + 0x50) | 2;\n        }\n        uVar4 = lVar3 + *(ulong *)(param_5 + 0x30) & ~*(ulong *)(param_5 + 0x30);\n        *(ulong *)(param_5 + 0x18) = uVar4;\n        if (uVar1 - *(long *)(param_5 + 8) < uVar4 - *(long *)(param_5 + 8)) {\n          *(ulong *)(param_5 + 0x18) = uVar1;\n          uVar4 = uVar1;\n        }\n        *(ulong *)(param_5 + 0x10) = uVar4;\n        lVar5 = FUN_0011a8d0(param_5);\n        uVar6 = *(undefined8 *)(param_5 + 0x20);\n        *(undefined4 *)(lVar5 + 0x5c) = 1;\n        *(long *)(*param_4 + 0x38) = lVar5;\n        lVar3 = *(long *)(param_5 + 0x18);\n        *param_4 = lVar5;\n        local_44 = (int)uVar6 - (int)lVar3;\n        if (local_44 < 1) {\n          uVar6 = dcgettext(0,"can\'t extend frag",5);\n                    /* WARNING: Subroutine does not return */\n          FUN_00121900(uVar6);\n        }\n      }\n      *(long *)(param_5 + 0x18) = lVar3 + local_44;\n      local_40[0] = lVar3;\n      iVar2 = FUN_00110300(param_1,&local_50,&local_54,local_40,&local_44);\n      if (iVar2 < 0) {\n        return -1;\n      }\n      iVar7 = iVar7 + iVar2;\n      *(long *)(lVar5 + 0x10) = *(long *)(lVar5 + 0x10) + (long)iVar2;\n      if (local_44 < 1) break;\n      *(long *)(param_5 + 0x18) = *(long *)(param_5 + 0x18) + (long)-local_44;\n      if (local_54 < 1) {\n        return iVar7;\n      }\n    }\n  } while( true );\n}\n\n" (function_definition "int FUN_00130c90(undefined8 param_1,undefined8 param_2,int param_3,long *param_4,long param_5)\n\n{\n  ulong uVar1;\n  int iVar2;\n  long lVar3;\n  ulong uVar4;\n  long lVar5;\n  undefined8 uVar6;\n  int iVar7;\n  int local_54;\n  undefined8 local_50;\n  int local_44;\n  long local_40 [2];\n  \n  iVar7 = 0;\n  lVar5 = *param_4;\n  local_54 = param_3;\n  local_50 = param_2;\n  do {\n    if (local_54 < 1) {\n      return iVar7;\n    }\n    while( true ) {\n      uVar1 = *(ulong *)(param_5 + 0x20);\n      lVar3 = *(long *)(param_5 + 0x18);\n      local_44 = (int)uVar1 - (int)lVar3;\n      if (local_44 < 1) {\n        if (lVar3 == *(long *)(param_5 + 0x10)) {\n          *(byte *)(param_5 + 0x50) = *(byte *)(param_5 + 0x50) | 2;\n        }\n        uVar4 = lVar3 + *(ulong *)(param_5 + 0x30) & ~*(ulong *)(param_5 + 0x30);\n        *(ulong *)(param_5 + 0x18) = uVar4;\n        if (uVar1 - *(long *)(param_5 + 8) < uVar4 - *(long *)(param_5 + 8)) {\n          *(ulong *)(param_5 + 0x18) = uVar1;\n          uVar4 = uVar1;\n        }\n        *(ulong *)(param_5 + 0x10) = uVar4;\n        lVar5 = FUN_0011a8d0(param_5);\n        uVar6 = *(undefined8 *)(param_5 + 0x20);\n        *(undefined4 *)(lVar5 + 0x5c) = 1;\n        *(long *)(*param_4 + 0x38) = lVar5;\n        lVar3 = *(long *)(param_5 + 0x18);\n        *param_4 = lVar5;\n        local_44 = (int)uVar6 - (int)lVar3;\n        if (local_44 < 1) {\n          uVar6 = dcgettext(0,"can\'t extend frag",5);\n                    /* WARNING: Subroutine does not return */\n          FUN_00121900(uVar6);\n        }\n      }\n      *(long *)(param_5 + 0x18) = lVar3 + local_44;\n      local_40[0] = lVar3;\n      iVar2 = FUN_00110300(param_1,&local_50,&local_54,local_40,&local_44);\n      if (iVar2 < 0) {\n        return -1;\n      }\n      iVar7 = iVar7 + iVar2;\n      *(long *)(lVar5 + 0x10) = *(long *)(lVar5 + 0x10) + (long)iVar2;\n      if (local_44 < 1) break;\n      *(long *)(param_5 + 0x18) = *(long *)(param_5 + 0x18) + (long)-local_44;\n      if (local_54 < 1) {\n        return iVar7;\n      }\n    }\n  } while( true );\n}" primitive_type (function_declarator "FUN_00130c90(undefined8 param_1,undefined8 param_2,int param_3,long *param_4,long param_5)" identifier (parameter_list "(undefined8 param_1,undefined8 param_2,int param_3,long *param_4,long param_5)" ( (parameter_declaration "undefined8 param_1" type_identifier identifier) , (parameter_declaration "undefined8 param_2" type_identifier identifier) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "long *param_4" (sized_type_specifier "long" long) (pointer_declarator "*param_4" * identifier)) , (parameter_declaration "long param_5" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  ulong uVar1;\n  int iVar2;\n  long lVar3;\n  ulong uVar4;\n  long lVar5;\n  undefined8 uVar6;\n  int iVar7;\n  int local_54;\n  undefined8 local_50;\n  int local_44;\n  long local_40 [2];\n  \n  iVar7 = 0;\n  lVar5 = *param_4;\n  local_54 = param_3;\n  local_50 = param_2;\n  do {\n    if (local_54 < 1) {\n      return iVar7;\n    }\n    while( true ) {\n      uVar1 = *(ulong *)(param_5 + 0x20);\n      lVar3 = *(long *)(param_5 + 0x18);\n      local_44 = (int)uVar1 - (int)lVar3;\n      if (local_44 < 1) {\n        if (lVar3 == *(long *)(param_5 + 0x10)) {\n          *(byte *)(param_5 + 0x50) = *(byte *)(param_5 + 0x50) | 2;\n        }\n        uVar4 = lVar3 + *(ulong *)(param_5 + 0x30) & ~*(ulong *)(param_5 + 0x30);\n        *(ulong *)(param_5 + 0x18) = uVar4;\n        if (uVar1 - *(long *)(param_5 + 8) < uVar4 - *(long *)(param_5 + 8)) {\n          *(ulong *)(param_5 + 0x18) = uVar1;\n          uVar4 = uVar1;\n        }\n        *(ulong *)(param_5 + 0x10) = uVar4;\n        lVar5 = FUN_0011a8d0(param_5);\n        uVar6 = *(undefined8 *)(param_5 + 0x20);\n        *(undefined4 *)(lVar5 + 0x5c) = 1;\n        *(long *)(*param_4 + 0x38) = lVar5;\n        lVar3 = *(long *)(param_5 + 0x18);\n        *param_4 = lVar5;\n        local_44 = (int)uVar6 - (int)lVar3;\n        if (local_44 < 1) {\n          uVar6 = dcgettext(0,"can\'t extend frag",5);\n                    /* WARNING: Subroutine does not return */\n          FUN_00121900(uVar6);\n        }\n      }\n      *(long *)(param_5 + 0x18) = lVar3 + local_44;\n      local_40[0] = lVar3;\n      iVar2 = FUN_00110300(param_1,&local_50,&local_54,local_40,&local_44);\n      if (iVar2 < 0) {\n        return -1;\n      }\n      iVar7 = iVar7 + iVar2;\n      *(long *)(lVar5 + 0x10) = *(long *)(lVar5 + 0x10) + (long)iVar2;\n      if (local_44 < 1) break;\n      *(long *)(param_5 + 0x18) = *(long *)(param_5 + 0x18) + (long)-local_44;\n      if (local_54 < 1) {\n        return iVar7;\n      }\n    }\n  } while( true );\n}" { (declaration "ulong uVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar4;" type_identifier identifier ;) (declaration "long lVar5;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 uVar6;" type_identifier identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "int local_54;" primitive_type identifier ;) (declaration "undefined8 local_50;" type_identifier identifier ;) (declaration "int local_44;" primitive_type identifier ;) (declaration "long local_40 [2];" (sized_type_specifier "long" long) (array_declarator "local_40 [2]" identifier [ number_literal ]) ;) (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" identifier = number_literal) ;) (expression_statement "lVar5 = *param_4;" (assignment_expression "lVar5 = *param_4" identifier = (pointer_expression "*param_4" * identifier)) ;) (expression_statement "local_54 = param_3;" (assignment_expression "local_54 = param_3" identifier = identifier) ;) (expression_statement "local_50 = param_2;" (assignment_expression "local_50 = param_2" identifier = identifier) ;) (do_statement "do {\n    if (local_54 < 1) {\n      return iVar7;\n    }\n    while( true ) {\n      uVar1 = *(ulong *)(param_5 + 0x20);\n      lVar3 = *(long *)(param_5 + 0x18);\n      local_44 = (int)uVar1 - (int)lVar3;\n      if (local_44 < 1) {\n        if (lVar3 == *(long *)(param_5 + 0x10)) {\n          *(byte *)(param_5 + 0x50) = *(byte *)(param_5 + 0x50) | 2;\n        }\n        uVar4 = lVar3 + *(ulong *)(param_5 + 0x30) & ~*(ulong *)(param_5 + 0x30);\n        *(ulong *)(param_5 + 0x18) = uVar4;\n        if (uVar1 - *(long *)(param_5 + 8) < uVar4 - *(long *)(param_5 + 8)) {\n          *(ulong *)(param_5 + 0x18) = uVar1;\n          uVar4 = uVar1;\n        }\n        *(ulong *)(param_5 + 0x10) = uVar4;\n        lVar5 = FUN_0011a8d0(param_5);\n        uVar6 = *(undefined8 *)(param_5 + 0x20);\n        *(undefined4 *)(lVar5 + 0x5c) = 1;\n        *(long *)(*param_4 + 0x38) = lVar5;\n        lVar3 = *(long *)(param_5 + 0x18);\n        *param_4 = lVar5;\n        local_44 = (int)uVar6 - (int)lVar3;\n        if (local_44 < 1) {\n          uVar6 = dcgettext(0,"can\'t extend frag",5);\n                    /* WARNING: Subroutine does not return */\n          FUN_00121900(uVar6);\n        }\n      }\n      *(long *)(param_5 + 0x18) = lVar3 + local_44;\n      local_40[0] = lVar3;\n      iVar2 = FUN_00110300(param_1,&local_50,&local_54,local_40,&local_44);\n      if (iVar2 < 0) {\n        return -1;\n      }\n      iVar7 = iVar7 + iVar2;\n      *(long *)(lVar5 + 0x10) = *(long *)(lVar5 + 0x10) + (long)iVar2;\n      if (local_44 < 1) break;\n      *(long *)(param_5 + 0x18) = *(long *)(param_5 + 0x18) + (long)-local_44;\n      if (local_54 < 1) {\n        return iVar7;\n      }\n    }\n  } while( true );" do (compound_statement "{\n    if (local_54 < 1) {\n      return iVar7;\n    }\n    while( true ) {\n      uVar1 = *(ulong *)(param_5 + 0x20);\n      lVar3 = *(long *)(param_5 + 0x18);\n      local_44 = (int)uVar1 - (int)lVar3;\n      if (local_44 < 1) {\n        if (lVar3 == *(long *)(param_5 + 0x10)) {\n          *(byte *)(param_5 + 0x50) = *(byte *)(param_5 + 0x50) | 2;\n        }\n        uVar4 = lVar3 + *(ulong *)(param_5 + 0x30) & ~*(ulong *)(param_5 + 0x30);\n        *(ulong *)(param_5 + 0x18) = uVar4;\n        if (uVar1 - *(long *)(param_5 + 8) < uVar4 - *(long *)(param_5 + 8)) {\n          *(ulong *)(param_5 + 0x18) = uVar1;\n          uVar4 = uVar1;\n        }\n        *(ulong *)(param_5 + 0x10) = uVar4;\n        lVar5 = FUN_0011a8d0(param_5);\n        uVar6 = *(undefined8 *)(param_5 + 0x20);\n        *(undefined4 *)(lVar5 + 0x5c) = 1;\n        *(long *)(*param_4 + 0x38) = lVar5;\n        lVar3 = *(long *)(param_5 + 0x18);\n        *param_4 = lVar5;\n        local_44 = (int)uVar6 - (int)lVar3;\n        if (local_44 < 1) {\n          uVar6 = dcgettext(0,"can\'t extend frag",5);\n                    /* WARNING: Subroutine does not return */\n          FUN_00121900(uVar6);\n        }\n      }\n      *(long *)(param_5 + 0x18) = lVar3 + local_44;\n      local_40[0] = lVar3;\n      iVar2 = FUN_00110300(param_1,&local_50,&local_54,local_40,&local_44);\n      if (iVar2 < 0) {\n        return -1;\n      }\n      iVar7 = iVar7 + iVar2;\n      *(long *)(lVar5 + 0x10) = *(long *)(lVar5 + 0x10) + (long)iVar2;\n      if (local_44 < 1) break;\n      *(long *)(param_5 + 0x18) = *(long *)(param_5 + 0x18) + (long)-local_44;\n      if (local_54 < 1) {\n        return iVar7;\n      }\n    }\n  }" { (if_statement "if (local_54 < 1) {\n      return iVar7;\n    }" if (parenthesized_expression "(local_54 < 1)" ( (binary_expression "local_54 < 1" identifier < number_literal) )) (compound_statement "{\n      return iVar7;\n    }" { (return_statement "return iVar7;" return identifier ;) })) (while_statement "while( true ) {\n      uVar1 = *(ulong *)(param_5 + 0x20);\n      lVar3 = *(long *)(param_5 + 0x18);\n      local_44 = (int)uVar1 - (int)lVar3;\n      if (local_44 < 1) {\n        if (lVar3 == *(long *)(param_5 + 0x10)) {\n          *(byte *)(param_5 + 0x50) = *(byte *)(param_5 + 0x50) | 2;\n        }\n        uVar4 = lVar3 + *(ulong *)(param_5 + 0x30) & ~*(ulong *)(param_5 + 0x30);\n        *(ulong *)(param_5 + 0x18) = uVar4;\n        if (uVar1 - *(long *)(param_5 + 8) < uVar4 - *(long *)(param_5 + 8)) {\n          *(ulong *)(param_5 + 0x18) = uVar1;\n          uVar4 = uVar1;\n        }\n        *(ulong *)(param_5 + 0x10) = uVar4;\n        lVar5 = FUN_0011a8d0(param_5);\n        uVar6 = *(undefined8 *)(param_5 + 0x20);\n        *(undefined4 *)(lVar5 + 0x5c) = 1;\n        *(long *)(*param_4 + 0x38) = lVar5;\n        lVar3 = *(long *)(param_5 + 0x18);\n        *param_4 = lVar5;\n        local_44 = (int)uVar6 - (int)lVar3;\n        if (local_44 < 1) {\n          uVar6 = dcgettext(0,"can\'t extend frag",5);\n                    /* WARNING: Subroutine does not return */\n          FUN_00121900(uVar6);\n        }\n      }\n      *(long *)(param_5 + 0x18) = lVar3 + local_44;\n      local_40[0] = lVar3;\n      iVar2 = FUN_00110300(param_1,&local_50,&local_54,local_40,&local_44);\n      if (iVar2 < 0) {\n        return -1;\n      }\n      iVar7 = iVar7 + iVar2;\n      *(long *)(lVar5 + 0x10) = *(long *)(lVar5 + 0x10) + (long)iVar2;\n      if (local_44 < 1) break;\n      *(long *)(param_5 + 0x18) = *(long *)(param_5 + 0x18) + (long)-local_44;\n      if (local_54 < 1) {\n        return iVar7;\n      }\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      uVar1 = *(ulong *)(param_5 + 0x20);\n      lVar3 = *(long *)(param_5 + 0x18);\n      local_44 = (int)uVar1 - (int)lVar3;\n      if (local_44 < 1) {\n        if (lVar3 == *(long *)(param_5 + 0x10)) {\n          *(byte *)(param_5 + 0x50) = *(byte *)(param_5 + 0x50) | 2;\n        }\n        uVar4 = lVar3 + *(ulong *)(param_5 + 0x30) & ~*(ulong *)(param_5 + 0x30);\n        *(ulong *)(param_5 + 0x18) = uVar4;\n        if (uVar1 - *(long *)(param_5 + 8) < uVar4 - *(long *)(param_5 + 8)) {\n          *(ulong *)(param_5 + 0x18) = uVar1;\n          uVar4 = uVar1;\n        }\n        *(ulong *)(param_5 + 0x10) = uVar4;\n        lVar5 = FUN_0011a8d0(param_5);\n        uVar6 = *(undefined8 *)(param_5 + 0x20);\n        *(undefined4 *)(lVar5 + 0x5c) = 1;\n        *(long *)(*param_4 + 0x38) = lVar5;\n        lVar3 = *(long *)(param_5 + 0x18);\n        *param_4 = lVar5;\n        local_44 = (int)uVar6 - (int)lVar3;\n        if (local_44 < 1) {\n          uVar6 = dcgettext(0,"can\'t extend frag",5);\n                    /* WARNING: Subroutine does not return */\n          FUN_00121900(uVar6);\n        }\n      }\n      *(long *)(param_5 + 0x18) = lVar3 + local_44;\n      local_40[0] = lVar3;\n      iVar2 = FUN_00110300(param_1,&local_50,&local_54,local_40,&local_44);\n      if (iVar2 < 0) {\n        return -1;\n      }\n      iVar7 = iVar7 + iVar2;\n      *(long *)(lVar5 + 0x10) = *(long *)(lVar5 + 0x10) + (long)iVar2;\n      if (local_44 < 1) break;\n      *(long *)(param_5 + 0x18) = *(long *)(param_5 + 0x18) + (long)-local_44;\n      if (local_54 < 1) {\n        return iVar7;\n      }\n    }" { (expression_statement "uVar1 = *(ulong *)(param_5 + 0x20);" (assignment_expression "uVar1 = *(ulong *)(param_5 + 0x20)" identifier = (pointer_expression "*(ulong *)(param_5 + 0x20)" * (cast_expression "(ulong *)(param_5 + 0x20)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0x20)" ( (binary_expression "param_5 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "lVar3 = *(long *)(param_5 + 0x18);" (assignment_expression "lVar3 = *(long *)(param_5 + 0x18)" identifier = (pointer_expression "*(long *)(param_5 + 0x18)" * (cast_expression "(long *)(param_5 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0x18)" ( (binary_expression "param_5 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "local_44 = (int)uVar1 - (int)lVar3;" (assignment_expression "local_44 = (int)uVar1 - (int)lVar3" identifier = (binary_expression "(int)uVar1 - (int)lVar3" (cast_expression "(int)uVar1" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)lVar3" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if (local_44 < 1) {\n        if (lVar3 == *(long *)(param_5 + 0x10)) {\n          *(byte *)(param_5 + 0x50) = *(byte *)(param_5 + 0x50) | 2;\n        }\n        uVar4 = lVar3 + *(ulong *)(param_5 + 0x30) & ~*(ulong *)(param_5 + 0x30);\n        *(ulong *)(param_5 + 0x18) = uVar4;\n        if (uVar1 - *(long *)(param_5 + 8) < uVar4 - *(long *)(param_5 + 8)) {\n          *(ulong *)(param_5 + 0x18) = uVar1;\n          uVar4 = uVar1;\n        }\n        *(ulong *)(param_5 + 0x10) = uVar4;\n        lVar5 = FUN_0011a8d0(param_5);\n        uVar6 = *(undefined8 *)(param_5 + 0x20);\n        *(undefined4 *)(lVar5 + 0x5c) = 1;\n        *(long *)(*param_4 + 0x38) = lVar5;\n        lVar3 = *(long *)(param_5 + 0x18);\n        *param_4 = lVar5;\n        local_44 = (int)uVar6 - (int)lVar3;\n        if (local_44 < 1) {\n          uVar6 = dcgettext(0,"can\'t extend frag",5);\n                    /* WARNING: Subroutine does not return */\n          FUN_00121900(uVar6);\n        }\n      }" if (parenthesized_expression "(local_44 < 1)" ( (binary_expression "local_44 < 1" identifier < number_literal) )) (compound_statement "{\n        if (lVar3 == *(long *)(param_5 + 0x10)) {\n          *(byte *)(param_5 + 0x50) = *(byte *)(param_5 + 0x50) | 2;\n        }\n        uVar4 = lVar3 + *(ulong *)(param_5 + 0x30) & ~*(ulong *)(param_5 + 0x30);\n        *(ulong *)(param_5 + 0x18) = uVar4;\n        if (uVar1 - *(long *)(param_5 + 8) < uVar4 - *(long *)(param_5 + 8)) {\n          *(ulong *)(param_5 + 0x18) = uVar1;\n          uVar4 = uVar1;\n        }\n        *(ulong *)(param_5 + 0x10) = uVar4;\n        lVar5 = FUN_0011a8d0(param_5);\n        uVar6 = *(undefined8 *)(param_5 + 0x20);\n        *(undefined4 *)(lVar5 + 0x5c) = 1;\n        *(long *)(*param_4 + 0x38) = lVar5;\n        lVar3 = *(long *)(param_5 + 0x18);\n        *param_4 = lVar5;\n        local_44 = (int)uVar6 - (int)lVar3;\n        if (local_44 < 1) {\n          uVar6 = dcgettext(0,"can\'t extend frag",5);\n                    /* WARNING: Subroutine does not return */\n          FUN_00121900(uVar6);\n        }\n      }" { (if_statement "if (lVar3 == *(long *)(param_5 + 0x10)) {\n          *(byte *)(param_5 + 0x50) = *(byte *)(param_5 + 0x50) | 2;\n        }" if (parenthesized_expression "(lVar3 == *(long *)(param_5 + 0x10))" ( (binary_expression "lVar3 == *(long *)(param_5 + 0x10)" identifier == (pointer_expression "*(long *)(param_5 + 0x10)" * (cast_expression "(long *)(param_5 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0x10)" ( (binary_expression "param_5 + 0x10" identifier + number_literal) ))))) )) (compound_statement "{\n          *(byte *)(param_5 + 0x50) = *(byte *)(param_5 + 0x50) | 2;\n        }" { (expression_statement "*(byte *)(param_5 + 0x50) = *(byte *)(param_5 + 0x50) | 2;" (assignment_expression "*(byte *)(param_5 + 0x50) = *(byte *)(param_5 + 0x50) | 2" (pointer_expression "*(byte *)(param_5 + 0x50)" * (cast_expression "(byte *)(param_5 + 0x50)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0x50)" ( (binary_expression "param_5 + 0x50" identifier + number_literal) )))) = (binary_expression "*(byte *)(param_5 + 0x50) | 2" (pointer_expression "*(byte *)(param_5 + 0x50)" * (cast_expression "(byte *)(param_5 + 0x50)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0x50)" ( (binary_expression "param_5 + 0x50" identifier + number_literal) )))) | number_literal)) ;) })) (expression_statement "uVar4 = lVar3 + *(ulong *)(param_5 + 0x30) & ~*(ulong *)(param_5 + 0x30);" (assignment_expression "uVar4 = lVar3 + *(ulong *)(param_5 + 0x30) & ~*(ulong *)(param_5 + 0x30)" identifier = (binary_expression "lVar3 + *(ulong *)(param_5 + 0x30) & ~*(ulong *)(param_5 + 0x30)" (binary_expression "lVar3 + *(ulong *)(param_5 + 0x30)" identifier + (pointer_expression "*(ulong *)(param_5 + 0x30)" * (cast_expression "(ulong *)(param_5 + 0x30)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0x30)" ( (binary_expression "param_5 + 0x30" identifier + number_literal) ))))) & (unary_expression "~*(ulong *)(param_5 + 0x30)" ~ (pointer_expression "*(ulong *)(param_5 + 0x30)" * (cast_expression "(ulong *)(param_5 + 0x30)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0x30)" ( (binary_expression "param_5 + 0x30" identifier + number_literal) ))))))) ;) (expression_statement "*(ulong *)(param_5 + 0x18) = uVar4;" (assignment_expression "*(ulong *)(param_5 + 0x18) = uVar4" (pointer_expression "*(ulong *)(param_5 + 0x18)" * (cast_expression "(ulong *)(param_5 + 0x18)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0x18)" ( (binary_expression "param_5 + 0x18" identifier + number_literal) )))) = identifier) ;) (if_statement "if (uVar1 - *(long *)(param_5 + 8) < uVar4 - *(long *)(param_5 + 8)) {\n          *(ulong *)(param_5 + 0x18) = uVar1;\n          uVar4 = uVar1;\n        }" if (parenthesized_expression "(uVar1 - *(long *)(param_5 + 8) < uVar4 - *(long *)(param_5 + 8))" ( (binary_expression "uVar1 - *(long *)(param_5 + 8) < uVar4 - *(long *)(param_5 + 8)" (binary_expression "uVar1 - *(long *)(param_5 + 8)" identifier - (pointer_expression "*(long *)(param_5 + 8)" * (cast_expression "(long *)(param_5 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 8)" ( (binary_expression "param_5 + 8" identifier + number_literal) ))))) < (binary_expression "uVar4 - *(long *)(param_5 + 8)" identifier - (pointer_expression "*(long *)(param_5 + 8)" * (cast_expression "(long *)(param_5 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 8)" ( (binary_expression "param_5 + 8" identifier + number_literal) )))))) )) (compound_statement "{\n          *(ulong *)(param_5 + 0x18) = uVar1;\n          uVar4 = uVar1;\n        }" { (expression_statement "*(ulong *)(param_5 + 0x18) = uVar1;" (assignment_expression "*(ulong *)(param_5 + 0x18) = uVar1" (pointer_expression "*(ulong *)(param_5 + 0x18)" * (cast_expression "(ulong *)(param_5 + 0x18)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0x18)" ( (binary_expression "param_5 + 0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar4 = uVar1;" (assignment_expression "uVar4 = uVar1" identifier = identifier) ;) })) (expression_statement "*(ulong *)(param_5 + 0x10) = uVar4;" (assignment_expression "*(ulong *)(param_5 + 0x10) = uVar4" (pointer_expression "*(ulong *)(param_5 + 0x10)" * (cast_expression "(ulong *)(param_5 + 0x10)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0x10)" ( (binary_expression "param_5 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "lVar5 = FUN_0011a8d0(param_5);" (assignment_expression "lVar5 = FUN_0011a8d0(param_5)" identifier = (call_expression "FUN_0011a8d0(param_5)" identifier (argument_list "(param_5)" ( identifier )))) ;) (expression_statement "uVar6 = *(undefined8 *)(param_5 + 0x20);" (assignment_expression "uVar6 = *(undefined8 *)(param_5 + 0x20)" identifier = (pointer_expression "*(undefined8 *)(param_5 + 0x20)" * (cast_expression "(undefined8 *)(param_5 + 0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0x20)" ( (binary_expression "param_5 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(lVar5 + 0x5c) = 1;" (assignment_expression "*(undefined4 *)(lVar5 + 0x5c) = 1" (pointer_expression "*(undefined4 *)(lVar5 + 0x5c)" * (cast_expression "(undefined4 *)(lVar5 + 0x5c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 0x5c)" ( (binary_expression "lVar5 + 0x5c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(long *)(*param_4 + 0x38) = lVar5;" (assignment_expression "*(long *)(*param_4 + 0x38) = lVar5" (pointer_expression "*(long *)(*param_4 + 0x38)" * (cast_expression "(long *)(*param_4 + 0x38)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_4 + 0x38)" ( (binary_expression "*param_4 + 0x38" (pointer_expression "*param_4" * identifier) + number_literal) )))) = identifier) ;) (expression_statement "lVar3 = *(long *)(param_5 + 0x18);" (assignment_expression "lVar3 = *(long *)(param_5 + 0x18)" identifier = (pointer_expression "*(long *)(param_5 + 0x18)" * (cast_expression "(long *)(param_5 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0x18)" ( (binary_expression "param_5 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "*param_4 = lVar5;" (assignment_expression "*param_4 = lVar5" (pointer_expression "*param_4" * identifier) = identifier) ;) (expression_statement "local_44 = (int)uVar6 - (int)lVar3;" (assignment_expression "local_44 = (int)uVar6 - (int)lVar3" identifier = (binary_expression "(int)uVar6 - (int)lVar3" (cast_expression "(int)uVar6" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)lVar3" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if (local_44 < 1) {\n          uVar6 = dcgettext(0,"can\'t extend frag",5);\n                    /* WARNING: Subroutine does not return */\n          FUN_00121900(uVar6);\n        }" if (parenthesized_expression "(local_44 < 1)" ( (binary_expression "local_44 < 1" identifier < number_literal) )) (compound_statement "{\n          uVar6 = dcgettext(0,"can\'t extend frag",5);\n                    /* WARNING: Subroutine does not return */\n          FUN_00121900(uVar6);\n        }" { (expression_statement "uVar6 = dcgettext(0,"can\'t extend frag",5);" (assignment_expression "uVar6 = dcgettext(0,"can\'t extend frag",5)" identifier = (call_expression "dcgettext(0,"can\'t extend frag",5)" identifier (argument_list "(0,"can\'t extend frag",5)" ( number_literal , (string_literal ""can\'t extend frag"" " string_content escape_sequence string_content ") , number_literal )))) ;) comment (expression_statement "FUN_00121900(uVar6);" (call_expression "FUN_00121900(uVar6)" identifier (argument_list "(uVar6)" ( identifier ))) ;) })) })) (expression_statement "*(long *)(param_5 + 0x18) = lVar3 + local_44;" (assignment_expression "*(long *)(param_5 + 0x18) = lVar3 + local_44" (pointer_expression "*(long *)(param_5 + 0x18)" * (cast_expression "(long *)(param_5 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0x18)" ( (binary_expression "param_5 + 0x18" identifier + number_literal) )))) = (binary_expression "lVar3 + local_44" identifier + identifier)) ;) (expression_statement "local_40[0] = lVar3;" (assignment_expression "local_40[0] = lVar3" (subscript_expression "local_40[0]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar2 = FUN_00110300(param_1,&local_50,&local_54,local_40,&local_44);" (assignment_expression "iVar2 = FUN_00110300(param_1,&local_50,&local_54,local_40,&local_44)" identifier = (call_expression "FUN_00110300(param_1,&local_50,&local_54,local_40,&local_44)" identifier (argument_list "(param_1,&local_50,&local_54,local_40,&local_44)" ( identifier , (pointer_expression "&local_50" & identifier) , (pointer_expression "&local_54" & identifier) , identifier , (pointer_expression "&local_44" & identifier) )))) ;) (if_statement "if (iVar2 < 0) {\n        return -1;\n      }" if (parenthesized_expression "(iVar2 < 0)" ( (binary_expression "iVar2 < 0" identifier < number_literal) )) (compound_statement "{\n        return -1;\n      }" { (return_statement "return -1;" return number_literal ;) })) (expression_statement "iVar7 = iVar7 + iVar2;" (assignment_expression "iVar7 = iVar7 + iVar2" identifier = (binary_expression "iVar7 + iVar2" identifier + identifier)) ;) (expression_statement "*(long *)(lVar5 + 0x10) = *(long *)(lVar5 + 0x10) + (long)iVar2;" (assignment_expression "*(long *)(lVar5 + 0x10) = *(long *)(lVar5 + 0x10) + (long)iVar2" (pointer_expression "*(long *)(lVar5 + 0x10)" * (cast_expression "(long *)(lVar5 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 0x10)" ( (binary_expression "lVar5 + 0x10" identifier + number_literal) )))) = (binary_expression "*(long *)(lVar5 + 0x10) + (long)iVar2" (pointer_expression "*(long *)(lVar5 + 0x10)" * (cast_expression "(long *)(lVar5 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 0x10)" ( (binary_expression "lVar5 + 0x10" identifier + number_literal) )))) + (cast_expression "(long)iVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) (if_statement "if (local_44 < 1) break;" if (parenthesized_expression "(local_44 < 1)" ( (binary_expression "local_44 < 1" identifier < number_literal) )) (break_statement "break;" break ;)) (expression_statement "*(long *)(param_5 + 0x18) = *(long *)(param_5 + 0x18) + (long)-local_44;" (assignment_expression "*(long *)(param_5 + 0x18) = *(long *)(param_5 + 0x18) + (long)-local_44" (pointer_expression "*(long *)(param_5 + 0x18)" * (cast_expression "(long *)(param_5 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0x18)" ( (binary_expression "param_5 + 0x18" identifier + number_literal) )))) = (binary_expression "*(long *)(param_5 + 0x18) + (long)-local_44" (pointer_expression "*(long *)(param_5 + 0x18)" * (cast_expression "(long *)(param_5 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0x18)" ( (binary_expression "param_5 + 0x18" identifier + number_literal) )))) + (cast_expression "(long)-local_44" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (unary_expression "-local_44" - identifier)))) ;) (if_statement "if (local_54 < 1) {\n        return iVar7;\n      }" if (parenthesized_expression "(local_54 < 1)" ( (binary_expression "local_54 < 1" identifier < number_literal) )) (compound_statement "{\n        return iVar7;\n      }" { (return_statement "return iVar7;" return identifier ;) })) })) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "int compress_frag(z_stream_s *strm,char *contents,int in_size,fragS **last_newf,obstack *ob)\n\n{\n  int iVar1;\n  char *pcVar2;\n  fragS *pfVar3;\n  char *pcVar4;\n  int iVar5;\n  int local_54;\n  char *local_50;\n  int avail_out;\n  char *next_out;\n  \n  iVar5 = 0;\n  pfVar3 = *last_newf;\n  local_54 = in_size;\n  local_50 = contents;\n  do {\n    if (local_54 < 1) {\n      return iVar5;\n    }\n    while( true ) {\n      pcVar4 = ob->chunk_limit;\n      pcVar2 = ob->next_free;\n      avail_out = (int)pcVar4 - (int)pcVar2;\n      if (avail_out < 1) {\n        if (pcVar2 == ob->object_base) {\n          ob->field_0x50 = ob->field_0x50 | 2;\n        }\n        pcVar2 = (char *)((ulong)(pcVar2 + ob->alignment_mask) & ~ob->alignment_mask);\n        ob->next_free = pcVar2;\n        if ((ulong)((long)pcVar4 - (long)ob->chunk) < (ulong)((long)pcVar2 - (long)ob->chunk)) {\n          ob->next_free = pcVar4;\n          pcVar2 = pcVar4;\n        }\n        ob->object_base = pcVar2;\n        pfVar3 = frag_alloc(ob);\n        pcVar4 = ob->chunk_limit;\n        pfVar3->fr_type = rs_fill;\n        (*last_newf)->fr_next = pfVar3;\n        pcVar2 = ob->next_free;\n        *last_newf = pfVar3;\n        avail_out = (int)pcVar4 - (int)pcVar2;\n        if (avail_out < 1) {\n          pcVar4 = (char *)dcgettext(0,"can\'t extend frag",5);\n                    /* WARNING: Subroutine does not return */\n          as_fatal(pcVar4);\n        }\n      }\n      ob->next_free = pcVar2 + avail_out;\n      next_out = pcVar2;\n      iVar1 = compress_data(strm,&local_50,&local_54,&next_out,&avail_out);\n      if (iVar1 < 0) {\n        return -1;\n      }\n      iVar5 = iVar5 + iVar1;\n      pfVar3->fr_fix = pfVar3->fr_fix + (long)iVar1;\n      if (avail_out < 1) break;\n      ob->next_free = ob->next_free + -avail_out;\n      if (local_54 < 1) {\n        return iVar5;\n      }\n    }\n  } while( true );\n}\n\n" (function_definition "int compress_frag(z_stream_s *strm,char *contents,int in_size,fragS **last_newf,obstack *ob)\n\n{\n  int iVar1;\n  char *pcVar2;\n  fragS *pfVar3;\n  char *pcVar4;\n  int iVar5;\n  int local_54;\n  char *local_50;\n  int avail_out;\n  char *next_out;\n  \n  iVar5 = 0;\n  pfVar3 = *last_newf;\n  local_54 = in_size;\n  local_50 = contents;\n  do {\n    if (local_54 < 1) {\n      return iVar5;\n    }\n    while( true ) {\n      pcVar4 = ob->chunk_limit;\n      pcVar2 = ob->next_free;\n      avail_out = (int)pcVar4 - (int)pcVar2;\n      if (avail_out < 1) {\n        if (pcVar2 == ob->object_base) {\n          ob->field_0x50 = ob->field_0x50 | 2;\n        }\n        pcVar2 = (char *)((ulong)(pcVar2 + ob->alignment_mask) & ~ob->alignment_mask);\n        ob->next_free = pcVar2;\n        if ((ulong)((long)pcVar4 - (long)ob->chunk) < (ulong)((long)pcVar2 - (long)ob->chunk)) {\n          ob->next_free = pcVar4;\n          pcVar2 = pcVar4;\n        }\n        ob->object_base = pcVar2;\n        pfVar3 = frag_alloc(ob);\n        pcVar4 = ob->chunk_limit;\n        pfVar3->fr_type = rs_fill;\n        (*last_newf)->fr_next = pfVar3;\n        pcVar2 = ob->next_free;\n        *last_newf = pfVar3;\n        avail_out = (int)pcVar4 - (int)pcVar2;\n        if (avail_out < 1) {\n          pcVar4 = (char *)dcgettext(0,"can\'t extend frag",5);\n                    /* WARNING: Subroutine does not return */\n          as_fatal(pcVar4);\n        }\n      }\n      ob->next_free = pcVar2 + avail_out;\n      next_out = pcVar2;\n      iVar1 = compress_data(strm,&local_50,&local_54,&next_out,&avail_out);\n      if (iVar1 < 0) {\n        return -1;\n      }\n      iVar5 = iVar5 + iVar1;\n      pfVar3->fr_fix = pfVar3->fr_fix + (long)iVar1;\n      if (avail_out < 1) break;\n      ob->next_free = ob->next_free + -avail_out;\n      if (local_54 < 1) {\n        return iVar5;\n      }\n    }\n  } while( true );\n}" primitive_type (function_declarator "compress_frag(z_stream_s *strm,char *contents,int in_size,fragS **last_newf,obstack *ob)" identifier (parameter_list "(z_stream_s *strm,char *contents,int in_size,fragS **last_newf,obstack *ob)" ( (parameter_declaration "z_stream_s *strm" type_identifier (pointer_declarator "*strm" * identifier)) , (parameter_declaration "char *contents" primitive_type (pointer_declarator "*contents" * identifier)) , (parameter_declaration "int in_size" primitive_type identifier) , (parameter_declaration "fragS **last_newf" type_identifier (pointer_declarator "**last_newf" * (pointer_declarator "*last_newf" * identifier))) , (parameter_declaration "obstack *ob" type_identifier (pointer_declarator "*ob" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  char *pcVar2;\n  fragS *pfVar3;\n  char *pcVar4;\n  int iVar5;\n  int local_54;\n  char *local_50;\n  int avail_out;\n  char *next_out;\n  \n  iVar5 = 0;\n  pfVar3 = *last_newf;\n  local_54 = in_size;\n  local_50 = contents;\n  do {\n    if (local_54 < 1) {\n      return iVar5;\n    }\n    while( true ) {\n      pcVar4 = ob->chunk_limit;\n      pcVar2 = ob->next_free;\n      avail_out = (int)pcVar4 - (int)pcVar2;\n      if (avail_out < 1) {\n        if (pcVar2 == ob->object_base) {\n          ob->field_0x50 = ob->field_0x50 | 2;\n        }\n        pcVar2 = (char *)((ulong)(pcVar2 + ob->alignment_mask) & ~ob->alignment_mask);\n        ob->next_free = pcVar2;\n        if ((ulong)((long)pcVar4 - (long)ob->chunk) < (ulong)((long)pcVar2 - (long)ob->chunk)) {\n          ob->next_free = pcVar4;\n          pcVar2 = pcVar4;\n        }\n        ob->object_base = pcVar2;\n        pfVar3 = frag_alloc(ob);\n        pcVar4 = ob->chunk_limit;\n        pfVar3->fr_type = rs_fill;\n        (*last_newf)->fr_next = pfVar3;\n        pcVar2 = ob->next_free;\n        *last_newf = pfVar3;\n        avail_out = (int)pcVar4 - (int)pcVar2;\n        if (avail_out < 1) {\n          pcVar4 = (char *)dcgettext(0,"can\'t extend frag",5);\n                    /* WARNING: Subroutine does not return */\n          as_fatal(pcVar4);\n        }\n      }\n      ob->next_free = pcVar2 + avail_out;\n      next_out = pcVar2;\n      iVar1 = compress_data(strm,&local_50,&local_54,&next_out,&avail_out);\n      if (iVar1 < 0) {\n        return -1;\n      }\n      iVar5 = iVar5 + iVar1;\n      pfVar3->fr_fix = pfVar3->fr_fix + (long)iVar1;\n      if (avail_out < 1) break;\n      ob->next_free = ob->next_free + -avail_out;\n      if (local_54 < 1) {\n        return iVar5;\n      }\n    }\n  } while( true );\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "char *pcVar2;" primitive_type (pointer_declarator "*pcVar2" * identifier) ;) (declaration "fragS *pfVar3;" type_identifier (pointer_declarator "*pfVar3" * identifier) ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * identifier) ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int local_54;" primitive_type identifier ;) (declaration "char *local_50;" primitive_type (pointer_declarator "*local_50" * identifier) ;) (declaration "int avail_out;" primitive_type identifier ;) (declaration "char *next_out;" primitive_type (pointer_declarator "*next_out" * identifier) ;) (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" identifier = number_literal) ;) (expression_statement "pfVar3 = *last_newf;" (assignment_expression "pfVar3 = *last_newf" identifier = (pointer_expression "*last_newf" * identifier)) ;) (expression_statement "local_54 = in_size;" (assignment_expression "local_54 = in_size" identifier = identifier) ;) (expression_statement "local_50 = contents;" (assignment_expression "local_50 = contents" identifier = identifier) ;) (do_statement "do {\n    if (local_54 < 1) {\n      return iVar5;\n    }\n    while( true ) {\n      pcVar4 = ob->chunk_limit;\n      pcVar2 = ob->next_free;\n      avail_out = (int)pcVar4 - (int)pcVar2;\n      if (avail_out < 1) {\n        if (pcVar2 == ob->object_base) {\n          ob->field_0x50 = ob->field_0x50 | 2;\n        }\n        pcVar2 = (char *)((ulong)(pcVar2 + ob->alignment_mask) & ~ob->alignment_mask);\n        ob->next_free = pcVar2;\n        if ((ulong)((long)pcVar4 - (long)ob->chunk) < (ulong)((long)pcVar2 - (long)ob->chunk)) {\n          ob->next_free = pcVar4;\n          pcVar2 = pcVar4;\n        }\n        ob->object_base = pcVar2;\n        pfVar3 = frag_alloc(ob);\n        pcVar4 = ob->chunk_limit;\n        pfVar3->fr_type = rs_fill;\n        (*last_newf)->fr_next = pfVar3;\n        pcVar2 = ob->next_free;\n        *last_newf = pfVar3;\n        avail_out = (int)pcVar4 - (int)pcVar2;\n        if (avail_out < 1) {\n          pcVar4 = (char *)dcgettext(0,"can\'t extend frag",5);\n                    /* WARNING: Subroutine does not return */\n          as_fatal(pcVar4);\n        }\n      }\n      ob->next_free = pcVar2 + avail_out;\n      next_out = pcVar2;\n      iVar1 = compress_data(strm,&local_50,&local_54,&next_out,&avail_out);\n      if (iVar1 < 0) {\n        return -1;\n      }\n      iVar5 = iVar5 + iVar1;\n      pfVar3->fr_fix = pfVar3->fr_fix + (long)iVar1;\n      if (avail_out < 1) break;\n      ob->next_free = ob->next_free + -avail_out;\n      if (local_54 < 1) {\n        return iVar5;\n      }\n    }\n  } while( true );" do (compound_statement "{\n    if (local_54 < 1) {\n      return iVar5;\n    }\n    while( true ) {\n      pcVar4 = ob->chunk_limit;\n      pcVar2 = ob->next_free;\n      avail_out = (int)pcVar4 - (int)pcVar2;\n      if (avail_out < 1) {\n        if (pcVar2 == ob->object_base) {\n          ob->field_0x50 = ob->field_0x50 | 2;\n        }\n        pcVar2 = (char *)((ulong)(pcVar2 + ob->alignment_mask) & ~ob->alignment_mask);\n        ob->next_free = pcVar2;\n        if ((ulong)((long)pcVar4 - (long)ob->chunk) < (ulong)((long)pcVar2 - (long)ob->chunk)) {\n          ob->next_free = pcVar4;\n          pcVar2 = pcVar4;\n        }\n        ob->object_base = pcVar2;\n        pfVar3 = frag_alloc(ob);\n        pcVar4 = ob->chunk_limit;\n        pfVar3->fr_type = rs_fill;\n        (*last_newf)->fr_next = pfVar3;\n        pcVar2 = ob->next_free;\n        *last_newf = pfVar3;\n        avail_out = (int)pcVar4 - (int)pcVar2;\n        if (avail_out < 1) {\n          pcVar4 = (char *)dcgettext(0,"can\'t extend frag",5);\n                    /* WARNING: Subroutine does not return */\n          as_fatal(pcVar4);\n        }\n      }\n      ob->next_free = pcVar2 + avail_out;\n      next_out = pcVar2;\n      iVar1 = compress_data(strm,&local_50,&local_54,&next_out,&avail_out);\n      if (iVar1 < 0) {\n        return -1;\n      }\n      iVar5 = iVar5 + iVar1;\n      pfVar3->fr_fix = pfVar3->fr_fix + (long)iVar1;\n      if (avail_out < 1) break;\n      ob->next_free = ob->next_free + -avail_out;\n      if (local_54 < 1) {\n        return iVar5;\n      }\n    }\n  }" { (if_statement "if (local_54 < 1) {\n      return iVar5;\n    }" if (parenthesized_expression "(local_54 < 1)" ( (binary_expression "local_54 < 1" identifier < number_literal) )) (compound_statement "{\n      return iVar5;\n    }" { (return_statement "return iVar5;" return identifier ;) })) (while_statement "while( true ) {\n      pcVar4 = ob->chunk_limit;\n      pcVar2 = ob->next_free;\n      avail_out = (int)pcVar4 - (int)pcVar2;\n      if (avail_out < 1) {\n        if (pcVar2 == ob->object_base) {\n          ob->field_0x50 = ob->field_0x50 | 2;\n        }\n        pcVar2 = (char *)((ulong)(pcVar2 + ob->alignment_mask) & ~ob->alignment_mask);\n        ob->next_free = pcVar2;\n        if ((ulong)((long)pcVar4 - (long)ob->chunk) < (ulong)((long)pcVar2 - (long)ob->chunk)) {\n          ob->next_free = pcVar4;\n          pcVar2 = pcVar4;\n        }\n        ob->object_base = pcVar2;\n        pfVar3 = frag_alloc(ob);\n        pcVar4 = ob->chunk_limit;\n        pfVar3->fr_type = rs_fill;\n        (*last_newf)->fr_next = pfVar3;\n        pcVar2 = ob->next_free;\n        *last_newf = pfVar3;\n        avail_out = (int)pcVar4 - (int)pcVar2;\n        if (avail_out < 1) {\n          pcVar4 = (char *)dcgettext(0,"can\'t extend frag",5);\n                    /* WARNING: Subroutine does not return */\n          as_fatal(pcVar4);\n        }\n      }\n      ob->next_free = pcVar2 + avail_out;\n      next_out = pcVar2;\n      iVar1 = compress_data(strm,&local_50,&local_54,&next_out,&avail_out);\n      if (iVar1 < 0) {\n        return -1;\n      }\n      iVar5 = iVar5 + iVar1;\n      pfVar3->fr_fix = pfVar3->fr_fix + (long)iVar1;\n      if (avail_out < 1) break;\n      ob->next_free = ob->next_free + -avail_out;\n      if (local_54 < 1) {\n        return iVar5;\n      }\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      pcVar4 = ob->chunk_limit;\n      pcVar2 = ob->next_free;\n      avail_out = (int)pcVar4 - (int)pcVar2;\n      if (avail_out < 1) {\n        if (pcVar2 == ob->object_base) {\n          ob->field_0x50 = ob->field_0x50 | 2;\n        }\n        pcVar2 = (char *)((ulong)(pcVar2 + ob->alignment_mask) & ~ob->alignment_mask);\n        ob->next_free = pcVar2;\n        if ((ulong)((long)pcVar4 - (long)ob->chunk) < (ulong)((long)pcVar2 - (long)ob->chunk)) {\n          ob->next_free = pcVar4;\n          pcVar2 = pcVar4;\n        }\n        ob->object_base = pcVar2;\n        pfVar3 = frag_alloc(ob);\n        pcVar4 = ob->chunk_limit;\n        pfVar3->fr_type = rs_fill;\n        (*last_newf)->fr_next = pfVar3;\n        pcVar2 = ob->next_free;\n        *last_newf = pfVar3;\n        avail_out = (int)pcVar4 - (int)pcVar2;\n        if (avail_out < 1) {\n          pcVar4 = (char *)dcgettext(0,"can\'t extend frag",5);\n                    /* WARNING: Subroutine does not return */\n          as_fatal(pcVar4);\n        }\n      }\n      ob->next_free = pcVar2 + avail_out;\n      next_out = pcVar2;\n      iVar1 = compress_data(strm,&local_50,&local_54,&next_out,&avail_out);\n      if (iVar1 < 0) {\n        return -1;\n      }\n      iVar5 = iVar5 + iVar1;\n      pfVar3->fr_fix = pfVar3->fr_fix + (long)iVar1;\n      if (avail_out < 1) break;\n      ob->next_free = ob->next_free + -avail_out;\n      if (local_54 < 1) {\n        return iVar5;\n      }\n    }" { (expression_statement "pcVar4 = ob->chunk_limit;" (assignment_expression "pcVar4 = ob->chunk_limit" identifier = (field_expression "ob->chunk_limit" identifier -> field_identifier)) ;) (expression_statement "pcVar2 = ob->next_free;" (assignment_expression "pcVar2 = ob->next_free" identifier = (field_expression "ob->next_free" identifier -> field_identifier)) ;) (expression_statement "avail_out = (int)pcVar4 - (int)pcVar2;" (assignment_expression "avail_out = (int)pcVar4 - (int)pcVar2" identifier = (binary_expression "(int)pcVar4 - (int)pcVar2" (cast_expression "(int)pcVar4" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pcVar2" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if (avail_out < 1) {\n        if (pcVar2 == ob->object_base) {\n          ob->field_0x50 = ob->field_0x50 | 2;\n        }\n        pcVar2 = (char *)((ulong)(pcVar2 + ob->alignment_mask) & ~ob->alignment_mask);\n        ob->next_free = pcVar2;\n        if ((ulong)((long)pcVar4 - (long)ob->chunk) < (ulong)((long)pcVar2 - (long)ob->chunk)) {\n          ob->next_free = pcVar4;\n          pcVar2 = pcVar4;\n        }\n        ob->object_base = pcVar2;\n        pfVar3 = frag_alloc(ob);\n        pcVar4 = ob->chunk_limit;\n        pfVar3->fr_type = rs_fill;\n        (*last_newf)->fr_next = pfVar3;\n        pcVar2 = ob->next_free;\n        *last_newf = pfVar3;\n        avail_out = (int)pcVar4 - (int)pcVar2;\n        if (avail_out < 1) {\n          pcVar4 = (char *)dcgettext(0,"can\'t extend frag",5);\n                    /* WARNING: Subroutine does not return */\n          as_fatal(pcVar4);\n        }\n      }" if (parenthesized_expression "(avail_out < 1)" ( (binary_expression "avail_out < 1" identifier < number_literal) )) (compound_statement "{\n        if (pcVar2 == ob->object_base) {\n          ob->field_0x50 = ob->field_0x50 | 2;\n        }\n        pcVar2 = (char *)((ulong)(pcVar2 + ob->alignment_mask) & ~ob->alignment_mask);\n        ob->next_free = pcVar2;\n        if ((ulong)((long)pcVar4 - (long)ob->chunk) < (ulong)((long)pcVar2 - (long)ob->chunk)) {\n          ob->next_free = pcVar4;\n          pcVar2 = pcVar4;\n        }\n        ob->object_base = pcVar2;\n        pfVar3 = frag_alloc(ob);\n        pcVar4 = ob->chunk_limit;\n        pfVar3->fr_type = rs_fill;\n        (*last_newf)->fr_next = pfVar3;\n        pcVar2 = ob->next_free;\n        *last_newf = pfVar3;\n        avail_out = (int)pcVar4 - (int)pcVar2;\n        if (avail_out < 1) {\n          pcVar4 = (char *)dcgettext(0,"can\'t extend frag",5);\n                    /* WARNING: Subroutine does not return */\n          as_fatal(pcVar4);\n        }\n      }" { (if_statement "if (pcVar2 == ob->object_base) {\n          ob->field_0x50 = ob->field_0x50 | 2;\n        }" if (parenthesized_expression "(pcVar2 == ob->object_base)" ( (binary_expression "pcVar2 == ob->object_base" identifier == (field_expression "ob->object_base" identifier -> field_identifier)) )) (compound_statement "{\n          ob->field_0x50 = ob->field_0x50 | 2;\n        }" { (expression_statement "ob->field_0x50 = ob->field_0x50 | 2;" (assignment_expression "ob->field_0x50 = ob->field_0x50 | 2" (field_expression "ob->field_0x50" identifier -> field_identifier) = (binary_expression "ob->field_0x50 | 2" (field_expression "ob->field_0x50" identifier -> field_identifier) | number_literal)) ;) })) (expression_statement "pcVar2 = (char *)((ulong)(pcVar2 + ob->alignment_mask) & ~ob->alignment_mask);" (assignment_expression "pcVar2 = (char *)((ulong)(pcVar2 + ob->alignment_mask) & ~ob->alignment_mask)" identifier = (cast_expression "(char *)((ulong)(pcVar2 + ob->alignment_mask) & ~ob->alignment_mask)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulong)(pcVar2 + ob->alignment_mask) & ~ob->alignment_mask)" ( (binary_expression "(ulong)(pcVar2 + ob->alignment_mask) & ~ob->alignment_mask" (call_expression "(ulong)(pcVar2 + ob->alignment_mask)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(pcVar2 + ob->alignment_mask)" ( (binary_expression "pcVar2 + ob->alignment_mask" identifier + (field_expression "ob->alignment_mask" identifier -> field_identifier)) ))) & (unary_expression "~ob->alignment_mask" ~ (field_expression "ob->alignment_mask" identifier -> field_identifier))) )))) ;) (expression_statement "ob->next_free = pcVar2;" (assignment_expression "ob->next_free = pcVar2" (field_expression "ob->next_free" identifier -> field_identifier) = identifier) ;) (if_statement "if ((ulong)((long)pcVar4 - (long)ob->chunk) < (ulong)((long)pcVar2 - (long)ob->chunk)) {\n          ob->next_free = pcVar4;\n          pcVar2 = pcVar4;\n        }" if (parenthesized_expression "((ulong)((long)pcVar4 - (long)ob->chunk) < (ulong)((long)pcVar2 - (long)ob->chunk))" ( (binary_expression "(ulong)((long)pcVar4 - (long)ob->chunk) < (ulong)((long)pcVar2 - (long)ob->chunk)" (call_expression "(ulong)((long)pcVar4 - (long)ob->chunk)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((long)pcVar4 - (long)ob->chunk)" ( (binary_expression "(long)pcVar4 - (long)ob->chunk" (cast_expression "(long)pcVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)ob->chunk" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "ob->chunk" identifier -> field_identifier))) ))) < (call_expression "(ulong)((long)pcVar2 - (long)ob->chunk)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((long)pcVar2 - (long)ob->chunk)" ( (binary_expression "(long)pcVar2 - (long)ob->chunk" (cast_expression "(long)pcVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)ob->chunk" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "ob->chunk" identifier -> field_identifier))) )))) )) (compound_statement "{\n          ob->next_free = pcVar4;\n          pcVar2 = pcVar4;\n        }" { (expression_statement "ob->next_free = pcVar4;" (assignment_expression "ob->next_free = pcVar4" (field_expression "ob->next_free" identifier -> field_identifier) = identifier) ;) (expression_statement "pcVar2 = pcVar4;" (assignment_expression "pcVar2 = pcVar4" identifier = identifier) ;) })) (expression_statement "ob->object_base = pcVar2;" (assignment_expression "ob->object_base = pcVar2" (field_expression "ob->object_base" identifier -> field_identifier) = identifier) ;) (expression_statement "pfVar3 = frag_alloc(ob);" (assignment_expression "pfVar3 = frag_alloc(ob)" identifier = (call_expression "frag_alloc(ob)" identifier (argument_list "(ob)" ( identifier )))) ;) (expression_statement "pcVar4 = ob->chunk_limit;" (assignment_expression "pcVar4 = ob->chunk_limit" identifier = (field_expression "ob->chunk_limit" identifier -> field_identifier)) ;) (expression_statement "pfVar3->fr_type = rs_fill;" (assignment_expression "pfVar3->fr_type = rs_fill" (field_expression "pfVar3->fr_type" identifier -> field_identifier) = identifier) ;) (expression_statement "(*last_newf)->fr_next = pfVar3;" (assignment_expression "(*last_newf)->fr_next = pfVar3" (field_expression "(*last_newf)->fr_next" (parenthesized_expression "(*last_newf)" ( (pointer_expression "*last_newf" * identifier) )) -> field_identifier) = identifier) ;) (expression_statement "pcVar2 = ob->next_free;" (assignment_expression "pcVar2 = ob->next_free" identifier = (field_expression "ob->next_free" identifier -> field_identifier)) ;) (expression_statement "*last_newf = pfVar3;" (assignment_expression "*last_newf = pfVar3" (pointer_expression "*last_newf" * identifier) = identifier) ;) (expression_statement "avail_out = (int)pcVar4 - (int)pcVar2;" (assignment_expression "avail_out = (int)pcVar4 - (int)pcVar2" identifier = (binary_expression "(int)pcVar4 - (int)pcVar2" (cast_expression "(int)pcVar4" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pcVar2" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if (avail_out < 1) {\n          pcVar4 = (char *)dcgettext(0,"can\'t extend frag",5);\n                    /* WARNING: Subroutine does not return */\n          as_fatal(pcVar4);\n        }" if (parenthesized_expression "(avail_out < 1)" ( (binary_expression "avail_out < 1" identifier < number_literal) )) (compound_statement "{\n          pcVar4 = (char *)dcgettext(0,"can\'t extend frag",5);\n                    /* WARNING: Subroutine does not return */\n          as_fatal(pcVar4);\n        }" { (expression_statement "pcVar4 = (char *)dcgettext(0,"can\'t extend frag",5);" (assignment_expression "pcVar4 = (char *)dcgettext(0,"can\'t extend frag",5)" identifier = (cast_expression "(char *)dcgettext(0,"can\'t extend frag",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"can\'t extend frag",5)" identifier (argument_list "(0,"can\'t extend frag",5)" ( number_literal , (string_literal ""can\'t extend frag"" " string_content escape_sequence string_content ") , number_literal ))))) ;) comment (expression_statement "as_fatal(pcVar4);" (call_expression "as_fatal(pcVar4)" identifier (argument_list "(pcVar4)" ( identifier ))) ;) })) })) (expression_statement "ob->next_free = pcVar2 + avail_out;" (assignment_expression "ob->next_free = pcVar2 + avail_out" (field_expression "ob->next_free" identifier -> field_identifier) = (binary_expression "pcVar2 + avail_out" identifier + identifier)) ;) (expression_statement "next_out = pcVar2;" (assignment_expression "next_out = pcVar2" identifier = identifier) ;) (expression_statement "iVar1 = compress_data(strm,&local_50,&local_54,&next_out,&avail_out);" (assignment_expression "iVar1 = compress_data(strm,&local_50,&local_54,&next_out,&avail_out)" identifier = (call_expression "compress_data(strm,&local_50,&local_54,&next_out,&avail_out)" identifier (argument_list "(strm,&local_50,&local_54,&next_out,&avail_out)" ( identifier , (pointer_expression "&local_50" & identifier) , (pointer_expression "&local_54" & identifier) , (pointer_expression "&next_out" & identifier) , (pointer_expression "&avail_out" & identifier) )))) ;) (if_statement "if (iVar1 < 0) {\n        return -1;\n      }" if (parenthesized_expression "(iVar1 < 0)" ( (binary_expression "iVar1 < 0" identifier < number_literal) )) (compound_statement "{\n        return -1;\n      }" { (return_statement "return -1;" return number_literal ;) })) (expression_statement "iVar5 = iVar5 + iVar1;" (assignment_expression "iVar5 = iVar5 + iVar1" identifier = (binary_expression "iVar5 + iVar1" identifier + identifier)) ;) (expression_statement "pfVar3->fr_fix = pfVar3->fr_fix + (long)iVar1;" (assignment_expression "pfVar3->fr_fix = pfVar3->fr_fix + (long)iVar1" (field_expression "pfVar3->fr_fix" identifier -> field_identifier) = (binary_expression "pfVar3->fr_fix + (long)iVar1" (field_expression "pfVar3->fr_fix" identifier -> field_identifier) + (cast_expression "(long)iVar1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) (if_statement "if (avail_out < 1) break;" if (parenthesized_expression "(avail_out < 1)" ( (binary_expression "avail_out < 1" identifier < number_literal) )) (break_statement "break;" break ;)) (expression_statement "ob->next_free = ob->next_free + -avail_out;" (assignment_expression "ob->next_free = ob->next_free + -avail_out" (field_expression "ob->next_free" identifier -> field_identifier) = (binary_expression "ob->next_free + -avail_out" (field_expression "ob->next_free" identifier -> field_identifier) + (unary_expression "-avail_out" - identifier))) ;) (if_statement "if (local_54 < 1) {\n        return iVar5;\n      }" if (parenthesized_expression "(local_54 < 1)" ( (binary_expression "local_54 < 1" identifier < number_literal) )) (compound_statement "{\n        return iVar5;\n      }" { (return_statement "return iVar5;" return identifier ;) })) })) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "int FUN_00130c90(undefined8 param_1,undefined8 param_2,int param_3,long *param_4,long param_5)\n\n{\n  ulong uVar1;\n  int iVar2;\n  long lVar3;\n  ulong uVar4;\n  long lVar5;\n  undefined8 uVar6;\n  int iVar7;\n  int local_54;\n  undefined8 local_50;\n  int local_44;\n  long local_40 [2];\n  \n  iVar7 = 0;\n  lVar5 = *param_4;\n  local_54 = param_3;\n  local_50 = param_2;\n  do {\n    if (local_54 < 1) {\n      return iVar7;\n    }\n    while( true ) {\n      uVar1 = *(ulong *)(param_5 + 0x20);\n      lVar3 = *(long *)(param_5 + 0x18);\n      local_44 = (int)uVar1 - (int)lVar3;\n      if (local_44 < 1) {\n        if (lVar3 == *(long *)(param_5 + 0x10)) {\n          *(byte *)(param_5 + 0x50) = *(byte *)(param_5 + 0x50) | 2;\n        }\n        uVar4 = lVar3 + *(ulong *)(param_5 + 0x30) & ~*(ulong *)(param_5 + 0x30);\n        *(ulong *)(param_5 + 0x18) = uVar4;\n        if (uVar1 - *(long *)(param_5 + 8) < uVar4 - *(long *)(param_5 + 8)) {\n          *(ulong *)(param_5 + 0x18) = uVar1;\n          uVar4 = uVar1;\n        }\n        *(ulong *)(param_5 + 0x10) = uVar4;\n        lVar5 = FUN_0011a8d0(param_5);\n        uVar6 = *(undefined8 *)(param_5 + 0x20);\n        *(undefined4 *)(lVar5 + 0x5c) = 1;\n        *(long *)(*param_4 + 0x38) = lVar5;\n        lVar3 = *(long *)(param_5 + 0x18);\n        *param_4 = lVar5;\n        local_44 = (int)uVar6 - (int)lVar3;\n        if (local_44 < 1) {\n          uVar6 = dcgettext(0,"can\'t extend frag",5);\n                    \n          FUN_00121900(uVar6);\n        }\n      }\n      *(long *)(param_5 + 0x18) = lVar3 + local_44;\n      local_40[0] = lVar3;\n      iVar2 = FUN_00110300(param_1,&local_50,&local_54,local_40,&local_44);\n      if (iVar2 < 0) {\n        return -1;\n      }\n      iVar7 = iVar7 + iVar2;\n      *(long *)(lVar5 + 0x10) = *(long *)(lVar5 + 0x10) + (long)iVar2;\n      if (local_44 < 1) break;\n      *(long *)(param_5 + 0x18) = *(long *)(param_5 + 0x18) + (long)-local_44;\n      if (local_54 < 1) {\n        return iVar7;\n      }\n    }\n  } while( true );\n}\n\n" (function_definition "int FUN_00130c90(undefined8 param_1,undefined8 param_2,int param_3,long *param_4,long param_5)\n\n{\n  ulong uVar1;\n  int iVar2;\n  long lVar3;\n  ulong uVar4;\n  long lVar5;\n  undefined8 uVar6;\n  int iVar7;\n  int local_54;\n  undefined8 local_50;\n  int local_44;\n  long local_40 [2];\n  \n  iVar7 = 0;\n  lVar5 = *param_4;\n  local_54 = param_3;\n  local_50 = param_2;\n  do {\n    if (local_54 < 1) {\n      return iVar7;\n    }\n    while( true ) {\n      uVar1 = *(ulong *)(param_5 + 0x20);\n      lVar3 = *(long *)(param_5 + 0x18);\n      local_44 = (int)uVar1 - (int)lVar3;\n      if (local_44 < 1) {\n        if (lVar3 == *(long *)(param_5 + 0x10)) {\n          *(byte *)(param_5 + 0x50) = *(byte *)(param_5 + 0x50) | 2;\n        }\n        uVar4 = lVar3 + *(ulong *)(param_5 + 0x30) & ~*(ulong *)(param_5 + 0x30);\n        *(ulong *)(param_5 + 0x18) = uVar4;\n        if (uVar1 - *(long *)(param_5 + 8) < uVar4 - *(long *)(param_5 + 8)) {\n          *(ulong *)(param_5 + 0x18) = uVar1;\n          uVar4 = uVar1;\n        }\n        *(ulong *)(param_5 + 0x10) = uVar4;\n        lVar5 = FUN_0011a8d0(param_5);\n        uVar6 = *(undefined8 *)(param_5 + 0x20);\n        *(undefined4 *)(lVar5 + 0x5c) = 1;\n        *(long *)(*param_4 + 0x38) = lVar5;\n        lVar3 = *(long *)(param_5 + 0x18);\n        *param_4 = lVar5;\n        local_44 = (int)uVar6 - (int)lVar3;\n        if (local_44 < 1) {\n          uVar6 = dcgettext(0,"can\'t extend frag",5);\n                    \n          FUN_00121900(uVar6);\n        }\n      }\n      *(long *)(param_5 + 0x18) = lVar3 + local_44;\n      local_40[0] = lVar3;\n      iVar2 = FUN_00110300(param_1,&local_50,&local_54,local_40,&local_44);\n      if (iVar2 < 0) {\n        return -1;\n      }\n      iVar7 = iVar7 + iVar2;\n      *(long *)(lVar5 + 0x10) = *(long *)(lVar5 + 0x10) + (long)iVar2;\n      if (local_44 < 1) break;\n      *(long *)(param_5 + 0x18) = *(long *)(param_5 + 0x18) + (long)-local_44;\n      if (local_54 < 1) {\n        return iVar7;\n      }\n    }\n  } while( true );\n}" primitive_type (function_declarator "FUN_00130c90(undefined8 param_1,undefined8 param_2,int param_3,long *param_4,long param_5)" identifier (parameter_list "(undefined8 param_1,undefined8 param_2,int param_3,long *param_4,long param_5)" ( (parameter_declaration "undefined8 param_1" type_identifier identifier) , (parameter_declaration "undefined8 param_2" type_identifier identifier) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "long *param_4" (sized_type_specifier "long" long) (pointer_declarator "*param_4" * identifier)) , (parameter_declaration "long param_5" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  ulong uVar1;\n  int iVar2;\n  long lVar3;\n  ulong uVar4;\n  long lVar5;\n  undefined8 uVar6;\n  int iVar7;\n  int local_54;\n  undefined8 local_50;\n  int local_44;\n  long local_40 [2];\n  \n  iVar7 = 0;\n  lVar5 = *param_4;\n  local_54 = param_3;\n  local_50 = param_2;\n  do {\n    if (local_54 < 1) {\n      return iVar7;\n    }\n    while( true ) {\n      uVar1 = *(ulong *)(param_5 + 0x20);\n      lVar3 = *(long *)(param_5 + 0x18);\n      local_44 = (int)uVar1 - (int)lVar3;\n      if (local_44 < 1) {\n        if (lVar3 == *(long *)(param_5 + 0x10)) {\n          *(byte *)(param_5 + 0x50) = *(byte *)(param_5 + 0x50) | 2;\n        }\n        uVar4 = lVar3 + *(ulong *)(param_5 + 0x30) & ~*(ulong *)(param_5 + 0x30);\n        *(ulong *)(param_5 + 0x18) = uVar4;\n        if (uVar1 - *(long *)(param_5 + 8) < uVar4 - *(long *)(param_5 + 8)) {\n          *(ulong *)(param_5 + 0x18) = uVar1;\n          uVar4 = uVar1;\n        }\n        *(ulong *)(param_5 + 0x10) = uVar4;\n        lVar5 = FUN_0011a8d0(param_5);\n        uVar6 = *(undefined8 *)(param_5 + 0x20);\n        *(undefined4 *)(lVar5 + 0x5c) = 1;\n        *(long *)(*param_4 + 0x38) = lVar5;\n        lVar3 = *(long *)(param_5 + 0x18);\n        *param_4 = lVar5;\n        local_44 = (int)uVar6 - (int)lVar3;\n        if (local_44 < 1) {\n          uVar6 = dcgettext(0,"can\'t extend frag",5);\n                    \n          FUN_00121900(uVar6);\n        }\n      }\n      *(long *)(param_5 + 0x18) = lVar3 + local_44;\n      local_40[0] = lVar3;\n      iVar2 = FUN_00110300(param_1,&local_50,&local_54,local_40,&local_44);\n      if (iVar2 < 0) {\n        return -1;\n      }\n      iVar7 = iVar7 + iVar2;\n      *(long *)(lVar5 + 0x10) = *(long *)(lVar5 + 0x10) + (long)iVar2;\n      if (local_44 < 1) break;\n      *(long *)(param_5 + 0x18) = *(long *)(param_5 + 0x18) + (long)-local_44;\n      if (local_54 < 1) {\n        return iVar7;\n      }\n    }\n  } while( true );\n}" { (declaration "ulong uVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar4;" type_identifier identifier ;) (declaration "long lVar5;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 uVar6;" type_identifier identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "int local_54;" primitive_type identifier ;) (declaration "undefined8 local_50;" type_identifier identifier ;) (declaration "int local_44;" primitive_type identifier ;) (declaration "long local_40 [2];" (sized_type_specifier "long" long) (array_declarator "local_40 [2]" identifier [ number_literal ]) ;) (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" identifier = number_literal) ;) (expression_statement "lVar5 = *param_4;" (assignment_expression "lVar5 = *param_4" identifier = (pointer_expression "*param_4" * identifier)) ;) (expression_statement "local_54 = param_3;" (assignment_expression "local_54 = param_3" identifier = identifier) ;) (expression_statement "local_50 = param_2;" (assignment_expression "local_50 = param_2" identifier = identifier) ;) (do_statement "do {\n    if (local_54 < 1) {\n      return iVar7;\n    }\n    while( true ) {\n      uVar1 = *(ulong *)(param_5 + 0x20);\n      lVar3 = *(long *)(param_5 + 0x18);\n      local_44 = (int)uVar1 - (int)lVar3;\n      if (local_44 < 1) {\n        if (lVar3 == *(long *)(param_5 + 0x10)) {\n          *(byte *)(param_5 + 0x50) = *(byte *)(param_5 + 0x50) | 2;\n        }\n        uVar4 = lVar3 + *(ulong *)(param_5 + 0x30) & ~*(ulong *)(param_5 + 0x30);\n        *(ulong *)(param_5 + 0x18) = uVar4;\n        if (uVar1 - *(long *)(param_5 + 8) < uVar4 - *(long *)(param_5 + 8)) {\n          *(ulong *)(param_5 + 0x18) = uVar1;\n          uVar4 = uVar1;\n        }\n        *(ulong *)(param_5 + 0x10) = uVar4;\n        lVar5 = FUN_0011a8d0(param_5);\n        uVar6 = *(undefined8 *)(param_5 + 0x20);\n        *(undefined4 *)(lVar5 + 0x5c) = 1;\n        *(long *)(*param_4 + 0x38) = lVar5;\n        lVar3 = *(long *)(param_5 + 0x18);\n        *param_4 = lVar5;\n        local_44 = (int)uVar6 - (int)lVar3;\n        if (local_44 < 1) {\n          uVar6 = dcgettext(0,"can\'t extend frag",5);\n                    \n          FUN_00121900(uVar6);\n        }\n      }\n      *(long *)(param_5 + 0x18) = lVar3 + local_44;\n      local_40[0] = lVar3;\n      iVar2 = FUN_00110300(param_1,&local_50,&local_54,local_40,&local_44);\n      if (iVar2 < 0) {\n        return -1;\n      }\n      iVar7 = iVar7 + iVar2;\n      *(long *)(lVar5 + 0x10) = *(long *)(lVar5 + 0x10) + (long)iVar2;\n      if (local_44 < 1) break;\n      *(long *)(param_5 + 0x18) = *(long *)(param_5 + 0x18) + (long)-local_44;\n      if (local_54 < 1) {\n        return iVar7;\n      }\n    }\n  } while( true );" do (compound_statement "{\n    if (local_54 < 1) {\n      return iVar7;\n    }\n    while( true ) {\n      uVar1 = *(ulong *)(param_5 + 0x20);\n      lVar3 = *(long *)(param_5 + 0x18);\n      local_44 = (int)uVar1 - (int)lVar3;\n      if (local_44 < 1) {\n        if (lVar3 == *(long *)(param_5 + 0x10)) {\n          *(byte *)(param_5 + 0x50) = *(byte *)(param_5 + 0x50) | 2;\n        }\n        uVar4 = lVar3 + *(ulong *)(param_5 + 0x30) & ~*(ulong *)(param_5 + 0x30);\n        *(ulong *)(param_5 + 0x18) = uVar4;\n        if (uVar1 - *(long *)(param_5 + 8) < uVar4 - *(long *)(param_5 + 8)) {\n          *(ulong *)(param_5 + 0x18) = uVar1;\n          uVar4 = uVar1;\n        }\n        *(ulong *)(param_5 + 0x10) = uVar4;\n        lVar5 = FUN_0011a8d0(param_5);\n        uVar6 = *(undefined8 *)(param_5 + 0x20);\n        *(undefined4 *)(lVar5 + 0x5c) = 1;\n        *(long *)(*param_4 + 0x38) = lVar5;\n        lVar3 = *(long *)(param_5 + 0x18);\n        *param_4 = lVar5;\n        local_44 = (int)uVar6 - (int)lVar3;\n        if (local_44 < 1) {\n          uVar6 = dcgettext(0,"can\'t extend frag",5);\n                    \n          FUN_00121900(uVar6);\n        }\n      }\n      *(long *)(param_5 + 0x18) = lVar3 + local_44;\n      local_40[0] = lVar3;\n      iVar2 = FUN_00110300(param_1,&local_50,&local_54,local_40,&local_44);\n      if (iVar2 < 0) {\n        return -1;\n      }\n      iVar7 = iVar7 + iVar2;\n      *(long *)(lVar5 + 0x10) = *(long *)(lVar5 + 0x10) + (long)iVar2;\n      if (local_44 < 1) break;\n      *(long *)(param_5 + 0x18) = *(long *)(param_5 + 0x18) + (long)-local_44;\n      if (local_54 < 1) {\n        return iVar7;\n      }\n    }\n  }" { (if_statement "if (local_54 < 1) {\n      return iVar7;\n    }" if (parenthesized_expression "(local_54 < 1)" ( (binary_expression "local_54 < 1" identifier < number_literal) )) (compound_statement "{\n      return iVar7;\n    }" { (return_statement "return iVar7;" return identifier ;) })) (while_statement "while( true ) {\n      uVar1 = *(ulong *)(param_5 + 0x20);\n      lVar3 = *(long *)(param_5 + 0x18);\n      local_44 = (int)uVar1 - (int)lVar3;\n      if (local_44 < 1) {\n        if (lVar3 == *(long *)(param_5 + 0x10)) {\n          *(byte *)(param_5 + 0x50) = *(byte *)(param_5 + 0x50) | 2;\n        }\n        uVar4 = lVar3 + *(ulong *)(param_5 + 0x30) & ~*(ulong *)(param_5 + 0x30);\n        *(ulong *)(param_5 + 0x18) = uVar4;\n        if (uVar1 - *(long *)(param_5 + 8) < uVar4 - *(long *)(param_5 + 8)) {\n          *(ulong *)(param_5 + 0x18) = uVar1;\n          uVar4 = uVar1;\n        }\n        *(ulong *)(param_5 + 0x10) = uVar4;\n        lVar5 = FUN_0011a8d0(param_5);\n        uVar6 = *(undefined8 *)(param_5 + 0x20);\n        *(undefined4 *)(lVar5 + 0x5c) = 1;\n        *(long *)(*param_4 + 0x38) = lVar5;\n        lVar3 = *(long *)(param_5 + 0x18);\n        *param_4 = lVar5;\n        local_44 = (int)uVar6 - (int)lVar3;\n        if (local_44 < 1) {\n          uVar6 = dcgettext(0,"can\'t extend frag",5);\n                    \n          FUN_00121900(uVar6);\n        }\n      }\n      *(long *)(param_5 + 0x18) = lVar3 + local_44;\n      local_40[0] = lVar3;\n      iVar2 = FUN_00110300(param_1,&local_50,&local_54,local_40,&local_44);\n      if (iVar2 < 0) {\n        return -1;\n      }\n      iVar7 = iVar7 + iVar2;\n      *(long *)(lVar5 + 0x10) = *(long *)(lVar5 + 0x10) + (long)iVar2;\n      if (local_44 < 1) break;\n      *(long *)(param_5 + 0x18) = *(long *)(param_5 + 0x18) + (long)-local_44;\n      if (local_54 < 1) {\n        return iVar7;\n      }\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      uVar1 = *(ulong *)(param_5 + 0x20);\n      lVar3 = *(long *)(param_5 + 0x18);\n      local_44 = (int)uVar1 - (int)lVar3;\n      if (local_44 < 1) {\n        if (lVar3 == *(long *)(param_5 + 0x10)) {\n          *(byte *)(param_5 + 0x50) = *(byte *)(param_5 + 0x50) | 2;\n        }\n        uVar4 = lVar3 + *(ulong *)(param_5 + 0x30) & ~*(ulong *)(param_5 + 0x30);\n        *(ulong *)(param_5 + 0x18) = uVar4;\n        if (uVar1 - *(long *)(param_5 + 8) < uVar4 - *(long *)(param_5 + 8)) {\n          *(ulong *)(param_5 + 0x18) = uVar1;\n          uVar4 = uVar1;\n        }\n        *(ulong *)(param_5 + 0x10) = uVar4;\n        lVar5 = FUN_0011a8d0(param_5);\n        uVar6 = *(undefined8 *)(param_5 + 0x20);\n        *(undefined4 *)(lVar5 + 0x5c) = 1;\n        *(long *)(*param_4 + 0x38) = lVar5;\n        lVar3 = *(long *)(param_5 + 0x18);\n        *param_4 = lVar5;\n        local_44 = (int)uVar6 - (int)lVar3;\n        if (local_44 < 1) {\n          uVar6 = dcgettext(0,"can\'t extend frag",5);\n                    \n          FUN_00121900(uVar6);\n        }\n      }\n      *(long *)(param_5 + 0x18) = lVar3 + local_44;\n      local_40[0] = lVar3;\n      iVar2 = FUN_00110300(param_1,&local_50,&local_54,local_40,&local_44);\n      if (iVar2 < 0) {\n        return -1;\n      }\n      iVar7 = iVar7 + iVar2;\n      *(long *)(lVar5 + 0x10) = *(long *)(lVar5 + 0x10) + (long)iVar2;\n      if (local_44 < 1) break;\n      *(long *)(param_5 + 0x18) = *(long *)(param_5 + 0x18) + (long)-local_44;\n      if (local_54 < 1) {\n        return iVar7;\n      }\n    }" { (expression_statement "uVar1 = *(ulong *)(param_5 + 0x20);" (assignment_expression "uVar1 = *(ulong *)(param_5 + 0x20)" identifier = (pointer_expression "*(ulong *)(param_5 + 0x20)" * (cast_expression "(ulong *)(param_5 + 0x20)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0x20)" ( (binary_expression "param_5 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "lVar3 = *(long *)(param_5 + 0x18);" (assignment_expression "lVar3 = *(long *)(param_5 + 0x18)" identifier = (pointer_expression "*(long *)(param_5 + 0x18)" * (cast_expression "(long *)(param_5 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0x18)" ( (binary_expression "param_5 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "local_44 = (int)uVar1 - (int)lVar3;" (assignment_expression "local_44 = (int)uVar1 - (int)lVar3" identifier = (binary_expression "(int)uVar1 - (int)lVar3" (cast_expression "(int)uVar1" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)lVar3" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if (local_44 < 1) {\n        if (lVar3 == *(long *)(param_5 + 0x10)) {\n          *(byte *)(param_5 + 0x50) = *(byte *)(param_5 + 0x50) | 2;\n        }\n        uVar4 = lVar3 + *(ulong *)(param_5 + 0x30) & ~*(ulong *)(param_5 + 0x30);\n        *(ulong *)(param_5 + 0x18) = uVar4;\n        if (uVar1 - *(long *)(param_5 + 8) < uVar4 - *(long *)(param_5 + 8)) {\n          *(ulong *)(param_5 + 0x18) = uVar1;\n          uVar4 = uVar1;\n        }\n        *(ulong *)(param_5 + 0x10) = uVar4;\n        lVar5 = FUN_0011a8d0(param_5);\n        uVar6 = *(undefined8 *)(param_5 + 0x20);\n        *(undefined4 *)(lVar5 + 0x5c) = 1;\n        *(long *)(*param_4 + 0x38) = lVar5;\n        lVar3 = *(long *)(param_5 + 0x18);\n        *param_4 = lVar5;\n        local_44 = (int)uVar6 - (int)lVar3;\n        if (local_44 < 1) {\n          uVar6 = dcgettext(0,"can\'t extend frag",5);\n                    \n          FUN_00121900(uVar6);\n        }\n      }" if (parenthesized_expression "(local_44 < 1)" ( (binary_expression "local_44 < 1" identifier < number_literal) )) (compound_statement "{\n        if (lVar3 == *(long *)(param_5 + 0x10)) {\n          *(byte *)(param_5 + 0x50) = *(byte *)(param_5 + 0x50) | 2;\n        }\n        uVar4 = lVar3 + *(ulong *)(param_5 + 0x30) & ~*(ulong *)(param_5 + 0x30);\n        *(ulong *)(param_5 + 0x18) = uVar4;\n        if (uVar1 - *(long *)(param_5 + 8) < uVar4 - *(long *)(param_5 + 8)) {\n          *(ulong *)(param_5 + 0x18) = uVar1;\n          uVar4 = uVar1;\n        }\n        *(ulong *)(param_5 + 0x10) = uVar4;\n        lVar5 = FUN_0011a8d0(param_5);\n        uVar6 = *(undefined8 *)(param_5 + 0x20);\n        *(undefined4 *)(lVar5 + 0x5c) = 1;\n        *(long *)(*param_4 + 0x38) = lVar5;\n        lVar3 = *(long *)(param_5 + 0x18);\n        *param_4 = lVar5;\n        local_44 = (int)uVar6 - (int)lVar3;\n        if (local_44 < 1) {\n          uVar6 = dcgettext(0,"can\'t extend frag",5);\n                    \n          FUN_00121900(uVar6);\n        }\n      }" { (if_statement "if (lVar3 == *(long *)(param_5 + 0x10)) {\n          *(byte *)(param_5 + 0x50) = *(byte *)(param_5 + 0x50) | 2;\n        }" if (parenthesized_expression "(lVar3 == *(long *)(param_5 + 0x10))" ( (binary_expression "lVar3 == *(long *)(param_5 + 0x10)" identifier == (pointer_expression "*(long *)(param_5 + 0x10)" * (cast_expression "(long *)(param_5 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0x10)" ( (binary_expression "param_5 + 0x10" identifier + number_literal) ))))) )) (compound_statement "{\n          *(byte *)(param_5 + 0x50) = *(byte *)(param_5 + 0x50) | 2;\n        }" { (expression_statement "*(byte *)(param_5 + 0x50) = *(byte *)(param_5 + 0x50) | 2;" (assignment_expression "*(byte *)(param_5 + 0x50) = *(byte *)(param_5 + 0x50) | 2" (pointer_expression "*(byte *)(param_5 + 0x50)" * (cast_expression "(byte *)(param_5 + 0x50)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0x50)" ( (binary_expression "param_5 + 0x50" identifier + number_literal) )))) = (binary_expression "*(byte *)(param_5 + 0x50) | 2" (pointer_expression "*(byte *)(param_5 + 0x50)" * (cast_expression "(byte *)(param_5 + 0x50)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0x50)" ( (binary_expression "param_5 + 0x50" identifier + number_literal) )))) | number_literal)) ;) })) (expression_statement "uVar4 = lVar3 + *(ulong *)(param_5 + 0x30) & ~*(ulong *)(param_5 + 0x30);" (assignment_expression "uVar4 = lVar3 + *(ulong *)(param_5 + 0x30) & ~*(ulong *)(param_5 + 0x30)" identifier = (binary_expression "lVar3 + *(ulong *)(param_5 + 0x30) & ~*(ulong *)(param_5 + 0x30)" (binary_expression "lVar3 + *(ulong *)(param_5 + 0x30)" identifier + (pointer_expression "*(ulong *)(param_5 + 0x30)" * (cast_expression "(ulong *)(param_5 + 0x30)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0x30)" ( (binary_expression "param_5 + 0x30" identifier + number_literal) ))))) & (unary_expression "~*(ulong *)(param_5 + 0x30)" ~ (pointer_expression "*(ulong *)(param_5 + 0x30)" * (cast_expression "(ulong *)(param_5 + 0x30)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0x30)" ( (binary_expression "param_5 + 0x30" identifier + number_literal) ))))))) ;) (expression_statement "*(ulong *)(param_5 + 0x18) = uVar4;" (assignment_expression "*(ulong *)(param_5 + 0x18) = uVar4" (pointer_expression "*(ulong *)(param_5 + 0x18)" * (cast_expression "(ulong *)(param_5 + 0x18)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0x18)" ( (binary_expression "param_5 + 0x18" identifier + number_literal) )))) = identifier) ;) (if_statement "if (uVar1 - *(long *)(param_5 + 8) < uVar4 - *(long *)(param_5 + 8)) {\n          *(ulong *)(param_5 + 0x18) = uVar1;\n          uVar4 = uVar1;\n        }" if (parenthesized_expression "(uVar1 - *(long *)(param_5 + 8) < uVar4 - *(long *)(param_5 + 8))" ( (binary_expression "uVar1 - *(long *)(param_5 + 8) < uVar4 - *(long *)(param_5 + 8)" (binary_expression "uVar1 - *(long *)(param_5 + 8)" identifier - (pointer_expression "*(long *)(param_5 + 8)" * (cast_expression "(long *)(param_5 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 8)" ( (binary_expression "param_5 + 8" identifier + number_literal) ))))) < (binary_expression "uVar4 - *(long *)(param_5 + 8)" identifier - (pointer_expression "*(long *)(param_5 + 8)" * (cast_expression "(long *)(param_5 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 8)" ( (binary_expression "param_5 + 8" identifier + number_literal) )))))) )) (compound_statement "{\n          *(ulong *)(param_5 + 0x18) = uVar1;\n          uVar4 = uVar1;\n        }" { (expression_statement "*(ulong *)(param_5 + 0x18) = uVar1;" (assignment_expression "*(ulong *)(param_5 + 0x18) = uVar1" (pointer_expression "*(ulong *)(param_5 + 0x18)" * (cast_expression "(ulong *)(param_5 + 0x18)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0x18)" ( (binary_expression "param_5 + 0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar4 = uVar1;" (assignment_expression "uVar4 = uVar1" identifier = identifier) ;) })) (expression_statement "*(ulong *)(param_5 + 0x10) = uVar4;" (assignment_expression "*(ulong *)(param_5 + 0x10) = uVar4" (pointer_expression "*(ulong *)(param_5 + 0x10)" * (cast_expression "(ulong *)(param_5 + 0x10)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0x10)" ( (binary_expression "param_5 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "lVar5 = FUN_0011a8d0(param_5);" (assignment_expression "lVar5 = FUN_0011a8d0(param_5)" identifier = (call_expression "FUN_0011a8d0(param_5)" identifier (argument_list "(param_5)" ( identifier )))) ;) (expression_statement "uVar6 = *(undefined8 *)(param_5 + 0x20);" (assignment_expression "uVar6 = *(undefined8 *)(param_5 + 0x20)" identifier = (pointer_expression "*(undefined8 *)(param_5 + 0x20)" * (cast_expression "(undefined8 *)(param_5 + 0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0x20)" ( (binary_expression "param_5 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(lVar5 + 0x5c) = 1;" (assignment_expression "*(undefined4 *)(lVar5 + 0x5c) = 1" (pointer_expression "*(undefined4 *)(lVar5 + 0x5c)" * (cast_expression "(undefined4 *)(lVar5 + 0x5c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 0x5c)" ( (binary_expression "lVar5 + 0x5c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(long *)(*param_4 + 0x38) = lVar5;" (assignment_expression "*(long *)(*param_4 + 0x38) = lVar5" (pointer_expression "*(long *)(*param_4 + 0x38)" * (cast_expression "(long *)(*param_4 + 0x38)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_4 + 0x38)" ( (binary_expression "*param_4 + 0x38" (pointer_expression "*param_4" * identifier) + number_literal) )))) = identifier) ;) (expression_statement "lVar3 = *(long *)(param_5 + 0x18);" (assignment_expression "lVar3 = *(long *)(param_5 + 0x18)" identifier = (pointer_expression "*(long *)(param_5 + 0x18)" * (cast_expression "(long *)(param_5 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0x18)" ( (binary_expression "param_5 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "*param_4 = lVar5;" (assignment_expression "*param_4 = lVar5" (pointer_expression "*param_4" * identifier) = identifier) ;) (expression_statement "local_44 = (int)uVar6 - (int)lVar3;" (assignment_expression "local_44 = (int)uVar6 - (int)lVar3" identifier = (binary_expression "(int)uVar6 - (int)lVar3" (cast_expression "(int)uVar6" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)lVar3" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if (local_44 < 1) {\n          uVar6 = dcgettext(0,"can\'t extend frag",5);\n                    \n          FUN_00121900(uVar6);\n        }" if (parenthesized_expression "(local_44 < 1)" ( (binary_expression "local_44 < 1" identifier < number_literal) )) (compound_statement "{\n          uVar6 = dcgettext(0,"can\'t extend frag",5);\n                    \n          FUN_00121900(uVar6);\n        }" { (expression_statement "uVar6 = dcgettext(0,"can\'t extend frag",5);" (assignment_expression "uVar6 = dcgettext(0,"can\'t extend frag",5)" identifier = (call_expression "dcgettext(0,"can\'t extend frag",5)" identifier (argument_list "(0,"can\'t extend frag",5)" ( number_literal , (string_literal ""can\'t extend frag"" " string_content escape_sequence string_content ") , number_literal )))) ;) (expression_statement "FUN_00121900(uVar6);" (call_expression "FUN_00121900(uVar6)" identifier (argument_list "(uVar6)" ( identifier ))) ;) })) })) (expression_statement "*(long *)(param_5 + 0x18) = lVar3 + local_44;" (assignment_expression "*(long *)(param_5 + 0x18) = lVar3 + local_44" (pointer_expression "*(long *)(param_5 + 0x18)" * (cast_expression "(long *)(param_5 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0x18)" ( (binary_expression "param_5 + 0x18" identifier + number_literal) )))) = (binary_expression "lVar3 + local_44" identifier + identifier)) ;) (expression_statement "local_40[0] = lVar3;" (assignment_expression "local_40[0] = lVar3" (subscript_expression "local_40[0]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar2 = FUN_00110300(param_1,&local_50,&local_54,local_40,&local_44);" (assignment_expression "iVar2 = FUN_00110300(param_1,&local_50,&local_54,local_40,&local_44)" identifier = (call_expression "FUN_00110300(param_1,&local_50,&local_54,local_40,&local_44)" identifier (argument_list "(param_1,&local_50,&local_54,local_40,&local_44)" ( identifier , (pointer_expression "&local_50" & identifier) , (pointer_expression "&local_54" & identifier) , identifier , (pointer_expression "&local_44" & identifier) )))) ;) (if_statement "if (iVar2 < 0) {\n        return -1;\n      }" if (parenthesized_expression "(iVar2 < 0)" ( (binary_expression "iVar2 < 0" identifier < number_literal) )) (compound_statement "{\n        return -1;\n      }" { (return_statement "return -1;" return number_literal ;) })) (expression_statement "iVar7 = iVar7 + iVar2;" (assignment_expression "iVar7 = iVar7 + iVar2" identifier = (binary_expression "iVar7 + iVar2" identifier + identifier)) ;) (expression_statement "*(long *)(lVar5 + 0x10) = *(long *)(lVar5 + 0x10) + (long)iVar2;" (assignment_expression "*(long *)(lVar5 + 0x10) = *(long *)(lVar5 + 0x10) + (long)iVar2" (pointer_expression "*(long *)(lVar5 + 0x10)" * (cast_expression "(long *)(lVar5 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 0x10)" ( (binary_expression "lVar5 + 0x10" identifier + number_literal) )))) = (binary_expression "*(long *)(lVar5 + 0x10) + (long)iVar2" (pointer_expression "*(long *)(lVar5 + 0x10)" * (cast_expression "(long *)(lVar5 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 0x10)" ( (binary_expression "lVar5 + 0x10" identifier + number_literal) )))) + (cast_expression "(long)iVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) (if_statement "if (local_44 < 1) break;" if (parenthesized_expression "(local_44 < 1)" ( (binary_expression "local_44 < 1" identifier < number_literal) )) (break_statement "break;" break ;)) (expression_statement "*(long *)(param_5 + 0x18) = *(long *)(param_5 + 0x18) + (long)-local_44;" (assignment_expression "*(long *)(param_5 + 0x18) = *(long *)(param_5 + 0x18) + (long)-local_44" (pointer_expression "*(long *)(param_5 + 0x18)" * (cast_expression "(long *)(param_5 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0x18)" ( (binary_expression "param_5 + 0x18" identifier + number_literal) )))) = (binary_expression "*(long *)(param_5 + 0x18) + (long)-local_44" (pointer_expression "*(long *)(param_5 + 0x18)" * (cast_expression "(long *)(param_5 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0x18)" ( (binary_expression "param_5 + 0x18" identifier + number_literal) )))) + (cast_expression "(long)-local_44" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (unary_expression "-local_44" - identifier)))) ;) (if_statement "if (local_54 < 1) {\n        return iVar7;\n      }" if (parenthesized_expression "(local_54 < 1)" ( (binary_expression "local_54 < 1" identifier < number_literal) )) (compound_statement "{\n        return iVar7;\n      }" { (return_statement "return iVar7;" return identifier ;) })) })) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration (sized_type_specifier long) (pointer_declarator * IDENT)) , (parameter_declaration (sized_type_specifier long) IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) (array_declarator IDENT [ LIT ]) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (return_statement return IDENT ;) })) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) | LIT)) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) & (unary_expression ~ (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT - (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) < (binary_expression IDENT - (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence string_content ") , LIT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) , (pointer_expression & IDENT) , IDENT , (pointer_expression & IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (break_statement break ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (unary_expression - IDENT)))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (return_statement return IDENT ;) })) })) }) while (parenthesized_expression ( BOOL )) ;) })))
(function_definition "int FUN_00130c90(undefined8 param_1,undefined8 param_2,int param_3,long *param_4,long param_5)\n\n{\n  ulong uVar1;\n  int iVar2;\n  long lVar3;\n  ulong uVar4;\n  long lVar5;\n  undefined8 uVar6;\n  int iVar7;\n  int local_54;\n  undefined8 local_50;\n  int local_44;\n  long local_40 [2];\n  \n  iVar7 = 0;\n  lVar5 = *param_4;\n  local_54 = param_3;\n  local_50 = param_2;\n  do {\n    if (local_54 < 1) {\n      return iVar7;\n    }\n    while( true ) {\n      uVar1 = *(ulong *)(param_5 + 0x20);\n      lVar3 = *(long *)(param_5 + 0x18);\n      local_44 = (int)uVar1 - (int)lVar3;\n      if (local_44 < 1) {\n        if (lVar3 == *(long *)(param_5 + 0x10)) {\n          *(byte *)(param_5 + 0x50) = *(byte *)(param_5 + 0x50) | 2;\n        }\n        uVar4 = lVar3 + *(ulong *)(param_5 + 0x30) & ~*(ulong *)(param_5 + 0x30);\n        *(ulong *)(param_5 + 0x18) = uVar4;\n        if (uVar1 - *(long *)(param_5 + 8) < uVar4 - *(long *)(param_5 + 8)) {\n          *(ulong *)(param_5 + 0x18) = uVar1;\n          uVar4 = uVar1;\n        }\n        *(ulong *)(param_5 + 0x10) = uVar4;\n        lVar5 = FUN_0011a8d0(param_5);\n        uVar6 = *(undefined8 *)(param_5 + 0x20);\n        *(undefined4 *)(lVar5 + 0x5c) = 1;\n        *(long *)(*param_4 + 0x38) = lVar5;\n        lVar3 = *(long *)(param_5 + 0x18);\n        *param_4 = lVar5;\n        local_44 = (int)uVar6 - (int)lVar3;\n        if (local_44 < 1) {\n          uVar6 = dcgettext(0,"can\'t extend frag",5);\n                    \n          FUN_00121900(uVar6);\n        }\n      }\n      *(long *)(param_5 + 0x18) = lVar3 + local_44;\n      local_40[0] = lVar3;\n      iVar2 = FUN_00110300(param_1,&local_50,&local_54,local_40,&local_44);\n      if (iVar2 < 0) {\n        return -1;\n      }\n      iVar7 = iVar7 + iVar2;\n      *(long *)(lVar5 + 0x10) = *(long *)(lVar5 + 0x10) + (long)iVar2;\n      if (local_44 < 1) break;\n      *(long *)(param_5 + 0x18) = *(long *)(param_5 + 0x18) + (long)-local_44;\n      if (local_54 < 1) {\n        return iVar7;\n      }\n    }\n  } while( true );\n}" (primitive_type "int") (function_declarator "FUN_00130c90(undefined8 param_1,undefined8 param_2,int param_3,long *param_4,long param_5)" (identifier "FUN_00130c90") (parameter_list "(undefined8 param_1,undefined8 param_2,int param_3,long *param_4,long param_5)" (( "(") (parameter_declaration "undefined8 param_1" (type_identifier "undefined8") (identifier "param_1")) (, ",") (parameter_declaration "undefined8 param_2" (type_identifier "undefined8") (identifier "param_2")) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) (, ",") (parameter_declaration "long *param_4" (sized_type_specifier "long" (long "long")) (pointer_declarator "*param_4" (* "*") (identifier "param_4"))) (, ",") (parameter_declaration "long param_5" (sized_type_specifier "long" (long "long")) (identifier "param_5")) () ")"))) (compound_statement "{\n  ulong uVar1;\n  int iVar2;\n  long lVar3;\n  ulong uVar4;\n  long lVar5;\n  undefined8 uVar6;\n  int iVar7;\n  int local_54;\n  undefined8 local_50;\n  int local_44;\n  long local_40 [2];\n  \n  iVar7 = 0;\n  lVar5 = *param_4;\n  local_54 = param_3;\n  local_50 = param_2;\n  do {\n    if (local_54 < 1) {\n      return iVar7;\n    }\n    while( true ) {\n      uVar1 = *(ulong *)(param_5 + 0x20);\n      lVar3 = *(long *)(param_5 + 0x18);\n      local_44 = (int)uVar1 - (int)lVar3;\n      if (local_44 < 1) {\n        if (lVar3 == *(long *)(param_5 + 0x10)) {\n          *(byte *)(param_5 + 0x50) = *(byte *)(param_5 + 0x50) | 2;\n        }\n        uVar4 = lVar3 + *(ulong *)(param_5 + 0x30) & ~*(ulong *)(param_5 + 0x30);\n        *(ulong *)(param_5 + 0x18) = uVar4;\n        if (uVar1 - *(long *)(param_5 + 8) < uVar4 - *(long *)(param_5 + 8)) {\n          *(ulong *)(param_5 + 0x18) = uVar1;\n          uVar4 = uVar1;\n        }\n        *(ulong *)(param_5 + 0x10) = uVar4;\n        lVar5 = FUN_0011a8d0(param_5);\n        uVar6 = *(undefined8 *)(param_5 + 0x20);\n        *(undefined4 *)(lVar5 + 0x5c) = 1;\n        *(long *)(*param_4 + 0x38) = lVar5;\n        lVar3 = *(long *)(param_5 + 0x18);\n        *param_4 = lVar5;\n        local_44 = (int)uVar6 - (int)lVar3;\n        if (local_44 < 1) {\n          uVar6 = dcgettext(0,"can\'t extend frag",5);\n                    \n          FUN_00121900(uVar6);\n        }\n      }\n      *(long *)(param_5 + 0x18) = lVar3 + local_44;\n      local_40[0] = lVar3;\n      iVar2 = FUN_00110300(param_1,&local_50,&local_54,local_40,&local_44);\n      if (iVar2 < 0) {\n        return -1;\n      }\n      iVar7 = iVar7 + iVar2;\n      *(long *)(lVar5 + 0x10) = *(long *)(lVar5 + 0x10) + (long)iVar2;\n      if (local_44 < 1) break;\n      *(long *)(param_5 + 0x18) = *(long *)(param_5 + 0x18) + (long)-local_44;\n      if (local_54 < 1) {\n        return iVar7;\n      }\n    }\n  } while( true );\n}" ({ "{") (declaration "ulong uVar1;" (type_identifier "ulong") (identifier "uVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "long lVar3;" (sized_type_specifier "long" (long "long")) (identifier "lVar3") (; ";")) (declaration "ulong uVar4;" (type_identifier "ulong") (identifier "uVar4") (; ";")) (declaration "long lVar5;" (sized_type_specifier "long" (long "long")) (identifier "lVar5") (; ";")) (declaration "undefined8 uVar6;" (type_identifier "undefined8") (identifier "uVar6") (; ";")) (declaration "int iVar7;" (primitive_type "int") (identifier "iVar7") (; ";")) (declaration "int local_54;" (primitive_type "int") (identifier "local_54") (; ";")) (declaration "undefined8 local_50;" (type_identifier "undefined8") (identifier "local_50") (; ";")) (declaration "int local_44;" (primitive_type "int") (identifier "local_44") (; ";")) (declaration "long local_40 [2];" (sized_type_specifier "long" (long "long")) (array_declarator "local_40 [2]" (identifier "local_40") ([ "[") (number_literal "2") (] "]")) (; ";")) (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" (identifier "iVar7") (= "=") (number_literal "0")) (; ";")) (expression_statement "lVar5 = *param_4;" (assignment_expression "lVar5 = *param_4" (identifier "lVar5") (= "=") (pointer_expression "*param_4" (* "*") (identifier "param_4"))) (; ";")) (expression_statement "local_54 = param_3;" (assignment_expression "local_54 = param_3" (identifier "local_54") (= "=") (identifier "param_3")) (; ";")) (expression_statement "local_50 = param_2;" (assignment_expression "local_50 = param_2" (identifier "local_50") (= "=") (identifier "param_2")) (; ";")) (do_statement "do {\n    if (local_54 < 1) {\n      return iVar7;\n    }\n    while( true ) {\n      uVar1 = *(ulong *)(param_5 + 0x20);\n      lVar3 = *(long *)(param_5 + 0x18);\n      local_44 = (int)uVar1 - (int)lVar3;\n      if (local_44 < 1) {\n        if (lVar3 == *(long *)(param_5 + 0x10)) {\n          *(byte *)(param_5 + 0x50) = *(byte *)(param_5 + 0x50) | 2;\n        }\n        uVar4 = lVar3 + *(ulong *)(param_5 + 0x30) & ~*(ulong *)(param_5 + 0x30);\n        *(ulong *)(param_5 + 0x18) = uVar4;\n        if (uVar1 - *(long *)(param_5 + 8) < uVar4 - *(long *)(param_5 + 8)) {\n          *(ulong *)(param_5 + 0x18) = uVar1;\n          uVar4 = uVar1;\n        }\n        *(ulong *)(param_5 + 0x10) = uVar4;\n        lVar5 = FUN_0011a8d0(param_5);\n        uVar6 = *(undefined8 *)(param_5 + 0x20);\n        *(undefined4 *)(lVar5 + 0x5c) = 1;\n        *(long *)(*param_4 + 0x38) = lVar5;\n        lVar3 = *(long *)(param_5 + 0x18);\n        *param_4 = lVar5;\n        local_44 = (int)uVar6 - (int)lVar3;\n        if (local_44 < 1) {\n          uVar6 = dcgettext(0,"can\'t extend frag",5);\n                    \n          FUN_00121900(uVar6);\n        }\n      }\n      *(long *)(param_5 + 0x18) = lVar3 + local_44;\n      local_40[0] = lVar3;\n      iVar2 = FUN_00110300(param_1,&local_50,&local_54,local_40,&local_44);\n      if (iVar2 < 0) {\n        return -1;\n      }\n      iVar7 = iVar7 + iVar2;\n      *(long *)(lVar5 + 0x10) = *(long *)(lVar5 + 0x10) + (long)iVar2;\n      if (local_44 < 1) break;\n      *(long *)(param_5 + 0x18) = *(long *)(param_5 + 0x18) + (long)-local_44;\n      if (local_54 < 1) {\n        return iVar7;\n      }\n    }\n  } while( true );" (do "do") (compound_statement "{\n    if (local_54 < 1) {\n      return iVar7;\n    }\n    while( true ) {\n      uVar1 = *(ulong *)(param_5 + 0x20);\n      lVar3 = *(long *)(param_5 + 0x18);\n      local_44 = (int)uVar1 - (int)lVar3;\n      if (local_44 < 1) {\n        if (lVar3 == *(long *)(param_5 + 0x10)) {\n          *(byte *)(param_5 + 0x50) = *(byte *)(param_5 + 0x50) | 2;\n        }\n        uVar4 = lVar3 + *(ulong *)(param_5 + 0x30) & ~*(ulong *)(param_5 + 0x30);\n        *(ulong *)(param_5 + 0x18) = uVar4;\n        if (uVar1 - *(long *)(param_5 + 8) < uVar4 - *(long *)(param_5 + 8)) {\n          *(ulong *)(param_5 + 0x18) = uVar1;\n          uVar4 = uVar1;\n        }\n        *(ulong *)(param_5 + 0x10) = uVar4;\n        lVar5 = FUN_0011a8d0(param_5);\n        uVar6 = *(undefined8 *)(param_5 + 0x20);\n        *(undefined4 *)(lVar5 + 0x5c) = 1;\n        *(long *)(*param_4 + 0x38) = lVar5;\n        lVar3 = *(long *)(param_5 + 0x18);\n        *param_4 = lVar5;\n        local_44 = (int)uVar6 - (int)lVar3;\n        if (local_44 < 1) {\n          uVar6 = dcgettext(0,"can\'t extend frag",5);\n                    \n          FUN_00121900(uVar6);\n        }\n      }\n      *(long *)(param_5 + 0x18) = lVar3 + local_44;\n      local_40[0] = lVar3;\n      iVar2 = FUN_00110300(param_1,&local_50,&local_54,local_40,&local_44);\n      if (iVar2 < 0) {\n        return -1;\n      }\n      iVar7 = iVar7 + iVar2;\n      *(long *)(lVar5 + 0x10) = *(long *)(lVar5 + 0x10) + (long)iVar2;\n      if (local_44 < 1) break;\n      *(long *)(param_5 + 0x18) = *(long *)(param_5 + 0x18) + (long)-local_44;\n      if (local_54 < 1) {\n        return iVar7;\n      }\n    }\n  }" ({ "{") (if_statement "if (local_54 < 1) {\n      return iVar7;\n    }" (if "if") (parenthesized_expression "(local_54 < 1)" (( "(") (binary_expression "local_54 < 1" (identifier "local_54") (< "<") (number_literal "1")) () ")")) (compound_statement "{\n      return iVar7;\n    }" ({ "{") (return_statement "return iVar7;" (return "return") (identifier "iVar7") (; ";")) (} "}"))) (while_statement "while( true ) {\n      uVar1 = *(ulong *)(param_5 + 0x20);\n      lVar3 = *(long *)(param_5 + 0x18);\n      local_44 = (int)uVar1 - (int)lVar3;\n      if (local_44 < 1) {\n        if (lVar3 == *(long *)(param_5 + 0x10)) {\n          *(byte *)(param_5 + 0x50) = *(byte *)(param_5 + 0x50) | 2;\n        }\n        uVar4 = lVar3 + *(ulong *)(param_5 + 0x30) & ~*(ulong *)(param_5 + 0x30);\n        *(ulong *)(param_5 + 0x18) = uVar4;\n        if (uVar1 - *(long *)(param_5 + 8) < uVar4 - *(long *)(param_5 + 8)) {\n          *(ulong *)(param_5 + 0x18) = uVar1;\n          uVar4 = uVar1;\n        }\n        *(ulong *)(param_5 + 0x10) = uVar4;\n        lVar5 = FUN_0011a8d0(param_5);\n        uVar6 = *(undefined8 *)(param_5 + 0x20);\n        *(undefined4 *)(lVar5 + 0x5c) = 1;\n        *(long *)(*param_4 + 0x38) = lVar5;\n        lVar3 = *(long *)(param_5 + 0x18);\n        *param_4 = lVar5;\n        local_44 = (int)uVar6 - (int)lVar3;\n        if (local_44 < 1) {\n          uVar6 = dcgettext(0,"can\'t extend frag",5);\n                    \n          FUN_00121900(uVar6);\n        }\n      }\n      *(long *)(param_5 + 0x18) = lVar3 + local_44;\n      local_40[0] = lVar3;\n      iVar2 = FUN_00110300(param_1,&local_50,&local_54,local_40,&local_44);\n      if (iVar2 < 0) {\n        return -1;\n      }\n      iVar7 = iVar7 + iVar2;\n      *(long *)(lVar5 + 0x10) = *(long *)(lVar5 + 0x10) + (long)iVar2;\n      if (local_44 < 1) break;\n      *(long *)(param_5 + 0x18) = *(long *)(param_5 + 0x18) + (long)-local_44;\n      if (local_54 < 1) {\n        return iVar7;\n      }\n    }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n      uVar1 = *(ulong *)(param_5 + 0x20);\n      lVar3 = *(long *)(param_5 + 0x18);\n      local_44 = (int)uVar1 - (int)lVar3;\n      if (local_44 < 1) {\n        if (lVar3 == *(long *)(param_5 + 0x10)) {\n          *(byte *)(param_5 + 0x50) = *(byte *)(param_5 + 0x50) | 2;\n        }\n        uVar4 = lVar3 + *(ulong *)(param_5 + 0x30) & ~*(ulong *)(param_5 + 0x30);\n        *(ulong *)(param_5 + 0x18) = uVar4;\n        if (uVar1 - *(long *)(param_5 + 8) < uVar4 - *(long *)(param_5 + 8)) {\n          *(ulong *)(param_5 + 0x18) = uVar1;\n          uVar4 = uVar1;\n        }\n        *(ulong *)(param_5 + 0x10) = uVar4;\n        lVar5 = FUN_0011a8d0(param_5);\n        uVar6 = *(undefined8 *)(param_5 + 0x20);\n        *(undefined4 *)(lVar5 + 0x5c) = 1;\n        *(long *)(*param_4 + 0x38) = lVar5;\n        lVar3 = *(long *)(param_5 + 0x18);\n        *param_4 = lVar5;\n        local_44 = (int)uVar6 - (int)lVar3;\n        if (local_44 < 1) {\n          uVar6 = dcgettext(0,"can\'t extend frag",5);\n                    \n          FUN_00121900(uVar6);\n        }\n      }\n      *(long *)(param_5 + 0x18) = lVar3 + local_44;\n      local_40[0] = lVar3;\n      iVar2 = FUN_00110300(param_1,&local_50,&local_54,local_40,&local_44);\n      if (iVar2 < 0) {\n        return -1;\n      }\n      iVar7 = iVar7 + iVar2;\n      *(long *)(lVar5 + 0x10) = *(long *)(lVar5 + 0x10) + (long)iVar2;\n      if (local_44 < 1) break;\n      *(long *)(param_5 + 0x18) = *(long *)(param_5 + 0x18) + (long)-local_44;\n      if (local_54 < 1) {\n        return iVar7;\n      }\n    }" ({ "{") (expression_statement "uVar1 = *(ulong *)(param_5 + 0x20);" (assignment_expression "uVar1 = *(ulong *)(param_5 + 0x20)" (identifier "uVar1") (= "=") (pointer_expression "*(ulong *)(param_5 + 0x20)" (* "*") (cast_expression "(ulong *)(param_5 + 0x20)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + 0x20)" (( "(") (binary_expression "param_5 + 0x20" (identifier "param_5") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (expression_statement "lVar3 = *(long *)(param_5 + 0x18);" (assignment_expression "lVar3 = *(long *)(param_5 + 0x18)" (identifier "lVar3") (= "=") (pointer_expression "*(long *)(param_5 + 0x18)" (* "*") (cast_expression "(long *)(param_5 + 0x18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + 0x18)" (( "(") (binary_expression "param_5 + 0x18" (identifier "param_5") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (expression_statement "local_44 = (int)uVar1 - (int)lVar3;" (assignment_expression "local_44 = (int)uVar1 - (int)lVar3" (identifier "local_44") (= "=") (binary_expression "(int)uVar1 - (int)lVar3" (cast_expression "(int)uVar1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar1")) (- "-") (cast_expression "(int)lVar3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "lVar3")))) (; ";")) (if_statement "if (local_44 < 1) {\n        if (lVar3 == *(long *)(param_5 + 0x10)) {\n          *(byte *)(param_5 + 0x50) = *(byte *)(param_5 + 0x50) | 2;\n        }\n        uVar4 = lVar3 + *(ulong *)(param_5 + 0x30) & ~*(ulong *)(param_5 + 0x30);\n        *(ulong *)(param_5 + 0x18) = uVar4;\n        if (uVar1 - *(long *)(param_5 + 8) < uVar4 - *(long *)(param_5 + 8)) {\n          *(ulong *)(param_5 + 0x18) = uVar1;\n          uVar4 = uVar1;\n        }\n        *(ulong *)(param_5 + 0x10) = uVar4;\n        lVar5 = FUN_0011a8d0(param_5);\n        uVar6 = *(undefined8 *)(param_5 + 0x20);\n        *(undefined4 *)(lVar5 + 0x5c) = 1;\n        *(long *)(*param_4 + 0x38) = lVar5;\n        lVar3 = *(long *)(param_5 + 0x18);\n        *param_4 = lVar5;\n        local_44 = (int)uVar6 - (int)lVar3;\n        if (local_44 < 1) {\n          uVar6 = dcgettext(0,"can\'t extend frag",5);\n                    \n          FUN_00121900(uVar6);\n        }\n      }" (if "if") (parenthesized_expression "(local_44 < 1)" (( "(") (binary_expression "local_44 < 1" (identifier "local_44") (< "<") (number_literal "1")) () ")")) (compound_statement "{\n        if (lVar3 == *(long *)(param_5 + 0x10)) {\n          *(byte *)(param_5 + 0x50) = *(byte *)(param_5 + 0x50) | 2;\n        }\n        uVar4 = lVar3 + *(ulong *)(param_5 + 0x30) & ~*(ulong *)(param_5 + 0x30);\n        *(ulong *)(param_5 + 0x18) = uVar4;\n        if (uVar1 - *(long *)(param_5 + 8) < uVar4 - *(long *)(param_5 + 8)) {\n          *(ulong *)(param_5 + 0x18) = uVar1;\n          uVar4 = uVar1;\n        }\n        *(ulong *)(param_5 + 0x10) = uVar4;\n        lVar5 = FUN_0011a8d0(param_5);\n        uVar6 = *(undefined8 *)(param_5 + 0x20);\n        *(undefined4 *)(lVar5 + 0x5c) = 1;\n        *(long *)(*param_4 + 0x38) = lVar5;\n        lVar3 = *(long *)(param_5 + 0x18);\n        *param_4 = lVar5;\n        local_44 = (int)uVar6 - (int)lVar3;\n        if (local_44 < 1) {\n          uVar6 = dcgettext(0,"can\'t extend frag",5);\n                    \n          FUN_00121900(uVar6);\n        }\n      }" ({ "{") (if_statement "if (lVar3 == *(long *)(param_5 + 0x10)) {\n          *(byte *)(param_5 + 0x50) = *(byte *)(param_5 + 0x50) | 2;\n        }" (if "if") (parenthesized_expression "(lVar3 == *(long *)(param_5 + 0x10))" (( "(") (binary_expression "lVar3 == *(long *)(param_5 + 0x10)" (identifier "lVar3") (== "==") (pointer_expression "*(long *)(param_5 + 0x10)" (* "*") (cast_expression "(long *)(param_5 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + 0x10)" (( "(") (binary_expression "param_5 + 0x10" (identifier "param_5") (+ "+") (number_literal "0x10")) () ")"))))) () ")")) (compound_statement "{\n          *(byte *)(param_5 + 0x50) = *(byte *)(param_5 + 0x50) | 2;\n        }" ({ "{") (expression_statement "*(byte *)(param_5 + 0x50) = *(byte *)(param_5 + 0x50) | 2;" (assignment_expression "*(byte *)(param_5 + 0x50) = *(byte *)(param_5 + 0x50) | 2" (pointer_expression "*(byte *)(param_5 + 0x50)" (* "*") (cast_expression "(byte *)(param_5 + 0x50)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + 0x50)" (( "(") (binary_expression "param_5 + 0x50" (identifier "param_5") (+ "+") (number_literal "0x50")) () ")")))) (= "=") (binary_expression "*(byte *)(param_5 + 0x50) | 2" (pointer_expression "*(byte *)(param_5 + 0x50)" (* "*") (cast_expression "(byte *)(param_5 + 0x50)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + 0x50)" (( "(") (binary_expression "param_5 + 0x50" (identifier "param_5") (+ "+") (number_literal "0x50")) () ")")))) (| "|") (number_literal "2"))) (; ";")) (} "}"))) (expression_statement "uVar4 = lVar3 + *(ulong *)(param_5 + 0x30) & ~*(ulong *)(param_5 + 0x30);" (assignment_expression "uVar4 = lVar3 + *(ulong *)(param_5 + 0x30) & ~*(ulong *)(param_5 + 0x30)" (identifier "uVar4") (= "=") (binary_expression "lVar3 + *(ulong *)(param_5 + 0x30) & ~*(ulong *)(param_5 + 0x30)" (binary_expression "lVar3 + *(ulong *)(param_5 + 0x30)" (identifier "lVar3") (+ "+") (pointer_expression "*(ulong *)(param_5 + 0x30)" (* "*") (cast_expression "(ulong *)(param_5 + 0x30)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + 0x30)" (( "(") (binary_expression "param_5 + 0x30" (identifier "param_5") (+ "+") (number_literal "0x30")) () ")"))))) (& "&") (unary_expression "~*(ulong *)(param_5 + 0x30)" (~ "~") (pointer_expression "*(ulong *)(param_5 + 0x30)" (* "*") (cast_expression "(ulong *)(param_5 + 0x30)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + 0x30)" (( "(") (binary_expression "param_5 + 0x30" (identifier "param_5") (+ "+") (number_literal "0x30")) () ")"))))))) (; ";")) (expression_statement "*(ulong *)(param_5 + 0x18) = uVar4;" (assignment_expression "*(ulong *)(param_5 + 0x18) = uVar4" (pointer_expression "*(ulong *)(param_5 + 0x18)" (* "*") (cast_expression "(ulong *)(param_5 + 0x18)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + 0x18)" (( "(") (binary_expression "param_5 + 0x18" (identifier "param_5") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (identifier "uVar4")) (; ";")) (if_statement "if (uVar1 - *(long *)(param_5 + 8) < uVar4 - *(long *)(param_5 + 8)) {\n          *(ulong *)(param_5 + 0x18) = uVar1;\n          uVar4 = uVar1;\n        }" (if "if") (parenthesized_expression "(uVar1 - *(long *)(param_5 + 8) < uVar4 - *(long *)(param_5 + 8))" (( "(") (binary_expression "uVar1 - *(long *)(param_5 + 8) < uVar4 - *(long *)(param_5 + 8)" (binary_expression "uVar1 - *(long *)(param_5 + 8)" (identifier "uVar1") (- "-") (pointer_expression "*(long *)(param_5 + 8)" (* "*") (cast_expression "(long *)(param_5 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + 8)" (( "(") (binary_expression "param_5 + 8" (identifier "param_5") (+ "+") (number_literal "8")) () ")"))))) (< "<") (binary_expression "uVar4 - *(long *)(param_5 + 8)" (identifier "uVar4") (- "-") (pointer_expression "*(long *)(param_5 + 8)" (* "*") (cast_expression "(long *)(param_5 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + 8)" (( "(") (binary_expression "param_5 + 8" (identifier "param_5") (+ "+") (number_literal "8")) () ")")))))) () ")")) (compound_statement "{\n          *(ulong *)(param_5 + 0x18) = uVar1;\n          uVar4 = uVar1;\n        }" ({ "{") (expression_statement "*(ulong *)(param_5 + 0x18) = uVar1;" (assignment_expression "*(ulong *)(param_5 + 0x18) = uVar1" (pointer_expression "*(ulong *)(param_5 + 0x18)" (* "*") (cast_expression "(ulong *)(param_5 + 0x18)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + 0x18)" (( "(") (binary_expression "param_5 + 0x18" (identifier "param_5") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (identifier "uVar1")) (; ";")) (expression_statement "uVar4 = uVar1;" (assignment_expression "uVar4 = uVar1" (identifier "uVar4") (= "=") (identifier "uVar1")) (; ";")) (} "}"))) (expression_statement "*(ulong *)(param_5 + 0x10) = uVar4;" (assignment_expression "*(ulong *)(param_5 + 0x10) = uVar4" (pointer_expression "*(ulong *)(param_5 + 0x10)" (* "*") (cast_expression "(ulong *)(param_5 + 0x10)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + 0x10)" (( "(") (binary_expression "param_5 + 0x10" (identifier "param_5") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "uVar4")) (; ";")) (expression_statement "lVar5 = FUN_0011a8d0(param_5);" (assignment_expression "lVar5 = FUN_0011a8d0(param_5)" (identifier "lVar5") (= "=") (call_expression "FUN_0011a8d0(param_5)" (identifier "FUN_0011a8d0") (argument_list "(param_5)" (( "(") (identifier "param_5") () ")")))) (; ";")) (expression_statement "uVar6 = *(undefined8 *)(param_5 + 0x20);" (assignment_expression "uVar6 = *(undefined8 *)(param_5 + 0x20)" (identifier "uVar6") (= "=") (pointer_expression "*(undefined8 *)(param_5 + 0x20)" (* "*") (cast_expression "(undefined8 *)(param_5 + 0x20)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + 0x20)" (( "(") (binary_expression "param_5 + 0x20" (identifier "param_5") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(lVar5 + 0x5c) = 1;" (assignment_expression "*(undefined4 *)(lVar5 + 0x5c) = 1" (pointer_expression "*(undefined4 *)(lVar5 + 0x5c)" (* "*") (cast_expression "(undefined4 *)(lVar5 + 0x5c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar5 + 0x5c)" (( "(") (binary_expression "lVar5 + 0x5c" (identifier "lVar5") (+ "+") (number_literal "0x5c")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "*(long *)(*param_4 + 0x38) = lVar5;" (assignment_expression "*(long *)(*param_4 + 0x38) = lVar5" (pointer_expression "*(long *)(*param_4 + 0x38)" (* "*") (cast_expression "(long *)(*param_4 + 0x38)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*param_4 + 0x38)" (( "(") (binary_expression "*param_4 + 0x38" (pointer_expression "*param_4" (* "*") (identifier "param_4")) (+ "+") (number_literal "0x38")) () ")")))) (= "=") (identifier "lVar5")) (; ";")) (expression_statement "lVar3 = *(long *)(param_5 + 0x18);" (assignment_expression "lVar3 = *(long *)(param_5 + 0x18)" (identifier "lVar3") (= "=") (pointer_expression "*(long *)(param_5 + 0x18)" (* "*") (cast_expression "(long *)(param_5 + 0x18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + 0x18)" (( "(") (binary_expression "param_5 + 0x18" (identifier "param_5") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (expression_statement "*param_4 = lVar5;" (assignment_expression "*param_4 = lVar5" (pointer_expression "*param_4" (* "*") (identifier "param_4")) (= "=") (identifier "lVar5")) (; ";")) (expression_statement "local_44 = (int)uVar6 - (int)lVar3;" (assignment_expression "local_44 = (int)uVar6 - (int)lVar3" (identifier "local_44") (= "=") (binary_expression "(int)uVar6 - (int)lVar3" (cast_expression "(int)uVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar6")) (- "-") (cast_expression "(int)lVar3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "lVar3")))) (; ";")) (if_statement "if (local_44 < 1) {\n          uVar6 = dcgettext(0,"can\'t extend frag",5);\n                    \n          FUN_00121900(uVar6);\n        }" (if "if") (parenthesized_expression "(local_44 < 1)" (( "(") (binary_expression "local_44 < 1" (identifier "local_44") (< "<") (number_literal "1")) () ")")) (compound_statement "{\n          uVar6 = dcgettext(0,"can\'t extend frag",5);\n                    \n          FUN_00121900(uVar6);\n        }" ({ "{") (expression_statement "uVar6 = dcgettext(0,"can\'t extend frag",5);" (assignment_expression "uVar6 = dcgettext(0,"can\'t extend frag",5)" (identifier "uVar6") (= "=") (call_expression "dcgettext(0,"can\'t extend frag",5)" (identifier "dcgettext") (argument_list "(0,"can\'t extend frag",5)" (( "(") (number_literal "0") (, ",") (string_literal ""can\'t extend frag"" (" """) (string_content "can") (escape_sequence "\'") (string_content "t extend frag") (" """)) (, ",") (number_literal "5") () ")")))) (; ";")) (expression_statement "FUN_00121900(uVar6);" (call_expression "FUN_00121900(uVar6)" (identifier "FUN_00121900") (argument_list "(uVar6)" (( "(") (identifier "uVar6") () ")"))) (; ";")) (} "}"))) (} "}"))) (expression_statement "*(long *)(param_5 + 0x18) = lVar3 + local_44;" (assignment_expression "*(long *)(param_5 + 0x18) = lVar3 + local_44" (pointer_expression "*(long *)(param_5 + 0x18)" (* "*") (cast_expression "(long *)(param_5 + 0x18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + 0x18)" (( "(") (binary_expression "param_5 + 0x18" (identifier "param_5") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (binary_expression "lVar3 + local_44" (identifier "lVar3") (+ "+") (identifier "local_44"))) (; ";")) (expression_statement "local_40[0] = lVar3;" (assignment_expression "local_40[0] = lVar3" (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]")) (= "=") (identifier "lVar3")) (; ";")) (expression_statement "iVar2 = FUN_00110300(param_1,&local_50,&local_54,local_40,&local_44);" (assignment_expression "iVar2 = FUN_00110300(param_1,&local_50,&local_54,local_40,&local_44)" (identifier "iVar2") (= "=") (call_expression "FUN_00110300(param_1,&local_50,&local_54,local_40,&local_44)" (identifier "FUN_00110300") (argument_list "(param_1,&local_50,&local_54,local_40,&local_44)" (( "(") (identifier "param_1") (, ",") (pointer_expression "&local_50" (& "&") (identifier "local_50")) (, ",") (pointer_expression "&local_54" (& "&") (identifier "local_54")) (, ",") (identifier "local_40") (, ",") (pointer_expression "&local_44" (& "&") (identifier "local_44")) () ")")))) (; ";")) (if_statement "if (iVar2 < 0) {\n        return -1;\n      }" (if "if") (parenthesized_expression "(iVar2 < 0)" (( "(") (binary_expression "iVar2 < 0" (identifier "iVar2") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n        return -1;\n      }" ({ "{") (return_statement "return -1;" (return "return") (number_literal "-1") (; ";")) (} "}"))) (expression_statement "iVar7 = iVar7 + iVar2;" (assignment_expression "iVar7 = iVar7 + iVar2" (identifier "iVar7") (= "=") (binary_expression "iVar7 + iVar2" (identifier "iVar7") (+ "+") (identifier "iVar2"))) (; ";")) (expression_statement "*(long *)(lVar5 + 0x10) = *(long *)(lVar5 + 0x10) + (long)iVar2;" (assignment_expression "*(long *)(lVar5 + 0x10) = *(long *)(lVar5 + 0x10) + (long)iVar2" (pointer_expression "*(long *)(lVar5 + 0x10)" (* "*") (cast_expression "(long *)(lVar5 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar5 + 0x10)" (( "(") (binary_expression "lVar5 + 0x10" (identifier "lVar5") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (binary_expression "*(long *)(lVar5 + 0x10) + (long)iVar2" (pointer_expression "*(long *)(lVar5 + 0x10)" (* "*") (cast_expression "(long *)(lVar5 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar5 + 0x10)" (( "(") (binary_expression "lVar5 + 0x10" (identifier "lVar5") (+ "+") (number_literal "0x10")) () ")")))) (+ "+") (cast_expression "(long)iVar2" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "iVar2")))) (; ";")) (if_statement "if (local_44 < 1) break;" (if "if") (parenthesized_expression "(local_44 < 1)" (( "(") (binary_expression "local_44 < 1" (identifier "local_44") (< "<") (number_literal "1")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "*(long *)(param_5 + 0x18) = *(long *)(param_5 + 0x18) + (long)-local_44;" (assignment_expression "*(long *)(param_5 + 0x18) = *(long *)(param_5 + 0x18) + (long)-local_44" (pointer_expression "*(long *)(param_5 + 0x18)" (* "*") (cast_expression "(long *)(param_5 + 0x18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + 0x18)" (( "(") (binary_expression "param_5 + 0x18" (identifier "param_5") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (binary_expression "*(long *)(param_5 + 0x18) + (long)-local_44" (pointer_expression "*(long *)(param_5 + 0x18)" (* "*") (cast_expression "(long *)(param_5 + 0x18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + 0x18)" (( "(") (binary_expression "param_5 + 0x18" (identifier "param_5") (+ "+") (number_literal "0x18")) () ")")))) (+ "+") (cast_expression "(long)-local_44" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (unary_expression "-local_44" (- "-") (identifier "local_44"))))) (; ";")) (if_statement "if (local_54 < 1) {\n        return iVar7;\n      }" (if "if") (parenthesized_expression "(local_54 < 1)" (( "(") (binary_expression "local_54 < 1" (identifier "local_54") (< "<") (number_literal "1")) () ")")) (compound_statement "{\n        return iVar7;\n      }" ({ "{") (return_statement "return iVar7;" (return "return") (identifier "iVar7") (; ";")) (} "}"))) (} "}"))) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}")))

int function_1(type_1 *strm,char *contents,int in_size,type_2 **last_newf,type_3 *ob)

{
  int var_8;
  char *var_3;
  type_2 *pfVar3;
  char *pcVar4;
  int var_9;
  int var_1;
  char *local_50;
  int var_2;
  char *next_out;
  
  var_9 = 0;
  pfVar3 = *last_newf;
  var_1 = in_size;
  local_50 = contents;
  do {
    if (var_1 < 1) {
      return var_9;
    }
    while( true ) {
      pcVar4 = ob->chunk_limit;
      var_3 = ob->next_free;
      var_2 = (int)pcVar4 - (int)var_3;
      if (var_2 < 1) {
        if (var_3 == ob->object_base) {
          ob->field_0x50 = ob->field_0x50 | 2;
        }
        var_3 = (char *)((ulong)(var_3 + ob->alignment_mask) & ~ob->alignment_mask);
        ob->next_free = var_3;
        if ((ulong)((long)pcVar4 - (long)ob->chunk) < (ulong)((long)var_3 - (long)ob->chunk)) {
          ob->next_free = pcVar4;
          var_3 = pcVar4;
        }
        ob->object_base = var_3;
        pfVar3 = var_4(ob);
        pcVar4 = ob->chunk_limit;
        pfVar3->fr_type = rs_fill;
        (*last_newf)->fr_next = pfVar3;
        var_3 = ob->next_free;
        *last_newf = pfVar3;
        var_2 = (int)pcVar4 - (int)var_3;
        if (var_2 < 1) {
          pcVar4 = (char *)var_5(0,"can\'t extend frag",5);
                    /* WARNING: Subroutine does not return */
          var_6(pcVar4);
        }
      }
      ob->next_free = var_3 + var_2;
      next_out = var_3;
      var_8 = var_7(strm,&local_50,&var_1,&next_out,&var_2);
      if (var_8 < 0) {
        return -1;
      }
      var_9 = var_9 + var_8;
      pfVar3->fr_fix = pfVar3->fr_fix + (long)var_8;
      if (var_2 < 1) break;
      ob->next_free = ob->next_free + -var_2;
      if (var_1 < 1) {
        return var_9;
      }
    }
  } while( true );
}


(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (sized_type_specifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (sized_type_specifier) declarator: (identifier)))) body: (compound_statement (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (identifier)))) (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) right: (unary_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) right: (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content) (escape_sequence) (string_content)) (number_literal))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (pointer_expression argument: (identifier)) (pointer_expression argument: (identifier)) (identifier) (pointer_expression argument: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (break_statement)) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (unary_expression argument: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (identifier))))))) condition: (parenthesized_expression (true))))))

int MASKED(undefined8 param_1,undefined8 param_2,int param_3,long *param_4,long param_5)

{
  ulong uVar1;
  int iVar2;
  long lVar3;
  ulong uVar4;
  long lVar5;
  undefined8 uVar6;
  int iVar7;
  int local_54;
  undefined8 local_50;
  int local_44;
  long local_40 [2];
  
  iVar7 = 0;
  lVar5 = *param_4;
  local_54 = param_3;
  local_50 = param_2;
  do {
    if (local_54 < 1) {
      return iVar7;
    }
    while( true ) {
      uVar1 = *(ulong *)(param_5 + 0x20);
      lVar3 = *(long *)(param_5 + 0x18);
      local_44 = (int)uVar1 - (int)lVar3;
      if (local_44 < 1) {
        if (lVar3 == *(long *)(param_5 + 0x10)) {
          *(byte *)(param_5 + 0x50) = *(byte *)(param_5 + 0x50) | 2;
        }
        uVar4 = lVar3 + *(ulong *)(param_5 + 0x30) & ~*(ulong *)(param_5 + 0x30);
        *(ulong *)(param_5 + 0x18) = uVar4;
        if (uVar1 - *(long *)(param_5 + 8) < uVar4 - *(long *)(param_5 + 8)) {
          *(ulong *)(param_5 + 0x18) = uVar1;
          uVar4 = uVar1;
        }
        *(ulong *)(param_5 + 0x10) = uVar4;
        lVar5 = FUN_0011a8d0(param_5);
        uVar6 = *(undefined8 *)(param_5 + 0x20);
        *(undefined4 *)(lVar5 + 0x5c) = 1;
        *(long *)(*param_4 + 0x38) = lVar5;
        lVar3 = *(long *)(param_5 + 0x18);
        *param_4 = lVar5;
        local_44 = (int)uVar6 - (int)lVar3;
        if (local_44 < 1) {
          uVar6 = dcgettext(0,"can\'t extend frag",5);
                    /* WARNING: Subroutine does not return */
          FUN_00121900(uVar6);
        }
      }
      *(long *)(param_5 + 0x18) = lVar3 + local_44;
      local_40[0] = lVar3;
      iVar2 = FUN_00110300(param_1,&local_50,&local_54,local_40,&local_44);
      if (iVar2 < 0) {
        return -1;
      }
      iVar7 = iVar7 + iVar2;
      *(long *)(lVar5 + 0x10) = *(long *)(lVar5 + 0x10) + (long)iVar2;
      if (local_44 < 1) break;
      *(long *)(param_5 + 0x18) = *(long *)(param_5 + 0x18) + (long)-local_44;
      if (local_54 < 1) {
        return iVar7;
      }
    }
  } while( true );
}

