
/* WARNING: Unknown calling convention -- yet parameter storage is locked */

void do_undo(void)

{
  undefined *puVar1;
  undefined *puVar2;
  uint uVar3;
  filestruct *pfVar4;
  undefined4 uVar5;
  size_t sVar6;
  int iVar7;
  int iVar8;
  int iVar9;
  code *UNRECOVERED_JUMPTABLE;
  
  puVar2 = PTR_openfile_0007756c;
  puVar1 = PTR_s_d_of_current_line_0007755c;
  iVar8 = *(int *)(*(int *)PTR_openfile_0007756c + 0x44);
  if (iVar8 == 0) {
    uVar5 = (*(code *)PTR_dcgettext_000780cc)(0,PTR_s_d_of_current_line_0007755c + 0x49f0,5);
    UNRECOVERED_JUMPTABLE = (code *)PTR_statusbar_000775c4;
  }
  else {
    uVar3 = *(uint *)(iVar8 + 4);
    if (uVar3 < 6) {
      pfVar4 = fsfromline(*(ssize_t *)(iVar8 + 0x28));
      if (pfVar4 == (filestruct *)0x0) {
        return;
      }
      uVar3 = *(uint *)(iVar8 + 4);
    }
    *(undefined4 *)(*(int *)puVar2 + 0x1c) = *(undefined4 *)(iVar8 + 8);
    if (uVar3 < 0x14) {
                    /* WARNING: Could not emulate address calculation at 0x0003a82c */
                    /* WARNING: Treating indirect jump as call */
      (*(code *)(&_gp + *(int *)(puVar1 + uVar3 * 4 + 0x4fa0)))();
      return;
    }
    statusline(ALERT,PTR_s_d_of_current_line_0007755c + 0x4aac);
    iVar9 = *(int *)puVar2;
    uVar5 = *(undefined4 *)(*(int *)(iVar9 + 0x44) + 0x30);
    *(undefined4 *)(iVar9 + 0x4c) = 0x14;
    *(undefined4 *)(iVar9 + 0x30) = 0;
    *(undefined4 *)(iVar9 + 0x44) = uVar5;
    sVar6 = xplustabs();
    iVar7 = *(int *)puVar2;
    uVar5 = *(undefined4 *)(iVar8 + 0x10);
    *(size_t *)(iVar9 + 0x20) = sVar6;
    *(undefined4 *)(iVar7 + 0x14) = uVar5;
    UNRECOVERED_JUMPTABLE = (code *)PTR_titlebar_00077664;
    if (*(int *)(iVar7 + 0x44) != *(int *)(iVar7 + 0x48)) {
      set_modified();
      return;
    }
    uVar5 = 0;
    *(undefined1 *)(iVar7 + 0x28) = 0;
  }
                    /* WARNING: Could not recover jumptable at 0x0003aff4. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (*UNRECOVERED_JUMPTABLE)(uVar5);
  return;
}



void do_undo(void)

{
  undefined *puVar1;
  undefined *puVar2;
  uint uVar3;
  undefined4 uVar4;
  int iVar5;
  undefined4 uVar6;
  int iVar7;
  int iVar8;
  code *UNRECOVERED_JUMPTABLE;
  
  puVar2 = PTR_openfile_0007756c;
  puVar1 = PTR_s_d_of_current_line_0007755c;
  iVar7 = *(int *)(*(int *)PTR_openfile_0007756c + 0x44);
  if (iVar7 == 0) {
    uVar4 = (*(code *)PTR_dcgettext_000780cc)(0,PTR_s_d_of_current_line_0007755c + 0x49f0,5);
    UNRECOVERED_JUMPTABLE = (code *)PTR_statusbar_000775c4;
  }
  else {
    uVar3 = *(uint *)(iVar7 + 4);
    if (uVar3 < 6) {
      iVar5 = fsfromline(*(undefined4 *)(iVar7 + 0x28));
      if (iVar5 == 0) {
        return;
      }
      uVar3 = *(uint *)(iVar7 + 4);
    }
    *(undefined4 *)(*(int *)puVar2 + 0x1c) = *(undefined4 *)(iVar7 + 8);
    if (uVar3 < 0x14) {
                    /* WARNING: Could not emulate address calculation at 0x0003a82c */
                    /* WARNING: Treating indirect jump as call */
      (*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + 0x4fa0)))();
      return;
    }
    statusline(3,PTR_s_d_of_current_line_0007755c + 0x4aac);
    iVar8 = *(int *)puVar2;
    uVar4 = *(undefined4 *)(*(int *)(iVar8 + 0x44) + 0x30);
    *(undefined4 *)(iVar8 + 0x4c) = 0x14;
    *(undefined4 *)(iVar8 + 0x30) = 0;
    *(undefined4 *)(iVar8 + 0x44) = uVar4;
    uVar4 = xplustabs();
    iVar5 = *(int *)puVar2;
    uVar6 = *(undefined4 *)(iVar7 + 0x10);
    *(undefined4 *)(iVar8 + 0x20) = uVar4;
    *(undefined4 *)(iVar5 + 0x14) = uVar6;
    UNRECOVERED_JUMPTABLE = (code *)PTR_titlebar_00077664;
    if (*(int *)(iVar5 + 0x44) != *(int *)(iVar5 + 0x48)) {
      set_modified();
      return;
    }
    uVar4 = 0;
    *(undefined1 *)(iVar5 + 0x28) = 0;
  }
                    /* WARNING: Could not recover jumptable at 0x0003aff4. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (*UNRECOVERED_JUMPTABLE)(uVar4);
  return;
}


lui gp,0x4
addiu gp,gp,0x4d74
addu gp,gp,t9
addiu sp,sp,-0x40
sw s2,0x24(sp)
lw s2,-0x7fb4(gp)
sw s0,0x1c(sp)
sw gp,0x10(sp)
sw ra,0x3c(sp)
lw v0,0x0(s2)
sw s7,0x38(sp)
sw s6,0x34(sp)
sw s5,0x30(sp)
sw s4,0x2c(sp)
sw s3,0x28(sp)
sw s1,0x20(sp)
lw s0,0x44(v0)
beq s0,zero,0x0003aa4c
_lw s1,-0x7fc4(gp)
lw s4,-0x7a14(gp)
addiu s1,s1,0x4fa0
lw v0,0x4(s0)
sltiu v1,v0,0x6
bne v1,zero,0x0003a840
_lw t9,-0x7b2c(gp)
or s3,zero,zero
lw a0,0x0(s2)
sltiu v1,v0,0x14
lw a1,0x8(s0)
beq v1,zero,0x0003afa8
_sw a1,0x1c(a0)
sll v0,v0,0x2
addu v0,s1,v0
lw v0,0x0(v0)
addu v0,v0,gp
jr v0
_nop
bal 0x000430d4
_lw a0,0x28(s0)
lw gp,0x10(sp)
beq v0,zero,0x0003b09c
_or s3,v0,zero
b 0x0003a814
_lw v0,0x4(s0)
lw t9,-0x77d8(gp)
bal 0x000387dc
_lw a0,0x0(s0)
li v1,0x6
lw v0,0x0(s2)
lw gp,0x10(sp)
lw a0,0x44(v0)
lw s0,0x30(a0)
sw s0,0x44(v0)
lw v0,0x4(s0)
beq v0,v1,0x0003a8b0
_li s1,0x6
lw s3,-0x7a14(gp)
or t9,s3,zero
bal 0x0003a7ac
_nop
lw v0,0x0(s2)
lw s0,0x44(v0)
lw v0,0x4(s0)
bne v0,s1,0x0003a890
_lw gp,0x10(sp)
lw a1,-0x7fc4(gp)
li a2,0x5
lw t9,-0x7454(gp)
or a0,zero,zero
jalr t9
_addiu a1,a1,0x4a08
lw gp,0x10(sp)
or s1,v0,zero
beq s1,zero,0x0003a8e4
_lw v0,-0x7dd0(gp)
lw v0,0x0(v0)
beq v0,zero,0x0003affc
_lw a1,-0x7fc4(gp)
lw s1,0x0(s2)
li v1,0x14
lw t9,-0x7f40(gp)
lw v0,0x44(s1)
lw v0,0x30(v0)
sw v1,0x4c(s1)
sw zero,0x30(s1)
bal 0x00042d9c
_sw v0,0x44(s1)
lw v1,0x0(s2)
lw a0,0x10(s0)
lw gp,0x10(sp)
sw v0,0x20(s1)
sw a0,0x14(v1)
lw v0,0x48(v1)
lw a0,0x44(v1)
beq a0,v0,0x0003afc4
_lw ra,0x3c(sp)
lw s7,0x38(sp)
lw s6,0x34(sp)
lw s5,0x30(sp)
lw s4,0x2c(sp)
lw s3,0x28(sp)
lw s2,0x24(sp)
lw s1,0x20(sp)
lw s0,0x1c(sp)
lw t9,-0x7e94(gp)
b 0x000206b0
_addiu sp,sp,0x40
lw a1,-0x7fc4(gp)
li a2,0x5
lw t9,-0x7454(gp)
or a0,zero,zero
lw s4,-0x7b4c(gp)
lw s3,-0x7b50(gp)
jalr t9
_addiu a1,a1,0x4a94
lw gp,0x10(sp)
or s1,v0,zero
lw a0,0x28(s0)
lw s6,0x0(s4)
lw s5,0x0(s3)
lw t9,-0x7b2c(gp)
lw s7,0x0(s2)
sw zero,0x0(s4)
bal 0x000430d4
_sw zero,0x0(s3)
lw gp,0x10(sp)
lw v1,0x0(s2)
lw a2,0x2c(s0)
lw a1,0x8(s0)
lw a0,0x0(s0)
lw t9,-0x77d8(gp)
sw v0,0x30(s7)
bal 0x000387dc
_sw a2,0x34(v1)
lw gp,0x10(sp)
lw t9,-0x7b44(gp)
bal 0x0001dc48
_or a0,zero,zero
lw gp,0x10(sp)
lw t9,-0x7b48(gp)
bal 0x0002e0ec
_lw a0,0x20(s0)
lw v1,0x0(s4)
lw v0,0x0(s3)
lw gp,0x10(sp)
sw s6,0x0(s4)
sw v1,0x20(s0)
sw v0,0x24(s0)
b 0x0003a8d0
_sw s5,0x0(s3)
lw t9,-0x77d8(gp)
lw a0,0x0(s0)
bal 0x000387dc
_lw s1,0xc(s0)
b 0x0003a8d0
_lw gp,0x10(sp)
lw v0,0x44(a0)
or t9,s4,zero
lw v0,0x30(v0)
bal 0x0003a7ac
_sw v0,0x44(a0)
or t9,s4,zero
bal 0x0003a7ac
_nop
lw v0,0x0(s2)
lw s0,0x44(v0)
bne s0,zero,0x0003a800
_lw gp,0x10(sp)
lw a1,-0x7fc4(gp)
or a0,zero,zero
lw t9,-0x7454(gp)
li a2,0x5
jalr t9
_addiu a1,a1,0x49f0
lw gp,0x10(sp)
or a0,v0,zero
b 0x0003afd0
_lw t9,-0x7f5c(gp)
lw a1,-0x7fc4(gp)
or a0,zero,zero
lw t9,-0x7454(gp)
li a2,0x5
jalr t9
_addiu a1,a1,0x4a08
li v1,0x8
lw a0,0x18(s0)
or s1,v0,zero
beq a0,v1,0x0003b030
_lw gp,0x10(sp)
lw t9,-0x7528(gp)
jalr t9
_lw a0,0x0(s3)
lw gp,0x10(sp)
or s4,v0,zero
lw t9,-0x7528(gp)
jalr t9
_lw a0,0xc(s0)
addiu a0,s4,0x1
lw gp,0x10(sp)
lw t9,-0x7fbc(gp)
bal 0x000425a4
_subu a0,a0,v0
lw gp,0x10(sp)
or a0,v0,zero
lw a2,0x8(s0)
or s4,v0,zero
lw t9,-0x7580(gp)
jalr t9
_lw a1,0x0(s3)
lw gp,0x10(sp)
lw a0,0xc(s0)
lw t9,-0x7528(gp)
jalr t9
_lw s5,0x8(s0)
addu a0,s4,s5
lw gp,0x10(sp)
addu v0,s5,v0
lw a1,0x0(s3)
lw t9,-0x74c4(gp)
jalr t9
_addu a1,a1,v0
lw gp,0x10(sp)
lw t9,-0x7414(gp)
jalr t9
_lw a0,0x0(s3)
lw gp,0x10(sp)
lw a1,0x8(s0)
lw a0,0x0(s0)
lw t9,-0x77d8(gp)
bal 0x000387dc
_sw s4,0x0(s3)
b 0x0003a8d0
_lw gp,0x10(sp)
lw v0,0x8(s3)
beq v0,zero,0x0003b058
_li a2,0x5
lw a1,-0x7fc4(gp)
lw t9,-0x7454(gp)
or a0,zero,zero
jalr t9
_addiu a1,a1,0x4a40
lw s4,0x8(s0)
or s1,v0,zero
beq s4,zero,0x0003b074
_lw gp,0x10(sp)
lw s6,0x2c(s0)
lw s7,0x0(s3)
lw t9,-0x7528(gp)
jalr t9
_or a0,s7,zero
lw gp,0x10(sp)
or s5,v0,zero
lw a0,0xc(s0)
lw t9,-0x7528(gp)
jalr t9
_addu a0,a0,s6
or a0,s7,zero
lw gp,0x10(sp)
addu v0,s5,v0
lw t9,-0x7f9c(gp)
bal 0x000426cc
_addiu a1,v0,0x1
lw gp,0x10(sp)
or a0,v0,zero
lw a1,0xc(s0)
sw v0,0x0(s3)
lw t9,-0x74b8(gp)
jalr t9
_addu a1,a1,s6
lw gp,0x10(sp)
lw t9,-0x7948(gp)
bal 0x0002df78
_lw a0,0x8(s3)
lw gp,0x10(sp)
lw t9,-0x7f8c(gp)
bal 0x0002e114
_or a0,s3,zero
or a1,s4,zero
lw gp,0x10(sp)
lw t9,-0x77d8(gp)
bal 0x000387dc
_lw a0,0x0(s0)
b 0x0003a8d0
_lw gp,0x10(sp)
lw t9,-0x77c8(gp)
or a2,zero,zero
li a1,0x1
bal 0x0003a488
_or a0,s0,zero
li a2,0x5
lw gp,0x10(sp)
or a0,zero,zero
lw a1,-0x7fc4(gp)
lw t9,-0x7454(gp)
jalr t9
_addiu a1,a1,0x4aa0
lw gp,0x10(sp)
b 0x0003a8d0
_or s1,v0,zero
lw a1,-0x7fc4(gp)
li a2,0x5
lw t9,-0x7454(gp)
or a0,zero,zero
addiu a1,a1,0x4a74
jalr t9
_nop
or a0,s0,zero
lw gp,0x10(sp)
lw t9,-0x77c4(gp)
bal 0x0003a5f8
_or s1,v0,zero
b 0x0003a8d0
_lw gp,0x10(sp)
lw a1,-0x7fc4(gp)
li a2,0x5
lw t9,-0x7454(gp)
or a0,zero,zero
b 0x0003ac6c
_addiu a1,a1,0x4a7c
lw a1,-0x7fc4(gp)
li a2,0x5
lw t9,-0x7454(gp)
or a0,zero,zero
jalr t9
_addiu a1,a1,0x4a88
or a0,s0,zero
lw gp,0x10(sp)
lw t9,-0x77c0(gp)
bal 0x0003a6a4
_or s1,v0,zero
b 0x0003a8d0
_lw gp,0x10(sp)
lw t9,-0x77bc(gp)
or a2,zero,zero
li a1,0x1
bal 0x00039f54
_or a0,s0,zero
li a2,0x5
lw gp,0x10(sp)
or a0,zero,zero
lw a1,-0x7fc4(gp)
lw t9,-0x7454(gp)
jalr t9
_addiu a1,a1,0xe94
lw gp,0x10(sp)
b 0x0003a8d0
_or s1,v0,zero
lw t9,-0x77c8(gp)
li a2,0x1
li a1,0x1
bal 0x0003a488
_or a0,s0,zero
li a2,0x5
lw gp,0x10(sp)
or a0,zero,zero
lw a1,-0x7fc4(gp)
lw t9,-0x7454(gp)
jalr t9
_addiu a1,a1,0xe80
lw gp,0x10(sp)
b 0x0003a8d0
_or s1,v0,zero
lw t9,-0x77bc(gp)
li a2,0x1
li a1,0x1
bal 0x00039f54
_or a0,s0,zero
li a2,0x5
lw gp,0x10(sp)
or a0,zero,zero
lw a1,-0x7fc4(gp)
lw t9,-0x7454(gp)
jalr t9
_addiu a1,a1,0x1170
lw gp,0x10(sp)
b 0x0003a8d0
_or s1,v0,zero
lw a1,-0x7fc4(gp)
or a0,zero,zero
lw t9,-0x7454(gp)
li a2,0x5
jalr t9
_addiu a1,a1,0x4a58
li v1,0x2
lw a0,0x18(s0)
or s1,v0,zero
bne a0,v1,0x0003add0
_lw gp,0x10(sp)
lw v0,-0x7f84(gp)
lw v0,0x0(v0)
ext v0,v0,0x1e,0x1
beq v0,zero,0x0003b080
_lw t9,-0x77d8(gp)
lw t9,-0x7b20(gp)
bal 0x0002ddcc
_or a0,s3,zero
or a0,zero,zero
lw gp,0x10(sp)
or s4,v0,zero
lw t9,-0x7fb8(gp)
bal 0x000428bc
_lw a1,0xc(s0)
or a0,zero,zero
lw gp,0x10(sp)
lw a2,0x2c(s0)
sw v0,0x0(s4)
lw a1,0x0(s3)
lw t9,-0x7fa0(gp)
bal 0x00042808
_addiu a2,a2,0x1
lw v1,0x2c(s0)
or s5,v0,zero
lw gp,0x10(sp)
addu v1,v0,v1
lw t9,-0x7414(gp)
sb zero,0x0(v1)
jalr t9
_lw a0,0x0(s3)
or a1,s4,zero
lw gp,0x10(sp)
or a0,s3,zero
lw t9,-0x7944(gp)
bal 0x0002ded0
_sw s5,0x0(s3)
lw gp,0x10(sp)
lw t9,-0x7f8c(gp)
bal 0x0002e114
_or a0,s4,zero
lw gp,0x10(sp)
lw a1,0x8(s0)
lw t9,-0x77d8(gp)
bal 0x000387dc
_lw a0,0x0(s0)
b 0x0003a8d0
_lw gp,0x10(sp)
lw a1,-0x7fc4(gp)
li a2,0x5
lw t9,-0x7454(gp)
or a0,zero,zero
jalr t9
_addiu a1,a1,0x4a64
lw gp,0x10(sp)
or s1,v0,zero
lw a1,0x8(s0)
lw t9,-0x77d8(gp)
bal 0x000387dc
_lw a0,0x0(s0)
lw v0,0xc(s0)
lw v1,0x0(s3)
lw gp,0x10(sp)
sw v1,0xc(s0)
b 0x0003a8d0
_sw v0,0x0(s3)
lw a1,-0x7fc4(gp)
li a2,0x5
lw t9,-0x7454(gp)
or a0,zero,zero
jalr t9
_addiu a1,a1,0x4a4c
lw gp,0x10(sp)
or s1,v0,zero
lw t9,-0x7528(gp)
jalr t9
_lw a0,0x0(s3)
lw gp,0x10(sp)
or s4,v0,zero
lw t9,-0x7528(gp)
jalr t9
_lw a0,0xc(s0)
lw gp,0x10(sp)
addu v0,s4,v0
lw t9,-0x7fbc(gp)
bal 0x000425a4
_addiu a0,v0,0x1
lw gp,0x10(sp)
or a0,v0,zero
lw a2,0x8(s0)
or s4,v0,zero
lw t9,-0x7580(gp)
jalr t9
_lw a1,0x0(s3)
lw gp,0x10(sp)
lw a0,0x8(s0)
lw a1,0xc(s0)
lw t9,-0x74c4(gp)
jalr t9
_addu a0,s4,a0
lw gp,0x10(sp)
lw a0,0xc(s0)
lw t9,-0x7528(gp)
jalr t9
_lw s5,0x8(s0)
lw gp,0x10(sp)
addu v0,s5,v0
lw a1,0x0(s3)
addu a0,s4,v0
lw t9,-0x74c4(gp)
jalr t9
_addu a1,a1,s5
lw gp,0x10(sp)
lw t9,-0x7414(gp)
jalr t9
_lw a0,0x0(s3)
lw gp,0x10(sp)
lw a1,0x2c(s0)
lw a0,0x28(s0)
lw t9,-0x77d8(gp)
bal 0x000387dc
_sw s4,0x0(s3)
b 0x0003a8d0
_lw gp,0x10(sp)
lw a1,-0x7fc4(gp)
li a0,0x3
lw t9,-0x7fa4(gp)
bal 0x00045ad8
_addiu a1,a1,0x4aac
b 0x0003a8e4
_lw gp,0x10(sp)
lw t9,-0x7ebc(gp)
or a0,zero,zero
sb zero,0x28(v1)
lw ra,0x3c(sp)
lw s7,0x38(sp)
lw s6,0x34(sp)
lw s5,0x30(sp)
lw s4,0x2c(sp)
lw s3,0x28(sp)
lw s2,0x24(sp)
lw s1,0x20(sp)
lw s0,0x1c(sp)
jr t9
_addiu sp,sp,0x40
li a2,0x5
lw t9,-0x7454(gp)
or a0,zero,zero
jalr t9
_addiu a1,a1,0x4ad4
or a0,zero,zero
lw gp,0x10(sp)
or a2,s1,zero
lw t9,-0x7fa4(gp)
bal 0x00045ad8
_or a1,v0,zero
b 0x0003a8e4
_lw gp,0x10(sp)
lw v0,-0x7f84(gp)
lw v0,0x0(v0)
ext v0,v0,0x1e,0x1
bne v0,zero,0x0003aaa4
_lw t9,-0x7528(gp)
lw t9,-0x7a84(gp)
bal 0x00042ef8
_nop
b 0x0003aaa0
_lw gp,0x10(sp)
lw a1,-0x7fc4(gp)
li a0,0x3
lw t9,-0x7fa4(gp)
bal 0x00045ad8
_addiu a1,a1,0x4a14
b 0x0003a8e4
_lw gp,0x10(sp)
lw s4,0x2c(s0)
b 0x0003ab84
_or s6,zero,zero
lw v0,0x0(s2)
or a1,zero,zero
lw v0,0x8(v0)
bal 0x000387dc
_lw a0,0x4(v0)
b 0x0003a8d0
_lw gp,0x10(sp)
lw ra,0x3c(sp)
lw s7,0x38(sp)
lw s6,0x34(sp)
lw s5,0x30(sp)
lw s4,0x2c(sp)
lw s3,0x28(sp)
lw s2,0x24(sp)
lw s1,0x20(sp)
lw s0,0x1c(sp)
jr ra
_addiu sp,sp,0x40
(translation_unit "void do_undo(void)\n\n{\n  undefined *puVar1;\n  undefined *puVar2;\n  uint uVar3;\n  undefined4 uVar4;\n  int iVar5;\n  undefined4 uVar6;\n  int iVar7;\n  int iVar8;\n  code *UNRECOVERED_JUMPTABLE;\n  \n  puVar2 = PTR_openfile_0007756c;\n  puVar1 = PTR_s_d_of_current_line_0007755c;\n  iVar7 = *(int *)(*(int *)PTR_openfile_0007756c + 0x44);\n  if (iVar7 == 0) {\n    uVar4 = (*(code *)PTR_dcgettext_000780cc)(0,PTR_s_d_of_current_line_0007755c + 0x49f0,5);\n    UNRECOVERED_JUMPTABLE = (code *)PTR_statusbar_000775c4;\n  }\n  else {\n    uVar3 = *(uint *)(iVar7 + 4);\n    if (uVar3 < 6) {\n      iVar5 = fsfromline(*(undefined4 *)(iVar7 + 0x28));\n      if (iVar5 == 0) {\n        return;\n      }\n      uVar3 = *(uint *)(iVar7 + 4);\n    }\n    *(undefined4 *)(*(int *)puVar2 + 0x1c) = *(undefined4 *)(iVar7 + 8);\n    if (uVar3 < 0x14) {\n                    /* WARNING: Could not emulate address calculation at 0x0003a82c */\n                    /* WARNING: Treating indirect jump as call */\n      (*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + 0x4fa0)))();\n      return;\n    }\n    statusline(3,PTR_s_d_of_current_line_0007755c + 0x4aac);\n    iVar8 = *(int *)puVar2;\n    uVar4 = *(undefined4 *)(*(int *)(iVar8 + 0x44) + 0x30);\n    *(undefined4 *)(iVar8 + 0x4c) = 0x14;\n    *(undefined4 *)(iVar8 + 0x30) = 0;\n    *(undefined4 *)(iVar8 + 0x44) = uVar4;\n    uVar4 = xplustabs();\n    iVar5 = *(int *)puVar2;\n    uVar6 = *(undefined4 *)(iVar7 + 0x10);\n    *(undefined4 *)(iVar8 + 0x20) = uVar4;\n    *(undefined4 *)(iVar5 + 0x14) = uVar6;\n    UNRECOVERED_JUMPTABLE = (code *)PTR_titlebar_00077664;\n    if (*(int *)(iVar5 + 0x44) != *(int *)(iVar5 + 0x48)) {\n      set_modified();\n      return;\n    }\n    uVar4 = 0;\n    *(undefined1 *)(iVar5 + 0x28) = 0;\n  }\n                    /* WARNING: Could not recover jumptable at 0x0003aff4. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n  (*UNRECOVERED_JUMPTABLE)(uVar4);\n  return;\n}\n\n" (function_definition "void do_undo(void)\n\n{\n  undefined *puVar1;\n  undefined *puVar2;\n  uint uVar3;\n  undefined4 uVar4;\n  int iVar5;\n  undefined4 uVar6;\n  int iVar7;\n  int iVar8;\n  code *UNRECOVERED_JUMPTABLE;\n  \n  puVar2 = PTR_openfile_0007756c;\n  puVar1 = PTR_s_d_of_current_line_0007755c;\n  iVar7 = *(int *)(*(int *)PTR_openfile_0007756c + 0x44);\n  if (iVar7 == 0) {\n    uVar4 = (*(code *)PTR_dcgettext_000780cc)(0,PTR_s_d_of_current_line_0007755c + 0x49f0,5);\n    UNRECOVERED_JUMPTABLE = (code *)PTR_statusbar_000775c4;\n  }\n  else {\n    uVar3 = *(uint *)(iVar7 + 4);\n    if (uVar3 < 6) {\n      iVar5 = fsfromline(*(undefined4 *)(iVar7 + 0x28));\n      if (iVar5 == 0) {\n        return;\n      }\n      uVar3 = *(uint *)(iVar7 + 4);\n    }\n    *(undefined4 *)(*(int *)puVar2 + 0x1c) = *(undefined4 *)(iVar7 + 8);\n    if (uVar3 < 0x14) {\n                    /* WARNING: Could not emulate address calculation at 0x0003a82c */\n                    /* WARNING: Treating indirect jump as call */\n      (*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + 0x4fa0)))();\n      return;\n    }\n    statusline(3,PTR_s_d_of_current_line_0007755c + 0x4aac);\n    iVar8 = *(int *)puVar2;\n    uVar4 = *(undefined4 *)(*(int *)(iVar8 + 0x44) + 0x30);\n    *(undefined4 *)(iVar8 + 0x4c) = 0x14;\n    *(undefined4 *)(iVar8 + 0x30) = 0;\n    *(undefined4 *)(iVar8 + 0x44) = uVar4;\n    uVar4 = xplustabs();\n    iVar5 = *(int *)puVar2;\n    uVar6 = *(undefined4 *)(iVar7 + 0x10);\n    *(undefined4 *)(iVar8 + 0x20) = uVar4;\n    *(undefined4 *)(iVar5 + 0x14) = uVar6;\n    UNRECOVERED_JUMPTABLE = (code *)PTR_titlebar_00077664;\n    if (*(int *)(iVar5 + 0x44) != *(int *)(iVar5 + 0x48)) {\n      set_modified();\n      return;\n    }\n    uVar4 = 0;\n    *(undefined1 *)(iVar5 + 0x28) = 0;\n  }\n                    /* WARNING: Could not recover jumptable at 0x0003aff4. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n  (*UNRECOVERED_JUMPTABLE)(uVar4);\n  return;\n}" primitive_type (function_declarator "do_undo(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  undefined *puVar1;\n  undefined *puVar2;\n  uint uVar3;\n  undefined4 uVar4;\n  int iVar5;\n  undefined4 uVar6;\n  int iVar7;\n  int iVar8;\n  code *UNRECOVERED_JUMPTABLE;\n  \n  puVar2 = PTR_openfile_0007756c;\n  puVar1 = PTR_s_d_of_current_line_0007755c;\n  iVar7 = *(int *)(*(int *)PTR_openfile_0007756c + 0x44);\n  if (iVar7 == 0) {\n    uVar4 = (*(code *)PTR_dcgettext_000780cc)(0,PTR_s_d_of_current_line_0007755c + 0x49f0,5);\n    UNRECOVERED_JUMPTABLE = (code *)PTR_statusbar_000775c4;\n  }\n  else {\n    uVar3 = *(uint *)(iVar7 + 4);\n    if (uVar3 < 6) {\n      iVar5 = fsfromline(*(undefined4 *)(iVar7 + 0x28));\n      if (iVar5 == 0) {\n        return;\n      }\n      uVar3 = *(uint *)(iVar7 + 4);\n    }\n    *(undefined4 *)(*(int *)puVar2 + 0x1c) = *(undefined4 *)(iVar7 + 8);\n    if (uVar3 < 0x14) {\n                    /* WARNING: Could not emulate address calculation at 0x0003a82c */\n                    /* WARNING: Treating indirect jump as call */\n      (*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + 0x4fa0)))();\n      return;\n    }\n    statusline(3,PTR_s_d_of_current_line_0007755c + 0x4aac);\n    iVar8 = *(int *)puVar2;\n    uVar4 = *(undefined4 *)(*(int *)(iVar8 + 0x44) + 0x30);\n    *(undefined4 *)(iVar8 + 0x4c) = 0x14;\n    *(undefined4 *)(iVar8 + 0x30) = 0;\n    *(undefined4 *)(iVar8 + 0x44) = uVar4;\n    uVar4 = xplustabs();\n    iVar5 = *(int *)puVar2;\n    uVar6 = *(undefined4 *)(iVar7 + 0x10);\n    *(undefined4 *)(iVar8 + 0x20) = uVar4;\n    *(undefined4 *)(iVar5 + 0x14) = uVar6;\n    UNRECOVERED_JUMPTABLE = (code *)PTR_titlebar_00077664;\n    if (*(int *)(iVar5 + 0x44) != *(int *)(iVar5 + 0x48)) {\n      set_modified();\n      return;\n    }\n    uVar4 = 0;\n    *(undefined1 *)(iVar5 + 0x28) = 0;\n  }\n                    /* WARNING: Could not recover jumptable at 0x0003aff4. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n  (*UNRECOVERED_JUMPTABLE)(uVar4);\n  return;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "undefined4 uVar6;" type_identifier identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "code *UNRECOVERED_JUMPTABLE;" type_identifier (pointer_declarator "*UNRECOVERED_JUMPTABLE" * identifier) ;) (expression_statement "puVar2 = PTR_openfile_0007756c;" (assignment_expression "puVar2 = PTR_openfile_0007756c" identifier = identifier) ;) (expression_statement "puVar1 = PTR_s_d_of_current_line_0007755c;" (assignment_expression "puVar1 = PTR_s_d_of_current_line_0007755c" identifier = identifier) ;) (expression_statement "iVar7 = *(int *)(*(int *)PTR_openfile_0007756c + 0x44);" (assignment_expression "iVar7 = *(int *)(*(int *)PTR_openfile_0007756c + 0x44)" identifier = (pointer_expression "*(int *)(*(int *)PTR_openfile_0007756c + 0x44)" * (cast_expression "(int *)(*(int *)PTR_openfile_0007756c + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)PTR_openfile_0007756c + 0x44)" ( (binary_expression "*(int *)PTR_openfile_0007756c + 0x44" (pointer_expression "*(int *)PTR_openfile_0007756c" * (cast_expression "(int *)PTR_openfile_0007756c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) ;) (if_statement "if (iVar7 == 0) {\n    uVar4 = (*(code *)PTR_dcgettext_000780cc)(0,PTR_s_d_of_current_line_0007755c + 0x49f0,5);\n    UNRECOVERED_JUMPTABLE = (code *)PTR_statusbar_000775c4;\n  }\n  else {\n    uVar3 = *(uint *)(iVar7 + 4);\n    if (uVar3 < 6) {\n      iVar5 = fsfromline(*(undefined4 *)(iVar7 + 0x28));\n      if (iVar5 == 0) {\n        return;\n      }\n      uVar3 = *(uint *)(iVar7 + 4);\n    }\n    *(undefined4 *)(*(int *)puVar2 + 0x1c) = *(undefined4 *)(iVar7 + 8);\n    if (uVar3 < 0x14) {\n                    /* WARNING: Could not emulate address calculation at 0x0003a82c */\n                    /* WARNING: Treating indirect jump as call */\n      (*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + 0x4fa0)))();\n      return;\n    }\n    statusline(3,PTR_s_d_of_current_line_0007755c + 0x4aac);\n    iVar8 = *(int *)puVar2;\n    uVar4 = *(undefined4 *)(*(int *)(iVar8 + 0x44) + 0x30);\n    *(undefined4 *)(iVar8 + 0x4c) = 0x14;\n    *(undefined4 *)(iVar8 + 0x30) = 0;\n    *(undefined4 *)(iVar8 + 0x44) = uVar4;\n    uVar4 = xplustabs();\n    iVar5 = *(int *)puVar2;\n    uVar6 = *(undefined4 *)(iVar7 + 0x10);\n    *(undefined4 *)(iVar8 + 0x20) = uVar4;\n    *(undefined4 *)(iVar5 + 0x14) = uVar6;\n    UNRECOVERED_JUMPTABLE = (code *)PTR_titlebar_00077664;\n    if (*(int *)(iVar5 + 0x44) != *(int *)(iVar5 + 0x48)) {\n      set_modified();\n      return;\n    }\n    uVar4 = 0;\n    *(undefined1 *)(iVar5 + 0x28) = 0;\n  }" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (compound_statement "{\n    uVar4 = (*(code *)PTR_dcgettext_000780cc)(0,PTR_s_d_of_current_line_0007755c + 0x49f0,5);\n    UNRECOVERED_JUMPTABLE = (code *)PTR_statusbar_000775c4;\n  }" { (expression_statement "uVar4 = (*(code *)PTR_dcgettext_000780cc)(0,PTR_s_d_of_current_line_0007755c + 0x49f0,5);" (assignment_expression "uVar4 = (*(code *)PTR_dcgettext_000780cc)(0,PTR_s_d_of_current_line_0007755c + 0x49f0,5)" identifier = (call_expression "(*(code *)PTR_dcgettext_000780cc)(0,PTR_s_d_of_current_line_0007755c + 0x49f0,5)" (parenthesized_expression "(*(code *)PTR_dcgettext_000780cc)" ( (pointer_expression "*(code *)PTR_dcgettext_000780cc" * (cast_expression "(code *)PTR_dcgettext_000780cc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(0,PTR_s_d_of_current_line_0007755c + 0x49f0,5)" ( number_literal , (binary_expression "PTR_s_d_of_current_line_0007755c + 0x49f0" identifier + number_literal) , number_literal )))) ;) (expression_statement "UNRECOVERED_JUMPTABLE = (code *)PTR_statusbar_000775c4;" (assignment_expression "UNRECOVERED_JUMPTABLE = (code *)PTR_statusbar_000775c4" identifier = (cast_expression "(code *)PTR_statusbar_000775c4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) }) (else_clause "else {\n    uVar3 = *(uint *)(iVar7 + 4);\n    if (uVar3 < 6) {\n      iVar5 = fsfromline(*(undefined4 *)(iVar7 + 0x28));\n      if (iVar5 == 0) {\n        return;\n      }\n      uVar3 = *(uint *)(iVar7 + 4);\n    }\n    *(undefined4 *)(*(int *)puVar2 + 0x1c) = *(undefined4 *)(iVar7 + 8);\n    if (uVar3 < 0x14) {\n                    /* WARNING: Could not emulate address calculation at 0x0003a82c */\n                    /* WARNING: Treating indirect jump as call */\n      (*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + 0x4fa0)))();\n      return;\n    }\n    statusline(3,PTR_s_d_of_current_line_0007755c + 0x4aac);\n    iVar8 = *(int *)puVar2;\n    uVar4 = *(undefined4 *)(*(int *)(iVar8 + 0x44) + 0x30);\n    *(undefined4 *)(iVar8 + 0x4c) = 0x14;\n    *(undefined4 *)(iVar8 + 0x30) = 0;\n    *(undefined4 *)(iVar8 + 0x44) = uVar4;\n    uVar4 = xplustabs();\n    iVar5 = *(int *)puVar2;\n    uVar6 = *(undefined4 *)(iVar7 + 0x10);\n    *(undefined4 *)(iVar8 + 0x20) = uVar4;\n    *(undefined4 *)(iVar5 + 0x14) = uVar6;\n    UNRECOVERED_JUMPTABLE = (code *)PTR_titlebar_00077664;\n    if (*(int *)(iVar5 + 0x44) != *(int *)(iVar5 + 0x48)) {\n      set_modified();\n      return;\n    }\n    uVar4 = 0;\n    *(undefined1 *)(iVar5 + 0x28) = 0;\n  }" else (compound_statement "{\n    uVar3 = *(uint *)(iVar7 + 4);\n    if (uVar3 < 6) {\n      iVar5 = fsfromline(*(undefined4 *)(iVar7 + 0x28));\n      if (iVar5 == 0) {\n        return;\n      }\n      uVar3 = *(uint *)(iVar7 + 4);\n    }\n    *(undefined4 *)(*(int *)puVar2 + 0x1c) = *(undefined4 *)(iVar7 + 8);\n    if (uVar3 < 0x14) {\n                    /* WARNING: Could not emulate address calculation at 0x0003a82c */\n                    /* WARNING: Treating indirect jump as call */\n      (*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + 0x4fa0)))();\n      return;\n    }\n    statusline(3,PTR_s_d_of_current_line_0007755c + 0x4aac);\n    iVar8 = *(int *)puVar2;\n    uVar4 = *(undefined4 *)(*(int *)(iVar8 + 0x44) + 0x30);\n    *(undefined4 *)(iVar8 + 0x4c) = 0x14;\n    *(undefined4 *)(iVar8 + 0x30) = 0;\n    *(undefined4 *)(iVar8 + 0x44) = uVar4;\n    uVar4 = xplustabs();\n    iVar5 = *(int *)puVar2;\n    uVar6 = *(undefined4 *)(iVar7 + 0x10);\n    *(undefined4 *)(iVar8 + 0x20) = uVar4;\n    *(undefined4 *)(iVar5 + 0x14) = uVar6;\n    UNRECOVERED_JUMPTABLE = (code *)PTR_titlebar_00077664;\n    if (*(int *)(iVar5 + 0x44) != *(int *)(iVar5 + 0x48)) {\n      set_modified();\n      return;\n    }\n    uVar4 = 0;\n    *(undefined1 *)(iVar5 + 0x28) = 0;\n  }" { (expression_statement "uVar3 = *(uint *)(iVar7 + 4);" (assignment_expression "uVar3 = *(uint *)(iVar7 + 4)" identifier = (pointer_expression "*(uint *)(iVar7 + 4)" * (cast_expression "(uint *)(iVar7 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 4)" ( (binary_expression "iVar7 + 4" identifier + number_literal) ))))) ;) (if_statement "if (uVar3 < 6) {\n      iVar5 = fsfromline(*(undefined4 *)(iVar7 + 0x28));\n      if (iVar5 == 0) {\n        return;\n      }\n      uVar3 = *(uint *)(iVar7 + 4);\n    }" if (parenthesized_expression "(uVar3 < 6)" ( (binary_expression "uVar3 < 6" identifier < number_literal) )) (compound_statement "{\n      iVar5 = fsfromline(*(undefined4 *)(iVar7 + 0x28));\n      if (iVar5 == 0) {\n        return;\n      }\n      uVar3 = *(uint *)(iVar7 + 4);\n    }" { (expression_statement "iVar5 = fsfromline(*(undefined4 *)(iVar7 + 0x28));" (assignment_expression "iVar5 = fsfromline(*(undefined4 *)(iVar7 + 0x28))" identifier = (call_expression "fsfromline(*(undefined4 *)(iVar7 + 0x28))" identifier (argument_list "(*(undefined4 *)(iVar7 + 0x28))" ( (pointer_expression "*(undefined4 *)(iVar7 + 0x28)" * (cast_expression "(undefined4 *)(iVar7 + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x28)" ( (binary_expression "iVar7 + 0x28" identifier + number_literal) )))) )))) ;) (if_statement "if (iVar5 == 0) {\n        return;\n      }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n        return;\n      }" { (return_statement "return;" return ;) })) (expression_statement "uVar3 = *(uint *)(iVar7 + 4);" (assignment_expression "uVar3 = *(uint *)(iVar7 + 4)" identifier = (pointer_expression "*(uint *)(iVar7 + 4)" * (cast_expression "(uint *)(iVar7 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 4)" ( (binary_expression "iVar7 + 4" identifier + number_literal) ))))) ;) })) (expression_statement "*(undefined4 *)(*(int *)puVar2 + 0x1c) = *(undefined4 *)(iVar7 + 8);" (assignment_expression "*(undefined4 *)(*(int *)puVar2 + 0x1c) = *(undefined4 *)(iVar7 + 8)" (pointer_expression "*(undefined4 *)(*(int *)puVar2 + 0x1c)" * (cast_expression "(undefined4 *)(*(int *)puVar2 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)puVar2 + 0x1c)" ( (binary_expression "*(int *)puVar2 + 0x1c" (pointer_expression "*(int *)puVar2" * (cast_expression "(int *)puVar2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))) = (pointer_expression "*(undefined4 *)(iVar7 + 8)" * (cast_expression "(undefined4 *)(iVar7 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 8)" ( (binary_expression "iVar7 + 8" identifier + number_literal) ))))) ;) (if_statement "if (uVar3 < 0x14) {\n                    /* WARNING: Could not emulate address calculation at 0x0003a82c */\n                    /* WARNING: Treating indirect jump as call */\n      (*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + 0x4fa0)))();\n      return;\n    }" if (parenthesized_expression "(uVar3 < 0x14)" ( (binary_expression "uVar3 < 0x14" identifier < number_literal) )) (compound_statement "{\n                    /* WARNING: Could not emulate address calculation at 0x0003a82c */\n                    /* WARNING: Treating indirect jump as call */\n      (*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + 0x4fa0)))();\n      return;\n    }" { comment comment (expression_statement "(*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + 0x4fa0)))();" (call_expression "(*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + 0x4fa0)))()" (parenthesized_expression "(*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + 0x4fa0)))" ( (pointer_expression "*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + 0x4fa0))" * (cast_expression "(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + 0x4fa0))" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + 0x4fa0))" ( (binary_expression "&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + 0x4fa0)" (pointer_expression "&_gp_1" & identifier) + (pointer_expression "*(int *)(puVar1 + uVar3 * 4 + 0x4fa0)" * (cast_expression "(int *)(puVar1 + uVar3 * 4 + 0x4fa0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + uVar3 * 4 + 0x4fa0)" ( (binary_expression "puVar1 + uVar3 * 4 + 0x4fa0" (binary_expression "puVar1 + uVar3 * 4" identifier + (binary_expression "uVar3 * 4" identifier * number_literal)) + number_literal) ))))) )))) )) (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })) (expression_statement "statusline(3,PTR_s_d_of_current_line_0007755c + 0x4aac);" (call_expression "statusline(3,PTR_s_d_of_current_line_0007755c + 0x4aac)" identifier (argument_list "(3,PTR_s_d_of_current_line_0007755c + 0x4aac)" ( number_literal , (binary_expression "PTR_s_d_of_current_line_0007755c + 0x4aac" identifier + number_literal) ))) ;) (expression_statement "iVar8 = *(int *)puVar2;" (assignment_expression "iVar8 = *(int *)puVar2" identifier = (pointer_expression "*(int *)puVar2" * (cast_expression "(int *)puVar2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "uVar4 = *(undefined4 *)(*(int *)(iVar8 + 0x44) + 0x30);" (assignment_expression "uVar4 = *(undefined4 *)(*(int *)(iVar8 + 0x44) + 0x30)" identifier = (pointer_expression "*(undefined4 *)(*(int *)(iVar8 + 0x44) + 0x30)" * (cast_expression "(undefined4 *)(*(int *)(iVar8 + 0x44) + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar8 + 0x44) + 0x30)" ( (binary_expression "*(int *)(iVar8 + 0x44) + 0x30" (pointer_expression "*(int *)(iVar8 + 0x44)" * (cast_expression "(int *)(iVar8 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x44)" ( (binary_expression "iVar8 + 0x44" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(iVar8 + 0x4c) = 0x14;" (assignment_expression "*(undefined4 *)(iVar8 + 0x4c) = 0x14" (pointer_expression "*(undefined4 *)(iVar8 + 0x4c)" * (cast_expression "(undefined4 *)(iVar8 + 0x4c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x4c)" ( (binary_expression "iVar8 + 0x4c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(iVar8 + 0x30) = 0;" (assignment_expression "*(undefined4 *)(iVar8 + 0x30) = 0" (pointer_expression "*(undefined4 *)(iVar8 + 0x30)" * (cast_expression "(undefined4 *)(iVar8 + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x30)" ( (binary_expression "iVar8 + 0x30" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(iVar8 + 0x44) = uVar4;" (assignment_expression "*(undefined4 *)(iVar8 + 0x44) = uVar4" (pointer_expression "*(undefined4 *)(iVar8 + 0x44)" * (cast_expression "(undefined4 *)(iVar8 + 0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x44)" ( (binary_expression "iVar8 + 0x44" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar4 = xplustabs();" (assignment_expression "uVar4 = xplustabs()" identifier = (call_expression "xplustabs()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar5 = *(int *)puVar2;" (assignment_expression "iVar5 = *(int *)puVar2" identifier = (pointer_expression "*(int *)puVar2" * (cast_expression "(int *)puVar2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "uVar6 = *(undefined4 *)(iVar7 + 0x10);" (assignment_expression "uVar6 = *(undefined4 *)(iVar7 + 0x10)" identifier = (pointer_expression "*(undefined4 *)(iVar7 + 0x10)" * (cast_expression "(undefined4 *)(iVar7 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x10)" ( (binary_expression "iVar7 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(iVar8 + 0x20) = uVar4;" (assignment_expression "*(undefined4 *)(iVar8 + 0x20) = uVar4" (pointer_expression "*(undefined4 *)(iVar8 + 0x20)" * (cast_expression "(undefined4 *)(iVar8 + 0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x20)" ( (binary_expression "iVar8 + 0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(iVar5 + 0x14) = uVar6;" (assignment_expression "*(undefined4 *)(iVar5 + 0x14) = uVar6" (pointer_expression "*(undefined4 *)(iVar5 + 0x14)" * (cast_expression "(undefined4 *)(iVar5 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x14)" ( (binary_expression "iVar5 + 0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "UNRECOVERED_JUMPTABLE = (code *)PTR_titlebar_00077664;" (assignment_expression "UNRECOVERED_JUMPTABLE = (code *)PTR_titlebar_00077664" identifier = (cast_expression "(code *)PTR_titlebar_00077664" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (*(int *)(iVar5 + 0x44) != *(int *)(iVar5 + 0x48)) {\n      set_modified();\n      return;\n    }" if (parenthesized_expression "(*(int *)(iVar5 + 0x44) != *(int *)(iVar5 + 0x48))" ( (binary_expression "*(int *)(iVar5 + 0x44) != *(int *)(iVar5 + 0x48)" (pointer_expression "*(int *)(iVar5 + 0x44)" * (cast_expression "(int *)(iVar5 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x44)" ( (binary_expression "iVar5 + 0x44" identifier + number_literal) )))) != (pointer_expression "*(int *)(iVar5 + 0x48)" * (cast_expression "(int *)(iVar5 + 0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x48)" ( (binary_expression "iVar5 + 0x48" identifier + number_literal) ))))) )) (compound_statement "{\n      set_modified();\n      return;\n    }" { (expression_statement "set_modified();" (call_expression "set_modified()" identifier (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (expression_statement "*(undefined1 *)(iVar5 + 0x28) = 0;" (assignment_expression "*(undefined1 *)(iVar5 + 0x28) = 0" (pointer_expression "*(undefined1 *)(iVar5 + 0x28)" * (cast_expression "(undefined1 *)(iVar5 + 0x28)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x28)" ( (binary_expression "iVar5 + 0x28" identifier + number_literal) )))) = number_literal) ;) }))) comment comment (expression_statement "(*UNRECOVERED_JUMPTABLE)(uVar4);" (call_expression "(*UNRECOVERED_JUMPTABLE)(uVar4)" (parenthesized_expression "(*UNRECOVERED_JUMPTABLE)" ( (pointer_expression "*UNRECOVERED_JUMPTABLE" * identifier) )) (argument_list "(uVar4)" ( identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Unknown calling convention -- yet parameter storage is locked */\n\nvoid do_undo(void)\n\n{\n  undefined *puVar1;\n  undefined *puVar2;\n  uint uVar3;\n  filestruct *pfVar4;\n  undefined4 uVar5;\n  size_t sVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  code *UNRECOVERED_JUMPTABLE;\n  \n  puVar2 = PTR_openfile_0007756c;\n  puVar1 = PTR_s_d_of_current_line_0007755c;\n  iVar8 = *(int *)(*(int *)PTR_openfile_0007756c + 0x44);\n  if (iVar8 == 0) {\n    uVar5 = (*(code *)PTR_dcgettext_000780cc)(0,PTR_s_d_of_current_line_0007755c + 0x49f0,5);\n    UNRECOVERED_JUMPTABLE = (code *)PTR_statusbar_000775c4;\n  }\n  else {\n    uVar3 = *(uint *)(iVar8 + 4);\n    if (uVar3 < 6) {\n      pfVar4 = fsfromline(*(ssize_t *)(iVar8 + 0x28));\n      if (pfVar4 == (filestruct *)0x0) {\n        return;\n      }\n      uVar3 = *(uint *)(iVar8 + 4);\n    }\n    *(undefined4 *)(*(int *)puVar2 + 0x1c) = *(undefined4 *)(iVar8 + 8);\n    if (uVar3 < 0x14) {\n                    /* WARNING: Could not emulate address calculation at 0x0003a82c */\n                    /* WARNING: Treating indirect jump as call */\n      (*(code *)(&_gp + *(int *)(puVar1 + uVar3 * 4 + 0x4fa0)))();\n      return;\n    }\n    statusline(ALERT,PTR_s_d_of_current_line_0007755c + 0x4aac);\n    iVar9 = *(int *)puVar2;\n    uVar5 = *(undefined4 *)(*(int *)(iVar9 + 0x44) + 0x30);\n    *(undefined4 *)(iVar9 + 0x4c) = 0x14;\n    *(undefined4 *)(iVar9 + 0x30) = 0;\n    *(undefined4 *)(iVar9 + 0x44) = uVar5;\n    sVar6 = xplustabs();\n    iVar7 = *(int *)puVar2;\n    uVar5 = *(undefined4 *)(iVar8 + 0x10);\n    *(size_t *)(iVar9 + 0x20) = sVar6;\n    *(undefined4 *)(iVar7 + 0x14) = uVar5;\n    UNRECOVERED_JUMPTABLE = (code *)PTR_titlebar_00077664;\n    if (*(int *)(iVar7 + 0x44) != *(int *)(iVar7 + 0x48)) {\n      set_modified();\n      return;\n    }\n    uVar5 = 0;\n    *(undefined1 *)(iVar7 + 0x28) = 0;\n  }\n                    /* WARNING: Could not recover jumptable at 0x0003aff4. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n  (*UNRECOVERED_JUMPTABLE)(uVar5);\n  return;\n}\n\n" comment (function_definition "void do_undo(void)\n\n{\n  undefined *puVar1;\n  undefined *puVar2;\n  uint uVar3;\n  filestruct *pfVar4;\n  undefined4 uVar5;\n  size_t sVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  code *UNRECOVERED_JUMPTABLE;\n  \n  puVar2 = PTR_openfile_0007756c;\n  puVar1 = PTR_s_d_of_current_line_0007755c;\n  iVar8 = *(int *)(*(int *)PTR_openfile_0007756c + 0x44);\n  if (iVar8 == 0) {\n    uVar5 = (*(code *)PTR_dcgettext_000780cc)(0,PTR_s_d_of_current_line_0007755c + 0x49f0,5);\n    UNRECOVERED_JUMPTABLE = (code *)PTR_statusbar_000775c4;\n  }\n  else {\n    uVar3 = *(uint *)(iVar8 + 4);\n    if (uVar3 < 6) {\n      pfVar4 = fsfromline(*(ssize_t *)(iVar8 + 0x28));\n      if (pfVar4 == (filestruct *)0x0) {\n        return;\n      }\n      uVar3 = *(uint *)(iVar8 + 4);\n    }\n    *(undefined4 *)(*(int *)puVar2 + 0x1c) = *(undefined4 *)(iVar8 + 8);\n    if (uVar3 < 0x14) {\n                    /* WARNING: Could not emulate address calculation at 0x0003a82c */\n                    /* WARNING: Treating indirect jump as call */\n      (*(code *)(&_gp + *(int *)(puVar1 + uVar3 * 4 + 0x4fa0)))();\n      return;\n    }\n    statusline(ALERT,PTR_s_d_of_current_line_0007755c + 0x4aac);\n    iVar9 = *(int *)puVar2;\n    uVar5 = *(undefined4 *)(*(int *)(iVar9 + 0x44) + 0x30);\n    *(undefined4 *)(iVar9 + 0x4c) = 0x14;\n    *(undefined4 *)(iVar9 + 0x30) = 0;\n    *(undefined4 *)(iVar9 + 0x44) = uVar5;\n    sVar6 = xplustabs();\n    iVar7 = *(int *)puVar2;\n    uVar5 = *(undefined4 *)(iVar8 + 0x10);\n    *(size_t *)(iVar9 + 0x20) = sVar6;\n    *(undefined4 *)(iVar7 + 0x14) = uVar5;\n    UNRECOVERED_JUMPTABLE = (code *)PTR_titlebar_00077664;\n    if (*(int *)(iVar7 + 0x44) != *(int *)(iVar7 + 0x48)) {\n      set_modified();\n      return;\n    }\n    uVar5 = 0;\n    *(undefined1 *)(iVar7 + 0x28) = 0;\n  }\n                    /* WARNING: Could not recover jumptable at 0x0003aff4. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n  (*UNRECOVERED_JUMPTABLE)(uVar5);\n  return;\n}" primitive_type (function_declarator "do_undo(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  undefined *puVar1;\n  undefined *puVar2;\n  uint uVar3;\n  filestruct *pfVar4;\n  undefined4 uVar5;\n  size_t sVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  code *UNRECOVERED_JUMPTABLE;\n  \n  puVar2 = PTR_openfile_0007756c;\n  puVar1 = PTR_s_d_of_current_line_0007755c;\n  iVar8 = *(int *)(*(int *)PTR_openfile_0007756c + 0x44);\n  if (iVar8 == 0) {\n    uVar5 = (*(code *)PTR_dcgettext_000780cc)(0,PTR_s_d_of_current_line_0007755c + 0x49f0,5);\n    UNRECOVERED_JUMPTABLE = (code *)PTR_statusbar_000775c4;\n  }\n  else {\n    uVar3 = *(uint *)(iVar8 + 4);\n    if (uVar3 < 6) {\n      pfVar4 = fsfromline(*(ssize_t *)(iVar8 + 0x28));\n      if (pfVar4 == (filestruct *)0x0) {\n        return;\n      }\n      uVar3 = *(uint *)(iVar8 + 4);\n    }\n    *(undefined4 *)(*(int *)puVar2 + 0x1c) = *(undefined4 *)(iVar8 + 8);\n    if (uVar3 < 0x14) {\n                    /* WARNING: Could not emulate address calculation at 0x0003a82c */\n                    /* WARNING: Treating indirect jump as call */\n      (*(code *)(&_gp + *(int *)(puVar1 + uVar3 * 4 + 0x4fa0)))();\n      return;\n    }\n    statusline(ALERT,PTR_s_d_of_current_line_0007755c + 0x4aac);\n    iVar9 = *(int *)puVar2;\n    uVar5 = *(undefined4 *)(*(int *)(iVar9 + 0x44) + 0x30);\n    *(undefined4 *)(iVar9 + 0x4c) = 0x14;\n    *(undefined4 *)(iVar9 + 0x30) = 0;\n    *(undefined4 *)(iVar9 + 0x44) = uVar5;\n    sVar6 = xplustabs();\n    iVar7 = *(int *)puVar2;\n    uVar5 = *(undefined4 *)(iVar8 + 0x10);\n    *(size_t *)(iVar9 + 0x20) = sVar6;\n    *(undefined4 *)(iVar7 + 0x14) = uVar5;\n    UNRECOVERED_JUMPTABLE = (code *)PTR_titlebar_00077664;\n    if (*(int *)(iVar7 + 0x44) != *(int *)(iVar7 + 0x48)) {\n      set_modified();\n      return;\n    }\n    uVar5 = 0;\n    *(undefined1 *)(iVar7 + 0x28) = 0;\n  }\n                    /* WARNING: Could not recover jumptable at 0x0003aff4. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n  (*UNRECOVERED_JUMPTABLE)(uVar5);\n  return;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "filestruct *pfVar4;" type_identifier (pointer_declarator "*pfVar4" * identifier) ;) (declaration "undefined4 uVar5;" type_identifier identifier ;) (declaration "size_t sVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "code *UNRECOVERED_JUMPTABLE;" type_identifier (pointer_declarator "*UNRECOVERED_JUMPTABLE" * identifier) ;) (expression_statement "puVar2 = PTR_openfile_0007756c;" (assignment_expression "puVar2 = PTR_openfile_0007756c" identifier = identifier) ;) (expression_statement "puVar1 = PTR_s_d_of_current_line_0007755c;" (assignment_expression "puVar1 = PTR_s_d_of_current_line_0007755c" identifier = identifier) ;) (expression_statement "iVar8 = *(int *)(*(int *)PTR_openfile_0007756c + 0x44);" (assignment_expression "iVar8 = *(int *)(*(int *)PTR_openfile_0007756c + 0x44)" identifier = (pointer_expression "*(int *)(*(int *)PTR_openfile_0007756c + 0x44)" * (cast_expression "(int *)(*(int *)PTR_openfile_0007756c + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)PTR_openfile_0007756c + 0x44)" ( (binary_expression "*(int *)PTR_openfile_0007756c + 0x44" (pointer_expression "*(int *)PTR_openfile_0007756c" * (cast_expression "(int *)PTR_openfile_0007756c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) ;) (if_statement "if (iVar8 == 0) {\n    uVar5 = (*(code *)PTR_dcgettext_000780cc)(0,PTR_s_d_of_current_line_0007755c + 0x49f0,5);\n    UNRECOVERED_JUMPTABLE = (code *)PTR_statusbar_000775c4;\n  }\n  else {\n    uVar3 = *(uint *)(iVar8 + 4);\n    if (uVar3 < 6) {\n      pfVar4 = fsfromline(*(ssize_t *)(iVar8 + 0x28));\n      if (pfVar4 == (filestruct *)0x0) {\n        return;\n      }\n      uVar3 = *(uint *)(iVar8 + 4);\n    }\n    *(undefined4 *)(*(int *)puVar2 + 0x1c) = *(undefined4 *)(iVar8 + 8);\n    if (uVar3 < 0x14) {\n                    /* WARNING: Could not emulate address calculation at 0x0003a82c */\n                    /* WARNING: Treating indirect jump as call */\n      (*(code *)(&_gp + *(int *)(puVar1 + uVar3 * 4 + 0x4fa0)))();\n      return;\n    }\n    statusline(ALERT,PTR_s_d_of_current_line_0007755c + 0x4aac);\n    iVar9 = *(int *)puVar2;\n    uVar5 = *(undefined4 *)(*(int *)(iVar9 + 0x44) + 0x30);\n    *(undefined4 *)(iVar9 + 0x4c) = 0x14;\n    *(undefined4 *)(iVar9 + 0x30) = 0;\n    *(undefined4 *)(iVar9 + 0x44) = uVar5;\n    sVar6 = xplustabs();\n    iVar7 = *(int *)puVar2;\n    uVar5 = *(undefined4 *)(iVar8 + 0x10);\n    *(size_t *)(iVar9 + 0x20) = sVar6;\n    *(undefined4 *)(iVar7 + 0x14) = uVar5;\n    UNRECOVERED_JUMPTABLE = (code *)PTR_titlebar_00077664;\n    if (*(int *)(iVar7 + 0x44) != *(int *)(iVar7 + 0x48)) {\n      set_modified();\n      return;\n    }\n    uVar5 = 0;\n    *(undefined1 *)(iVar7 + 0x28) = 0;\n  }" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (compound_statement "{\n    uVar5 = (*(code *)PTR_dcgettext_000780cc)(0,PTR_s_d_of_current_line_0007755c + 0x49f0,5);\n    UNRECOVERED_JUMPTABLE = (code *)PTR_statusbar_000775c4;\n  }" { (expression_statement "uVar5 = (*(code *)PTR_dcgettext_000780cc)(0,PTR_s_d_of_current_line_0007755c + 0x49f0,5);" (assignment_expression "uVar5 = (*(code *)PTR_dcgettext_000780cc)(0,PTR_s_d_of_current_line_0007755c + 0x49f0,5)" identifier = (call_expression "(*(code *)PTR_dcgettext_000780cc)(0,PTR_s_d_of_current_line_0007755c + 0x49f0,5)" (parenthesized_expression "(*(code *)PTR_dcgettext_000780cc)" ( (pointer_expression "*(code *)PTR_dcgettext_000780cc" * (cast_expression "(code *)PTR_dcgettext_000780cc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(0,PTR_s_d_of_current_line_0007755c + 0x49f0,5)" ( number_literal , (binary_expression "PTR_s_d_of_current_line_0007755c + 0x49f0" identifier + number_literal) , number_literal )))) ;) (expression_statement "UNRECOVERED_JUMPTABLE = (code *)PTR_statusbar_000775c4;" (assignment_expression "UNRECOVERED_JUMPTABLE = (code *)PTR_statusbar_000775c4" identifier = (cast_expression "(code *)PTR_statusbar_000775c4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) }) (else_clause "else {\n    uVar3 = *(uint *)(iVar8 + 4);\n    if (uVar3 < 6) {\n      pfVar4 = fsfromline(*(ssize_t *)(iVar8 + 0x28));\n      if (pfVar4 == (filestruct *)0x0) {\n        return;\n      }\n      uVar3 = *(uint *)(iVar8 + 4);\n    }\n    *(undefined4 *)(*(int *)puVar2 + 0x1c) = *(undefined4 *)(iVar8 + 8);\n    if (uVar3 < 0x14) {\n                    /* WARNING: Could not emulate address calculation at 0x0003a82c */\n                    /* WARNING: Treating indirect jump as call */\n      (*(code *)(&_gp + *(int *)(puVar1 + uVar3 * 4 + 0x4fa0)))();\n      return;\n    }\n    statusline(ALERT,PTR_s_d_of_current_line_0007755c + 0x4aac);\n    iVar9 = *(int *)puVar2;\n    uVar5 = *(undefined4 *)(*(int *)(iVar9 + 0x44) + 0x30);\n    *(undefined4 *)(iVar9 + 0x4c) = 0x14;\n    *(undefined4 *)(iVar9 + 0x30) = 0;\n    *(undefined4 *)(iVar9 + 0x44) = uVar5;\n    sVar6 = xplustabs();\n    iVar7 = *(int *)puVar2;\n    uVar5 = *(undefined4 *)(iVar8 + 0x10);\n    *(size_t *)(iVar9 + 0x20) = sVar6;\n    *(undefined4 *)(iVar7 + 0x14) = uVar5;\n    UNRECOVERED_JUMPTABLE = (code *)PTR_titlebar_00077664;\n    if (*(int *)(iVar7 + 0x44) != *(int *)(iVar7 + 0x48)) {\n      set_modified();\n      return;\n    }\n    uVar5 = 0;\n    *(undefined1 *)(iVar7 + 0x28) = 0;\n  }" else (compound_statement "{\n    uVar3 = *(uint *)(iVar8 + 4);\n    if (uVar3 < 6) {\n      pfVar4 = fsfromline(*(ssize_t *)(iVar8 + 0x28));\n      if (pfVar4 == (filestruct *)0x0) {\n        return;\n      }\n      uVar3 = *(uint *)(iVar8 + 4);\n    }\n    *(undefined4 *)(*(int *)puVar2 + 0x1c) = *(undefined4 *)(iVar8 + 8);\n    if (uVar3 < 0x14) {\n                    /* WARNING: Could not emulate address calculation at 0x0003a82c */\n                    /* WARNING: Treating indirect jump as call */\n      (*(code *)(&_gp + *(int *)(puVar1 + uVar3 * 4 + 0x4fa0)))();\n      return;\n    }\n    statusline(ALERT,PTR_s_d_of_current_line_0007755c + 0x4aac);\n    iVar9 = *(int *)puVar2;\n    uVar5 = *(undefined4 *)(*(int *)(iVar9 + 0x44) + 0x30);\n    *(undefined4 *)(iVar9 + 0x4c) = 0x14;\n    *(undefined4 *)(iVar9 + 0x30) = 0;\n    *(undefined4 *)(iVar9 + 0x44) = uVar5;\n    sVar6 = xplustabs();\n    iVar7 = *(int *)puVar2;\n    uVar5 = *(undefined4 *)(iVar8 + 0x10);\n    *(size_t *)(iVar9 + 0x20) = sVar6;\n    *(undefined4 *)(iVar7 + 0x14) = uVar5;\n    UNRECOVERED_JUMPTABLE = (code *)PTR_titlebar_00077664;\n    if (*(int *)(iVar7 + 0x44) != *(int *)(iVar7 + 0x48)) {\n      set_modified();\n      return;\n    }\n    uVar5 = 0;\n    *(undefined1 *)(iVar7 + 0x28) = 0;\n  }" { (expression_statement "uVar3 = *(uint *)(iVar8 + 4);" (assignment_expression "uVar3 = *(uint *)(iVar8 + 4)" identifier = (pointer_expression "*(uint *)(iVar8 + 4)" * (cast_expression "(uint *)(iVar8 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 4)" ( (binary_expression "iVar8 + 4" identifier + number_literal) ))))) ;) (if_statement "if (uVar3 < 6) {\n      pfVar4 = fsfromline(*(ssize_t *)(iVar8 + 0x28));\n      if (pfVar4 == (filestruct *)0x0) {\n        return;\n      }\n      uVar3 = *(uint *)(iVar8 + 4);\n    }" if (parenthesized_expression "(uVar3 < 6)" ( (binary_expression "uVar3 < 6" identifier < number_literal) )) (compound_statement "{\n      pfVar4 = fsfromline(*(ssize_t *)(iVar8 + 0x28));\n      if (pfVar4 == (filestruct *)0x0) {\n        return;\n      }\n      uVar3 = *(uint *)(iVar8 + 4);\n    }" { (expression_statement "pfVar4 = fsfromline(*(ssize_t *)(iVar8 + 0x28));" (assignment_expression "pfVar4 = fsfromline(*(ssize_t *)(iVar8 + 0x28))" identifier = (call_expression "fsfromline(*(ssize_t *)(iVar8 + 0x28))" identifier (argument_list "(*(ssize_t *)(iVar8 + 0x28))" ( (pointer_expression "*(ssize_t *)(iVar8 + 0x28)" * (cast_expression "(ssize_t *)(iVar8 + 0x28)" ( (type_descriptor "ssize_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x28)" ( (binary_expression "iVar8 + 0x28" identifier + number_literal) )))) )))) ;) (if_statement "if (pfVar4 == (filestruct *)0x0) {\n        return;\n      }" if (parenthesized_expression "(pfVar4 == (filestruct *)0x0)" ( (binary_expression "pfVar4 == (filestruct *)0x0" identifier == (cast_expression "(filestruct *)0x0" ( (type_descriptor "filestruct *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        return;\n      }" { (return_statement "return;" return ;) })) (expression_statement "uVar3 = *(uint *)(iVar8 + 4);" (assignment_expression "uVar3 = *(uint *)(iVar8 + 4)" identifier = (pointer_expression "*(uint *)(iVar8 + 4)" * (cast_expression "(uint *)(iVar8 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 4)" ( (binary_expression "iVar8 + 4" identifier + number_literal) ))))) ;) })) (expression_statement "*(undefined4 *)(*(int *)puVar2 + 0x1c) = *(undefined4 *)(iVar8 + 8);" (assignment_expression "*(undefined4 *)(*(int *)puVar2 + 0x1c) = *(undefined4 *)(iVar8 + 8)" (pointer_expression "*(undefined4 *)(*(int *)puVar2 + 0x1c)" * (cast_expression "(undefined4 *)(*(int *)puVar2 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)puVar2 + 0x1c)" ( (binary_expression "*(int *)puVar2 + 0x1c" (pointer_expression "*(int *)puVar2" * (cast_expression "(int *)puVar2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))) = (pointer_expression "*(undefined4 *)(iVar8 + 8)" * (cast_expression "(undefined4 *)(iVar8 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 8)" ( (binary_expression "iVar8 + 8" identifier + number_literal) ))))) ;) (if_statement "if (uVar3 < 0x14) {\n                    /* WARNING: Could not emulate address calculation at 0x0003a82c */\n                    /* WARNING: Treating indirect jump as call */\n      (*(code *)(&_gp + *(int *)(puVar1 + uVar3 * 4 + 0x4fa0)))();\n      return;\n    }" if (parenthesized_expression "(uVar3 < 0x14)" ( (binary_expression "uVar3 < 0x14" identifier < number_literal) )) (compound_statement "{\n                    /* WARNING: Could not emulate address calculation at 0x0003a82c */\n                    /* WARNING: Treating indirect jump as call */\n      (*(code *)(&_gp + *(int *)(puVar1 + uVar3 * 4 + 0x4fa0)))();\n      return;\n    }" { comment comment (expression_statement "(*(code *)(&_gp + *(int *)(puVar1 + uVar3 * 4 + 0x4fa0)))();" (call_expression "(*(code *)(&_gp + *(int *)(puVar1 + uVar3 * 4 + 0x4fa0)))()" (parenthesized_expression "(*(code *)(&_gp + *(int *)(puVar1 + uVar3 * 4 + 0x4fa0)))" ( (pointer_expression "*(code *)(&_gp + *(int *)(puVar1 + uVar3 * 4 + 0x4fa0))" * (cast_expression "(code *)(&_gp + *(int *)(puVar1 + uVar3 * 4 + 0x4fa0))" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&_gp + *(int *)(puVar1 + uVar3 * 4 + 0x4fa0))" ( (binary_expression "&_gp + *(int *)(puVar1 + uVar3 * 4 + 0x4fa0)" (pointer_expression "&_gp" & identifier) + (pointer_expression "*(int *)(puVar1 + uVar3 * 4 + 0x4fa0)" * (cast_expression "(int *)(puVar1 + uVar3 * 4 + 0x4fa0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + uVar3 * 4 + 0x4fa0)" ( (binary_expression "puVar1 + uVar3 * 4 + 0x4fa0" (binary_expression "puVar1 + uVar3 * 4" identifier + (binary_expression "uVar3 * 4" identifier * number_literal)) + number_literal) ))))) )))) )) (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })) (expression_statement "statusline(ALERT,PTR_s_d_of_current_line_0007755c + 0x4aac);" (call_expression "statusline(ALERT,PTR_s_d_of_current_line_0007755c + 0x4aac)" identifier (argument_list "(ALERT,PTR_s_d_of_current_line_0007755c + 0x4aac)" ( identifier , (binary_expression "PTR_s_d_of_current_line_0007755c + 0x4aac" identifier + number_literal) ))) ;) (expression_statement "iVar9 = *(int *)puVar2;" (assignment_expression "iVar9 = *(int *)puVar2" identifier = (pointer_expression "*(int *)puVar2" * (cast_expression "(int *)puVar2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "uVar5 = *(undefined4 *)(*(int *)(iVar9 + 0x44) + 0x30);" (assignment_expression "uVar5 = *(undefined4 *)(*(int *)(iVar9 + 0x44) + 0x30)" identifier = (pointer_expression "*(undefined4 *)(*(int *)(iVar9 + 0x44) + 0x30)" * (cast_expression "(undefined4 *)(*(int *)(iVar9 + 0x44) + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar9 + 0x44) + 0x30)" ( (binary_expression "*(int *)(iVar9 + 0x44) + 0x30" (pointer_expression "*(int *)(iVar9 + 0x44)" * (cast_expression "(int *)(iVar9 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x44)" ( (binary_expression "iVar9 + 0x44" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(iVar9 + 0x4c) = 0x14;" (assignment_expression "*(undefined4 *)(iVar9 + 0x4c) = 0x14" (pointer_expression "*(undefined4 *)(iVar9 + 0x4c)" * (cast_expression "(undefined4 *)(iVar9 + 0x4c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x4c)" ( (binary_expression "iVar9 + 0x4c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(iVar9 + 0x30) = 0;" (assignment_expression "*(undefined4 *)(iVar9 + 0x30) = 0" (pointer_expression "*(undefined4 *)(iVar9 + 0x30)" * (cast_expression "(undefined4 *)(iVar9 + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x30)" ( (binary_expression "iVar9 + 0x30" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(iVar9 + 0x44) = uVar5;" (assignment_expression "*(undefined4 *)(iVar9 + 0x44) = uVar5" (pointer_expression "*(undefined4 *)(iVar9 + 0x44)" * (cast_expression "(undefined4 *)(iVar9 + 0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x44)" ( (binary_expression "iVar9 + 0x44" identifier + number_literal) )))) = identifier) ;) (expression_statement "sVar6 = xplustabs();" (assignment_expression "sVar6 = xplustabs()" identifier = (call_expression "xplustabs()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar7 = *(int *)puVar2;" (assignment_expression "iVar7 = *(int *)puVar2" identifier = (pointer_expression "*(int *)puVar2" * (cast_expression "(int *)puVar2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "uVar5 = *(undefined4 *)(iVar8 + 0x10);" (assignment_expression "uVar5 = *(undefined4 *)(iVar8 + 0x10)" identifier = (pointer_expression "*(undefined4 *)(iVar8 + 0x10)" * (cast_expression "(undefined4 *)(iVar8 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x10)" ( (binary_expression "iVar8 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "*(size_t *)(iVar9 + 0x20) = sVar6;" (assignment_expression "*(size_t *)(iVar9 + 0x20) = sVar6" (pointer_expression "*(size_t *)(iVar9 + 0x20)" * (cast_expression "(size_t *)(iVar9 + 0x20)" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x20)" ( (binary_expression "iVar9 + 0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(iVar7 + 0x14) = uVar5;" (assignment_expression "*(undefined4 *)(iVar7 + 0x14) = uVar5" (pointer_expression "*(undefined4 *)(iVar7 + 0x14)" * (cast_expression "(undefined4 *)(iVar7 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x14)" ( (binary_expression "iVar7 + 0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "UNRECOVERED_JUMPTABLE = (code *)PTR_titlebar_00077664;" (assignment_expression "UNRECOVERED_JUMPTABLE = (code *)PTR_titlebar_00077664" identifier = (cast_expression "(code *)PTR_titlebar_00077664" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (*(int *)(iVar7 + 0x44) != *(int *)(iVar7 + 0x48)) {\n      set_modified();\n      return;\n    }" if (parenthesized_expression "(*(int *)(iVar7 + 0x44) != *(int *)(iVar7 + 0x48))" ( (binary_expression "*(int *)(iVar7 + 0x44) != *(int *)(iVar7 + 0x48)" (pointer_expression "*(int *)(iVar7 + 0x44)" * (cast_expression "(int *)(iVar7 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x44)" ( (binary_expression "iVar7 + 0x44" identifier + number_literal) )))) != (pointer_expression "*(int *)(iVar7 + 0x48)" * (cast_expression "(int *)(iVar7 + 0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x48)" ( (binary_expression "iVar7 + 0x48" identifier + number_literal) ))))) )) (compound_statement "{\n      set_modified();\n      return;\n    }" { (expression_statement "set_modified();" (call_expression "set_modified()" identifier (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })) (expression_statement "uVar5 = 0;" (assignment_expression "uVar5 = 0" identifier = number_literal) ;) (expression_statement "*(undefined1 *)(iVar7 + 0x28) = 0;" (assignment_expression "*(undefined1 *)(iVar7 + 0x28) = 0" (pointer_expression "*(undefined1 *)(iVar7 + 0x28)" * (cast_expression "(undefined1 *)(iVar7 + 0x28)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x28)" ( (binary_expression "iVar7 + 0x28" identifier + number_literal) )))) = number_literal) ;) }))) comment comment (expression_statement "(*UNRECOVERED_JUMPTABLE)(uVar5);" (call_expression "(*UNRECOVERED_JUMPTABLE)(uVar5)" (parenthesized_expression "(*UNRECOVERED_JUMPTABLE)" ( (pointer_expression "*UNRECOVERED_JUMPTABLE" * identifier) )) (argument_list "(uVar5)" ( identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit "void do_undo(void)\n\n{\n  undefined *puVar1;\n  undefined *puVar2;\n  uint uVar3;\n  undefined4 uVar4;\n  int iVar5;\n  undefined4 uVar6;\n  int iVar7;\n  int iVar8;\n  code *UNRECOVERED_JUMPTABLE;\n  \n  puVar2 = PTR_openfile_0007756c;\n  puVar1 = PTR_s_d_of_current_line_0007755c;\n  iVar7 = *(int *)(*(int *)PTR_openfile_0007756c + 0x44);\n  if (iVar7 == 0) {\n    uVar4 = (*(code *)PTR_dcgettext_000780cc)(0,PTR_s_d_of_current_line_0007755c + 0x49f0,5);\n    UNRECOVERED_JUMPTABLE = (code *)PTR_statusbar_000775c4;\n  }\n  else {\n    uVar3 = *(uint *)(iVar7 + 4);\n    if (uVar3 < 6) {\n      iVar5 = fsfromline(*(undefined4 *)(iVar7 + 0x28));\n      if (iVar5 == 0) {\n        return;\n      }\n      uVar3 = *(uint *)(iVar7 + 4);\n    }\n    *(undefined4 *)(*(int *)puVar2 + 0x1c) = *(undefined4 *)(iVar7 + 8);\n    if (uVar3 < 0x14) {\n                    \n                    \n      (*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + 0x4fa0)))();\n      return;\n    }\n    statusline(3,PTR_s_d_of_current_line_0007755c + 0x4aac);\n    iVar8 = *(int *)puVar2;\n    uVar4 = *(undefined4 *)(*(int *)(iVar8 + 0x44) + 0x30);\n    *(undefined4 *)(iVar8 + 0x4c) = 0x14;\n    *(undefined4 *)(iVar8 + 0x30) = 0;\n    *(undefined4 *)(iVar8 + 0x44) = uVar4;\n    uVar4 = xplustabs();\n    iVar5 = *(int *)puVar2;\n    uVar6 = *(undefined4 *)(iVar7 + 0x10);\n    *(undefined4 *)(iVar8 + 0x20) = uVar4;\n    *(undefined4 *)(iVar5 + 0x14) = uVar6;\n    UNRECOVERED_JUMPTABLE = (code *)PTR_titlebar_00077664;\n    if (*(int *)(iVar5 + 0x44) != *(int *)(iVar5 + 0x48)) {\n      set_modified();\n      return;\n    }\n    uVar4 = 0;\n    *(undefined1 *)(iVar5 + 0x28) = 0;\n  }\n                    \n                    \n  (*UNRECOVERED_JUMPTABLE)(uVar4);\n  return;\n}\n\n" (function_definition "void do_undo(void)\n\n{\n  undefined *puVar1;\n  undefined *puVar2;\n  uint uVar3;\n  undefined4 uVar4;\n  int iVar5;\n  undefined4 uVar6;\n  int iVar7;\n  int iVar8;\n  code *UNRECOVERED_JUMPTABLE;\n  \n  puVar2 = PTR_openfile_0007756c;\n  puVar1 = PTR_s_d_of_current_line_0007755c;\n  iVar7 = *(int *)(*(int *)PTR_openfile_0007756c + 0x44);\n  if (iVar7 == 0) {\n    uVar4 = (*(code *)PTR_dcgettext_000780cc)(0,PTR_s_d_of_current_line_0007755c + 0x49f0,5);\n    UNRECOVERED_JUMPTABLE = (code *)PTR_statusbar_000775c4;\n  }\n  else {\n    uVar3 = *(uint *)(iVar7 + 4);\n    if (uVar3 < 6) {\n      iVar5 = fsfromline(*(undefined4 *)(iVar7 + 0x28));\n      if (iVar5 == 0) {\n        return;\n      }\n      uVar3 = *(uint *)(iVar7 + 4);\n    }\n    *(undefined4 *)(*(int *)puVar2 + 0x1c) = *(undefined4 *)(iVar7 + 8);\n    if (uVar3 < 0x14) {\n                    \n                    \n      (*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + 0x4fa0)))();\n      return;\n    }\n    statusline(3,PTR_s_d_of_current_line_0007755c + 0x4aac);\n    iVar8 = *(int *)puVar2;\n    uVar4 = *(undefined4 *)(*(int *)(iVar8 + 0x44) + 0x30);\n    *(undefined4 *)(iVar8 + 0x4c) = 0x14;\n    *(undefined4 *)(iVar8 + 0x30) = 0;\n    *(undefined4 *)(iVar8 + 0x44) = uVar4;\n    uVar4 = xplustabs();\n    iVar5 = *(int *)puVar2;\n    uVar6 = *(undefined4 *)(iVar7 + 0x10);\n    *(undefined4 *)(iVar8 + 0x20) = uVar4;\n    *(undefined4 *)(iVar5 + 0x14) = uVar6;\n    UNRECOVERED_JUMPTABLE = (code *)PTR_titlebar_00077664;\n    if (*(int *)(iVar5 + 0x44) != *(int *)(iVar5 + 0x48)) {\n      set_modified();\n      return;\n    }\n    uVar4 = 0;\n    *(undefined1 *)(iVar5 + 0x28) = 0;\n  }\n                    \n                    \n  (*UNRECOVERED_JUMPTABLE)(uVar4);\n  return;\n}" primitive_type (function_declarator "do_undo(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  undefined *puVar1;\n  undefined *puVar2;\n  uint uVar3;\n  undefined4 uVar4;\n  int iVar5;\n  undefined4 uVar6;\n  int iVar7;\n  int iVar8;\n  code *UNRECOVERED_JUMPTABLE;\n  \n  puVar2 = PTR_openfile_0007756c;\n  puVar1 = PTR_s_d_of_current_line_0007755c;\n  iVar7 = *(int *)(*(int *)PTR_openfile_0007756c + 0x44);\n  if (iVar7 == 0) {\n    uVar4 = (*(code *)PTR_dcgettext_000780cc)(0,PTR_s_d_of_current_line_0007755c + 0x49f0,5);\n    UNRECOVERED_JUMPTABLE = (code *)PTR_statusbar_000775c4;\n  }\n  else {\n    uVar3 = *(uint *)(iVar7 + 4);\n    if (uVar3 < 6) {\n      iVar5 = fsfromline(*(undefined4 *)(iVar7 + 0x28));\n      if (iVar5 == 0) {\n        return;\n      }\n      uVar3 = *(uint *)(iVar7 + 4);\n    }\n    *(undefined4 *)(*(int *)puVar2 + 0x1c) = *(undefined4 *)(iVar7 + 8);\n    if (uVar3 < 0x14) {\n                    \n                    \n      (*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + 0x4fa0)))();\n      return;\n    }\n    statusline(3,PTR_s_d_of_current_line_0007755c + 0x4aac);\n    iVar8 = *(int *)puVar2;\n    uVar4 = *(undefined4 *)(*(int *)(iVar8 + 0x44) + 0x30);\n    *(undefined4 *)(iVar8 + 0x4c) = 0x14;\n    *(undefined4 *)(iVar8 + 0x30) = 0;\n    *(undefined4 *)(iVar8 + 0x44) = uVar4;\n    uVar4 = xplustabs();\n    iVar5 = *(int *)puVar2;\n    uVar6 = *(undefined4 *)(iVar7 + 0x10);\n    *(undefined4 *)(iVar8 + 0x20) = uVar4;\n    *(undefined4 *)(iVar5 + 0x14) = uVar6;\n    UNRECOVERED_JUMPTABLE = (code *)PTR_titlebar_00077664;\n    if (*(int *)(iVar5 + 0x44) != *(int *)(iVar5 + 0x48)) {\n      set_modified();\n      return;\n    }\n    uVar4 = 0;\n    *(undefined1 *)(iVar5 + 0x28) = 0;\n  }\n                    \n                    \n  (*UNRECOVERED_JUMPTABLE)(uVar4);\n  return;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "undefined4 uVar6;" type_identifier identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "code *UNRECOVERED_JUMPTABLE;" type_identifier (pointer_declarator "*UNRECOVERED_JUMPTABLE" * identifier) ;) (expression_statement "puVar2 = PTR_openfile_0007756c;" (assignment_expression "puVar2 = PTR_openfile_0007756c" identifier = identifier) ;) (expression_statement "puVar1 = PTR_s_d_of_current_line_0007755c;" (assignment_expression "puVar1 = PTR_s_d_of_current_line_0007755c" identifier = identifier) ;) (expression_statement "iVar7 = *(int *)(*(int *)PTR_openfile_0007756c + 0x44);" (assignment_expression "iVar7 = *(int *)(*(int *)PTR_openfile_0007756c + 0x44)" identifier = (pointer_expression "*(int *)(*(int *)PTR_openfile_0007756c + 0x44)" * (cast_expression "(int *)(*(int *)PTR_openfile_0007756c + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)PTR_openfile_0007756c + 0x44)" ( (binary_expression "*(int *)PTR_openfile_0007756c + 0x44" (pointer_expression "*(int *)PTR_openfile_0007756c" * (cast_expression "(int *)PTR_openfile_0007756c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) ;) (if_statement "if (iVar7 == 0) {\n    uVar4 = (*(code *)PTR_dcgettext_000780cc)(0,PTR_s_d_of_current_line_0007755c + 0x49f0,5);\n    UNRECOVERED_JUMPTABLE = (code *)PTR_statusbar_000775c4;\n  }\n  else {\n    uVar3 = *(uint *)(iVar7 + 4);\n    if (uVar3 < 6) {\n      iVar5 = fsfromline(*(undefined4 *)(iVar7 + 0x28));\n      if (iVar5 == 0) {\n        return;\n      }\n      uVar3 = *(uint *)(iVar7 + 4);\n    }\n    *(undefined4 *)(*(int *)puVar2 + 0x1c) = *(undefined4 *)(iVar7 + 8);\n    if (uVar3 < 0x14) {\n                    \n                    \n      (*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + 0x4fa0)))();\n      return;\n    }\n    statusline(3,PTR_s_d_of_current_line_0007755c + 0x4aac);\n    iVar8 = *(int *)puVar2;\n    uVar4 = *(undefined4 *)(*(int *)(iVar8 + 0x44) + 0x30);\n    *(undefined4 *)(iVar8 + 0x4c) = 0x14;\n    *(undefined4 *)(iVar8 + 0x30) = 0;\n    *(undefined4 *)(iVar8 + 0x44) = uVar4;\n    uVar4 = xplustabs();\n    iVar5 = *(int *)puVar2;\n    uVar6 = *(undefined4 *)(iVar7 + 0x10);\n    *(undefined4 *)(iVar8 + 0x20) = uVar4;\n    *(undefined4 *)(iVar5 + 0x14) = uVar6;\n    UNRECOVERED_JUMPTABLE = (code *)PTR_titlebar_00077664;\n    if (*(int *)(iVar5 + 0x44) != *(int *)(iVar5 + 0x48)) {\n      set_modified();\n      return;\n    }\n    uVar4 = 0;\n    *(undefined1 *)(iVar5 + 0x28) = 0;\n  }" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (compound_statement "{\n    uVar4 = (*(code *)PTR_dcgettext_000780cc)(0,PTR_s_d_of_current_line_0007755c + 0x49f0,5);\n    UNRECOVERED_JUMPTABLE = (code *)PTR_statusbar_000775c4;\n  }" { (expression_statement "uVar4 = (*(code *)PTR_dcgettext_000780cc)(0,PTR_s_d_of_current_line_0007755c + 0x49f0,5);" (assignment_expression "uVar4 = (*(code *)PTR_dcgettext_000780cc)(0,PTR_s_d_of_current_line_0007755c + 0x49f0,5)" identifier = (call_expression "(*(code *)PTR_dcgettext_000780cc)(0,PTR_s_d_of_current_line_0007755c + 0x49f0,5)" (parenthesized_expression "(*(code *)PTR_dcgettext_000780cc)" ( (pointer_expression "*(code *)PTR_dcgettext_000780cc" * (cast_expression "(code *)PTR_dcgettext_000780cc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(0,PTR_s_d_of_current_line_0007755c + 0x49f0,5)" ( number_literal , (binary_expression "PTR_s_d_of_current_line_0007755c + 0x49f0" identifier + number_literal) , number_literal )))) ;) (expression_statement "UNRECOVERED_JUMPTABLE = (code *)PTR_statusbar_000775c4;" (assignment_expression "UNRECOVERED_JUMPTABLE = (code *)PTR_statusbar_000775c4" identifier = (cast_expression "(code *)PTR_statusbar_000775c4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) }) (else_clause "else {\n    uVar3 = *(uint *)(iVar7 + 4);\n    if (uVar3 < 6) {\n      iVar5 = fsfromline(*(undefined4 *)(iVar7 + 0x28));\n      if (iVar5 == 0) {\n        return;\n      }\n      uVar3 = *(uint *)(iVar7 + 4);\n    }\n    *(undefined4 *)(*(int *)puVar2 + 0x1c) = *(undefined4 *)(iVar7 + 8);\n    if (uVar3 < 0x14) {\n                    \n                    \n      (*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + 0x4fa0)))();\n      return;\n    }\n    statusline(3,PTR_s_d_of_current_line_0007755c + 0x4aac);\n    iVar8 = *(int *)puVar2;\n    uVar4 = *(undefined4 *)(*(int *)(iVar8 + 0x44) + 0x30);\n    *(undefined4 *)(iVar8 + 0x4c) = 0x14;\n    *(undefined4 *)(iVar8 + 0x30) = 0;\n    *(undefined4 *)(iVar8 + 0x44) = uVar4;\n    uVar4 = xplustabs();\n    iVar5 = *(int *)puVar2;\n    uVar6 = *(undefined4 *)(iVar7 + 0x10);\n    *(undefined4 *)(iVar8 + 0x20) = uVar4;\n    *(undefined4 *)(iVar5 + 0x14) = uVar6;\n    UNRECOVERED_JUMPTABLE = (code *)PTR_titlebar_00077664;\n    if (*(int *)(iVar5 + 0x44) != *(int *)(iVar5 + 0x48)) {\n      set_modified();\n      return;\n    }\n    uVar4 = 0;\n    *(undefined1 *)(iVar5 + 0x28) = 0;\n  }" else (compound_statement "{\n    uVar3 = *(uint *)(iVar7 + 4);\n    if (uVar3 < 6) {\n      iVar5 = fsfromline(*(undefined4 *)(iVar7 + 0x28));\n      if (iVar5 == 0) {\n        return;\n      }\n      uVar3 = *(uint *)(iVar7 + 4);\n    }\n    *(undefined4 *)(*(int *)puVar2 + 0x1c) = *(undefined4 *)(iVar7 + 8);\n    if (uVar3 < 0x14) {\n                    \n                    \n      (*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + 0x4fa0)))();\n      return;\n    }\n    statusline(3,PTR_s_d_of_current_line_0007755c + 0x4aac);\n    iVar8 = *(int *)puVar2;\n    uVar4 = *(undefined4 *)(*(int *)(iVar8 + 0x44) + 0x30);\n    *(undefined4 *)(iVar8 + 0x4c) = 0x14;\n    *(undefined4 *)(iVar8 + 0x30) = 0;\n    *(undefined4 *)(iVar8 + 0x44) = uVar4;\n    uVar4 = xplustabs();\n    iVar5 = *(int *)puVar2;\n    uVar6 = *(undefined4 *)(iVar7 + 0x10);\n    *(undefined4 *)(iVar8 + 0x20) = uVar4;\n    *(undefined4 *)(iVar5 + 0x14) = uVar6;\n    UNRECOVERED_JUMPTABLE = (code *)PTR_titlebar_00077664;\n    if (*(int *)(iVar5 + 0x44) != *(int *)(iVar5 + 0x48)) {\n      set_modified();\n      return;\n    }\n    uVar4 = 0;\n    *(undefined1 *)(iVar5 + 0x28) = 0;\n  }" { (expression_statement "uVar3 = *(uint *)(iVar7 + 4);" (assignment_expression "uVar3 = *(uint *)(iVar7 + 4)" identifier = (pointer_expression "*(uint *)(iVar7 + 4)" * (cast_expression "(uint *)(iVar7 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 4)" ( (binary_expression "iVar7 + 4" identifier + number_literal) ))))) ;) (if_statement "if (uVar3 < 6) {\n      iVar5 = fsfromline(*(undefined4 *)(iVar7 + 0x28));\n      if (iVar5 == 0) {\n        return;\n      }\n      uVar3 = *(uint *)(iVar7 + 4);\n    }" if (parenthesized_expression "(uVar3 < 6)" ( (binary_expression "uVar3 < 6" identifier < number_literal) )) (compound_statement "{\n      iVar5 = fsfromline(*(undefined4 *)(iVar7 + 0x28));\n      if (iVar5 == 0) {\n        return;\n      }\n      uVar3 = *(uint *)(iVar7 + 4);\n    }" { (expression_statement "iVar5 = fsfromline(*(undefined4 *)(iVar7 + 0x28));" (assignment_expression "iVar5 = fsfromline(*(undefined4 *)(iVar7 + 0x28))" identifier = (call_expression "fsfromline(*(undefined4 *)(iVar7 + 0x28))" identifier (argument_list "(*(undefined4 *)(iVar7 + 0x28))" ( (pointer_expression "*(undefined4 *)(iVar7 + 0x28)" * (cast_expression "(undefined4 *)(iVar7 + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x28)" ( (binary_expression "iVar7 + 0x28" identifier + number_literal) )))) )))) ;) (if_statement "if (iVar5 == 0) {\n        return;\n      }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n        return;\n      }" { (return_statement "return;" return ;) })) (expression_statement "uVar3 = *(uint *)(iVar7 + 4);" (assignment_expression "uVar3 = *(uint *)(iVar7 + 4)" identifier = (pointer_expression "*(uint *)(iVar7 + 4)" * (cast_expression "(uint *)(iVar7 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 4)" ( (binary_expression "iVar7 + 4" identifier + number_literal) ))))) ;) })) (expression_statement "*(undefined4 *)(*(int *)puVar2 + 0x1c) = *(undefined4 *)(iVar7 + 8);" (assignment_expression "*(undefined4 *)(*(int *)puVar2 + 0x1c) = *(undefined4 *)(iVar7 + 8)" (pointer_expression "*(undefined4 *)(*(int *)puVar2 + 0x1c)" * (cast_expression "(undefined4 *)(*(int *)puVar2 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)puVar2 + 0x1c)" ( (binary_expression "*(int *)puVar2 + 0x1c" (pointer_expression "*(int *)puVar2" * (cast_expression "(int *)puVar2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))) = (pointer_expression "*(undefined4 *)(iVar7 + 8)" * (cast_expression "(undefined4 *)(iVar7 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 8)" ( (binary_expression "iVar7 + 8" identifier + number_literal) ))))) ;) (if_statement "if (uVar3 < 0x14) {\n                    \n                    \n      (*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + 0x4fa0)))();\n      return;\n    }" if (parenthesized_expression "(uVar3 < 0x14)" ( (binary_expression "uVar3 < 0x14" identifier < number_literal) )) (compound_statement "{\n                    \n                    \n      (*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + 0x4fa0)))();\n      return;\n    }" { (expression_statement "(*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + 0x4fa0)))();" (call_expression "(*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + 0x4fa0)))()" (parenthesized_expression "(*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + 0x4fa0)))" ( (pointer_expression "*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + 0x4fa0))" * (cast_expression "(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + 0x4fa0))" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + 0x4fa0))" ( (binary_expression "&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + 0x4fa0)" (pointer_expression "&_gp_1" & identifier) + (pointer_expression "*(int *)(puVar1 + uVar3 * 4 + 0x4fa0)" * (cast_expression "(int *)(puVar1 + uVar3 * 4 + 0x4fa0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + uVar3 * 4 + 0x4fa0)" ( (binary_expression "puVar1 + uVar3 * 4 + 0x4fa0" (binary_expression "puVar1 + uVar3 * 4" identifier + (binary_expression "uVar3 * 4" identifier * number_literal)) + number_literal) ))))) )))) )) (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })) (expression_statement "statusline(3,PTR_s_d_of_current_line_0007755c + 0x4aac);" (call_expression "statusline(3,PTR_s_d_of_current_line_0007755c + 0x4aac)" identifier (argument_list "(3,PTR_s_d_of_current_line_0007755c + 0x4aac)" ( number_literal , (binary_expression "PTR_s_d_of_current_line_0007755c + 0x4aac" identifier + number_literal) ))) ;) (expression_statement "iVar8 = *(int *)puVar2;" (assignment_expression "iVar8 = *(int *)puVar2" identifier = (pointer_expression "*(int *)puVar2" * (cast_expression "(int *)puVar2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "uVar4 = *(undefined4 *)(*(int *)(iVar8 + 0x44) + 0x30);" (assignment_expression "uVar4 = *(undefined4 *)(*(int *)(iVar8 + 0x44) + 0x30)" identifier = (pointer_expression "*(undefined4 *)(*(int *)(iVar8 + 0x44) + 0x30)" * (cast_expression "(undefined4 *)(*(int *)(iVar8 + 0x44) + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar8 + 0x44) + 0x30)" ( (binary_expression "*(int *)(iVar8 + 0x44) + 0x30" (pointer_expression "*(int *)(iVar8 + 0x44)" * (cast_expression "(int *)(iVar8 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x44)" ( (binary_expression "iVar8 + 0x44" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(iVar8 + 0x4c) = 0x14;" (assignment_expression "*(undefined4 *)(iVar8 + 0x4c) = 0x14" (pointer_expression "*(undefined4 *)(iVar8 + 0x4c)" * (cast_expression "(undefined4 *)(iVar8 + 0x4c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x4c)" ( (binary_expression "iVar8 + 0x4c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(iVar8 + 0x30) = 0;" (assignment_expression "*(undefined4 *)(iVar8 + 0x30) = 0" (pointer_expression "*(undefined4 *)(iVar8 + 0x30)" * (cast_expression "(undefined4 *)(iVar8 + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x30)" ( (binary_expression "iVar8 + 0x30" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(iVar8 + 0x44) = uVar4;" (assignment_expression "*(undefined4 *)(iVar8 + 0x44) = uVar4" (pointer_expression "*(undefined4 *)(iVar8 + 0x44)" * (cast_expression "(undefined4 *)(iVar8 + 0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x44)" ( (binary_expression "iVar8 + 0x44" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar4 = xplustabs();" (assignment_expression "uVar4 = xplustabs()" identifier = (call_expression "xplustabs()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar5 = *(int *)puVar2;" (assignment_expression "iVar5 = *(int *)puVar2" identifier = (pointer_expression "*(int *)puVar2" * (cast_expression "(int *)puVar2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "uVar6 = *(undefined4 *)(iVar7 + 0x10);" (assignment_expression "uVar6 = *(undefined4 *)(iVar7 + 0x10)" identifier = (pointer_expression "*(undefined4 *)(iVar7 + 0x10)" * (cast_expression "(undefined4 *)(iVar7 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x10)" ( (binary_expression "iVar7 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(iVar8 + 0x20) = uVar4;" (assignment_expression "*(undefined4 *)(iVar8 + 0x20) = uVar4" (pointer_expression "*(undefined4 *)(iVar8 + 0x20)" * (cast_expression "(undefined4 *)(iVar8 + 0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x20)" ( (binary_expression "iVar8 + 0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(iVar5 + 0x14) = uVar6;" (assignment_expression "*(undefined4 *)(iVar5 + 0x14) = uVar6" (pointer_expression "*(undefined4 *)(iVar5 + 0x14)" * (cast_expression "(undefined4 *)(iVar5 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x14)" ( (binary_expression "iVar5 + 0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "UNRECOVERED_JUMPTABLE = (code *)PTR_titlebar_00077664;" (assignment_expression "UNRECOVERED_JUMPTABLE = (code *)PTR_titlebar_00077664" identifier = (cast_expression "(code *)PTR_titlebar_00077664" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (*(int *)(iVar5 + 0x44) != *(int *)(iVar5 + 0x48)) {\n      set_modified();\n      return;\n    }" if (parenthesized_expression "(*(int *)(iVar5 + 0x44) != *(int *)(iVar5 + 0x48))" ( (binary_expression "*(int *)(iVar5 + 0x44) != *(int *)(iVar5 + 0x48)" (pointer_expression "*(int *)(iVar5 + 0x44)" * (cast_expression "(int *)(iVar5 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x44)" ( (binary_expression "iVar5 + 0x44" identifier + number_literal) )))) != (pointer_expression "*(int *)(iVar5 + 0x48)" * (cast_expression "(int *)(iVar5 + 0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x48)" ( (binary_expression "iVar5 + 0x48" identifier + number_literal) ))))) )) (compound_statement "{\n      set_modified();\n      return;\n    }" { (expression_statement "set_modified();" (call_expression "set_modified()" identifier (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (expression_statement "*(undefined1 *)(iVar5 + 0x28) = 0;" (assignment_expression "*(undefined1 *)(iVar5 + 0x28) = 0" (pointer_expression "*(undefined1 *)(iVar5 + 0x28)" * (cast_expression "(undefined1 *)(iVar5 + 0x28)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x28)" ( (binary_expression "iVar5 + 0x28" identifier + number_literal) )))) = number_literal) ;) }))) (expression_statement "(*UNRECOVERED_JUMPTABLE)(uVar4);" (call_expression "(*UNRECOVERED_JUMPTABLE)(uVar4)" (parenthesized_expression "(*UNRECOVERED_JUMPTABLE)" ( (pointer_expression "*UNRECOVERED_JUMPTABLE" * identifier) )) (argument_list "(uVar4)" ( identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( LIT , (binary_expression IDENT + LIT) , LIT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return ;) })) (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + (binary_expression IDENT * LIT)) + LIT) ))))) )))) )) (argument_list ( ))) ;) (return_statement return ;) })) (expression_statement (call_expression IDENT (argument_list ( LIT , (binary_expression IDENT + LIT) ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_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 TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = 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 TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) 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) )))) = 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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (return_statement return ;) })) (expression_statement (assignment_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 (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT ))) ;) (return_statement return ;) })))
(function_definition "void do_undo(void)\n\n{\n  undefined *puVar1;\n  undefined *puVar2;\n  uint uVar3;\n  undefined4 uVar4;\n  int iVar5;\n  undefined4 uVar6;\n  int iVar7;\n  int iVar8;\n  code *UNRECOVERED_JUMPTABLE;\n  \n  puVar2 = PTR_openfile_0007756c;\n  puVar1 = PTR_s_d_of_current_line_0007755c;\n  iVar7 = *(int *)(*(int *)PTR_openfile_0007756c + 0x44);\n  if (iVar7 == 0) {\n    uVar4 = (*(code *)PTR_dcgettext_000780cc)(0,PTR_s_d_of_current_line_0007755c + 0x49f0,5);\n    UNRECOVERED_JUMPTABLE = (code *)PTR_statusbar_000775c4;\n  }\n  else {\n    uVar3 = *(uint *)(iVar7 + 4);\n    if (uVar3 < 6) {\n      iVar5 = fsfromline(*(undefined4 *)(iVar7 + 0x28));\n      if (iVar5 == 0) {\n        return;\n      }\n      uVar3 = *(uint *)(iVar7 + 4);\n    }\n    *(undefined4 *)(*(int *)puVar2 + 0x1c) = *(undefined4 *)(iVar7 + 8);\n    if (uVar3 < 0x14) {\n                    \n                    \n      (*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + 0x4fa0)))();\n      return;\n    }\n    statusline(3,PTR_s_d_of_current_line_0007755c + 0x4aac);\n    iVar8 = *(int *)puVar2;\n    uVar4 = *(undefined4 *)(*(int *)(iVar8 + 0x44) + 0x30);\n    *(undefined4 *)(iVar8 + 0x4c) = 0x14;\n    *(undefined4 *)(iVar8 + 0x30) = 0;\n    *(undefined4 *)(iVar8 + 0x44) = uVar4;\n    uVar4 = xplustabs();\n    iVar5 = *(int *)puVar2;\n    uVar6 = *(undefined4 *)(iVar7 + 0x10);\n    *(undefined4 *)(iVar8 + 0x20) = uVar4;\n    *(undefined4 *)(iVar5 + 0x14) = uVar6;\n    UNRECOVERED_JUMPTABLE = (code *)PTR_titlebar_00077664;\n    if (*(int *)(iVar5 + 0x44) != *(int *)(iVar5 + 0x48)) {\n      set_modified();\n      return;\n    }\n    uVar4 = 0;\n    *(undefined1 *)(iVar5 + 0x28) = 0;\n  }\n                    \n                    \n  (*UNRECOVERED_JUMPTABLE)(uVar4);\n  return;\n}" (primitive_type "void") (function_declarator "do_undo(void)" (identifier "do_undo") (parameter_list "(void)" (( "(") (parameter_declaration "void" (primitive_type "void")) () ")"))) (compound_statement "{\n  undefined *puVar1;\n  undefined *puVar2;\n  uint uVar3;\n  undefined4 uVar4;\n  int iVar5;\n  undefined4 uVar6;\n  int iVar7;\n  int iVar8;\n  code *UNRECOVERED_JUMPTABLE;\n  \n  puVar2 = PTR_openfile_0007756c;\n  puVar1 = PTR_s_d_of_current_line_0007755c;\n  iVar7 = *(int *)(*(int *)PTR_openfile_0007756c + 0x44);\n  if (iVar7 == 0) {\n    uVar4 = (*(code *)PTR_dcgettext_000780cc)(0,PTR_s_d_of_current_line_0007755c + 0x49f0,5);\n    UNRECOVERED_JUMPTABLE = (code *)PTR_statusbar_000775c4;\n  }\n  else {\n    uVar3 = *(uint *)(iVar7 + 4);\n    if (uVar3 < 6) {\n      iVar5 = fsfromline(*(undefined4 *)(iVar7 + 0x28));\n      if (iVar5 == 0) {\n        return;\n      }\n      uVar3 = *(uint *)(iVar7 + 4);\n    }\n    *(undefined4 *)(*(int *)puVar2 + 0x1c) = *(undefined4 *)(iVar7 + 8);\n    if (uVar3 < 0x14) {\n                    \n                    \n      (*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + 0x4fa0)))();\n      return;\n    }\n    statusline(3,PTR_s_d_of_current_line_0007755c + 0x4aac);\n    iVar8 = *(int *)puVar2;\n    uVar4 = *(undefined4 *)(*(int *)(iVar8 + 0x44) + 0x30);\n    *(undefined4 *)(iVar8 + 0x4c) = 0x14;\n    *(undefined4 *)(iVar8 + 0x30) = 0;\n    *(undefined4 *)(iVar8 + 0x44) = uVar4;\n    uVar4 = xplustabs();\n    iVar5 = *(int *)puVar2;\n    uVar6 = *(undefined4 *)(iVar7 + 0x10);\n    *(undefined4 *)(iVar8 + 0x20) = uVar4;\n    *(undefined4 *)(iVar5 + 0x14) = uVar6;\n    UNRECOVERED_JUMPTABLE = (code *)PTR_titlebar_00077664;\n    if (*(int *)(iVar5 + 0x44) != *(int *)(iVar5 + 0x48)) {\n      set_modified();\n      return;\n    }\n    uVar4 = 0;\n    *(undefined1 *)(iVar5 + 0x28) = 0;\n  }\n                    \n                    \n  (*UNRECOVERED_JUMPTABLE)(uVar4);\n  return;\n}" ({ "{") (declaration "undefined *puVar1;" (type_identifier "undefined") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "undefined *puVar2;" (type_identifier "undefined") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "undefined4 uVar4;" (type_identifier "undefined4") (identifier "uVar4") (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "undefined4 uVar6;" (type_identifier "undefined4") (identifier "uVar6") (; ";")) (declaration "int iVar7;" (primitive_type "int") (identifier "iVar7") (; ";")) (declaration "int iVar8;" (primitive_type "int") (identifier "iVar8") (; ";")) (declaration "code *UNRECOVERED_JUMPTABLE;" (type_identifier "code") (pointer_declarator "*UNRECOVERED_JUMPTABLE" (* "*") (identifier "UNRECOVERED_JUMPTABLE")) (; ";")) (expression_statement "puVar2 = PTR_openfile_0007756c;" (assignment_expression "puVar2 = PTR_openfile_0007756c" (identifier "puVar2") (= "=") (identifier "PTR_openfile_0007756c")) (; ";")) (expression_statement "puVar1 = PTR_s_d_of_current_line_0007755c;" (assignment_expression "puVar1 = PTR_s_d_of_current_line_0007755c" (identifier "puVar1") (= "=") (identifier "PTR_s_d_of_current_line_0007755c")) (; ";")) (expression_statement "iVar7 = *(int *)(*(int *)PTR_openfile_0007756c + 0x44);" (assignment_expression "iVar7 = *(int *)(*(int *)PTR_openfile_0007756c + 0x44)" (identifier "iVar7") (= "=") (pointer_expression "*(int *)(*(int *)PTR_openfile_0007756c + 0x44)" (* "*") (cast_expression "(int *)(*(int *)PTR_openfile_0007756c + 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)PTR_openfile_0007756c + 0x44)" (( "(") (binary_expression "*(int *)PTR_openfile_0007756c + 0x44" (pointer_expression "*(int *)PTR_openfile_0007756c" (* "*") (cast_expression "(int *)PTR_openfile_0007756c" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_openfile_0007756c"))) (+ "+") (number_literal "0x44")) () ")"))))) (; ";")) (if_statement "if (iVar7 == 0) {\n    uVar4 = (*(code *)PTR_dcgettext_000780cc)(0,PTR_s_d_of_current_line_0007755c + 0x49f0,5);\n    UNRECOVERED_JUMPTABLE = (code *)PTR_statusbar_000775c4;\n  }\n  else {\n    uVar3 = *(uint *)(iVar7 + 4);\n    if (uVar3 < 6) {\n      iVar5 = fsfromline(*(undefined4 *)(iVar7 + 0x28));\n      if (iVar5 == 0) {\n        return;\n      }\n      uVar3 = *(uint *)(iVar7 + 4);\n    }\n    *(undefined4 *)(*(int *)puVar2 + 0x1c) = *(undefined4 *)(iVar7 + 8);\n    if (uVar3 < 0x14) {\n                    \n                    \n      (*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + 0x4fa0)))();\n      return;\n    }\n    statusline(3,PTR_s_d_of_current_line_0007755c + 0x4aac);\n    iVar8 = *(int *)puVar2;\n    uVar4 = *(undefined4 *)(*(int *)(iVar8 + 0x44) + 0x30);\n    *(undefined4 *)(iVar8 + 0x4c) = 0x14;\n    *(undefined4 *)(iVar8 + 0x30) = 0;\n    *(undefined4 *)(iVar8 + 0x44) = uVar4;\n    uVar4 = xplustabs();\n    iVar5 = *(int *)puVar2;\n    uVar6 = *(undefined4 *)(iVar7 + 0x10);\n    *(undefined4 *)(iVar8 + 0x20) = uVar4;\n    *(undefined4 *)(iVar5 + 0x14) = uVar6;\n    UNRECOVERED_JUMPTABLE = (code *)PTR_titlebar_00077664;\n    if (*(int *)(iVar5 + 0x44) != *(int *)(iVar5 + 0x48)) {\n      set_modified();\n      return;\n    }\n    uVar4 = 0;\n    *(undefined1 *)(iVar5 + 0x28) = 0;\n  }" (if "if") (parenthesized_expression "(iVar7 == 0)" (( "(") (binary_expression "iVar7 == 0" (identifier "iVar7") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    uVar4 = (*(code *)PTR_dcgettext_000780cc)(0,PTR_s_d_of_current_line_0007755c + 0x49f0,5);\n    UNRECOVERED_JUMPTABLE = (code *)PTR_statusbar_000775c4;\n  }" ({ "{") (expression_statement "uVar4 = (*(code *)PTR_dcgettext_000780cc)(0,PTR_s_d_of_current_line_0007755c + 0x49f0,5);" (assignment_expression "uVar4 = (*(code *)PTR_dcgettext_000780cc)(0,PTR_s_d_of_current_line_0007755c + 0x49f0,5)" (identifier "uVar4") (= "=") (call_expression "(*(code *)PTR_dcgettext_000780cc)(0,PTR_s_d_of_current_line_0007755c + 0x49f0,5)" (parenthesized_expression "(*(code *)PTR_dcgettext_000780cc)" (( "(") (pointer_expression "*(code *)PTR_dcgettext_000780cc" (* "*") (cast_expression "(code *)PTR_dcgettext_000780cc" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_dcgettext_000780cc"))) () ")")) (argument_list "(0,PTR_s_d_of_current_line_0007755c + 0x49f0,5)" (( "(") (number_literal "0") (, ",") (binary_expression "PTR_s_d_of_current_line_0007755c + 0x49f0" (identifier "PTR_s_d_of_current_line_0007755c") (+ "+") (number_literal "0x49f0")) (, ",") (number_literal "5") () ")")))) (; ";")) (expression_statement "UNRECOVERED_JUMPTABLE = (code *)PTR_statusbar_000775c4;" (assignment_expression "UNRECOVERED_JUMPTABLE = (code *)PTR_statusbar_000775c4" (identifier "UNRECOVERED_JUMPTABLE") (= "=") (cast_expression "(code *)PTR_statusbar_000775c4" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_statusbar_000775c4"))) (; ";")) (} "}")) (else_clause "else {\n    uVar3 = *(uint *)(iVar7 + 4);\n    if (uVar3 < 6) {\n      iVar5 = fsfromline(*(undefined4 *)(iVar7 + 0x28));\n      if (iVar5 == 0) {\n        return;\n      }\n      uVar3 = *(uint *)(iVar7 + 4);\n    }\n    *(undefined4 *)(*(int *)puVar2 + 0x1c) = *(undefined4 *)(iVar7 + 8);\n    if (uVar3 < 0x14) {\n                    \n                    \n      (*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + 0x4fa0)))();\n      return;\n    }\n    statusline(3,PTR_s_d_of_current_line_0007755c + 0x4aac);\n    iVar8 = *(int *)puVar2;\n    uVar4 = *(undefined4 *)(*(int *)(iVar8 + 0x44) + 0x30);\n    *(undefined4 *)(iVar8 + 0x4c) = 0x14;\n    *(undefined4 *)(iVar8 + 0x30) = 0;\n    *(undefined4 *)(iVar8 + 0x44) = uVar4;\n    uVar4 = xplustabs();\n    iVar5 = *(int *)puVar2;\n    uVar6 = *(undefined4 *)(iVar7 + 0x10);\n    *(undefined4 *)(iVar8 + 0x20) = uVar4;\n    *(undefined4 *)(iVar5 + 0x14) = uVar6;\n    UNRECOVERED_JUMPTABLE = (code *)PTR_titlebar_00077664;\n    if (*(int *)(iVar5 + 0x44) != *(int *)(iVar5 + 0x48)) {\n      set_modified();\n      return;\n    }\n    uVar4 = 0;\n    *(undefined1 *)(iVar5 + 0x28) = 0;\n  }" (else "else") (compound_statement "{\n    uVar3 = *(uint *)(iVar7 + 4);\n    if (uVar3 < 6) {\n      iVar5 = fsfromline(*(undefined4 *)(iVar7 + 0x28));\n      if (iVar5 == 0) {\n        return;\n      }\n      uVar3 = *(uint *)(iVar7 + 4);\n    }\n    *(undefined4 *)(*(int *)puVar2 + 0x1c) = *(undefined4 *)(iVar7 + 8);\n    if (uVar3 < 0x14) {\n                    \n                    \n      (*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + 0x4fa0)))();\n      return;\n    }\n    statusline(3,PTR_s_d_of_current_line_0007755c + 0x4aac);\n    iVar8 = *(int *)puVar2;\n    uVar4 = *(undefined4 *)(*(int *)(iVar8 + 0x44) + 0x30);\n    *(undefined4 *)(iVar8 + 0x4c) = 0x14;\n    *(undefined4 *)(iVar8 + 0x30) = 0;\n    *(undefined4 *)(iVar8 + 0x44) = uVar4;\n    uVar4 = xplustabs();\n    iVar5 = *(int *)puVar2;\n    uVar6 = *(undefined4 *)(iVar7 + 0x10);\n    *(undefined4 *)(iVar8 + 0x20) = uVar4;\n    *(undefined4 *)(iVar5 + 0x14) = uVar6;\n    UNRECOVERED_JUMPTABLE = (code *)PTR_titlebar_00077664;\n    if (*(int *)(iVar5 + 0x44) != *(int *)(iVar5 + 0x48)) {\n      set_modified();\n      return;\n    }\n    uVar4 = 0;\n    *(undefined1 *)(iVar5 + 0x28) = 0;\n  }" ({ "{") (expression_statement "uVar3 = *(uint *)(iVar7 + 4);" (assignment_expression "uVar3 = *(uint *)(iVar7 + 4)" (identifier "uVar3") (= "=") (pointer_expression "*(uint *)(iVar7 + 4)" (* "*") (cast_expression "(uint *)(iVar7 + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + 4)" (( "(") (binary_expression "iVar7 + 4" (identifier "iVar7") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (if_statement "if (uVar3 < 6) {\n      iVar5 = fsfromline(*(undefined4 *)(iVar7 + 0x28));\n      if (iVar5 == 0) {\n        return;\n      }\n      uVar3 = *(uint *)(iVar7 + 4);\n    }" (if "if") (parenthesized_expression "(uVar3 < 6)" (( "(") (binary_expression "uVar3 < 6" (identifier "uVar3") (< "<") (number_literal "6")) () ")")) (compound_statement "{\n      iVar5 = fsfromline(*(undefined4 *)(iVar7 + 0x28));\n      if (iVar5 == 0) {\n        return;\n      }\n      uVar3 = *(uint *)(iVar7 + 4);\n    }" ({ "{") (expression_statement "iVar5 = fsfromline(*(undefined4 *)(iVar7 + 0x28));" (assignment_expression "iVar5 = fsfromline(*(undefined4 *)(iVar7 + 0x28))" (identifier "iVar5") (= "=") (call_expression "fsfromline(*(undefined4 *)(iVar7 + 0x28))" (identifier "fsfromline") (argument_list "(*(undefined4 *)(iVar7 + 0x28))" (( "(") (pointer_expression "*(undefined4 *)(iVar7 + 0x28)" (* "*") (cast_expression "(undefined4 *)(iVar7 + 0x28)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + 0x28)" (( "(") (binary_expression "iVar7 + 0x28" (identifier "iVar7") (+ "+") (number_literal "0x28")) () ")")))) () ")")))) (; ";")) (if_statement "if (iVar5 == 0) {\n        return;\n      }" (if "if") (parenthesized_expression "(iVar5 == 0)" (( "(") (binary_expression "iVar5 == 0" (identifier "iVar5") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        return;\n      }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "uVar3 = *(uint *)(iVar7 + 4);" (assignment_expression "uVar3 = *(uint *)(iVar7 + 4)" (identifier "uVar3") (= "=") (pointer_expression "*(uint *)(iVar7 + 4)" (* "*") (cast_expression "(uint *)(iVar7 + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + 4)" (( "(") (binary_expression "iVar7 + 4" (identifier "iVar7") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (} "}"))) (expression_statement "*(undefined4 *)(*(int *)puVar2 + 0x1c) = *(undefined4 *)(iVar7 + 8);" (assignment_expression "*(undefined4 *)(*(int *)puVar2 + 0x1c) = *(undefined4 *)(iVar7 + 8)" (pointer_expression "*(undefined4 *)(*(int *)puVar2 + 0x1c)" (* "*") (cast_expression "(undefined4 *)(*(int *)puVar2 + 0x1c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)puVar2 + 0x1c)" (( "(") (binary_expression "*(int *)puVar2 + 0x1c" (pointer_expression "*(int *)puVar2" (* "*") (cast_expression "(int *)puVar2" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar2"))) (+ "+") (number_literal "0x1c")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(iVar7 + 8)" (* "*") (cast_expression "(undefined4 *)(iVar7 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + 8)" (( "(") (binary_expression "iVar7 + 8" (identifier "iVar7") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (if_statement "if (uVar3 < 0x14) {\n                    \n                    \n      (*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + 0x4fa0)))();\n      return;\n    }" (if "if") (parenthesized_expression "(uVar3 < 0x14)" (( "(") (binary_expression "uVar3 < 0x14" (identifier "uVar3") (< "<") (number_literal "0x14")) () ")")) (compound_statement "{\n                    \n                    \n      (*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + 0x4fa0)))();\n      return;\n    }" ({ "{") (expression_statement "(*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + 0x4fa0)))();" (call_expression "(*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + 0x4fa0)))()" (parenthesized_expression "(*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + 0x4fa0)))" (( "(") (pointer_expression "*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + 0x4fa0))" (* "*") (cast_expression "(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + 0x4fa0))" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + 0x4fa0))" (( "(") (binary_expression "&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + 0x4fa0)" (pointer_expression "&_gp_1" (& "&") (identifier "_gp_1")) (+ "+") (pointer_expression "*(int *)(puVar1 + uVar3 * 4 + 0x4fa0)" (* "*") (cast_expression "(int *)(puVar1 + uVar3 * 4 + 0x4fa0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar1 + uVar3 * 4 + 0x4fa0)" (( "(") (binary_expression "puVar1 + uVar3 * 4 + 0x4fa0" (binary_expression "puVar1 + uVar3 * 4" (identifier "puVar1") (+ "+") (binary_expression "uVar3 * 4" (identifier "uVar3") (* "*") (number_literal "4"))) (+ "+") (number_literal "0x4fa0")) () ")"))))) () ")")))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "statusline(3,PTR_s_d_of_current_line_0007755c + 0x4aac);" (call_expression "statusline(3,PTR_s_d_of_current_line_0007755c + 0x4aac)" (identifier "statusline") (argument_list "(3,PTR_s_d_of_current_line_0007755c + 0x4aac)" (( "(") (number_literal "3") (, ",") (binary_expression "PTR_s_d_of_current_line_0007755c + 0x4aac" (identifier "PTR_s_d_of_current_line_0007755c") (+ "+") (number_literal "0x4aac")) () ")"))) (; ";")) (expression_statement "iVar8 = *(int *)puVar2;" (assignment_expression "iVar8 = *(int *)puVar2" (identifier "iVar8") (= "=") (pointer_expression "*(int *)puVar2" (* "*") (cast_expression "(int *)puVar2" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar2")))) (; ";")) (expression_statement "uVar4 = *(undefined4 *)(*(int *)(iVar8 + 0x44) + 0x30);" (assignment_expression "uVar4 = *(undefined4 *)(*(int *)(iVar8 + 0x44) + 0x30)" (identifier "uVar4") (= "=") (pointer_expression "*(undefined4 *)(*(int *)(iVar8 + 0x44) + 0x30)" (* "*") (cast_expression "(undefined4 *)(*(int *)(iVar8 + 0x44) + 0x30)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar8 + 0x44) + 0x30)" (( "(") (binary_expression "*(int *)(iVar8 + 0x44) + 0x30" (pointer_expression "*(int *)(iVar8 + 0x44)" (* "*") (cast_expression "(int *)(iVar8 + 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x44)" (( "(") (binary_expression "iVar8 + 0x44" (identifier "iVar8") (+ "+") (number_literal "0x44")) () ")")))) (+ "+") (number_literal "0x30")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(iVar8 + 0x4c) = 0x14;" (assignment_expression "*(undefined4 *)(iVar8 + 0x4c) = 0x14" (pointer_expression "*(undefined4 *)(iVar8 + 0x4c)" (* "*") (cast_expression "(undefined4 *)(iVar8 + 0x4c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x4c)" (( "(") (binary_expression "iVar8 + 0x4c" (identifier "iVar8") (+ "+") (number_literal "0x4c")) () ")")))) (= "=") (number_literal "0x14")) (; ";")) (expression_statement "*(undefined4 *)(iVar8 + 0x30) = 0;" (assignment_expression "*(undefined4 *)(iVar8 + 0x30) = 0" (pointer_expression "*(undefined4 *)(iVar8 + 0x30)" (* "*") (cast_expression "(undefined4 *)(iVar8 + 0x30)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x30)" (( "(") (binary_expression "iVar8 + 0x30" (identifier "iVar8") (+ "+") (number_literal "0x30")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(iVar8 + 0x44) = uVar4;" (assignment_expression "*(undefined4 *)(iVar8 + 0x44) = uVar4" (pointer_expression "*(undefined4 *)(iVar8 + 0x44)" (* "*") (cast_expression "(undefined4 *)(iVar8 + 0x44)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x44)" (( "(") (binary_expression "iVar8 + 0x44" (identifier "iVar8") (+ "+") (number_literal "0x44")) () ")")))) (= "=") (identifier "uVar4")) (; ";")) (expression_statement "uVar4 = xplustabs();" (assignment_expression "uVar4 = xplustabs()" (identifier "uVar4") (= "=") (call_expression "xplustabs()" (identifier "xplustabs") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "iVar5 = *(int *)puVar2;" (assignment_expression "iVar5 = *(int *)puVar2" (identifier "iVar5") (= "=") (pointer_expression "*(int *)puVar2" (* "*") (cast_expression "(int *)puVar2" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar2")))) (; ";")) (expression_statement "uVar6 = *(undefined4 *)(iVar7 + 0x10);" (assignment_expression "uVar6 = *(undefined4 *)(iVar7 + 0x10)" (identifier "uVar6") (= "=") (pointer_expression "*(undefined4 *)(iVar7 + 0x10)" (* "*") (cast_expression "(undefined4 *)(iVar7 + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + 0x10)" (( "(") (binary_expression "iVar7 + 0x10" (identifier "iVar7") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(iVar8 + 0x20) = uVar4;" (assignment_expression "*(undefined4 *)(iVar8 + 0x20) = uVar4" (pointer_expression "*(undefined4 *)(iVar8 + 0x20)" (* "*") (cast_expression "(undefined4 *)(iVar8 + 0x20)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x20)" (( "(") (binary_expression "iVar8 + 0x20" (identifier "iVar8") (+ "+") (number_literal "0x20")) () ")")))) (= "=") (identifier "uVar4")) (; ";")) (expression_statement "*(undefined4 *)(iVar5 + 0x14) = uVar6;" (assignment_expression "*(undefined4 *)(iVar5 + 0x14) = uVar6" (pointer_expression "*(undefined4 *)(iVar5 + 0x14)" (* "*") (cast_expression "(undefined4 *)(iVar5 + 0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x14)" (( "(") (binary_expression "iVar5 + 0x14" (identifier "iVar5") (+ "+") (number_literal "0x14")) () ")")))) (= "=") (identifier "uVar6")) (; ";")) (expression_statement "UNRECOVERED_JUMPTABLE = (code *)PTR_titlebar_00077664;" (assignment_expression "UNRECOVERED_JUMPTABLE = (code *)PTR_titlebar_00077664" (identifier "UNRECOVERED_JUMPTABLE") (= "=") (cast_expression "(code *)PTR_titlebar_00077664" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_titlebar_00077664"))) (; ";")) (if_statement "if (*(int *)(iVar5 + 0x44) != *(int *)(iVar5 + 0x48)) {\n      set_modified();\n      return;\n    }" (if "if") (parenthesized_expression "(*(int *)(iVar5 + 0x44) != *(int *)(iVar5 + 0x48))" (( "(") (binary_expression "*(int *)(iVar5 + 0x44) != *(int *)(iVar5 + 0x48)" (pointer_expression "*(int *)(iVar5 + 0x44)" (* "*") (cast_expression "(int *)(iVar5 + 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x44)" (( "(") (binary_expression "iVar5 + 0x44" (identifier "iVar5") (+ "+") (number_literal "0x44")) () ")")))) (!= "!=") (pointer_expression "*(int *)(iVar5 + 0x48)" (* "*") (cast_expression "(int *)(iVar5 + 0x48)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x48)" (( "(") (binary_expression "iVar5 + 0x48" (identifier "iVar5") (+ "+") (number_literal "0x48")) () ")"))))) () ")")) (compound_statement "{\n      set_modified();\n      return;\n    }" ({ "{") (expression_statement "set_modified();" (call_expression "set_modified()" (identifier "set_modified") (argument_list "()" (( "(") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" (identifier "uVar4") (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined1 *)(iVar5 + 0x28) = 0;" (assignment_expression "*(undefined1 *)(iVar5 + 0x28) = 0" (pointer_expression "*(undefined1 *)(iVar5 + 0x28)" (* "*") (cast_expression "(undefined1 *)(iVar5 + 0x28)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x28)" (( "(") (binary_expression "iVar5 + 0x28" (identifier "iVar5") (+ "+") (number_literal "0x28")) () ")")))) (= "=") (number_literal "0")) (; ";")) (} "}")))) (expression_statement "(*UNRECOVERED_JUMPTABLE)(uVar4);" (call_expression "(*UNRECOVERED_JUMPTABLE)(uVar4)" (parenthesized_expression "(*UNRECOVERED_JUMPTABLE)" (( "(") (pointer_expression "*UNRECOVERED_JUMPTABLE" (* "*") (identifier "UNRECOVERED_JUMPTABLE")) () ")")) (argument_list "(uVar4)" (( "(") (identifier "uVar4") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Unknown calling convention -- yet parameter storage is locked */

void function_1(void)

{
  type_1 *var_6;
  type_1 *puVar2;
  type_2 var_3;
  type_3 *var_5;
  type_4 uVar5;
  size_t sVar6;
  int var_10;
  int var_1;
  int var_8;
  type_5 *UNRECOVERED_JUMPTABLE;
  
  puVar2 = PTR_openfile_0007756c;
  var_6 = var_2;
  var_1 = *(int *)(*(int *)PTR_openfile_0007756c + 0x44);
  if (var_1 == 0) {
    uVar5 = (*(type_5 *)PTR_dcgettext_000780cc)(0,var_2 + 0x49f0,5);
    UNRECOVERED_JUMPTABLE = (type_5 *)PTR_statusbar_000775c4;
  }
  else {
    var_3 = *(type_2 *)(var_1 + 4);
    if (var_3 < 6) {
      var_5 = var_4(*(ssize_t *)(var_1 + 0x28));
      if (var_5 == (type_3 *)0x0) {
        return;
      }
      var_3 = *(type_2 *)(var_1 + 4);
    }
    *(type_4 *)(*(int *)puVar2 + 0x1c) = *(type_4 *)(var_1 + 8);
    if (var_3 < 0x14) {
                    /* WARNING: Could not emulate address calculation at 0x0003a82c */
                    /* WARNING: Treating indirect jump as call */
      (*(type_5 *)(&_gp + *(int *)(var_6 + var_3 * 4 + 0x4fa0)))();
      return;
    }
    var_7(ALERT,var_2 + 0x4aac);
    var_8 = *(int *)puVar2;
    uVar5 = *(type_4 *)(*(int *)(var_8 + 0x44) + 0x30);
    *(type_4 *)(var_8 + 0x4c) = 0x14;
    *(type_4 *)(var_8 + 0x30) = 0;
    *(type_4 *)(var_8 + 0x44) = uVar5;
    sVar6 = var_9();
    var_10 = *(int *)puVar2;
    uVar5 = *(type_4 *)(var_1 + 0x10);
    *(size_t *)(var_8 + 0x20) = sVar6;
    *(type_4 *)(var_10 + 0x14) = uVar5;
    UNRECOVERED_JUMPTABLE = (type_5 *)PTR_titlebar_00077664;
    if (*(int *)(var_10 + 0x44) != *(int *)(var_10 + 0x48)) {
      var_11();
      return;
    }
    uVar5 = 0;
    *(type_6 *)(var_10 + 0x28) = 0;
  }
                    /* WARNING: Could not recover jumptable at 0x0003aff4. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (*UNRECOVERED_JUMPTABLE)(uVar5);
  return;
}


(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type)))) body: (compound_statement (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) 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: (pointer_declarator declarator: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))) right: (number_literal))))))) (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: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (number_literal) (binary_expression left: (identifier) right: (number_literal)) (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))))) alternative: (else_clause (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))))))) (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 (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))))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))) right: (number_literal))))) 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))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)))))))))) arguments: (argument_list))) (return_statement))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) 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: (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: (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: (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)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (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: (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (return_statement))) (expression_statement (assignment_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 (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier)))) (return_statement))))

void MASKED(void)

{
  undefined *puVar1;
  undefined *puVar2;
  uint uVar3;
  undefined4 uVar4;
  int iVar5;
  undefined4 uVar6;
  int iVar7;
  int iVar8;
  code *UNRECOVERED_JUMPTABLE;
  
  puVar2 = PTR_openfile_0007756c;
  puVar1 = PTR_s_d_of_current_line_0007755c;
  iVar7 = *(int *)(*(int *)PTR_openfile_0007756c + 0x44);
  if (iVar7 == 0) {
    uVar4 = (*(code *)PTR_dcgettext_000780cc)(0,PTR_s_d_of_current_line_0007755c + 0x49f0,5);
    UNRECOVERED_JUMPTABLE = (code *)PTR_statusbar_000775c4;
  }
  else {
    uVar3 = *(uint *)(iVar7 + 4);
    if (uVar3 < 6) {
      iVar5 = fsfromline(*(undefined4 *)(iVar7 + 0x28));
      if (iVar5 == 0) {
        return;
      }
      uVar3 = *(uint *)(iVar7 + 4);
    }
    *(undefined4 *)(*(int *)puVar2 + 0x1c) = *(undefined4 *)(iVar7 + 8);
    if (uVar3 < 0x14) {
                    /* WARNING: Could not emulate address calculation at 0x0003a82c */
                    /* WARNING: Treating indirect jump as call */
      (*(code *)(&_gp_1 + *(int *)(puVar1 + uVar3 * 4 + 0x4fa0)))();
      return;
    }
    statusline(3,PTR_s_d_of_current_line_0007755c + 0x4aac);
    iVar8 = *(int *)puVar2;
    uVar4 = *(undefined4 *)(*(int *)(iVar8 + 0x44) + 0x30);
    *(undefined4 *)(iVar8 + 0x4c) = 0x14;
    *(undefined4 *)(iVar8 + 0x30) = 0;
    *(undefined4 *)(iVar8 + 0x44) = uVar4;
    uVar4 = xplustabs();
    iVar5 = *(int *)puVar2;
    uVar6 = *(undefined4 *)(iVar7 + 0x10);
    *(undefined4 *)(iVar8 + 0x20) = uVar4;
    *(undefined4 *)(iVar5 + 0x14) = uVar6;
    UNRECOVERED_JUMPTABLE = (code *)PTR_titlebar_00077664;
    if (*(int *)(iVar5 + 0x44) != *(int *)(iVar5 + 0x48)) {
      set_modified();
      return;
    }
    uVar4 = 0;
    *(undefined1 *)(iVar5 + 0x28) = 0;
  }
                    /* WARNING: Could not recover jumptable at 0x0003aff4. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (*UNRECOVERED_JUMPTABLE)(uVar4);
  return;
}

