
void hmacmd5_key(void *handle,void *keyv,int len)

{
  undefined *puVar1;
  int iVar2;
  byte *pbVar3;
  byte *p;
  undefined1 *keyv_00;
  byte *pbVar4;
  byte *pbVar5;
  byte *pbVar6;
  uchar foo [64];
  
  puVar1 = PTR___stack_chk_guard_000b2f04;
  p = foo;
  iVar2 = *(int *)PTR___stack_chk_guard_000b2f04;
  (*(code *)PTR_memset_000b2e24)(p,0x36,0x40);
  if (len < 1) {
    *(undefined4 *)((int)handle + 0x50) = 0;
    *(undefined4 *)((int)handle + 0x58) = 0;
    *(undefined4 *)((int)handle + 0x54) = 0;
    *(undefined4 *)handle = 0x67452301;
    *(undefined4 *)((int)handle + 4) = 0xefcdab89;
    *(undefined4 *)((int)handle + 8) = 0x98badcfe;
    *(undefined4 *)((int)handle + 0xc) = 0x10325476;
    MD5Update((MD5Context *)handle,p,0x40);
    (*(code *)PTR_memset_000b2e24)(p,0x5c,0x40);
  }
  else {
    pbVar6 = (byte *)((int)keyv + 0x40);
    pbVar5 = (byte *)((int)keyv + len + -1);
    pbVar4 = (byte *)keyv;
    pbVar3 = p;
    do {
      *pbVar3 = *pbVar3 ^ *pbVar4;
      if (pbVar4 == pbVar5) break;
      pbVar4 = pbVar4 + 1;
      pbVar3 = pbVar3 + 1;
    } while (pbVar4 != pbVar6);
    *(undefined4 *)((int)handle + 0x50) = 0;
    *(undefined4 *)((int)handle + 0x58) = 0;
    *(undefined4 *)((int)handle + 0x54) = 0;
    *(undefined4 *)handle = 0x67452301;
    *(undefined4 *)((int)handle + 4) = 0xefcdab89;
    *(undefined4 *)((int)handle + 8) = 0x98badcfe;
    *(undefined4 *)((int)handle + 0xc) = 0x10325476;
    MD5Update((MD5Context *)handle,p,0x40);
    (*(code *)PTR_memset_000b2e24)(p,0x5c,0x40);
    pbVar4 = p;
                    /* WARNING: Load size is inaccurate */
    while (*pbVar4 = foo[0] ^ *keyv, (byte *)keyv != pbVar5) {
      keyv = (void *)((int)keyv + 1);
      pbVar4 = pbVar4 + 1;
      if ((byte *)keyv == pbVar6) break;
      foo[0] = *pbVar4;
    }
  }
  *(undefined4 *)((int)handle + 0xac) = 0;
  *(undefined4 *)((int)handle + 0xb4) = 0;
  *(undefined4 *)((int)handle + 0xb0) = 0;
  *(undefined4 *)((int)handle + 0x5c) = 0x67452301;
  *(undefined4 *)((int)handle + 0x60) = 0xefcdab89;
  *(undefined4 *)((int)handle + 100) = 0x98badcfe;
  *(undefined4 *)((int)handle + 0x68) = 0x10325476;
  MD5Update((MD5Context *)((int)handle + 0x5c),p,0x40);
  keyv_00 = &DAT_00000040;
  (*(code *)PTR_smemclr_000b2460)();
  if (iVar2 != *(int *)puVar1) {
    (*(code *)PTR___stack_chk_fail_000b2ed8)();
    hmacmd5_key(p,keyv_00,0x10);
    return;
  }
  return;
}



void hmacmd5_key(byte *param_1,byte *param_2,byte *param_3)

{
  byte bVar1;
  byte *pbVar2;
  byte *pbVar3;
  byte *pbVar4;
  byte *unaff_s0;
  byte *unaff_s1;
  byte *unaff_s2;
  int *unaff_s3;
  byte *unaff_s4;
  byte *unaff_s5;
  byte *unaff_s6;
  undefined4 unaff_s7;
  code *pcVar5;
  code *pcVar6;
  int iVar7;
  undefined4 unaff_retaddr;
  undefined1 auStackX_0 [16];
  
  pcVar6 = hmacmd5_key;
  do {
    pbVar3 = param_1;
    pcVar5 = *(code **)(&LAB_000487cc + (int)pcVar6);
    *(int **)((int)register0x00000074 + -0x18) = unaff_s3;
    unaff_s3 = *(int **)(pcVar6 + 0x488ac);
    *(byte **)((int)register0x00000074 + -0x1c) = unaff_s2;
    unaff_s2 = (byte *)((int)register0x00000074 + -0x6c);
    *(byte **)((int)register0x00000074 + -0x14) = unaff_s4;
    *(byte **)((int)register0x00000074 + -0x24) = unaff_s0;
    *(code **)((int)register0x00000074 + -0x78) = pcVar6 + 0x4fd18;
    *(byte **)((int)register0x00000074 + -0xc) = unaff_s6;
    *(undefined4 *)((int)register0x00000074 + -4) = unaff_retaddr;
    *(undefined4 *)((int)register0x00000074 + -8) = unaff_s7;
    *(byte **)((int)register0x00000074 + -0x10) = unaff_s5;
    *(byte **)((int)register0x00000074 + -0x20) = unaff_s1;
    *(int *)((int)register0x00000074 + -0x2c) = *unaff_s3;
    (*pcVar5)(unaff_s2,0x36,0x40);
    iVar7 = *(int *)((int)register0x00000074 + -0x78);
    if ((int)param_3 < 1) {
      unaff_s7 = *(undefined4 *)(iVar7 + -31000);
      pbVar3[0x50] = 0;
      pbVar3[0x51] = 0;
      pbVar3[0x52] = 0;
      pbVar3[0x53] = 0;
      pbVar3[0x58] = 0;
      pbVar3[0x59] = 0;
      pbVar3[0x5a] = 0;
      pbVar3[0x5b] = 0;
      pbVar3[0x54] = 0;
      pbVar3[0x55] = 0;
      pbVar3[0x56] = 0;
      pbVar3[0x57] = 0;
      pbVar3[0] = 0x67;
      pbVar3[1] = 0x45;
      pbVar3[2] = 0x23;
      pbVar3[3] = 1;
      pbVar3[4] = 0xef;
      pbVar3[5] = 0xcd;
      pbVar3[6] = 0xab;
      pbVar3[7] = 0x89;
      pbVar3[8] = 0x98;
      pbVar3[9] = 0xba;
      pbVar3[10] = 0xdc;
      pbVar3[0xb] = 0xfe;
      pbVar3[0xc] = 0x10;
      pbVar3[0xd] = 0x32;
      pbVar3[0xe] = 0x54;
      pbVar3[0xf] = 0x76;
      MD5Update(pbVar3,unaff_s2,0x40);
      (**(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x754c))(unaff_s2,0x5c,0x40);
      unaff_s0 = param_2;
      unaff_s4 = param_3;
    }
    else {
      unaff_s5 = param_2 + 0x40;
      unaff_s4 = param_2 + (int)(param_3 + -1);
      pbVar2 = param_2;
      pbVar4 = unaff_s2;
      do {
        *pbVar4 = *pbVar4 ^ *pbVar2;
        if (pbVar2 == unaff_s4) break;
        pbVar2 = pbVar2 + 1;
        pbVar4 = pbVar4 + 1;
      } while (pbVar2 != unaff_s5);
      unaff_s7 = *(undefined4 *)(iVar7 + -31000);
      pbVar3[0x50] = 0;
      pbVar3[0x51] = 0;
      pbVar3[0x52] = 0;
      pbVar3[0x53] = 0;
      pbVar3[0x58] = 0;
      pbVar3[0x59] = 0;
      pbVar3[0x5a] = 0;
      pbVar3[0x5b] = 0;
      pbVar3[0x54] = 0;
      pbVar3[0x55] = 0;
      pbVar3[0x56] = 0;
      pbVar3[0x57] = 0;
      pbVar3[0] = 0x67;
      pbVar3[1] = 0x45;
      pbVar3[2] = 0x23;
      pbVar3[3] = 1;
      pbVar3[4] = 0xef;
      pbVar3[5] = 0xcd;
      pbVar3[6] = 0xab;
      pbVar3[7] = 0x89;
      pbVar3[8] = 0x98;
      pbVar3[9] = 0xba;
      pbVar3[10] = 0xdc;
      pbVar3[0xb] = 0xfe;
      pbVar3[0xc] = 0x10;
      pbVar3[0xd] = 0x32;
      pbVar3[0xe] = 0x54;
      pbVar3[0xf] = 0x76;
      MD5Update(pbVar3,unaff_s2,0x40);
      (**(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x754c))(unaff_s2,0x5c,0x40);
      bVar1 = *unaff_s2;
      unaff_s1 = unaff_s2;
      while (*unaff_s1 = bVar1 ^ *param_2, unaff_s0 = param_2, param_2 != unaff_s4) {
        param_2 = param_2 + 1;
        unaff_s1 = unaff_s1 + 1;
        unaff_s0 = param_2;
        if (param_2 == unaff_s5) break;
        bVar1 = *unaff_s1;
      }
    }
    pbVar3[0xac] = 0;
    pbVar3[0xad] = 0;
    pbVar3[0xae] = 0;
    pbVar3[0xaf] = 0;
    pbVar3[0xb4] = 0;
    pbVar3[0xb5] = 0;
    pbVar3[0xb6] = 0;
    pbVar3[0xb7] = 0;
    pbVar3[0xb0] = 0;
    pbVar3[0xb1] = 0;
    pbVar3[0xb2] = 0;
    pbVar3[0xb3] = 0;
    pbVar3[0x5c] = 0x67;
    pbVar3[0x5d] = 0x45;
    pbVar3[0x5e] = 0x23;
    pbVar3[0x5f] = 1;
    pbVar3[0x60] = 0xef;
    pbVar3[0x61] = 0xcd;
    pbVar3[0x62] = 0xab;
    pbVar3[99] = 0x89;
    pbVar3[100] = 0x98;
    pbVar3[0x65] = 0xba;
    pbVar3[0x66] = 0xdc;
    pbVar3[0x67] = 0xfe;
    pbVar3[0x68] = 0x10;
    pbVar3[0x69] = 0x32;
    pbVar3[0x6a] = 0x54;
    pbVar3[0x6b] = 0x76;
    MD5Update(pbVar3 + 0x5c,unaff_s2,0x40);
    param_2 = &DAT_00000040;
    param_1 = unaff_s2;
    (**(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x7f10))();
    if (*(int *)((int)register0x00000074 + -0x2c) == *unaff_s3) {
      return;
    }
    pcVar6 = *(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x7498);
    unaff_retaddr = 0x6a8bc;
    (*pcVar6)();
    pcVar6 = *(code **)(pcVar6 + 0x47c48);
    param_3 = &DAT_00000010;
    unaff_s6 = pbVar3;
    register0x00000074 = (BADSPACEBASE *)((int)register0x00000074 + -0x88);
  } while( true );
}


lui gp,0x5
addiu gp,gp,-0x2e8
addu gp,gp,t9
addiu sp,sp,-0x88
lw t9,-0x754c(gp)
sw s3,0x70(sp)
lw s3,-0x746c(gp)
sw s2,0x6c(sp)
addiu s2,sp,0x1c
sw s4,0x74(sp)
or s4,a2,zero
sw s0,0x64(sp)
li a2,0x40
sw gp,0x10(sp)
or s0,a1,zero
sw s6,0x7c(sp)
li a1,0x36
sw ra,0x84(sp)
or s6,a0,zero
sw s7,0x80(sp)
or a0,s2,zero
sw s5,0x78(sp)
sw s1,0x68(sp)
lw v0,0x0(s3)
sw v0,0x5c(sp)
jalr t9
_nop
blez s4,0x0006a83c
_lw gp,0x10(sp)
addiu s4,s4,-0x1
addiu s5,s0,0x40
addu s4,s0,s4
or s1,s2,zero
or v0,s0,zero
b 0x0006a6f4
_or a0,s2,zero
addiu v0,v0,0x1
beq v0,s5,0x0006a708
_addiu a0,a0,0x1
lbu v1,0x0(a0)
lbu a1,0x0(v0)
xor v1,v1,a1
bne v0,s4,0x0006a6e8
_sb v1,0x0(a0)
lui v0,0x6745
lw s7,-0x7918(gp)
li a2,0x40
sw zero,0x50(s6)
addiu v0,v0,0x2301
sw zero,0x58(s6)
or a1,s2,zero
sw zero,0x54(s6)
sw v0,0x0(s6)
lui v0,0xefcd
or a0,s6,zero
ori v0,v0,0xab89
sw v0,0x4(s6)
lui v0,0x98ba
or t9,s7,zero
ori v0,v0,0xdcfe
sw v0,0x8(s6)
lui v0,0x1032
addiu v0,v0,0x5476
bal 0x00069324
_sw v0,0xc(s6)
li a2,0x40
lw gp,0x10(sp)
li a1,0x5c
lw t9,-0x754c(gp)
jalr t9
_or a0,s2,zero
b 0x0006a78c
_lbu v0,0x0(s1)
addiu s0,s0,0x1
beq s0,s5,0x0006a79c
_addiu s1,s1,0x1
lbu v0,0x0(s1)
lbu v1,0x0(s0)
xor v0,v0,v1
bne s0,s4,0x0006a77c
_sb v0,0x0(s1)
lui v0,0x6745
sw zero,0xac(s6)
li a2,0x40
sw zero,0xb4(s6)
addiu v0,v0,0x2301
sw zero,0xb0(s6)
addiu a0,s6,0x5c
sw v0,0x5c(s6)
lui v0,0xefcd
or a1,s2,zero
ori v0,v0,0xab89
sw v0,0x60(s6)
lui v0,0x98ba
or t9,s7,zero
ori v0,v0,0xdcfe
sw v0,0x64(s6)
lui v0,0x1032
addiu v0,v0,0x5476
bal 0x00069324
_sw v0,0x68(s6)
li a1,0x40
lw gp,0x10(sp)
lw t9,-0x7f10(gp)
jalr t9
_or a0,s2,zero
lw v1,0x5c(sp)
lw v0,0x0(s3)
bne v1,v0,0x0006a8b0
_lw gp,0x10(sp)
lw ra,0x84(sp)
lw s7,0x80(sp)
lw s6,0x7c(sp)
lw s5,0x78(sp)
lw s4,0x74(sp)
lw s3,0x70(sp)
lw s2,0x6c(sp)
lw s1,0x68(sp)
lw s0,0x64(sp)
jr ra
_addiu sp,sp,0x88
lui v0,0x6745
lw s7,-0x7918(gp)
li a2,0x40
sw zero,0x50(s6)
addiu v0,v0,0x2301
sw zero,0x58(s6)
or a1,s2,zero
sw zero,0x54(s6)
sw v0,0x0(s6)
lui v0,0xefcd
or a0,s6,zero
ori v0,v0,0xab89
sw v0,0x4(s6)
lui v0,0x98ba
or t9,s7,zero
ori v0,v0,0xdcfe
sw v0,0x8(s6)
lui v0,0x1032
addiu v0,v0,0x5476
bal 0x00069324
_sw v0,0xc(s6)
li a2,0x40
lw gp,0x10(sp)
li a1,0x5c
lw t9,-0x754c(gp)
jalr t9
_or a0,s2,zero
b 0x0006a7a0
_lui v0,0x6745
lw t9,-0x7498(gp)
jalr t9
_nop
lui gp,0x5
addiu gp,gp,-0x54c
addu gp,gp,t9
lw t9,-0x7e6c(gp)
b 0x0006a658
_li a2,0x10
(translation_unit "void hmacmd5_key(byte *param_1,byte *param_2,byte *param_3)\n\n{\n  byte bVar1;\n  byte *pbVar2;\n  byte *pbVar3;\n  byte *pbVar4;\n  byte *unaff_s0;\n  byte *unaff_s1;\n  byte *unaff_s2;\n  int *unaff_s3;\n  byte *unaff_s4;\n  byte *unaff_s5;\n  byte *unaff_s6;\n  undefined4 unaff_s7;\n  code *pcVar5;\n  code *pcVar6;\n  int iVar7;\n  undefined4 unaff_retaddr;\n  undefined1 auStackX_0 [16];\n  \n  pcVar6 = hmacmd5_key;\n  do {\n    pbVar3 = param_1;\n    pcVar5 = *(code **)(&LAB_000487cc + (int)pcVar6);\n    *(int **)((int)register0x00000074 + -0x18) = unaff_s3;\n    unaff_s3 = *(int **)(pcVar6 + 0x488ac);\n    *(byte **)((int)register0x00000074 + -0x1c) = unaff_s2;\n    unaff_s2 = (byte *)((int)register0x00000074 + -0x6c);\n    *(byte **)((int)register0x00000074 + -0x14) = unaff_s4;\n    *(byte **)((int)register0x00000074 + -0x24) = unaff_s0;\n    *(code **)((int)register0x00000074 + -0x78) = pcVar6 + 0x4fd18;\n    *(byte **)((int)register0x00000074 + -0xc) = unaff_s6;\n    *(undefined4 *)((int)register0x00000074 + -4) = unaff_retaddr;\n    *(undefined4 *)((int)register0x00000074 + -8) = unaff_s7;\n    *(byte **)((int)register0x00000074 + -0x10) = unaff_s5;\n    *(byte **)((int)register0x00000074 + -0x20) = unaff_s1;\n    *(int *)((int)register0x00000074 + -0x2c) = *unaff_s3;\n    (*pcVar5)(unaff_s2,0x36,0x40);\n    iVar7 = *(int *)((int)register0x00000074 + -0x78);\n    if ((int)param_3 < 1) {\n      unaff_s7 = *(undefined4 *)(iVar7 + -31000);\n      pbVar3[0x50] = 0;\n      pbVar3[0x51] = 0;\n      pbVar3[0x52] = 0;\n      pbVar3[0x53] = 0;\n      pbVar3[0x58] = 0;\n      pbVar3[0x59] = 0;\n      pbVar3[0x5a] = 0;\n      pbVar3[0x5b] = 0;\n      pbVar3[0x54] = 0;\n      pbVar3[0x55] = 0;\n      pbVar3[0x56] = 0;\n      pbVar3[0x57] = 0;\n      pbVar3[0] = 0x67;\n      pbVar3[1] = 0x45;\n      pbVar3[2] = 0x23;\n      pbVar3[3] = 1;\n      pbVar3[4] = 0xef;\n      pbVar3[5] = 0xcd;\n      pbVar3[6] = 0xab;\n      pbVar3[7] = 0x89;\n      pbVar3[8] = 0x98;\n      pbVar3[9] = 0xba;\n      pbVar3[10] = 0xdc;\n      pbVar3[0xb] = 0xfe;\n      pbVar3[0xc] = 0x10;\n      pbVar3[0xd] = 0x32;\n      pbVar3[0xe] = 0x54;\n      pbVar3[0xf] = 0x76;\n      MD5Update(pbVar3,unaff_s2,0x40);\n      (**(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x754c))(unaff_s2,0x5c,0x40);\n      unaff_s0 = param_2;\n      unaff_s4 = param_3;\n    }\n    else {\n      unaff_s5 = param_2 + 0x40;\n      unaff_s4 = param_2 + (int)(param_3 + -1);\n      pbVar2 = param_2;\n      pbVar4 = unaff_s2;\n      do {\n        *pbVar4 = *pbVar4 ^ *pbVar2;\n        if (pbVar2 == unaff_s4) break;\n        pbVar2 = pbVar2 + 1;\n        pbVar4 = pbVar4 + 1;\n      } while (pbVar2 != unaff_s5);\n      unaff_s7 = *(undefined4 *)(iVar7 + -31000);\n      pbVar3[0x50] = 0;\n      pbVar3[0x51] = 0;\n      pbVar3[0x52] = 0;\n      pbVar3[0x53] = 0;\n      pbVar3[0x58] = 0;\n      pbVar3[0x59] = 0;\n      pbVar3[0x5a] = 0;\n      pbVar3[0x5b] = 0;\n      pbVar3[0x54] = 0;\n      pbVar3[0x55] = 0;\n      pbVar3[0x56] = 0;\n      pbVar3[0x57] = 0;\n      pbVar3[0] = 0x67;\n      pbVar3[1] = 0x45;\n      pbVar3[2] = 0x23;\n      pbVar3[3] = 1;\n      pbVar3[4] = 0xef;\n      pbVar3[5] = 0xcd;\n      pbVar3[6] = 0xab;\n      pbVar3[7] = 0x89;\n      pbVar3[8] = 0x98;\n      pbVar3[9] = 0xba;\n      pbVar3[10] = 0xdc;\n      pbVar3[0xb] = 0xfe;\n      pbVar3[0xc] = 0x10;\n      pbVar3[0xd] = 0x32;\n      pbVar3[0xe] = 0x54;\n      pbVar3[0xf] = 0x76;\n      MD5Update(pbVar3,unaff_s2,0x40);\n      (**(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x754c))(unaff_s2,0x5c,0x40);\n      bVar1 = *unaff_s2;\n      unaff_s1 = unaff_s2;\n      while (*unaff_s1 = bVar1 ^ *param_2, unaff_s0 = param_2, param_2 != unaff_s4) {\n        param_2 = param_2 + 1;\n        unaff_s1 = unaff_s1 + 1;\n        unaff_s0 = param_2;\n        if (param_2 == unaff_s5) break;\n        bVar1 = *unaff_s1;\n      }\n    }\n    pbVar3[0xac] = 0;\n    pbVar3[0xad] = 0;\n    pbVar3[0xae] = 0;\n    pbVar3[0xaf] = 0;\n    pbVar3[0xb4] = 0;\n    pbVar3[0xb5] = 0;\n    pbVar3[0xb6] = 0;\n    pbVar3[0xb7] = 0;\n    pbVar3[0xb0] = 0;\n    pbVar3[0xb1] = 0;\n    pbVar3[0xb2] = 0;\n    pbVar3[0xb3] = 0;\n    pbVar3[0x5c] = 0x67;\n    pbVar3[0x5d] = 0x45;\n    pbVar3[0x5e] = 0x23;\n    pbVar3[0x5f] = 1;\n    pbVar3[0x60] = 0xef;\n    pbVar3[0x61] = 0xcd;\n    pbVar3[0x62] = 0xab;\n    pbVar3[99] = 0x89;\n    pbVar3[100] = 0x98;\n    pbVar3[0x65] = 0xba;\n    pbVar3[0x66] = 0xdc;\n    pbVar3[0x67] = 0xfe;\n    pbVar3[0x68] = 0x10;\n    pbVar3[0x69] = 0x32;\n    pbVar3[0x6a] = 0x54;\n    pbVar3[0x6b] = 0x76;\n    MD5Update(pbVar3 + 0x5c,unaff_s2,0x40);\n    param_2 = &DAT_00000040;\n    param_1 = unaff_s2;\n    (**(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x7f10))();\n    if (*(int *)((int)register0x00000074 + -0x2c) == *unaff_s3) {\n      return;\n    }\n    pcVar6 = *(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x7498);\n    unaff_retaddr = 0x6a8bc;\n    (*pcVar6)();\n    pcVar6 = *(code **)(pcVar6 + 0x47c48);\n    param_3 = &DAT_00000010;\n    unaff_s6 = pbVar3;\n    register0x00000074 = (BADSPACEBASE *)((int)register0x00000074 + -0x88);\n  } while( true );\n}\n\n" (function_definition "void hmacmd5_key(byte *param_1,byte *param_2,byte *param_3)\n\n{\n  byte bVar1;\n  byte *pbVar2;\n  byte *pbVar3;\n  byte *pbVar4;\n  byte *unaff_s0;\n  byte *unaff_s1;\n  byte *unaff_s2;\n  int *unaff_s3;\n  byte *unaff_s4;\n  byte *unaff_s5;\n  byte *unaff_s6;\n  undefined4 unaff_s7;\n  code *pcVar5;\n  code *pcVar6;\n  int iVar7;\n  undefined4 unaff_retaddr;\n  undefined1 auStackX_0 [16];\n  \n  pcVar6 = hmacmd5_key;\n  do {\n    pbVar3 = param_1;\n    pcVar5 = *(code **)(&LAB_000487cc + (int)pcVar6);\n    *(int **)((int)register0x00000074 + -0x18) = unaff_s3;\n    unaff_s3 = *(int **)(pcVar6 + 0x488ac);\n    *(byte **)((int)register0x00000074 + -0x1c) = unaff_s2;\n    unaff_s2 = (byte *)((int)register0x00000074 + -0x6c);\n    *(byte **)((int)register0x00000074 + -0x14) = unaff_s4;\n    *(byte **)((int)register0x00000074 + -0x24) = unaff_s0;\n    *(code **)((int)register0x00000074 + -0x78) = pcVar6 + 0x4fd18;\n    *(byte **)((int)register0x00000074 + -0xc) = unaff_s6;\n    *(undefined4 *)((int)register0x00000074 + -4) = unaff_retaddr;\n    *(undefined4 *)((int)register0x00000074 + -8) = unaff_s7;\n    *(byte **)((int)register0x00000074 + -0x10) = unaff_s5;\n    *(byte **)((int)register0x00000074 + -0x20) = unaff_s1;\n    *(int *)((int)register0x00000074 + -0x2c) = *unaff_s3;\n    (*pcVar5)(unaff_s2,0x36,0x40);\n    iVar7 = *(int *)((int)register0x00000074 + -0x78);\n    if ((int)param_3 < 1) {\n      unaff_s7 = *(undefined4 *)(iVar7 + -31000);\n      pbVar3[0x50] = 0;\n      pbVar3[0x51] = 0;\n      pbVar3[0x52] = 0;\n      pbVar3[0x53] = 0;\n      pbVar3[0x58] = 0;\n      pbVar3[0x59] = 0;\n      pbVar3[0x5a] = 0;\n      pbVar3[0x5b] = 0;\n      pbVar3[0x54] = 0;\n      pbVar3[0x55] = 0;\n      pbVar3[0x56] = 0;\n      pbVar3[0x57] = 0;\n      pbVar3[0] = 0x67;\n      pbVar3[1] = 0x45;\n      pbVar3[2] = 0x23;\n      pbVar3[3] = 1;\n      pbVar3[4] = 0xef;\n      pbVar3[5] = 0xcd;\n      pbVar3[6] = 0xab;\n      pbVar3[7] = 0x89;\n      pbVar3[8] = 0x98;\n      pbVar3[9] = 0xba;\n      pbVar3[10] = 0xdc;\n      pbVar3[0xb] = 0xfe;\n      pbVar3[0xc] = 0x10;\n      pbVar3[0xd] = 0x32;\n      pbVar3[0xe] = 0x54;\n      pbVar3[0xf] = 0x76;\n      MD5Update(pbVar3,unaff_s2,0x40);\n      (**(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x754c))(unaff_s2,0x5c,0x40);\n      unaff_s0 = param_2;\n      unaff_s4 = param_3;\n    }\n    else {\n      unaff_s5 = param_2 + 0x40;\n      unaff_s4 = param_2 + (int)(param_3 + -1);\n      pbVar2 = param_2;\n      pbVar4 = unaff_s2;\n      do {\n        *pbVar4 = *pbVar4 ^ *pbVar2;\n        if (pbVar2 == unaff_s4) break;\n        pbVar2 = pbVar2 + 1;\n        pbVar4 = pbVar4 + 1;\n      } while (pbVar2 != unaff_s5);\n      unaff_s7 = *(undefined4 *)(iVar7 + -31000);\n      pbVar3[0x50] = 0;\n      pbVar3[0x51] = 0;\n      pbVar3[0x52] = 0;\n      pbVar3[0x53] = 0;\n      pbVar3[0x58] = 0;\n      pbVar3[0x59] = 0;\n      pbVar3[0x5a] = 0;\n      pbVar3[0x5b] = 0;\n      pbVar3[0x54] = 0;\n      pbVar3[0x55] = 0;\n      pbVar3[0x56] = 0;\n      pbVar3[0x57] = 0;\n      pbVar3[0] = 0x67;\n      pbVar3[1] = 0x45;\n      pbVar3[2] = 0x23;\n      pbVar3[3] = 1;\n      pbVar3[4] = 0xef;\n      pbVar3[5] = 0xcd;\n      pbVar3[6] = 0xab;\n      pbVar3[7] = 0x89;\n      pbVar3[8] = 0x98;\n      pbVar3[9] = 0xba;\n      pbVar3[10] = 0xdc;\n      pbVar3[0xb] = 0xfe;\n      pbVar3[0xc] = 0x10;\n      pbVar3[0xd] = 0x32;\n      pbVar3[0xe] = 0x54;\n      pbVar3[0xf] = 0x76;\n      MD5Update(pbVar3,unaff_s2,0x40);\n      (**(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x754c))(unaff_s2,0x5c,0x40);\n      bVar1 = *unaff_s2;\n      unaff_s1 = unaff_s2;\n      while (*unaff_s1 = bVar1 ^ *param_2, unaff_s0 = param_2, param_2 != unaff_s4) {\n        param_2 = param_2 + 1;\n        unaff_s1 = unaff_s1 + 1;\n        unaff_s0 = param_2;\n        if (param_2 == unaff_s5) break;\n        bVar1 = *unaff_s1;\n      }\n    }\n    pbVar3[0xac] = 0;\n    pbVar3[0xad] = 0;\n    pbVar3[0xae] = 0;\n    pbVar3[0xaf] = 0;\n    pbVar3[0xb4] = 0;\n    pbVar3[0xb5] = 0;\n    pbVar3[0xb6] = 0;\n    pbVar3[0xb7] = 0;\n    pbVar3[0xb0] = 0;\n    pbVar3[0xb1] = 0;\n    pbVar3[0xb2] = 0;\n    pbVar3[0xb3] = 0;\n    pbVar3[0x5c] = 0x67;\n    pbVar3[0x5d] = 0x45;\n    pbVar3[0x5e] = 0x23;\n    pbVar3[0x5f] = 1;\n    pbVar3[0x60] = 0xef;\n    pbVar3[0x61] = 0xcd;\n    pbVar3[0x62] = 0xab;\n    pbVar3[99] = 0x89;\n    pbVar3[100] = 0x98;\n    pbVar3[0x65] = 0xba;\n    pbVar3[0x66] = 0xdc;\n    pbVar3[0x67] = 0xfe;\n    pbVar3[0x68] = 0x10;\n    pbVar3[0x69] = 0x32;\n    pbVar3[0x6a] = 0x54;\n    pbVar3[0x6b] = 0x76;\n    MD5Update(pbVar3 + 0x5c,unaff_s2,0x40);\n    param_2 = &DAT_00000040;\n    param_1 = unaff_s2;\n    (**(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x7f10))();\n    if (*(int *)((int)register0x00000074 + -0x2c) == *unaff_s3) {\n      return;\n    }\n    pcVar6 = *(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x7498);\n    unaff_retaddr = 0x6a8bc;\n    (*pcVar6)();\n    pcVar6 = *(code **)(pcVar6 + 0x47c48);\n    param_3 = &DAT_00000010;\n    unaff_s6 = pbVar3;\n    register0x00000074 = (BADSPACEBASE *)((int)register0x00000074 + -0x88);\n  } while( true );\n}" primitive_type (function_declarator "hmacmd5_key(byte *param_1,byte *param_2,byte *param_3)" identifier (parameter_list "(byte *param_1,byte *param_2,byte *param_3)" ( (parameter_declaration "byte *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "byte *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "byte *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  byte bVar1;\n  byte *pbVar2;\n  byte *pbVar3;\n  byte *pbVar4;\n  byte *unaff_s0;\n  byte *unaff_s1;\n  byte *unaff_s2;\n  int *unaff_s3;\n  byte *unaff_s4;\n  byte *unaff_s5;\n  byte *unaff_s6;\n  undefined4 unaff_s7;\n  code *pcVar5;\n  code *pcVar6;\n  int iVar7;\n  undefined4 unaff_retaddr;\n  undefined1 auStackX_0 [16];\n  \n  pcVar6 = hmacmd5_key;\n  do {\n    pbVar3 = param_1;\n    pcVar5 = *(code **)(&LAB_000487cc + (int)pcVar6);\n    *(int **)((int)register0x00000074 + -0x18) = unaff_s3;\n    unaff_s3 = *(int **)(pcVar6 + 0x488ac);\n    *(byte **)((int)register0x00000074 + -0x1c) = unaff_s2;\n    unaff_s2 = (byte *)((int)register0x00000074 + -0x6c);\n    *(byte **)((int)register0x00000074 + -0x14) = unaff_s4;\n    *(byte **)((int)register0x00000074 + -0x24) = unaff_s0;\n    *(code **)((int)register0x00000074 + -0x78) = pcVar6 + 0x4fd18;\n    *(byte **)((int)register0x00000074 + -0xc) = unaff_s6;\n    *(undefined4 *)((int)register0x00000074 + -4) = unaff_retaddr;\n    *(undefined4 *)((int)register0x00000074 + -8) = unaff_s7;\n    *(byte **)((int)register0x00000074 + -0x10) = unaff_s5;\n    *(byte **)((int)register0x00000074 + -0x20) = unaff_s1;\n    *(int *)((int)register0x00000074 + -0x2c) = *unaff_s3;\n    (*pcVar5)(unaff_s2,0x36,0x40);\n    iVar7 = *(int *)((int)register0x00000074 + -0x78);\n    if ((int)param_3 < 1) {\n      unaff_s7 = *(undefined4 *)(iVar7 + -31000);\n      pbVar3[0x50] = 0;\n      pbVar3[0x51] = 0;\n      pbVar3[0x52] = 0;\n      pbVar3[0x53] = 0;\n      pbVar3[0x58] = 0;\n      pbVar3[0x59] = 0;\n      pbVar3[0x5a] = 0;\n      pbVar3[0x5b] = 0;\n      pbVar3[0x54] = 0;\n      pbVar3[0x55] = 0;\n      pbVar3[0x56] = 0;\n      pbVar3[0x57] = 0;\n      pbVar3[0] = 0x67;\n      pbVar3[1] = 0x45;\n      pbVar3[2] = 0x23;\n      pbVar3[3] = 1;\n      pbVar3[4] = 0xef;\n      pbVar3[5] = 0xcd;\n      pbVar3[6] = 0xab;\n      pbVar3[7] = 0x89;\n      pbVar3[8] = 0x98;\n      pbVar3[9] = 0xba;\n      pbVar3[10] = 0xdc;\n      pbVar3[0xb] = 0xfe;\n      pbVar3[0xc] = 0x10;\n      pbVar3[0xd] = 0x32;\n      pbVar3[0xe] = 0x54;\n      pbVar3[0xf] = 0x76;\n      MD5Update(pbVar3,unaff_s2,0x40);\n      (**(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x754c))(unaff_s2,0x5c,0x40);\n      unaff_s0 = param_2;\n      unaff_s4 = param_3;\n    }\n    else {\n      unaff_s5 = param_2 + 0x40;\n      unaff_s4 = param_2 + (int)(param_3 + -1);\n      pbVar2 = param_2;\n      pbVar4 = unaff_s2;\n      do {\n        *pbVar4 = *pbVar4 ^ *pbVar2;\n        if (pbVar2 == unaff_s4) break;\n        pbVar2 = pbVar2 + 1;\n        pbVar4 = pbVar4 + 1;\n      } while (pbVar2 != unaff_s5);\n      unaff_s7 = *(undefined4 *)(iVar7 + -31000);\n      pbVar3[0x50] = 0;\n      pbVar3[0x51] = 0;\n      pbVar3[0x52] = 0;\n      pbVar3[0x53] = 0;\n      pbVar3[0x58] = 0;\n      pbVar3[0x59] = 0;\n      pbVar3[0x5a] = 0;\n      pbVar3[0x5b] = 0;\n      pbVar3[0x54] = 0;\n      pbVar3[0x55] = 0;\n      pbVar3[0x56] = 0;\n      pbVar3[0x57] = 0;\n      pbVar3[0] = 0x67;\n      pbVar3[1] = 0x45;\n      pbVar3[2] = 0x23;\n      pbVar3[3] = 1;\n      pbVar3[4] = 0xef;\n      pbVar3[5] = 0xcd;\n      pbVar3[6] = 0xab;\n      pbVar3[7] = 0x89;\n      pbVar3[8] = 0x98;\n      pbVar3[9] = 0xba;\n      pbVar3[10] = 0xdc;\n      pbVar3[0xb] = 0xfe;\n      pbVar3[0xc] = 0x10;\n      pbVar3[0xd] = 0x32;\n      pbVar3[0xe] = 0x54;\n      pbVar3[0xf] = 0x76;\n      MD5Update(pbVar3,unaff_s2,0x40);\n      (**(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x754c))(unaff_s2,0x5c,0x40);\n      bVar1 = *unaff_s2;\n      unaff_s1 = unaff_s2;\n      while (*unaff_s1 = bVar1 ^ *param_2, unaff_s0 = param_2, param_2 != unaff_s4) {\n        param_2 = param_2 + 1;\n        unaff_s1 = unaff_s1 + 1;\n        unaff_s0 = param_2;\n        if (param_2 == unaff_s5) break;\n        bVar1 = *unaff_s1;\n      }\n    }\n    pbVar3[0xac] = 0;\n    pbVar3[0xad] = 0;\n    pbVar3[0xae] = 0;\n    pbVar3[0xaf] = 0;\n    pbVar3[0xb4] = 0;\n    pbVar3[0xb5] = 0;\n    pbVar3[0xb6] = 0;\n    pbVar3[0xb7] = 0;\n    pbVar3[0xb0] = 0;\n    pbVar3[0xb1] = 0;\n    pbVar3[0xb2] = 0;\n    pbVar3[0xb3] = 0;\n    pbVar3[0x5c] = 0x67;\n    pbVar3[0x5d] = 0x45;\n    pbVar3[0x5e] = 0x23;\n    pbVar3[0x5f] = 1;\n    pbVar3[0x60] = 0xef;\n    pbVar3[0x61] = 0xcd;\n    pbVar3[0x62] = 0xab;\n    pbVar3[99] = 0x89;\n    pbVar3[100] = 0x98;\n    pbVar3[0x65] = 0xba;\n    pbVar3[0x66] = 0xdc;\n    pbVar3[0x67] = 0xfe;\n    pbVar3[0x68] = 0x10;\n    pbVar3[0x69] = 0x32;\n    pbVar3[0x6a] = 0x54;\n    pbVar3[0x6b] = 0x76;\n    MD5Update(pbVar3 + 0x5c,unaff_s2,0x40);\n    param_2 = &DAT_00000040;\n    param_1 = unaff_s2;\n    (**(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x7f10))();\n    if (*(int *)((int)register0x00000074 + -0x2c) == *unaff_s3) {\n      return;\n    }\n    pcVar6 = *(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x7498);\n    unaff_retaddr = 0x6a8bc;\n    (*pcVar6)();\n    pcVar6 = *(code **)(pcVar6 + 0x47c48);\n    param_3 = &DAT_00000010;\n    unaff_s6 = pbVar3;\n    register0x00000074 = (BADSPACEBASE *)((int)register0x00000074 + -0x88);\n  } while( true );\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "byte *pbVar2;" type_identifier (pointer_declarator "*pbVar2" * identifier) ;) (declaration "byte *pbVar3;" type_identifier (pointer_declarator "*pbVar3" * identifier) ;) (declaration "byte *pbVar4;" type_identifier (pointer_declarator "*pbVar4" * identifier) ;) (declaration "byte *unaff_s0;" type_identifier (pointer_declarator "*unaff_s0" * identifier) ;) (declaration "byte *unaff_s1;" type_identifier (pointer_declarator "*unaff_s1" * identifier) ;) (declaration "byte *unaff_s2;" type_identifier (pointer_declarator "*unaff_s2" * identifier) ;) (declaration "int *unaff_s3;" primitive_type (pointer_declarator "*unaff_s3" * identifier) ;) (declaration "byte *unaff_s4;" type_identifier (pointer_declarator "*unaff_s4" * identifier) ;) (declaration "byte *unaff_s5;" type_identifier (pointer_declarator "*unaff_s5" * identifier) ;) (declaration "byte *unaff_s6;" type_identifier (pointer_declarator "*unaff_s6" * identifier) ;) (declaration "undefined4 unaff_s7;" type_identifier identifier ;) (declaration "code *pcVar5;" type_identifier (pointer_declarator "*pcVar5" * identifier) ;) (declaration "code *pcVar6;" type_identifier (pointer_declarator "*pcVar6" * identifier) ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "undefined4 unaff_retaddr;" type_identifier identifier ;) (declaration "undefined1 auStackX_0 [16];" type_identifier (array_declarator "auStackX_0 [16]" identifier [ number_literal ]) ;) (expression_statement "pcVar6 = hmacmd5_key;" (assignment_expression "pcVar6 = hmacmd5_key" identifier = identifier) ;) (do_statement "do {\n    pbVar3 = param_1;\n    pcVar5 = *(code **)(&LAB_000487cc + (int)pcVar6);\n    *(int **)((int)register0x00000074 + -0x18) = unaff_s3;\n    unaff_s3 = *(int **)(pcVar6 + 0x488ac);\n    *(byte **)((int)register0x00000074 + -0x1c) = unaff_s2;\n    unaff_s2 = (byte *)((int)register0x00000074 + -0x6c);\n    *(byte **)((int)register0x00000074 + -0x14) = unaff_s4;\n    *(byte **)((int)register0x00000074 + -0x24) = unaff_s0;\n    *(code **)((int)register0x00000074 + -0x78) = pcVar6 + 0x4fd18;\n    *(byte **)((int)register0x00000074 + -0xc) = unaff_s6;\n    *(undefined4 *)((int)register0x00000074 + -4) = unaff_retaddr;\n    *(undefined4 *)((int)register0x00000074 + -8) = unaff_s7;\n    *(byte **)((int)register0x00000074 + -0x10) = unaff_s5;\n    *(byte **)((int)register0x00000074 + -0x20) = unaff_s1;\n    *(int *)((int)register0x00000074 + -0x2c) = *unaff_s3;\n    (*pcVar5)(unaff_s2,0x36,0x40);\n    iVar7 = *(int *)((int)register0x00000074 + -0x78);\n    if ((int)param_3 < 1) {\n      unaff_s7 = *(undefined4 *)(iVar7 + -31000);\n      pbVar3[0x50] = 0;\n      pbVar3[0x51] = 0;\n      pbVar3[0x52] = 0;\n      pbVar3[0x53] = 0;\n      pbVar3[0x58] = 0;\n      pbVar3[0x59] = 0;\n      pbVar3[0x5a] = 0;\n      pbVar3[0x5b] = 0;\n      pbVar3[0x54] = 0;\n      pbVar3[0x55] = 0;\n      pbVar3[0x56] = 0;\n      pbVar3[0x57] = 0;\n      pbVar3[0] = 0x67;\n      pbVar3[1] = 0x45;\n      pbVar3[2] = 0x23;\n      pbVar3[3] = 1;\n      pbVar3[4] = 0xef;\n      pbVar3[5] = 0xcd;\n      pbVar3[6] = 0xab;\n      pbVar3[7] = 0x89;\n      pbVar3[8] = 0x98;\n      pbVar3[9] = 0xba;\n      pbVar3[10] = 0xdc;\n      pbVar3[0xb] = 0xfe;\n      pbVar3[0xc] = 0x10;\n      pbVar3[0xd] = 0x32;\n      pbVar3[0xe] = 0x54;\n      pbVar3[0xf] = 0x76;\n      MD5Update(pbVar3,unaff_s2,0x40);\n      (**(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x754c))(unaff_s2,0x5c,0x40);\n      unaff_s0 = param_2;\n      unaff_s4 = param_3;\n    }\n    else {\n      unaff_s5 = param_2 + 0x40;\n      unaff_s4 = param_2 + (int)(param_3 + -1);\n      pbVar2 = param_2;\n      pbVar4 = unaff_s2;\n      do {\n        *pbVar4 = *pbVar4 ^ *pbVar2;\n        if (pbVar2 == unaff_s4) break;\n        pbVar2 = pbVar2 + 1;\n        pbVar4 = pbVar4 + 1;\n      } while (pbVar2 != unaff_s5);\n      unaff_s7 = *(undefined4 *)(iVar7 + -31000);\n      pbVar3[0x50] = 0;\n      pbVar3[0x51] = 0;\n      pbVar3[0x52] = 0;\n      pbVar3[0x53] = 0;\n      pbVar3[0x58] = 0;\n      pbVar3[0x59] = 0;\n      pbVar3[0x5a] = 0;\n      pbVar3[0x5b] = 0;\n      pbVar3[0x54] = 0;\n      pbVar3[0x55] = 0;\n      pbVar3[0x56] = 0;\n      pbVar3[0x57] = 0;\n      pbVar3[0] = 0x67;\n      pbVar3[1] = 0x45;\n      pbVar3[2] = 0x23;\n      pbVar3[3] = 1;\n      pbVar3[4] = 0xef;\n      pbVar3[5] = 0xcd;\n      pbVar3[6] = 0xab;\n      pbVar3[7] = 0x89;\n      pbVar3[8] = 0x98;\n      pbVar3[9] = 0xba;\n      pbVar3[10] = 0xdc;\n      pbVar3[0xb] = 0xfe;\n      pbVar3[0xc] = 0x10;\n      pbVar3[0xd] = 0x32;\n      pbVar3[0xe] = 0x54;\n      pbVar3[0xf] = 0x76;\n      MD5Update(pbVar3,unaff_s2,0x40);\n      (**(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x754c))(unaff_s2,0x5c,0x40);\n      bVar1 = *unaff_s2;\n      unaff_s1 = unaff_s2;\n      while (*unaff_s1 = bVar1 ^ *param_2, unaff_s0 = param_2, param_2 != unaff_s4) {\n        param_2 = param_2 + 1;\n        unaff_s1 = unaff_s1 + 1;\n        unaff_s0 = param_2;\n        if (param_2 == unaff_s5) break;\n        bVar1 = *unaff_s1;\n      }\n    }\n    pbVar3[0xac] = 0;\n    pbVar3[0xad] = 0;\n    pbVar3[0xae] = 0;\n    pbVar3[0xaf] = 0;\n    pbVar3[0xb4] = 0;\n    pbVar3[0xb5] = 0;\n    pbVar3[0xb6] = 0;\n    pbVar3[0xb7] = 0;\n    pbVar3[0xb0] = 0;\n    pbVar3[0xb1] = 0;\n    pbVar3[0xb2] = 0;\n    pbVar3[0xb3] = 0;\n    pbVar3[0x5c] = 0x67;\n    pbVar3[0x5d] = 0x45;\n    pbVar3[0x5e] = 0x23;\n    pbVar3[0x5f] = 1;\n    pbVar3[0x60] = 0xef;\n    pbVar3[0x61] = 0xcd;\n    pbVar3[0x62] = 0xab;\n    pbVar3[99] = 0x89;\n    pbVar3[100] = 0x98;\n    pbVar3[0x65] = 0xba;\n    pbVar3[0x66] = 0xdc;\n    pbVar3[0x67] = 0xfe;\n    pbVar3[0x68] = 0x10;\n    pbVar3[0x69] = 0x32;\n    pbVar3[0x6a] = 0x54;\n    pbVar3[0x6b] = 0x76;\n    MD5Update(pbVar3 + 0x5c,unaff_s2,0x40);\n    param_2 = &DAT_00000040;\n    param_1 = unaff_s2;\n    (**(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x7f10))();\n    if (*(int *)((int)register0x00000074 + -0x2c) == *unaff_s3) {\n      return;\n    }\n    pcVar6 = *(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x7498);\n    unaff_retaddr = 0x6a8bc;\n    (*pcVar6)();\n    pcVar6 = *(code **)(pcVar6 + 0x47c48);\n    param_3 = &DAT_00000010;\n    unaff_s6 = pbVar3;\n    register0x00000074 = (BADSPACEBASE *)((int)register0x00000074 + -0x88);\n  } while( true );" do (compound_statement "{\n    pbVar3 = param_1;\n    pcVar5 = *(code **)(&LAB_000487cc + (int)pcVar6);\n    *(int **)((int)register0x00000074 + -0x18) = unaff_s3;\n    unaff_s3 = *(int **)(pcVar6 + 0x488ac);\n    *(byte **)((int)register0x00000074 + -0x1c) = unaff_s2;\n    unaff_s2 = (byte *)((int)register0x00000074 + -0x6c);\n    *(byte **)((int)register0x00000074 + -0x14) = unaff_s4;\n    *(byte **)((int)register0x00000074 + -0x24) = unaff_s0;\n    *(code **)((int)register0x00000074 + -0x78) = pcVar6 + 0x4fd18;\n    *(byte **)((int)register0x00000074 + -0xc) = unaff_s6;\n    *(undefined4 *)((int)register0x00000074 + -4) = unaff_retaddr;\n    *(undefined4 *)((int)register0x00000074 + -8) = unaff_s7;\n    *(byte **)((int)register0x00000074 + -0x10) = unaff_s5;\n    *(byte **)((int)register0x00000074 + -0x20) = unaff_s1;\n    *(int *)((int)register0x00000074 + -0x2c) = *unaff_s3;\n    (*pcVar5)(unaff_s2,0x36,0x40);\n    iVar7 = *(int *)((int)register0x00000074 + -0x78);\n    if ((int)param_3 < 1) {\n      unaff_s7 = *(undefined4 *)(iVar7 + -31000);\n      pbVar3[0x50] = 0;\n      pbVar3[0x51] = 0;\n      pbVar3[0x52] = 0;\n      pbVar3[0x53] = 0;\n      pbVar3[0x58] = 0;\n      pbVar3[0x59] = 0;\n      pbVar3[0x5a] = 0;\n      pbVar3[0x5b] = 0;\n      pbVar3[0x54] = 0;\n      pbVar3[0x55] = 0;\n      pbVar3[0x56] = 0;\n      pbVar3[0x57] = 0;\n      pbVar3[0] = 0x67;\n      pbVar3[1] = 0x45;\n      pbVar3[2] = 0x23;\n      pbVar3[3] = 1;\n      pbVar3[4] = 0xef;\n      pbVar3[5] = 0xcd;\n      pbVar3[6] = 0xab;\n      pbVar3[7] = 0x89;\n      pbVar3[8] = 0x98;\n      pbVar3[9] = 0xba;\n      pbVar3[10] = 0xdc;\n      pbVar3[0xb] = 0xfe;\n      pbVar3[0xc] = 0x10;\n      pbVar3[0xd] = 0x32;\n      pbVar3[0xe] = 0x54;\n      pbVar3[0xf] = 0x76;\n      MD5Update(pbVar3,unaff_s2,0x40);\n      (**(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x754c))(unaff_s2,0x5c,0x40);\n      unaff_s0 = param_2;\n      unaff_s4 = param_3;\n    }\n    else {\n      unaff_s5 = param_2 + 0x40;\n      unaff_s4 = param_2 + (int)(param_3 + -1);\n      pbVar2 = param_2;\n      pbVar4 = unaff_s2;\n      do {\n        *pbVar4 = *pbVar4 ^ *pbVar2;\n        if (pbVar2 == unaff_s4) break;\n        pbVar2 = pbVar2 + 1;\n        pbVar4 = pbVar4 + 1;\n      } while (pbVar2 != unaff_s5);\n      unaff_s7 = *(undefined4 *)(iVar7 + -31000);\n      pbVar3[0x50] = 0;\n      pbVar3[0x51] = 0;\n      pbVar3[0x52] = 0;\n      pbVar3[0x53] = 0;\n      pbVar3[0x58] = 0;\n      pbVar3[0x59] = 0;\n      pbVar3[0x5a] = 0;\n      pbVar3[0x5b] = 0;\n      pbVar3[0x54] = 0;\n      pbVar3[0x55] = 0;\n      pbVar3[0x56] = 0;\n      pbVar3[0x57] = 0;\n      pbVar3[0] = 0x67;\n      pbVar3[1] = 0x45;\n      pbVar3[2] = 0x23;\n      pbVar3[3] = 1;\n      pbVar3[4] = 0xef;\n      pbVar3[5] = 0xcd;\n      pbVar3[6] = 0xab;\n      pbVar3[7] = 0x89;\n      pbVar3[8] = 0x98;\n      pbVar3[9] = 0xba;\n      pbVar3[10] = 0xdc;\n      pbVar3[0xb] = 0xfe;\n      pbVar3[0xc] = 0x10;\n      pbVar3[0xd] = 0x32;\n      pbVar3[0xe] = 0x54;\n      pbVar3[0xf] = 0x76;\n      MD5Update(pbVar3,unaff_s2,0x40);\n      (**(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x754c))(unaff_s2,0x5c,0x40);\n      bVar1 = *unaff_s2;\n      unaff_s1 = unaff_s2;\n      while (*unaff_s1 = bVar1 ^ *param_2, unaff_s0 = param_2, param_2 != unaff_s4) {\n        param_2 = param_2 + 1;\n        unaff_s1 = unaff_s1 + 1;\n        unaff_s0 = param_2;\n        if (param_2 == unaff_s5) break;\n        bVar1 = *unaff_s1;\n      }\n    }\n    pbVar3[0xac] = 0;\n    pbVar3[0xad] = 0;\n    pbVar3[0xae] = 0;\n    pbVar3[0xaf] = 0;\n    pbVar3[0xb4] = 0;\n    pbVar3[0xb5] = 0;\n    pbVar3[0xb6] = 0;\n    pbVar3[0xb7] = 0;\n    pbVar3[0xb0] = 0;\n    pbVar3[0xb1] = 0;\n    pbVar3[0xb2] = 0;\n    pbVar3[0xb3] = 0;\n    pbVar3[0x5c] = 0x67;\n    pbVar3[0x5d] = 0x45;\n    pbVar3[0x5e] = 0x23;\n    pbVar3[0x5f] = 1;\n    pbVar3[0x60] = 0xef;\n    pbVar3[0x61] = 0xcd;\n    pbVar3[0x62] = 0xab;\n    pbVar3[99] = 0x89;\n    pbVar3[100] = 0x98;\n    pbVar3[0x65] = 0xba;\n    pbVar3[0x66] = 0xdc;\n    pbVar3[0x67] = 0xfe;\n    pbVar3[0x68] = 0x10;\n    pbVar3[0x69] = 0x32;\n    pbVar3[0x6a] = 0x54;\n    pbVar3[0x6b] = 0x76;\n    MD5Update(pbVar3 + 0x5c,unaff_s2,0x40);\n    param_2 = &DAT_00000040;\n    param_1 = unaff_s2;\n    (**(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x7f10))();\n    if (*(int *)((int)register0x00000074 + -0x2c) == *unaff_s3) {\n      return;\n    }\n    pcVar6 = *(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x7498);\n    unaff_retaddr = 0x6a8bc;\n    (*pcVar6)();\n    pcVar6 = *(code **)(pcVar6 + 0x47c48);\n    param_3 = &DAT_00000010;\n    unaff_s6 = pbVar3;\n    register0x00000074 = (BADSPACEBASE *)((int)register0x00000074 + -0x88);\n  }" { (expression_statement "pbVar3 = param_1;" (assignment_expression "pbVar3 = param_1" identifier = identifier) ;) (expression_statement "pcVar5 = *(code **)(&LAB_000487cc + (int)pcVar6);" (assignment_expression "pcVar5 = *(code **)(&LAB_000487cc + (int)pcVar6)" identifier = (pointer_expression "*(code **)(&LAB_000487cc + (int)pcVar6)" * (cast_expression "(code **)(&LAB_000487cc + (int)pcVar6)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(&LAB_000487cc + (int)pcVar6)" ( (binary_expression "&LAB_000487cc + (int)pcVar6" (pointer_expression "&LAB_000487cc" & identifier) + (cast_expression "(int)pcVar6" ( (type_descriptor "int" primitive_type) ) identifier)) ))))) ;) (expression_statement "*(int **)((int)register0x00000074 + -0x18) = unaff_s3;" (assignment_expression "*(int **)((int)register0x00000074 + -0x18) = unaff_s3" (pointer_expression "*(int **)((int)register0x00000074 + -0x18)" * (cast_expression "(int **)((int)register0x00000074 + -0x18)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)register0x00000074 + -0x18)" ( (binary_expression "(int)register0x00000074 + -0x18" (cast_expression "(int)register0x00000074" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "unaff_s3 = *(int **)(pcVar6 + 0x488ac);" (assignment_expression "unaff_s3 = *(int **)(pcVar6 + 0x488ac)" identifier = (pointer_expression "*(int **)(pcVar6 + 0x488ac)" * (cast_expression "(int **)(pcVar6 + 0x488ac)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar6 + 0x488ac)" ( (binary_expression "pcVar6 + 0x488ac" identifier + number_literal) ))))) ;) (expression_statement "*(byte **)((int)register0x00000074 + -0x1c) = unaff_s2;" (assignment_expression "*(byte **)((int)register0x00000074 + -0x1c) = unaff_s2" (pointer_expression "*(byte **)((int)register0x00000074 + -0x1c)" * (cast_expression "(byte **)((int)register0x00000074 + -0x1c)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)register0x00000074 + -0x1c)" ( (binary_expression "(int)register0x00000074 + -0x1c" (cast_expression "(int)register0x00000074" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "unaff_s2 = (byte *)((int)register0x00000074 + -0x6c);" (assignment_expression "unaff_s2 = (byte *)((int)register0x00000074 + -0x6c)" identifier = (cast_expression "(byte *)((int)register0x00000074 + -0x6c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000074 + -0x6c)" ( (binary_expression "(int)register0x00000074 + -0x6c" (cast_expression "(int)register0x00000074" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "*(byte **)((int)register0x00000074 + -0x14) = unaff_s4;" (assignment_expression "*(byte **)((int)register0x00000074 + -0x14) = unaff_s4" (pointer_expression "*(byte **)((int)register0x00000074 + -0x14)" * (cast_expression "(byte **)((int)register0x00000074 + -0x14)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)register0x00000074 + -0x14)" ( (binary_expression "(int)register0x00000074 + -0x14" (cast_expression "(int)register0x00000074" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)((int)register0x00000074 + -0x24) = unaff_s0;" (assignment_expression "*(byte **)((int)register0x00000074 + -0x24) = unaff_s0" (pointer_expression "*(byte **)((int)register0x00000074 + -0x24)" * (cast_expression "(byte **)((int)register0x00000074 + -0x24)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)register0x00000074 + -0x24)" ( (binary_expression "(int)register0x00000074 + -0x24" (cast_expression "(int)register0x00000074" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(code **)((int)register0x00000074 + -0x78) = pcVar6 + 0x4fd18;" (assignment_expression "*(code **)((int)register0x00000074 + -0x78) = pcVar6 + 0x4fd18" (pointer_expression "*(code **)((int)register0x00000074 + -0x78)" * (cast_expression "(code **)((int)register0x00000074 + -0x78)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)register0x00000074 + -0x78)" ( (binary_expression "(int)register0x00000074 + -0x78" (cast_expression "(int)register0x00000074" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "pcVar6 + 0x4fd18" identifier + number_literal)) ;) (expression_statement "*(byte **)((int)register0x00000074 + -0xc) = unaff_s6;" (assignment_expression "*(byte **)((int)register0x00000074 + -0xc) = unaff_s6" (pointer_expression "*(byte **)((int)register0x00000074 + -0xc)" * (cast_expression "(byte **)((int)register0x00000074 + -0xc)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)register0x00000074 + -0xc)" ( (binary_expression "(int)register0x00000074 + -0xc" (cast_expression "(int)register0x00000074" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)register0x00000074 + -4) = unaff_retaddr;" (assignment_expression "*(undefined4 *)((int)register0x00000074 + -4) = unaff_retaddr" (pointer_expression "*(undefined4 *)((int)register0x00000074 + -4)" * (cast_expression "(undefined4 *)((int)register0x00000074 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000074 + -4)" ( (binary_expression "(int)register0x00000074 + -4" (cast_expression "(int)register0x00000074" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)register0x00000074 + -8) = unaff_s7;" (assignment_expression "*(undefined4 *)((int)register0x00000074 + -8) = unaff_s7" (pointer_expression "*(undefined4 *)((int)register0x00000074 + -8)" * (cast_expression "(undefined4 *)((int)register0x00000074 + -8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000074 + -8)" ( (binary_expression "(int)register0x00000074 + -8" (cast_expression "(int)register0x00000074" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)((int)register0x00000074 + -0x10) = unaff_s5;" (assignment_expression "*(byte **)((int)register0x00000074 + -0x10) = unaff_s5" (pointer_expression "*(byte **)((int)register0x00000074 + -0x10)" * (cast_expression "(byte **)((int)register0x00000074 + -0x10)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)register0x00000074 + -0x10)" ( (binary_expression "(int)register0x00000074 + -0x10" (cast_expression "(int)register0x00000074" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)((int)register0x00000074 + -0x20) = unaff_s1;" (assignment_expression "*(byte **)((int)register0x00000074 + -0x20) = unaff_s1" (pointer_expression "*(byte **)((int)register0x00000074 + -0x20)" * (cast_expression "(byte **)((int)register0x00000074 + -0x20)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)register0x00000074 + -0x20)" ( (binary_expression "(int)register0x00000074 + -0x20" (cast_expression "(int)register0x00000074" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(int *)((int)register0x00000074 + -0x2c) = *unaff_s3;" (assignment_expression "*(int *)((int)register0x00000074 + -0x2c) = *unaff_s3" (pointer_expression "*(int *)((int)register0x00000074 + -0x2c)" * (cast_expression "(int *)((int)register0x00000074 + -0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000074 + -0x2c)" ( (binary_expression "(int)register0x00000074 + -0x2c" (cast_expression "(int)register0x00000074" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "*unaff_s3" * identifier)) ;) (expression_statement "(*pcVar5)(unaff_s2,0x36,0x40);" (call_expression "(*pcVar5)(unaff_s2,0x36,0x40)" (parenthesized_expression "(*pcVar5)" ( (pointer_expression "*pcVar5" * identifier) )) (argument_list "(unaff_s2,0x36,0x40)" ( identifier , number_literal , number_literal ))) ;) (expression_statement "iVar7 = *(int *)((int)register0x00000074 + -0x78);" (assignment_expression "iVar7 = *(int *)((int)register0x00000074 + -0x78)" identifier = (pointer_expression "*(int *)((int)register0x00000074 + -0x78)" * (cast_expression "(int *)((int)register0x00000074 + -0x78)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000074 + -0x78)" ( (binary_expression "(int)register0x00000074 + -0x78" (cast_expression "(int)register0x00000074" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (if_statement "if ((int)param_3 < 1) {\n      unaff_s7 = *(undefined4 *)(iVar7 + -31000);\n      pbVar3[0x50] = 0;\n      pbVar3[0x51] = 0;\n      pbVar3[0x52] = 0;\n      pbVar3[0x53] = 0;\n      pbVar3[0x58] = 0;\n      pbVar3[0x59] = 0;\n      pbVar3[0x5a] = 0;\n      pbVar3[0x5b] = 0;\n      pbVar3[0x54] = 0;\n      pbVar3[0x55] = 0;\n      pbVar3[0x56] = 0;\n      pbVar3[0x57] = 0;\n      pbVar3[0] = 0x67;\n      pbVar3[1] = 0x45;\n      pbVar3[2] = 0x23;\n      pbVar3[3] = 1;\n      pbVar3[4] = 0xef;\n      pbVar3[5] = 0xcd;\n      pbVar3[6] = 0xab;\n      pbVar3[7] = 0x89;\n      pbVar3[8] = 0x98;\n      pbVar3[9] = 0xba;\n      pbVar3[10] = 0xdc;\n      pbVar3[0xb] = 0xfe;\n      pbVar3[0xc] = 0x10;\n      pbVar3[0xd] = 0x32;\n      pbVar3[0xe] = 0x54;\n      pbVar3[0xf] = 0x76;\n      MD5Update(pbVar3,unaff_s2,0x40);\n      (**(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x754c))(unaff_s2,0x5c,0x40);\n      unaff_s0 = param_2;\n      unaff_s4 = param_3;\n    }\n    else {\n      unaff_s5 = param_2 + 0x40;\n      unaff_s4 = param_2 + (int)(param_3 + -1);\n      pbVar2 = param_2;\n      pbVar4 = unaff_s2;\n      do {\n        *pbVar4 = *pbVar4 ^ *pbVar2;\n        if (pbVar2 == unaff_s4) break;\n        pbVar2 = pbVar2 + 1;\n        pbVar4 = pbVar4 + 1;\n      } while (pbVar2 != unaff_s5);\n      unaff_s7 = *(undefined4 *)(iVar7 + -31000);\n      pbVar3[0x50] = 0;\n      pbVar3[0x51] = 0;\n      pbVar3[0x52] = 0;\n      pbVar3[0x53] = 0;\n      pbVar3[0x58] = 0;\n      pbVar3[0x59] = 0;\n      pbVar3[0x5a] = 0;\n      pbVar3[0x5b] = 0;\n      pbVar3[0x54] = 0;\n      pbVar3[0x55] = 0;\n      pbVar3[0x56] = 0;\n      pbVar3[0x57] = 0;\n      pbVar3[0] = 0x67;\n      pbVar3[1] = 0x45;\n      pbVar3[2] = 0x23;\n      pbVar3[3] = 1;\n      pbVar3[4] = 0xef;\n      pbVar3[5] = 0xcd;\n      pbVar3[6] = 0xab;\n      pbVar3[7] = 0x89;\n      pbVar3[8] = 0x98;\n      pbVar3[9] = 0xba;\n      pbVar3[10] = 0xdc;\n      pbVar3[0xb] = 0xfe;\n      pbVar3[0xc] = 0x10;\n      pbVar3[0xd] = 0x32;\n      pbVar3[0xe] = 0x54;\n      pbVar3[0xf] = 0x76;\n      MD5Update(pbVar3,unaff_s2,0x40);\n      (**(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x754c))(unaff_s2,0x5c,0x40);\n      bVar1 = *unaff_s2;\n      unaff_s1 = unaff_s2;\n      while (*unaff_s1 = bVar1 ^ *param_2, unaff_s0 = param_2, param_2 != unaff_s4) {\n        param_2 = param_2 + 1;\n        unaff_s1 = unaff_s1 + 1;\n        unaff_s0 = param_2;\n        if (param_2 == unaff_s5) break;\n        bVar1 = *unaff_s1;\n      }\n    }" if (parenthesized_expression "((int)param_3 < 1)" ( (binary_expression "(int)param_3 < 1" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      unaff_s7 = *(undefined4 *)(iVar7 + -31000);\n      pbVar3[0x50] = 0;\n      pbVar3[0x51] = 0;\n      pbVar3[0x52] = 0;\n      pbVar3[0x53] = 0;\n      pbVar3[0x58] = 0;\n      pbVar3[0x59] = 0;\n      pbVar3[0x5a] = 0;\n      pbVar3[0x5b] = 0;\n      pbVar3[0x54] = 0;\n      pbVar3[0x55] = 0;\n      pbVar3[0x56] = 0;\n      pbVar3[0x57] = 0;\n      pbVar3[0] = 0x67;\n      pbVar3[1] = 0x45;\n      pbVar3[2] = 0x23;\n      pbVar3[3] = 1;\n      pbVar3[4] = 0xef;\n      pbVar3[5] = 0xcd;\n      pbVar3[6] = 0xab;\n      pbVar3[7] = 0x89;\n      pbVar3[8] = 0x98;\n      pbVar3[9] = 0xba;\n      pbVar3[10] = 0xdc;\n      pbVar3[0xb] = 0xfe;\n      pbVar3[0xc] = 0x10;\n      pbVar3[0xd] = 0x32;\n      pbVar3[0xe] = 0x54;\n      pbVar3[0xf] = 0x76;\n      MD5Update(pbVar3,unaff_s2,0x40);\n      (**(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x754c))(unaff_s2,0x5c,0x40);\n      unaff_s0 = param_2;\n      unaff_s4 = param_3;\n    }" { (expression_statement "unaff_s7 = *(undefined4 *)(iVar7 + -31000);" (assignment_expression "unaff_s7 = *(undefined4 *)(iVar7 + -31000)" identifier = (pointer_expression "*(undefined4 *)(iVar7 + -31000)" * (cast_expression "(undefined4 *)(iVar7 + -31000)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + -31000)" ( (binary_expression "iVar7 + -31000" identifier + number_literal) ))))) ;) (expression_statement "pbVar3[0x50] = 0;" (assignment_expression "pbVar3[0x50] = 0" (subscript_expression "pbVar3[0x50]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0x51] = 0;" (assignment_expression "pbVar3[0x51] = 0" (subscript_expression "pbVar3[0x51]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0x52] = 0;" (assignment_expression "pbVar3[0x52] = 0" (subscript_expression "pbVar3[0x52]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0x53] = 0;" (assignment_expression "pbVar3[0x53] = 0" (subscript_expression "pbVar3[0x53]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0x58] = 0;" (assignment_expression "pbVar3[0x58] = 0" (subscript_expression "pbVar3[0x58]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0x59] = 0;" (assignment_expression "pbVar3[0x59] = 0" (subscript_expression "pbVar3[0x59]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0x5a] = 0;" (assignment_expression "pbVar3[0x5a] = 0" (subscript_expression "pbVar3[0x5a]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0x5b] = 0;" (assignment_expression "pbVar3[0x5b] = 0" (subscript_expression "pbVar3[0x5b]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0x54] = 0;" (assignment_expression "pbVar3[0x54] = 0" (subscript_expression "pbVar3[0x54]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0x55] = 0;" (assignment_expression "pbVar3[0x55] = 0" (subscript_expression "pbVar3[0x55]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0x56] = 0;" (assignment_expression "pbVar3[0x56] = 0" (subscript_expression "pbVar3[0x56]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0x57] = 0;" (assignment_expression "pbVar3[0x57] = 0" (subscript_expression "pbVar3[0x57]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0] = 0x67;" (assignment_expression "pbVar3[0] = 0x67" (subscript_expression "pbVar3[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[1] = 0x45;" (assignment_expression "pbVar3[1] = 0x45" (subscript_expression "pbVar3[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[2] = 0x23;" (assignment_expression "pbVar3[2] = 0x23" (subscript_expression "pbVar3[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[3] = 1;" (assignment_expression "pbVar3[3] = 1" (subscript_expression "pbVar3[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[4] = 0xef;" (assignment_expression "pbVar3[4] = 0xef" (subscript_expression "pbVar3[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[5] = 0xcd;" (assignment_expression "pbVar3[5] = 0xcd" (subscript_expression "pbVar3[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[6] = 0xab;" (assignment_expression "pbVar3[6] = 0xab" (subscript_expression "pbVar3[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[7] = 0x89;" (assignment_expression "pbVar3[7] = 0x89" (subscript_expression "pbVar3[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[8] = 0x98;" (assignment_expression "pbVar3[8] = 0x98" (subscript_expression "pbVar3[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[9] = 0xba;" (assignment_expression "pbVar3[9] = 0xba" (subscript_expression "pbVar3[9]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[10] = 0xdc;" (assignment_expression "pbVar3[10] = 0xdc" (subscript_expression "pbVar3[10]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0xb] = 0xfe;" (assignment_expression "pbVar3[0xb] = 0xfe" (subscript_expression "pbVar3[0xb]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0xc] = 0x10;" (assignment_expression "pbVar3[0xc] = 0x10" (subscript_expression "pbVar3[0xc]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0xd] = 0x32;" (assignment_expression "pbVar3[0xd] = 0x32" (subscript_expression "pbVar3[0xd]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0xe] = 0x54;" (assignment_expression "pbVar3[0xe] = 0x54" (subscript_expression "pbVar3[0xe]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0xf] = 0x76;" (assignment_expression "pbVar3[0xf] = 0x76" (subscript_expression "pbVar3[0xf]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "MD5Update(pbVar3,unaff_s2,0x40);" (call_expression "MD5Update(pbVar3,unaff_s2,0x40)" identifier (argument_list "(pbVar3,unaff_s2,0x40)" ( identifier , identifier , number_literal ))) ;) (expression_statement "(**(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x754c))(unaff_s2,0x5c,0x40);" (call_expression "(**(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x754c))(unaff_s2,0x5c,0x40)" (parenthesized_expression "(**(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x754c))" ( (pointer_expression "**(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x754c)" * (pointer_expression "*(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x754c)" * (cast_expression "(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x754c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)((int)register0x00000074 + -0x78) + -0x754c)" ( (binary_expression "*(int *)((int)register0x00000074 + -0x78) + -0x754c" (pointer_expression "*(int *)((int)register0x00000074 + -0x78)" * (cast_expression "(int *)((int)register0x00000074 + -0x78)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000074 + -0x78)" ( (binary_expression "(int)register0x00000074 + -0x78" (cast_expression "(int)register0x00000074" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) + number_literal) ))))) )) (argument_list "(unaff_s2,0x5c,0x40)" ( identifier , number_literal , number_literal ))) ;) (expression_statement "unaff_s0 = param_2;" (assignment_expression "unaff_s0 = param_2" identifier = identifier) ;) (expression_statement "unaff_s4 = param_3;" (assignment_expression "unaff_s4 = param_3" identifier = identifier) ;) }) (else_clause "else {\n      unaff_s5 = param_2 + 0x40;\n      unaff_s4 = param_2 + (int)(param_3 + -1);\n      pbVar2 = param_2;\n      pbVar4 = unaff_s2;\n      do {\n        *pbVar4 = *pbVar4 ^ *pbVar2;\n        if (pbVar2 == unaff_s4) break;\n        pbVar2 = pbVar2 + 1;\n        pbVar4 = pbVar4 + 1;\n      } while (pbVar2 != unaff_s5);\n      unaff_s7 = *(undefined4 *)(iVar7 + -31000);\n      pbVar3[0x50] = 0;\n      pbVar3[0x51] = 0;\n      pbVar3[0x52] = 0;\n      pbVar3[0x53] = 0;\n      pbVar3[0x58] = 0;\n      pbVar3[0x59] = 0;\n      pbVar3[0x5a] = 0;\n      pbVar3[0x5b] = 0;\n      pbVar3[0x54] = 0;\n      pbVar3[0x55] = 0;\n      pbVar3[0x56] = 0;\n      pbVar3[0x57] = 0;\n      pbVar3[0] = 0x67;\n      pbVar3[1] = 0x45;\n      pbVar3[2] = 0x23;\n      pbVar3[3] = 1;\n      pbVar3[4] = 0xef;\n      pbVar3[5] = 0xcd;\n      pbVar3[6] = 0xab;\n      pbVar3[7] = 0x89;\n      pbVar3[8] = 0x98;\n      pbVar3[9] = 0xba;\n      pbVar3[10] = 0xdc;\n      pbVar3[0xb] = 0xfe;\n      pbVar3[0xc] = 0x10;\n      pbVar3[0xd] = 0x32;\n      pbVar3[0xe] = 0x54;\n      pbVar3[0xf] = 0x76;\n      MD5Update(pbVar3,unaff_s2,0x40);\n      (**(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x754c))(unaff_s2,0x5c,0x40);\n      bVar1 = *unaff_s2;\n      unaff_s1 = unaff_s2;\n      while (*unaff_s1 = bVar1 ^ *param_2, unaff_s0 = param_2, param_2 != unaff_s4) {\n        param_2 = param_2 + 1;\n        unaff_s1 = unaff_s1 + 1;\n        unaff_s0 = param_2;\n        if (param_2 == unaff_s5) break;\n        bVar1 = *unaff_s1;\n      }\n    }" else (compound_statement "{\n      unaff_s5 = param_2 + 0x40;\n      unaff_s4 = param_2 + (int)(param_3 + -1);\n      pbVar2 = param_2;\n      pbVar4 = unaff_s2;\n      do {\n        *pbVar4 = *pbVar4 ^ *pbVar2;\n        if (pbVar2 == unaff_s4) break;\n        pbVar2 = pbVar2 + 1;\n        pbVar4 = pbVar4 + 1;\n      } while (pbVar2 != unaff_s5);\n      unaff_s7 = *(undefined4 *)(iVar7 + -31000);\n      pbVar3[0x50] = 0;\n      pbVar3[0x51] = 0;\n      pbVar3[0x52] = 0;\n      pbVar3[0x53] = 0;\n      pbVar3[0x58] = 0;\n      pbVar3[0x59] = 0;\n      pbVar3[0x5a] = 0;\n      pbVar3[0x5b] = 0;\n      pbVar3[0x54] = 0;\n      pbVar3[0x55] = 0;\n      pbVar3[0x56] = 0;\n      pbVar3[0x57] = 0;\n      pbVar3[0] = 0x67;\n      pbVar3[1] = 0x45;\n      pbVar3[2] = 0x23;\n      pbVar3[3] = 1;\n      pbVar3[4] = 0xef;\n      pbVar3[5] = 0xcd;\n      pbVar3[6] = 0xab;\n      pbVar3[7] = 0x89;\n      pbVar3[8] = 0x98;\n      pbVar3[9] = 0xba;\n      pbVar3[10] = 0xdc;\n      pbVar3[0xb] = 0xfe;\n      pbVar3[0xc] = 0x10;\n      pbVar3[0xd] = 0x32;\n      pbVar3[0xe] = 0x54;\n      pbVar3[0xf] = 0x76;\n      MD5Update(pbVar3,unaff_s2,0x40);\n      (**(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x754c))(unaff_s2,0x5c,0x40);\n      bVar1 = *unaff_s2;\n      unaff_s1 = unaff_s2;\n      while (*unaff_s1 = bVar1 ^ *param_2, unaff_s0 = param_2, param_2 != unaff_s4) {\n        param_2 = param_2 + 1;\n        unaff_s1 = unaff_s1 + 1;\n        unaff_s0 = param_2;\n        if (param_2 == unaff_s5) break;\n        bVar1 = *unaff_s1;\n      }\n    }" { (expression_statement "unaff_s5 = param_2 + 0x40;" (assignment_expression "unaff_s5 = param_2 + 0x40" identifier = (binary_expression "param_2 + 0x40" identifier + number_literal)) ;) (expression_statement "unaff_s4 = param_2 + (int)(param_3 + -1);" (assignment_expression "unaff_s4 = param_2 + (int)(param_3 + -1)" identifier = (binary_expression "param_2 + (int)(param_3 + -1)" identifier + (cast_expression "(int)(param_3 + -1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(param_3 + -1)" ( (binary_expression "param_3 + -1" identifier + number_literal) ))))) ;) (expression_statement "pbVar2 = param_2;" (assignment_expression "pbVar2 = param_2" identifier = identifier) ;) (expression_statement "pbVar4 = unaff_s2;" (assignment_expression "pbVar4 = unaff_s2" identifier = identifier) ;) (do_statement "do {\n        *pbVar4 = *pbVar4 ^ *pbVar2;\n        if (pbVar2 == unaff_s4) break;\n        pbVar2 = pbVar2 + 1;\n        pbVar4 = pbVar4 + 1;\n      } while (pbVar2 != unaff_s5);" do (compound_statement "{\n        *pbVar4 = *pbVar4 ^ *pbVar2;\n        if (pbVar2 == unaff_s4) break;\n        pbVar2 = pbVar2 + 1;\n        pbVar4 = pbVar4 + 1;\n      }" { (expression_statement "*pbVar4 = *pbVar4 ^ *pbVar2;" (assignment_expression "*pbVar4 = *pbVar4 ^ *pbVar2" (pointer_expression "*pbVar4" * identifier) = (binary_expression "*pbVar4 ^ *pbVar2" (pointer_expression "*pbVar4" * identifier) ^ (pointer_expression "*pbVar2" * identifier))) ;) (if_statement "if (pbVar2 == unaff_s4) break;" if (parenthesized_expression "(pbVar2 == unaff_s4)" ( (binary_expression "pbVar2 == unaff_s4" identifier == identifier) )) (break_statement "break;" break ;)) (expression_statement "pbVar2 = pbVar2 + 1;" (assignment_expression "pbVar2 = pbVar2 + 1" identifier = (binary_expression "pbVar2 + 1" identifier + number_literal)) ;) (expression_statement "pbVar4 = pbVar4 + 1;" (assignment_expression "pbVar4 = pbVar4 + 1" identifier = (binary_expression "pbVar4 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(pbVar2 != unaff_s5)" ( (binary_expression "pbVar2 != unaff_s5" identifier != identifier) )) ;) (expression_statement "unaff_s7 = *(undefined4 *)(iVar7 + -31000);" (assignment_expression "unaff_s7 = *(undefined4 *)(iVar7 + -31000)" identifier = (pointer_expression "*(undefined4 *)(iVar7 + -31000)" * (cast_expression "(undefined4 *)(iVar7 + -31000)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + -31000)" ( (binary_expression "iVar7 + -31000" identifier + number_literal) ))))) ;) (expression_statement "pbVar3[0x50] = 0;" (assignment_expression "pbVar3[0x50] = 0" (subscript_expression "pbVar3[0x50]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0x51] = 0;" (assignment_expression "pbVar3[0x51] = 0" (subscript_expression "pbVar3[0x51]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0x52] = 0;" (assignment_expression "pbVar3[0x52] = 0" (subscript_expression "pbVar3[0x52]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0x53] = 0;" (assignment_expression "pbVar3[0x53] = 0" (subscript_expression "pbVar3[0x53]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0x58] = 0;" (assignment_expression "pbVar3[0x58] = 0" (subscript_expression "pbVar3[0x58]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0x59] = 0;" (assignment_expression "pbVar3[0x59] = 0" (subscript_expression "pbVar3[0x59]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0x5a] = 0;" (assignment_expression "pbVar3[0x5a] = 0" (subscript_expression "pbVar3[0x5a]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0x5b] = 0;" (assignment_expression "pbVar3[0x5b] = 0" (subscript_expression "pbVar3[0x5b]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0x54] = 0;" (assignment_expression "pbVar3[0x54] = 0" (subscript_expression "pbVar3[0x54]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0x55] = 0;" (assignment_expression "pbVar3[0x55] = 0" (subscript_expression "pbVar3[0x55]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0x56] = 0;" (assignment_expression "pbVar3[0x56] = 0" (subscript_expression "pbVar3[0x56]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0x57] = 0;" (assignment_expression "pbVar3[0x57] = 0" (subscript_expression "pbVar3[0x57]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0] = 0x67;" (assignment_expression "pbVar3[0] = 0x67" (subscript_expression "pbVar3[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[1] = 0x45;" (assignment_expression "pbVar3[1] = 0x45" (subscript_expression "pbVar3[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[2] = 0x23;" (assignment_expression "pbVar3[2] = 0x23" (subscript_expression "pbVar3[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[3] = 1;" (assignment_expression "pbVar3[3] = 1" (subscript_expression "pbVar3[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[4] = 0xef;" (assignment_expression "pbVar3[4] = 0xef" (subscript_expression "pbVar3[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[5] = 0xcd;" (assignment_expression "pbVar3[5] = 0xcd" (subscript_expression "pbVar3[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[6] = 0xab;" (assignment_expression "pbVar3[6] = 0xab" (subscript_expression "pbVar3[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[7] = 0x89;" (assignment_expression "pbVar3[7] = 0x89" (subscript_expression "pbVar3[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[8] = 0x98;" (assignment_expression "pbVar3[8] = 0x98" (subscript_expression "pbVar3[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[9] = 0xba;" (assignment_expression "pbVar3[9] = 0xba" (subscript_expression "pbVar3[9]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[10] = 0xdc;" (assignment_expression "pbVar3[10] = 0xdc" (subscript_expression "pbVar3[10]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0xb] = 0xfe;" (assignment_expression "pbVar3[0xb] = 0xfe" (subscript_expression "pbVar3[0xb]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0xc] = 0x10;" (assignment_expression "pbVar3[0xc] = 0x10" (subscript_expression "pbVar3[0xc]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0xd] = 0x32;" (assignment_expression "pbVar3[0xd] = 0x32" (subscript_expression "pbVar3[0xd]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0xe] = 0x54;" (assignment_expression "pbVar3[0xe] = 0x54" (subscript_expression "pbVar3[0xe]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0xf] = 0x76;" (assignment_expression "pbVar3[0xf] = 0x76" (subscript_expression "pbVar3[0xf]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "MD5Update(pbVar3,unaff_s2,0x40);" (call_expression "MD5Update(pbVar3,unaff_s2,0x40)" identifier (argument_list "(pbVar3,unaff_s2,0x40)" ( identifier , identifier , number_literal ))) ;) (expression_statement "(**(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x754c))(unaff_s2,0x5c,0x40);" (call_expression "(**(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x754c))(unaff_s2,0x5c,0x40)" (parenthesized_expression "(**(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x754c))" ( (pointer_expression "**(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x754c)" * (pointer_expression "*(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x754c)" * (cast_expression "(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x754c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)((int)register0x00000074 + -0x78) + -0x754c)" ( (binary_expression "*(int *)((int)register0x00000074 + -0x78) + -0x754c" (pointer_expression "*(int *)((int)register0x00000074 + -0x78)" * (cast_expression "(int *)((int)register0x00000074 + -0x78)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000074 + -0x78)" ( (binary_expression "(int)register0x00000074 + -0x78" (cast_expression "(int)register0x00000074" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) + number_literal) ))))) )) (argument_list "(unaff_s2,0x5c,0x40)" ( identifier , number_literal , number_literal ))) ;) (expression_statement "bVar1 = *unaff_s2;" (assignment_expression "bVar1 = *unaff_s2" identifier = (pointer_expression "*unaff_s2" * identifier)) ;) (expression_statement "unaff_s1 = unaff_s2;" (assignment_expression "unaff_s1 = unaff_s2" identifier = identifier) ;) (while_statement "while (*unaff_s1 = bVar1 ^ *param_2, unaff_s0 = param_2, param_2 != unaff_s4) {\n        param_2 = param_2 + 1;\n        unaff_s1 = unaff_s1 + 1;\n        unaff_s0 = param_2;\n        if (param_2 == unaff_s5) break;\n        bVar1 = *unaff_s1;\n      }" while (parenthesized_expression "(*unaff_s1 = bVar1 ^ *param_2, unaff_s0 = param_2, param_2 != unaff_s4)" ( (comma_expression "*unaff_s1 = bVar1 ^ *param_2, unaff_s0 = param_2, param_2 != unaff_s4" (assignment_expression "*unaff_s1 = bVar1 ^ *param_2" (pointer_expression "*unaff_s1" * identifier) = (binary_expression "bVar1 ^ *param_2" identifier ^ (pointer_expression "*param_2" * identifier))) , (comma_expression "unaff_s0 = param_2, param_2 != unaff_s4" (assignment_expression "unaff_s0 = param_2" identifier = identifier) , (binary_expression "param_2 != unaff_s4" identifier != identifier))) )) (compound_statement "{\n        param_2 = param_2 + 1;\n        unaff_s1 = unaff_s1 + 1;\n        unaff_s0 = param_2;\n        if (param_2 == unaff_s5) break;\n        bVar1 = *unaff_s1;\n      }" { (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;) (expression_statement "unaff_s1 = unaff_s1 + 1;" (assignment_expression "unaff_s1 = unaff_s1 + 1" identifier = (binary_expression "unaff_s1 + 1" identifier + number_literal)) ;) (expression_statement "unaff_s0 = param_2;" (assignment_expression "unaff_s0 = param_2" identifier = identifier) ;) (if_statement "if (param_2 == unaff_s5) break;" if (parenthesized_expression "(param_2 == unaff_s5)" ( (binary_expression "param_2 == unaff_s5" identifier == identifier) )) (break_statement "break;" break ;)) (expression_statement "bVar1 = *unaff_s1;" (assignment_expression "bVar1 = *unaff_s1" identifier = (pointer_expression "*unaff_s1" * identifier)) ;) })) }))) (expression_statement "pbVar3[0xac] = 0;" (assignment_expression "pbVar3[0xac] = 0" (subscript_expression "pbVar3[0xac]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0xad] = 0;" (assignment_expression "pbVar3[0xad] = 0" (subscript_expression "pbVar3[0xad]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0xae] = 0;" (assignment_expression "pbVar3[0xae] = 0" (subscript_expression "pbVar3[0xae]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0xaf] = 0;" (assignment_expression "pbVar3[0xaf] = 0" (subscript_expression "pbVar3[0xaf]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0xb4] = 0;" (assignment_expression "pbVar3[0xb4] = 0" (subscript_expression "pbVar3[0xb4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0xb5] = 0;" (assignment_expression "pbVar3[0xb5] = 0" (subscript_expression "pbVar3[0xb5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0xb6] = 0;" (assignment_expression "pbVar3[0xb6] = 0" (subscript_expression "pbVar3[0xb6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0xb7] = 0;" (assignment_expression "pbVar3[0xb7] = 0" (subscript_expression "pbVar3[0xb7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0xb0] = 0;" (assignment_expression "pbVar3[0xb0] = 0" (subscript_expression "pbVar3[0xb0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0xb1] = 0;" (assignment_expression "pbVar3[0xb1] = 0" (subscript_expression "pbVar3[0xb1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0xb2] = 0;" (assignment_expression "pbVar3[0xb2] = 0" (subscript_expression "pbVar3[0xb2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0xb3] = 0;" (assignment_expression "pbVar3[0xb3] = 0" (subscript_expression "pbVar3[0xb3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0x5c] = 0x67;" (assignment_expression "pbVar3[0x5c] = 0x67" (subscript_expression "pbVar3[0x5c]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0x5d] = 0x45;" (assignment_expression "pbVar3[0x5d] = 0x45" (subscript_expression "pbVar3[0x5d]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0x5e] = 0x23;" (assignment_expression "pbVar3[0x5e] = 0x23" (subscript_expression "pbVar3[0x5e]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0x5f] = 1;" (assignment_expression "pbVar3[0x5f] = 1" (subscript_expression "pbVar3[0x5f]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0x60] = 0xef;" (assignment_expression "pbVar3[0x60] = 0xef" (subscript_expression "pbVar3[0x60]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0x61] = 0xcd;" (assignment_expression "pbVar3[0x61] = 0xcd" (subscript_expression "pbVar3[0x61]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0x62] = 0xab;" (assignment_expression "pbVar3[0x62] = 0xab" (subscript_expression "pbVar3[0x62]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[99] = 0x89;" (assignment_expression "pbVar3[99] = 0x89" (subscript_expression "pbVar3[99]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[100] = 0x98;" (assignment_expression "pbVar3[100] = 0x98" (subscript_expression "pbVar3[100]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0x65] = 0xba;" (assignment_expression "pbVar3[0x65] = 0xba" (subscript_expression "pbVar3[0x65]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0x66] = 0xdc;" (assignment_expression "pbVar3[0x66] = 0xdc" (subscript_expression "pbVar3[0x66]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0x67] = 0xfe;" (assignment_expression "pbVar3[0x67] = 0xfe" (subscript_expression "pbVar3[0x67]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0x68] = 0x10;" (assignment_expression "pbVar3[0x68] = 0x10" (subscript_expression "pbVar3[0x68]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0x69] = 0x32;" (assignment_expression "pbVar3[0x69] = 0x32" (subscript_expression "pbVar3[0x69]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0x6a] = 0x54;" (assignment_expression "pbVar3[0x6a] = 0x54" (subscript_expression "pbVar3[0x6a]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0x6b] = 0x76;" (assignment_expression "pbVar3[0x6b] = 0x76" (subscript_expression "pbVar3[0x6b]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "MD5Update(pbVar3 + 0x5c,unaff_s2,0x40);" (call_expression "MD5Update(pbVar3 + 0x5c,unaff_s2,0x40)" identifier (argument_list "(pbVar3 + 0x5c,unaff_s2,0x40)" ( (binary_expression "pbVar3 + 0x5c" identifier + number_literal) , identifier , number_literal ))) ;) (expression_statement "param_2 = &DAT_00000040;" (assignment_expression "param_2 = &DAT_00000040" identifier = (pointer_expression "&DAT_00000040" & identifier)) ;) (expression_statement "param_1 = unaff_s2;" (assignment_expression "param_1 = unaff_s2" identifier = identifier) ;) (expression_statement "(**(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x7f10))();" (call_expression "(**(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x7f10))()" (parenthesized_expression "(**(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x7f10))" ( (pointer_expression "**(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x7f10)" * (pointer_expression "*(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x7f10)" * (cast_expression "(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x7f10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)((int)register0x00000074 + -0x78) + -0x7f10)" ( (binary_expression "*(int *)((int)register0x00000074 + -0x78) + -0x7f10" (pointer_expression "*(int *)((int)register0x00000074 + -0x78)" * (cast_expression "(int *)((int)register0x00000074 + -0x78)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000074 + -0x78)" ( (binary_expression "(int)register0x00000074 + -0x78" (cast_expression "(int)register0x00000074" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) + number_literal) ))))) )) (argument_list "()" ( ))) ;) (if_statement "if (*(int *)((int)register0x00000074 + -0x2c) == *unaff_s3) {\n      return;\n    }" if (parenthesized_expression "(*(int *)((int)register0x00000074 + -0x2c) == *unaff_s3)" ( (binary_expression "*(int *)((int)register0x00000074 + -0x2c) == *unaff_s3" (pointer_expression "*(int *)((int)register0x00000074 + -0x2c)" * (cast_expression "(int *)((int)register0x00000074 + -0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000074 + -0x2c)" ( (binary_expression "(int)register0x00000074 + -0x2c" (cast_expression "(int)register0x00000074" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == (pointer_expression "*unaff_s3" * identifier)) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) (expression_statement "pcVar6 = *(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x7498);" (assignment_expression "pcVar6 = *(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x7498)" identifier = (pointer_expression "*(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x7498)" * (cast_expression "(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x7498)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)((int)register0x00000074 + -0x78) + -0x7498)" ( (binary_expression "*(int *)((int)register0x00000074 + -0x78) + -0x7498" (pointer_expression "*(int *)((int)register0x00000074 + -0x78)" * (cast_expression "(int *)((int)register0x00000074 + -0x78)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000074 + -0x78)" ( (binary_expression "(int)register0x00000074 + -0x78" (cast_expression "(int)register0x00000074" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) + number_literal) ))))) ;) (expression_statement "unaff_retaddr = 0x6a8bc;" (assignment_expression "unaff_retaddr = 0x6a8bc" identifier = number_literal) ;) (expression_statement "(*pcVar6)();" (call_expression "(*pcVar6)()" (parenthesized_expression "(*pcVar6)" ( (pointer_expression "*pcVar6" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "pcVar6 = *(code **)(pcVar6 + 0x47c48);" (assignment_expression "pcVar6 = *(code **)(pcVar6 + 0x47c48)" identifier = (pointer_expression "*(code **)(pcVar6 + 0x47c48)" * (cast_expression "(code **)(pcVar6 + 0x47c48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar6 + 0x47c48)" ( (binary_expression "pcVar6 + 0x47c48" identifier + number_literal) ))))) ;) (expression_statement "param_3 = &DAT_00000010;" (assignment_expression "param_3 = &DAT_00000010" identifier = (pointer_expression "&DAT_00000010" & identifier)) ;) (expression_statement "unaff_s6 = pbVar3;" (assignment_expression "unaff_s6 = pbVar3" identifier = identifier) ;) (expression_statement "register0x00000074 = (BADSPACEBASE *)((int)register0x00000074 + -0x88);" (assignment_expression "register0x00000074 = (BADSPACEBASE *)((int)register0x00000074 + -0x88)" identifier = (cast_expression "(BADSPACEBASE *)((int)register0x00000074 + -0x88)" ( (type_descriptor "BADSPACEBASE *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000074 + -0x88)" ( (binary_expression "(int)register0x00000074 + -0x88" (cast_expression "(int)register0x00000074" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "void hmacmd5_key(void *handle,void *keyv,int len)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  byte *pbVar3;\n  byte *p;\n  undefined1 *keyv_00;\n  byte *pbVar4;\n  byte *pbVar5;\n  byte *pbVar6;\n  uchar foo [64];\n  \n  puVar1 = PTR___stack_chk_guard_000b2f04;\n  p = foo;\n  iVar2 = *(int *)PTR___stack_chk_guard_000b2f04;\n  (*(code *)PTR_memset_000b2e24)(p,0x36,0x40);\n  if (len < 1) {\n    *(undefined4 *)((int)handle + 0x50) = 0;\n    *(undefined4 *)((int)handle + 0x58) = 0;\n    *(undefined4 *)((int)handle + 0x54) = 0;\n    *(undefined4 *)handle = 0x67452301;\n    *(undefined4 *)((int)handle + 4) = 0xefcdab89;\n    *(undefined4 *)((int)handle + 8) = 0x98badcfe;\n    *(undefined4 *)((int)handle + 0xc) = 0x10325476;\n    MD5Update((MD5Context *)handle,p,0x40);\n    (*(code *)PTR_memset_000b2e24)(p,0x5c,0x40);\n  }\n  else {\n    pbVar6 = (byte *)((int)keyv + 0x40);\n    pbVar5 = (byte *)((int)keyv + len + -1);\n    pbVar4 = (byte *)keyv;\n    pbVar3 = p;\n    do {\n      *pbVar3 = *pbVar3 ^ *pbVar4;\n      if (pbVar4 == pbVar5) break;\n      pbVar4 = pbVar4 + 1;\n      pbVar3 = pbVar3 + 1;\n    } while (pbVar4 != pbVar6);\n    *(undefined4 *)((int)handle + 0x50) = 0;\n    *(undefined4 *)((int)handle + 0x58) = 0;\n    *(undefined4 *)((int)handle + 0x54) = 0;\n    *(undefined4 *)handle = 0x67452301;\n    *(undefined4 *)((int)handle + 4) = 0xefcdab89;\n    *(undefined4 *)((int)handle + 8) = 0x98badcfe;\n    *(undefined4 *)((int)handle + 0xc) = 0x10325476;\n    MD5Update((MD5Context *)handle,p,0x40);\n    (*(code *)PTR_memset_000b2e24)(p,0x5c,0x40);\n    pbVar4 = p;\n                    /* WARNING: Load size is inaccurate */\n    while (*pbVar4 = foo[0] ^ *keyv, (byte *)keyv != pbVar5) {\n      keyv = (void *)((int)keyv + 1);\n      pbVar4 = pbVar4 + 1;\n      if ((byte *)keyv == pbVar6) break;\n      foo[0] = *pbVar4;\n    }\n  }\n  *(undefined4 *)((int)handle + 0xac) = 0;\n  *(undefined4 *)((int)handle + 0xb4) = 0;\n  *(undefined4 *)((int)handle + 0xb0) = 0;\n  *(undefined4 *)((int)handle + 0x5c) = 0x67452301;\n  *(undefined4 *)((int)handle + 0x60) = 0xefcdab89;\n  *(undefined4 *)((int)handle + 100) = 0x98badcfe;\n  *(undefined4 *)((int)handle + 0x68) = 0x10325476;\n  MD5Update((MD5Context *)((int)handle + 0x5c),p,0x40);\n  keyv_00 = &DAT_00000040;\n  (*(code *)PTR_smemclr_000b2460)();\n  if (iVar2 != *(int *)puVar1) {\n    (*(code *)PTR___stack_chk_fail_000b2ed8)();\n    hmacmd5_key(p,keyv_00,0x10);\n    return;\n  }\n  return;\n}\n\n" (function_definition "void hmacmd5_key(void *handle,void *keyv,int len)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  byte *pbVar3;\n  byte *p;\n  undefined1 *keyv_00;\n  byte *pbVar4;\n  byte *pbVar5;\n  byte *pbVar6;\n  uchar foo [64];\n  \n  puVar1 = PTR___stack_chk_guard_000b2f04;\n  p = foo;\n  iVar2 = *(int *)PTR___stack_chk_guard_000b2f04;\n  (*(code *)PTR_memset_000b2e24)(p,0x36,0x40);\n  if (len < 1) {\n    *(undefined4 *)((int)handle + 0x50) = 0;\n    *(undefined4 *)((int)handle + 0x58) = 0;\n    *(undefined4 *)((int)handle + 0x54) = 0;\n    *(undefined4 *)handle = 0x67452301;\n    *(undefined4 *)((int)handle + 4) = 0xefcdab89;\n    *(undefined4 *)((int)handle + 8) = 0x98badcfe;\n    *(undefined4 *)((int)handle + 0xc) = 0x10325476;\n    MD5Update((MD5Context *)handle,p,0x40);\n    (*(code *)PTR_memset_000b2e24)(p,0x5c,0x40);\n  }\n  else {\n    pbVar6 = (byte *)((int)keyv + 0x40);\n    pbVar5 = (byte *)((int)keyv + len + -1);\n    pbVar4 = (byte *)keyv;\n    pbVar3 = p;\n    do {\n      *pbVar3 = *pbVar3 ^ *pbVar4;\n      if (pbVar4 == pbVar5) break;\n      pbVar4 = pbVar4 + 1;\n      pbVar3 = pbVar3 + 1;\n    } while (pbVar4 != pbVar6);\n    *(undefined4 *)((int)handle + 0x50) = 0;\n    *(undefined4 *)((int)handle + 0x58) = 0;\n    *(undefined4 *)((int)handle + 0x54) = 0;\n    *(undefined4 *)handle = 0x67452301;\n    *(undefined4 *)((int)handle + 4) = 0xefcdab89;\n    *(undefined4 *)((int)handle + 8) = 0x98badcfe;\n    *(undefined4 *)((int)handle + 0xc) = 0x10325476;\n    MD5Update((MD5Context *)handle,p,0x40);\n    (*(code *)PTR_memset_000b2e24)(p,0x5c,0x40);\n    pbVar4 = p;\n                    /* WARNING: Load size is inaccurate */\n    while (*pbVar4 = foo[0] ^ *keyv, (byte *)keyv != pbVar5) {\n      keyv = (void *)((int)keyv + 1);\n      pbVar4 = pbVar4 + 1;\n      if ((byte *)keyv == pbVar6) break;\n      foo[0] = *pbVar4;\n    }\n  }\n  *(undefined4 *)((int)handle + 0xac) = 0;\n  *(undefined4 *)((int)handle + 0xb4) = 0;\n  *(undefined4 *)((int)handle + 0xb0) = 0;\n  *(undefined4 *)((int)handle + 0x5c) = 0x67452301;\n  *(undefined4 *)((int)handle + 0x60) = 0xefcdab89;\n  *(undefined4 *)((int)handle + 100) = 0x98badcfe;\n  *(undefined4 *)((int)handle + 0x68) = 0x10325476;\n  MD5Update((MD5Context *)((int)handle + 0x5c),p,0x40);\n  keyv_00 = &DAT_00000040;\n  (*(code *)PTR_smemclr_000b2460)();\n  if (iVar2 != *(int *)puVar1) {\n    (*(code *)PTR___stack_chk_fail_000b2ed8)();\n    hmacmd5_key(p,keyv_00,0x10);\n    return;\n  }\n  return;\n}" primitive_type (function_declarator "hmacmd5_key(void *handle,void *keyv,int len)" identifier (parameter_list "(void *handle,void *keyv,int len)" ( (parameter_declaration "void *handle" primitive_type (pointer_declarator "*handle" * identifier)) , (parameter_declaration "void *keyv" primitive_type (pointer_declarator "*keyv" * identifier)) , (parameter_declaration "int len" primitive_type identifier) ))) (compound_statement "{\n  undefined *puVar1;\n  int iVar2;\n  byte *pbVar3;\n  byte *p;\n  undefined1 *keyv_00;\n  byte *pbVar4;\n  byte *pbVar5;\n  byte *pbVar6;\n  uchar foo [64];\n  \n  puVar1 = PTR___stack_chk_guard_000b2f04;\n  p = foo;\n  iVar2 = *(int *)PTR___stack_chk_guard_000b2f04;\n  (*(code *)PTR_memset_000b2e24)(p,0x36,0x40);\n  if (len < 1) {\n    *(undefined4 *)((int)handle + 0x50) = 0;\n    *(undefined4 *)((int)handle + 0x58) = 0;\n    *(undefined4 *)((int)handle + 0x54) = 0;\n    *(undefined4 *)handle = 0x67452301;\n    *(undefined4 *)((int)handle + 4) = 0xefcdab89;\n    *(undefined4 *)((int)handle + 8) = 0x98badcfe;\n    *(undefined4 *)((int)handle + 0xc) = 0x10325476;\n    MD5Update((MD5Context *)handle,p,0x40);\n    (*(code *)PTR_memset_000b2e24)(p,0x5c,0x40);\n  }\n  else {\n    pbVar6 = (byte *)((int)keyv + 0x40);\n    pbVar5 = (byte *)((int)keyv + len + -1);\n    pbVar4 = (byte *)keyv;\n    pbVar3 = p;\n    do {\n      *pbVar3 = *pbVar3 ^ *pbVar4;\n      if (pbVar4 == pbVar5) break;\n      pbVar4 = pbVar4 + 1;\n      pbVar3 = pbVar3 + 1;\n    } while (pbVar4 != pbVar6);\n    *(undefined4 *)((int)handle + 0x50) = 0;\n    *(undefined4 *)((int)handle + 0x58) = 0;\n    *(undefined4 *)((int)handle + 0x54) = 0;\n    *(undefined4 *)handle = 0x67452301;\n    *(undefined4 *)((int)handle + 4) = 0xefcdab89;\n    *(undefined4 *)((int)handle + 8) = 0x98badcfe;\n    *(undefined4 *)((int)handle + 0xc) = 0x10325476;\n    MD5Update((MD5Context *)handle,p,0x40);\n    (*(code *)PTR_memset_000b2e24)(p,0x5c,0x40);\n    pbVar4 = p;\n                    /* WARNING: Load size is inaccurate */\n    while (*pbVar4 = foo[0] ^ *keyv, (byte *)keyv != pbVar5) {\n      keyv = (void *)((int)keyv + 1);\n      pbVar4 = pbVar4 + 1;\n      if ((byte *)keyv == pbVar6) break;\n      foo[0] = *pbVar4;\n    }\n  }\n  *(undefined4 *)((int)handle + 0xac) = 0;\n  *(undefined4 *)((int)handle + 0xb4) = 0;\n  *(undefined4 *)((int)handle + 0xb0) = 0;\n  *(undefined4 *)((int)handle + 0x5c) = 0x67452301;\n  *(undefined4 *)((int)handle + 0x60) = 0xefcdab89;\n  *(undefined4 *)((int)handle + 100) = 0x98badcfe;\n  *(undefined4 *)((int)handle + 0x68) = 0x10325476;\n  MD5Update((MD5Context *)((int)handle + 0x5c),p,0x40);\n  keyv_00 = &DAT_00000040;\n  (*(code *)PTR_smemclr_000b2460)();\n  if (iVar2 != *(int *)puVar1) {\n    (*(code *)PTR___stack_chk_fail_000b2ed8)();\n    hmacmd5_key(p,keyv_00,0x10);\n    return;\n  }\n  return;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "byte *pbVar3;" type_identifier (pointer_declarator "*pbVar3" * identifier) ;) (declaration "byte *p;" type_identifier (pointer_declarator "*p" * identifier) ;) (declaration "undefined1 *keyv_00;" type_identifier (pointer_declarator "*keyv_00" * identifier) ;) (declaration "byte *pbVar4;" type_identifier (pointer_declarator "*pbVar4" * identifier) ;) (declaration "byte *pbVar5;" type_identifier (pointer_declarator "*pbVar5" * identifier) ;) (declaration "byte *pbVar6;" type_identifier (pointer_declarator "*pbVar6" * identifier) ;) (declaration "uchar foo [64];" type_identifier (array_declarator "foo [64]" identifier [ number_literal ]) ;) (expression_statement "puVar1 = PTR___stack_chk_guard_000b2f04;" (assignment_expression "puVar1 = PTR___stack_chk_guard_000b2f04" identifier = identifier) ;) (expression_statement "p = foo;" (assignment_expression "p = foo" identifier = identifier) ;) (expression_statement "iVar2 = *(int *)PTR___stack_chk_guard_000b2f04;" (assignment_expression "iVar2 = *(int *)PTR___stack_chk_guard_000b2f04" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_000b2f04" * (cast_expression "(int *)PTR___stack_chk_guard_000b2f04" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "(*(code *)PTR_memset_000b2e24)(p,0x36,0x40);" (call_expression "(*(code *)PTR_memset_000b2e24)(p,0x36,0x40)" (parenthesized_expression "(*(code *)PTR_memset_000b2e24)" ( (pointer_expression "*(code *)PTR_memset_000b2e24" * (cast_expression "(code *)PTR_memset_000b2e24" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(p,0x36,0x40)" ( identifier , number_literal , number_literal ))) ;) (if_statement "if (len < 1) {\n    *(undefined4 *)((int)handle + 0x50) = 0;\n    *(undefined4 *)((int)handle + 0x58) = 0;\n    *(undefined4 *)((int)handle + 0x54) = 0;\n    *(undefined4 *)handle = 0x67452301;\n    *(undefined4 *)((int)handle + 4) = 0xefcdab89;\n    *(undefined4 *)((int)handle + 8) = 0x98badcfe;\n    *(undefined4 *)((int)handle + 0xc) = 0x10325476;\n    MD5Update((MD5Context *)handle,p,0x40);\n    (*(code *)PTR_memset_000b2e24)(p,0x5c,0x40);\n  }\n  else {\n    pbVar6 = (byte *)((int)keyv + 0x40);\n    pbVar5 = (byte *)((int)keyv + len + -1);\n    pbVar4 = (byte *)keyv;\n    pbVar3 = p;\n    do {\n      *pbVar3 = *pbVar3 ^ *pbVar4;\n      if (pbVar4 == pbVar5) break;\n      pbVar4 = pbVar4 + 1;\n      pbVar3 = pbVar3 + 1;\n    } while (pbVar4 != pbVar6);\n    *(undefined4 *)((int)handle + 0x50) = 0;\n    *(undefined4 *)((int)handle + 0x58) = 0;\n    *(undefined4 *)((int)handle + 0x54) = 0;\n    *(undefined4 *)handle = 0x67452301;\n    *(undefined4 *)((int)handle + 4) = 0xefcdab89;\n    *(undefined4 *)((int)handle + 8) = 0x98badcfe;\n    *(undefined4 *)((int)handle + 0xc) = 0x10325476;\n    MD5Update((MD5Context *)handle,p,0x40);\n    (*(code *)PTR_memset_000b2e24)(p,0x5c,0x40);\n    pbVar4 = p;\n                    /* WARNING: Load size is inaccurate */\n    while (*pbVar4 = foo[0] ^ *keyv, (byte *)keyv != pbVar5) {\n      keyv = (void *)((int)keyv + 1);\n      pbVar4 = pbVar4 + 1;\n      if ((byte *)keyv == pbVar6) break;\n      foo[0] = *pbVar4;\n    }\n  }" if (parenthesized_expression "(len < 1)" ( (binary_expression "len < 1" identifier < number_literal) )) (compound_statement "{\n    *(undefined4 *)((int)handle + 0x50) = 0;\n    *(undefined4 *)((int)handle + 0x58) = 0;\n    *(undefined4 *)((int)handle + 0x54) = 0;\n    *(undefined4 *)handle = 0x67452301;\n    *(undefined4 *)((int)handle + 4) = 0xefcdab89;\n    *(undefined4 *)((int)handle + 8) = 0x98badcfe;\n    *(undefined4 *)((int)handle + 0xc) = 0x10325476;\n    MD5Update((MD5Context *)handle,p,0x40);\n    (*(code *)PTR_memset_000b2e24)(p,0x5c,0x40);\n  }" { (expression_statement "*(undefined4 *)((int)handle + 0x50) = 0;" (assignment_expression "*(undefined4 *)((int)handle + 0x50) = 0" (pointer_expression "*(undefined4 *)((int)handle + 0x50)" * (cast_expression "(undefined4 *)((int)handle + 0x50)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)handle + 0x50)" ( (binary_expression "(int)handle + 0x50" (cast_expression "(int)handle" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)((int)handle + 0x58) = 0;" (assignment_expression "*(undefined4 *)((int)handle + 0x58) = 0" (pointer_expression "*(undefined4 *)((int)handle + 0x58)" * (cast_expression "(undefined4 *)((int)handle + 0x58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)handle + 0x58)" ( (binary_expression "(int)handle + 0x58" (cast_expression "(int)handle" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)((int)handle + 0x54) = 0;" (assignment_expression "*(undefined4 *)((int)handle + 0x54) = 0" (pointer_expression "*(undefined4 *)((int)handle + 0x54)" * (cast_expression "(undefined4 *)((int)handle + 0x54)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)handle + 0x54)" ( (binary_expression "(int)handle + 0x54" (cast_expression "(int)handle" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)handle = 0x67452301;" (assignment_expression "*(undefined4 *)handle = 0x67452301" (pointer_expression "*(undefined4 *)handle" * (cast_expression "(undefined4 *)handle" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) (expression_statement "*(undefined4 *)((int)handle + 4) = 0xefcdab89;" (assignment_expression "*(undefined4 *)((int)handle + 4) = 0xefcdab89" (pointer_expression "*(undefined4 *)((int)handle + 4)" * (cast_expression "(undefined4 *)((int)handle + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)handle + 4)" ( (binary_expression "(int)handle + 4" (cast_expression "(int)handle" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)((int)handle + 8) = 0x98badcfe;" (assignment_expression "*(undefined4 *)((int)handle + 8) = 0x98badcfe" (pointer_expression "*(undefined4 *)((int)handle + 8)" * (cast_expression "(undefined4 *)((int)handle + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)handle + 8)" ( (binary_expression "(int)handle + 8" (cast_expression "(int)handle" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)((int)handle + 0xc) = 0x10325476;" (assignment_expression "*(undefined4 *)((int)handle + 0xc) = 0x10325476" (pointer_expression "*(undefined4 *)((int)handle + 0xc)" * (cast_expression "(undefined4 *)((int)handle + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)handle + 0xc)" ( (binary_expression "(int)handle + 0xc" (cast_expression "(int)handle" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "MD5Update((MD5Context *)handle,p,0x40);" (call_expression "MD5Update((MD5Context *)handle,p,0x40)" identifier (argument_list "((MD5Context *)handle,p,0x40)" ( (cast_expression "(MD5Context *)handle" ( (type_descriptor "MD5Context *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier , number_literal ))) ;) (expression_statement "(*(code *)PTR_memset_000b2e24)(p,0x5c,0x40);" (call_expression "(*(code *)PTR_memset_000b2e24)(p,0x5c,0x40)" (parenthesized_expression "(*(code *)PTR_memset_000b2e24)" ( (pointer_expression "*(code *)PTR_memset_000b2e24" * (cast_expression "(code *)PTR_memset_000b2e24" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(p,0x5c,0x40)" ( identifier , number_literal , number_literal ))) ;) }) (else_clause "else {\n    pbVar6 = (byte *)((int)keyv + 0x40);\n    pbVar5 = (byte *)((int)keyv + len + -1);\n    pbVar4 = (byte *)keyv;\n    pbVar3 = p;\n    do {\n      *pbVar3 = *pbVar3 ^ *pbVar4;\n      if (pbVar4 == pbVar5) break;\n      pbVar4 = pbVar4 + 1;\n      pbVar3 = pbVar3 + 1;\n    } while (pbVar4 != pbVar6);\n    *(undefined4 *)((int)handle + 0x50) = 0;\n    *(undefined4 *)((int)handle + 0x58) = 0;\n    *(undefined4 *)((int)handle + 0x54) = 0;\n    *(undefined4 *)handle = 0x67452301;\n    *(undefined4 *)((int)handle + 4) = 0xefcdab89;\n    *(undefined4 *)((int)handle + 8) = 0x98badcfe;\n    *(undefined4 *)((int)handle + 0xc) = 0x10325476;\n    MD5Update((MD5Context *)handle,p,0x40);\n    (*(code *)PTR_memset_000b2e24)(p,0x5c,0x40);\n    pbVar4 = p;\n                    /* WARNING: Load size is inaccurate */\n    while (*pbVar4 = foo[0] ^ *keyv, (byte *)keyv != pbVar5) {\n      keyv = (void *)((int)keyv + 1);\n      pbVar4 = pbVar4 + 1;\n      if ((byte *)keyv == pbVar6) break;\n      foo[0] = *pbVar4;\n    }\n  }" else (compound_statement "{\n    pbVar6 = (byte *)((int)keyv + 0x40);\n    pbVar5 = (byte *)((int)keyv + len + -1);\n    pbVar4 = (byte *)keyv;\n    pbVar3 = p;\n    do {\n      *pbVar3 = *pbVar3 ^ *pbVar4;\n      if (pbVar4 == pbVar5) break;\n      pbVar4 = pbVar4 + 1;\n      pbVar3 = pbVar3 + 1;\n    } while (pbVar4 != pbVar6);\n    *(undefined4 *)((int)handle + 0x50) = 0;\n    *(undefined4 *)((int)handle + 0x58) = 0;\n    *(undefined4 *)((int)handle + 0x54) = 0;\n    *(undefined4 *)handle = 0x67452301;\n    *(undefined4 *)((int)handle + 4) = 0xefcdab89;\n    *(undefined4 *)((int)handle + 8) = 0x98badcfe;\n    *(undefined4 *)((int)handle + 0xc) = 0x10325476;\n    MD5Update((MD5Context *)handle,p,0x40);\n    (*(code *)PTR_memset_000b2e24)(p,0x5c,0x40);\n    pbVar4 = p;\n                    /* WARNING: Load size is inaccurate */\n    while (*pbVar4 = foo[0] ^ *keyv, (byte *)keyv != pbVar5) {\n      keyv = (void *)((int)keyv + 1);\n      pbVar4 = pbVar4 + 1;\n      if ((byte *)keyv == pbVar6) break;\n      foo[0] = *pbVar4;\n    }\n  }" { (expression_statement "pbVar6 = (byte *)((int)keyv + 0x40);" (assignment_expression "pbVar6 = (byte *)((int)keyv + 0x40)" identifier = (cast_expression "(byte *)((int)keyv + 0x40)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)keyv + 0x40)" ( (binary_expression "(int)keyv + 0x40" (cast_expression "(int)keyv" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "pbVar5 = (byte *)((int)keyv + len + -1);" (assignment_expression "pbVar5 = (byte *)((int)keyv + len + -1)" identifier = (cast_expression "(byte *)((int)keyv + len + -1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)keyv + len + -1)" ( (binary_expression "(int)keyv + len + -1" (binary_expression "(int)keyv + len" (cast_expression "(int)keyv" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) ;) (expression_statement "pbVar4 = (byte *)keyv;" (assignment_expression "pbVar4 = (byte *)keyv" identifier = (cast_expression "(byte *)keyv" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "pbVar3 = p;" (assignment_expression "pbVar3 = p" identifier = identifier) ;) (do_statement "do {\n      *pbVar3 = *pbVar3 ^ *pbVar4;\n      if (pbVar4 == pbVar5) break;\n      pbVar4 = pbVar4 + 1;\n      pbVar3 = pbVar3 + 1;\n    } while (pbVar4 != pbVar6);" do (compound_statement "{\n      *pbVar3 = *pbVar3 ^ *pbVar4;\n      if (pbVar4 == pbVar5) break;\n      pbVar4 = pbVar4 + 1;\n      pbVar3 = pbVar3 + 1;\n    }" { (expression_statement "*pbVar3 = *pbVar3 ^ *pbVar4;" (assignment_expression "*pbVar3 = *pbVar3 ^ *pbVar4" (pointer_expression "*pbVar3" * identifier) = (binary_expression "*pbVar3 ^ *pbVar4" (pointer_expression "*pbVar3" * identifier) ^ (pointer_expression "*pbVar4" * identifier))) ;) (if_statement "if (pbVar4 == pbVar5) break;" if (parenthesized_expression "(pbVar4 == pbVar5)" ( (binary_expression "pbVar4 == pbVar5" identifier == identifier) )) (break_statement "break;" break ;)) (expression_statement "pbVar4 = pbVar4 + 1;" (assignment_expression "pbVar4 = pbVar4 + 1" identifier = (binary_expression "pbVar4 + 1" identifier + number_literal)) ;) (expression_statement "pbVar3 = pbVar3 + 1;" (assignment_expression "pbVar3 = pbVar3 + 1" identifier = (binary_expression "pbVar3 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(pbVar4 != pbVar6)" ( (binary_expression "pbVar4 != pbVar6" identifier != identifier) )) ;) (expression_statement "*(undefined4 *)((int)handle + 0x50) = 0;" (assignment_expression "*(undefined4 *)((int)handle + 0x50) = 0" (pointer_expression "*(undefined4 *)((int)handle + 0x50)" * (cast_expression "(undefined4 *)((int)handle + 0x50)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)handle + 0x50)" ( (binary_expression "(int)handle + 0x50" (cast_expression "(int)handle" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)((int)handle + 0x58) = 0;" (assignment_expression "*(undefined4 *)((int)handle + 0x58) = 0" (pointer_expression "*(undefined4 *)((int)handle + 0x58)" * (cast_expression "(undefined4 *)((int)handle + 0x58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)handle + 0x58)" ( (binary_expression "(int)handle + 0x58" (cast_expression "(int)handle" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)((int)handle + 0x54) = 0;" (assignment_expression "*(undefined4 *)((int)handle + 0x54) = 0" (pointer_expression "*(undefined4 *)((int)handle + 0x54)" * (cast_expression "(undefined4 *)((int)handle + 0x54)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)handle + 0x54)" ( (binary_expression "(int)handle + 0x54" (cast_expression "(int)handle" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)handle = 0x67452301;" (assignment_expression "*(undefined4 *)handle = 0x67452301" (pointer_expression "*(undefined4 *)handle" * (cast_expression "(undefined4 *)handle" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) (expression_statement "*(undefined4 *)((int)handle + 4) = 0xefcdab89;" (assignment_expression "*(undefined4 *)((int)handle + 4) = 0xefcdab89" (pointer_expression "*(undefined4 *)((int)handle + 4)" * (cast_expression "(undefined4 *)((int)handle + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)handle + 4)" ( (binary_expression "(int)handle + 4" (cast_expression "(int)handle" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)((int)handle + 8) = 0x98badcfe;" (assignment_expression "*(undefined4 *)((int)handle + 8) = 0x98badcfe" (pointer_expression "*(undefined4 *)((int)handle + 8)" * (cast_expression "(undefined4 *)((int)handle + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)handle + 8)" ( (binary_expression "(int)handle + 8" (cast_expression "(int)handle" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)((int)handle + 0xc) = 0x10325476;" (assignment_expression "*(undefined4 *)((int)handle + 0xc) = 0x10325476" (pointer_expression "*(undefined4 *)((int)handle + 0xc)" * (cast_expression "(undefined4 *)((int)handle + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)handle + 0xc)" ( (binary_expression "(int)handle + 0xc" (cast_expression "(int)handle" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "MD5Update((MD5Context *)handle,p,0x40);" (call_expression "MD5Update((MD5Context *)handle,p,0x40)" identifier (argument_list "((MD5Context *)handle,p,0x40)" ( (cast_expression "(MD5Context *)handle" ( (type_descriptor "MD5Context *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier , number_literal ))) ;) (expression_statement "(*(code *)PTR_memset_000b2e24)(p,0x5c,0x40);" (call_expression "(*(code *)PTR_memset_000b2e24)(p,0x5c,0x40)" (parenthesized_expression "(*(code *)PTR_memset_000b2e24)" ( (pointer_expression "*(code *)PTR_memset_000b2e24" * (cast_expression "(code *)PTR_memset_000b2e24" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(p,0x5c,0x40)" ( identifier , number_literal , number_literal ))) ;) (expression_statement "pbVar4 = p;" (assignment_expression "pbVar4 = p" identifier = identifier) ;) comment (while_statement "while (*pbVar4 = foo[0] ^ *keyv, (byte *)keyv != pbVar5) {\n      keyv = (void *)((int)keyv + 1);\n      pbVar4 = pbVar4 + 1;\n      if ((byte *)keyv == pbVar6) break;\n      foo[0] = *pbVar4;\n    }" while (parenthesized_expression "(*pbVar4 = foo[0] ^ *keyv, (byte *)keyv != pbVar5)" ( (comma_expression "*pbVar4 = foo[0] ^ *keyv, (byte *)keyv != pbVar5" (assignment_expression "*pbVar4 = foo[0] ^ *keyv" (pointer_expression "*pbVar4" * identifier) = (binary_expression "foo[0] ^ *keyv" (subscript_expression "foo[0]" identifier [ number_literal ]) ^ (pointer_expression "*keyv" * identifier))) , (binary_expression "(byte *)keyv != pbVar5" (cast_expression "(byte *)keyv" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) != identifier)) )) (compound_statement "{\n      keyv = (void *)((int)keyv + 1);\n      pbVar4 = pbVar4 + 1;\n      if ((byte *)keyv == pbVar6) break;\n      foo[0] = *pbVar4;\n    }" { (expression_statement "keyv = (void *)((int)keyv + 1);" (assignment_expression "keyv = (void *)((int)keyv + 1)" identifier = (cast_expression "(void *)((int)keyv + 1)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)keyv + 1)" ( (binary_expression "(int)keyv + 1" (cast_expression "(int)keyv" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "pbVar4 = pbVar4 + 1;" (assignment_expression "pbVar4 = pbVar4 + 1" identifier = (binary_expression "pbVar4 + 1" identifier + number_literal)) ;) (if_statement "if ((byte *)keyv == pbVar6) break;" if (parenthesized_expression "((byte *)keyv == pbVar6)" ( (binary_expression "(byte *)keyv == pbVar6" (cast_expression "(byte *)keyv" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) == identifier) )) (break_statement "break;" break ;)) (expression_statement "foo[0] = *pbVar4;" (assignment_expression "foo[0] = *pbVar4" (subscript_expression "foo[0]" identifier [ number_literal ]) = (pointer_expression "*pbVar4" * identifier)) ;) })) }))) (expression_statement "*(undefined4 *)((int)handle + 0xac) = 0;" (assignment_expression "*(undefined4 *)((int)handle + 0xac) = 0" (pointer_expression "*(undefined4 *)((int)handle + 0xac)" * (cast_expression "(undefined4 *)((int)handle + 0xac)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)handle + 0xac)" ( (binary_expression "(int)handle + 0xac" (cast_expression "(int)handle" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)((int)handle + 0xb4) = 0;" (assignment_expression "*(undefined4 *)((int)handle + 0xb4) = 0" (pointer_expression "*(undefined4 *)((int)handle + 0xb4)" * (cast_expression "(undefined4 *)((int)handle + 0xb4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)handle + 0xb4)" ( (binary_expression "(int)handle + 0xb4" (cast_expression "(int)handle" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)((int)handle + 0xb0) = 0;" (assignment_expression "*(undefined4 *)((int)handle + 0xb0) = 0" (pointer_expression "*(undefined4 *)((int)handle + 0xb0)" * (cast_expression "(undefined4 *)((int)handle + 0xb0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)handle + 0xb0)" ( (binary_expression "(int)handle + 0xb0" (cast_expression "(int)handle" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)((int)handle + 0x5c) = 0x67452301;" (assignment_expression "*(undefined4 *)((int)handle + 0x5c) = 0x67452301" (pointer_expression "*(undefined4 *)((int)handle + 0x5c)" * (cast_expression "(undefined4 *)((int)handle + 0x5c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)handle + 0x5c)" ( (binary_expression "(int)handle + 0x5c" (cast_expression "(int)handle" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)((int)handle + 0x60) = 0xefcdab89;" (assignment_expression "*(undefined4 *)((int)handle + 0x60) = 0xefcdab89" (pointer_expression "*(undefined4 *)((int)handle + 0x60)" * (cast_expression "(undefined4 *)((int)handle + 0x60)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)handle + 0x60)" ( (binary_expression "(int)handle + 0x60" (cast_expression "(int)handle" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)((int)handle + 100) = 0x98badcfe;" (assignment_expression "*(undefined4 *)((int)handle + 100) = 0x98badcfe" (pointer_expression "*(undefined4 *)((int)handle + 100)" * (cast_expression "(undefined4 *)((int)handle + 100)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)handle + 100)" ( (binary_expression "(int)handle + 100" (cast_expression "(int)handle" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)((int)handle + 0x68) = 0x10325476;" (assignment_expression "*(undefined4 *)((int)handle + 0x68) = 0x10325476" (pointer_expression "*(undefined4 *)((int)handle + 0x68)" * (cast_expression "(undefined4 *)((int)handle + 0x68)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)handle + 0x68)" ( (binary_expression "(int)handle + 0x68" (cast_expression "(int)handle" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "MD5Update((MD5Context *)((int)handle + 0x5c),p,0x40);" (call_expression "MD5Update((MD5Context *)((int)handle + 0x5c),p,0x40)" identifier (argument_list "((MD5Context *)((int)handle + 0x5c),p,0x40)" ( (cast_expression "(MD5Context *)((int)handle + 0x5c)" ( (type_descriptor "MD5Context *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)handle + 0x5c)" ( (binary_expression "(int)handle + 0x5c" (cast_expression "(int)handle" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) , identifier , number_literal ))) ;) (expression_statement "keyv_00 = &DAT_00000040;" (assignment_expression "keyv_00 = &DAT_00000040" identifier = (pointer_expression "&DAT_00000040" & identifier)) ;) (expression_statement "(*(code *)PTR_smemclr_000b2460)();" (call_expression "(*(code *)PTR_smemclr_000b2460)()" (parenthesized_expression "(*(code *)PTR_smemclr_000b2460)" ( (pointer_expression "*(code *)PTR_smemclr_000b2460" * (cast_expression "(code *)PTR_smemclr_000b2460" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (if_statement "if (iVar2 != *(int *)puVar1) {\n    (*(code *)PTR___stack_chk_fail_000b2ed8)();\n    hmacmd5_key(p,keyv_00,0x10);\n    return;\n  }" if (parenthesized_expression "(iVar2 != *(int *)puVar1)" ( (binary_expression "iVar2 != *(int *)puVar1" identifier != (pointer_expression "*(int *)puVar1" * (cast_expression "(int *)puVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    (*(code *)PTR___stack_chk_fail_000b2ed8)();\n    hmacmd5_key(p,keyv_00,0x10);\n    return;\n  }" { (expression_statement "(*(code *)PTR___stack_chk_fail_000b2ed8)();" (call_expression "(*(code *)PTR___stack_chk_fail_000b2ed8)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000b2ed8)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_000b2ed8" * (cast_expression "(code *)PTR___stack_chk_fail_000b2ed8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "hmacmd5_key(p,keyv_00,0x10);" (call_expression "hmacmd5_key(p,keyv_00,0x10)" identifier (argument_list "(p,keyv_00,0x10)" ( identifier , identifier , number_literal ))) ;) (return_statement "return;" return ;) })) (return_statement "return;" return ;) })))
(translation_unit "void hmacmd5_key(byte *param_1,byte *param_2,byte *param_3)\n\n{\n  byte bVar1;\n  byte *pbVar2;\n  byte *pbVar3;\n  byte *pbVar4;\n  byte *unaff_s0;\n  byte *unaff_s1;\n  byte *unaff_s2;\n  int *unaff_s3;\n  byte *unaff_s4;\n  byte *unaff_s5;\n  byte *unaff_s6;\n  undefined4 unaff_s7;\n  code *pcVar5;\n  code *pcVar6;\n  int iVar7;\n  undefined4 unaff_retaddr;\n  undefined1 auStackX_0 [16];\n  \n  pcVar6 = hmacmd5_key;\n  do {\n    pbVar3 = param_1;\n    pcVar5 = *(code **)(&LAB_000487cc + (int)pcVar6);\n    *(int **)((int)register0x00000074 + -0x18) = unaff_s3;\n    unaff_s3 = *(int **)(pcVar6 + 0x488ac);\n    *(byte **)((int)register0x00000074 + -0x1c) = unaff_s2;\n    unaff_s2 = (byte *)((int)register0x00000074 + -0x6c);\n    *(byte **)((int)register0x00000074 + -0x14) = unaff_s4;\n    *(byte **)((int)register0x00000074 + -0x24) = unaff_s0;\n    *(code **)((int)register0x00000074 + -0x78) = pcVar6 + 0x4fd18;\n    *(byte **)((int)register0x00000074 + -0xc) = unaff_s6;\n    *(undefined4 *)((int)register0x00000074 + -4) = unaff_retaddr;\n    *(undefined4 *)((int)register0x00000074 + -8) = unaff_s7;\n    *(byte **)((int)register0x00000074 + -0x10) = unaff_s5;\n    *(byte **)((int)register0x00000074 + -0x20) = unaff_s1;\n    *(int *)((int)register0x00000074 + -0x2c) = *unaff_s3;\n    (*pcVar5)(unaff_s2,0x36,0x40);\n    iVar7 = *(int *)((int)register0x00000074 + -0x78);\n    if ((int)param_3 < 1) {\n      unaff_s7 = *(undefined4 *)(iVar7 + -31000);\n      pbVar3[0x50] = 0;\n      pbVar3[0x51] = 0;\n      pbVar3[0x52] = 0;\n      pbVar3[0x53] = 0;\n      pbVar3[0x58] = 0;\n      pbVar3[0x59] = 0;\n      pbVar3[0x5a] = 0;\n      pbVar3[0x5b] = 0;\n      pbVar3[0x54] = 0;\n      pbVar3[0x55] = 0;\n      pbVar3[0x56] = 0;\n      pbVar3[0x57] = 0;\n      pbVar3[0] = 0x67;\n      pbVar3[1] = 0x45;\n      pbVar3[2] = 0x23;\n      pbVar3[3] = 1;\n      pbVar3[4] = 0xef;\n      pbVar3[5] = 0xcd;\n      pbVar3[6] = 0xab;\n      pbVar3[7] = 0x89;\n      pbVar3[8] = 0x98;\n      pbVar3[9] = 0xba;\n      pbVar3[10] = 0xdc;\n      pbVar3[0xb] = 0xfe;\n      pbVar3[0xc] = 0x10;\n      pbVar3[0xd] = 0x32;\n      pbVar3[0xe] = 0x54;\n      pbVar3[0xf] = 0x76;\n      MD5Update(pbVar3,unaff_s2,0x40);\n      (**(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x754c))(unaff_s2,0x5c,0x40);\n      unaff_s0 = param_2;\n      unaff_s4 = param_3;\n    }\n    else {\n      unaff_s5 = param_2 + 0x40;\n      unaff_s4 = param_2 + (int)(param_3 + -1);\n      pbVar2 = param_2;\n      pbVar4 = unaff_s2;\n      do {\n        *pbVar4 = *pbVar4 ^ *pbVar2;\n        if (pbVar2 == unaff_s4) break;\n        pbVar2 = pbVar2 + 1;\n        pbVar4 = pbVar4 + 1;\n      } while (pbVar2 != unaff_s5);\n      unaff_s7 = *(undefined4 *)(iVar7 + -31000);\n      pbVar3[0x50] = 0;\n      pbVar3[0x51] = 0;\n      pbVar3[0x52] = 0;\n      pbVar3[0x53] = 0;\n      pbVar3[0x58] = 0;\n      pbVar3[0x59] = 0;\n      pbVar3[0x5a] = 0;\n      pbVar3[0x5b] = 0;\n      pbVar3[0x54] = 0;\n      pbVar3[0x55] = 0;\n      pbVar3[0x56] = 0;\n      pbVar3[0x57] = 0;\n      pbVar3[0] = 0x67;\n      pbVar3[1] = 0x45;\n      pbVar3[2] = 0x23;\n      pbVar3[3] = 1;\n      pbVar3[4] = 0xef;\n      pbVar3[5] = 0xcd;\n      pbVar3[6] = 0xab;\n      pbVar3[7] = 0x89;\n      pbVar3[8] = 0x98;\n      pbVar3[9] = 0xba;\n      pbVar3[10] = 0xdc;\n      pbVar3[0xb] = 0xfe;\n      pbVar3[0xc] = 0x10;\n      pbVar3[0xd] = 0x32;\n      pbVar3[0xe] = 0x54;\n      pbVar3[0xf] = 0x76;\n      MD5Update(pbVar3,unaff_s2,0x40);\n      (**(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x754c))(unaff_s2,0x5c,0x40);\n      bVar1 = *unaff_s2;\n      unaff_s1 = unaff_s2;\n      while (*unaff_s1 = bVar1 ^ *param_2, unaff_s0 = param_2, param_2 != unaff_s4) {\n        param_2 = param_2 + 1;\n        unaff_s1 = unaff_s1 + 1;\n        unaff_s0 = param_2;\n        if (param_2 == unaff_s5) break;\n        bVar1 = *unaff_s1;\n      }\n    }\n    pbVar3[0xac] = 0;\n    pbVar3[0xad] = 0;\n    pbVar3[0xae] = 0;\n    pbVar3[0xaf] = 0;\n    pbVar3[0xb4] = 0;\n    pbVar3[0xb5] = 0;\n    pbVar3[0xb6] = 0;\n    pbVar3[0xb7] = 0;\n    pbVar3[0xb0] = 0;\n    pbVar3[0xb1] = 0;\n    pbVar3[0xb2] = 0;\n    pbVar3[0xb3] = 0;\n    pbVar3[0x5c] = 0x67;\n    pbVar3[0x5d] = 0x45;\n    pbVar3[0x5e] = 0x23;\n    pbVar3[0x5f] = 1;\n    pbVar3[0x60] = 0xef;\n    pbVar3[0x61] = 0xcd;\n    pbVar3[0x62] = 0xab;\n    pbVar3[99] = 0x89;\n    pbVar3[100] = 0x98;\n    pbVar3[0x65] = 0xba;\n    pbVar3[0x66] = 0xdc;\n    pbVar3[0x67] = 0xfe;\n    pbVar3[0x68] = 0x10;\n    pbVar3[0x69] = 0x32;\n    pbVar3[0x6a] = 0x54;\n    pbVar3[0x6b] = 0x76;\n    MD5Update(pbVar3 + 0x5c,unaff_s2,0x40);\n    param_2 = &DAT_00000040;\n    param_1 = unaff_s2;\n    (**(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x7f10))();\n    if (*(int *)((int)register0x00000074 + -0x2c) == *unaff_s3) {\n      return;\n    }\n    pcVar6 = *(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x7498);\n    unaff_retaddr = 0x6a8bc;\n    (*pcVar6)();\n    pcVar6 = *(code **)(pcVar6 + 0x47c48);\n    param_3 = &DAT_00000010;\n    unaff_s6 = pbVar3;\n    register0x00000074 = (BADSPACEBASE *)((int)register0x00000074 + -0x88);\n  } while( true );\n}\n\n" (function_definition "void hmacmd5_key(byte *param_1,byte *param_2,byte *param_3)\n\n{\n  byte bVar1;\n  byte *pbVar2;\n  byte *pbVar3;\n  byte *pbVar4;\n  byte *unaff_s0;\n  byte *unaff_s1;\n  byte *unaff_s2;\n  int *unaff_s3;\n  byte *unaff_s4;\n  byte *unaff_s5;\n  byte *unaff_s6;\n  undefined4 unaff_s7;\n  code *pcVar5;\n  code *pcVar6;\n  int iVar7;\n  undefined4 unaff_retaddr;\n  undefined1 auStackX_0 [16];\n  \n  pcVar6 = hmacmd5_key;\n  do {\n    pbVar3 = param_1;\n    pcVar5 = *(code **)(&LAB_000487cc + (int)pcVar6);\n    *(int **)((int)register0x00000074 + -0x18) = unaff_s3;\n    unaff_s3 = *(int **)(pcVar6 + 0x488ac);\n    *(byte **)((int)register0x00000074 + -0x1c) = unaff_s2;\n    unaff_s2 = (byte *)((int)register0x00000074 + -0x6c);\n    *(byte **)((int)register0x00000074 + -0x14) = unaff_s4;\n    *(byte **)((int)register0x00000074 + -0x24) = unaff_s0;\n    *(code **)((int)register0x00000074 + -0x78) = pcVar6 + 0x4fd18;\n    *(byte **)((int)register0x00000074 + -0xc) = unaff_s6;\n    *(undefined4 *)((int)register0x00000074 + -4) = unaff_retaddr;\n    *(undefined4 *)((int)register0x00000074 + -8) = unaff_s7;\n    *(byte **)((int)register0x00000074 + -0x10) = unaff_s5;\n    *(byte **)((int)register0x00000074 + -0x20) = unaff_s1;\n    *(int *)((int)register0x00000074 + -0x2c) = *unaff_s3;\n    (*pcVar5)(unaff_s2,0x36,0x40);\n    iVar7 = *(int *)((int)register0x00000074 + -0x78);\n    if ((int)param_3 < 1) {\n      unaff_s7 = *(undefined4 *)(iVar7 + -31000);\n      pbVar3[0x50] = 0;\n      pbVar3[0x51] = 0;\n      pbVar3[0x52] = 0;\n      pbVar3[0x53] = 0;\n      pbVar3[0x58] = 0;\n      pbVar3[0x59] = 0;\n      pbVar3[0x5a] = 0;\n      pbVar3[0x5b] = 0;\n      pbVar3[0x54] = 0;\n      pbVar3[0x55] = 0;\n      pbVar3[0x56] = 0;\n      pbVar3[0x57] = 0;\n      pbVar3[0] = 0x67;\n      pbVar3[1] = 0x45;\n      pbVar3[2] = 0x23;\n      pbVar3[3] = 1;\n      pbVar3[4] = 0xef;\n      pbVar3[5] = 0xcd;\n      pbVar3[6] = 0xab;\n      pbVar3[7] = 0x89;\n      pbVar3[8] = 0x98;\n      pbVar3[9] = 0xba;\n      pbVar3[10] = 0xdc;\n      pbVar3[0xb] = 0xfe;\n      pbVar3[0xc] = 0x10;\n      pbVar3[0xd] = 0x32;\n      pbVar3[0xe] = 0x54;\n      pbVar3[0xf] = 0x76;\n      MD5Update(pbVar3,unaff_s2,0x40);\n      (**(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x754c))(unaff_s2,0x5c,0x40);\n      unaff_s0 = param_2;\n      unaff_s4 = param_3;\n    }\n    else {\n      unaff_s5 = param_2 + 0x40;\n      unaff_s4 = param_2 + (int)(param_3 + -1);\n      pbVar2 = param_2;\n      pbVar4 = unaff_s2;\n      do {\n        *pbVar4 = *pbVar4 ^ *pbVar2;\n        if (pbVar2 == unaff_s4) break;\n        pbVar2 = pbVar2 + 1;\n        pbVar4 = pbVar4 + 1;\n      } while (pbVar2 != unaff_s5);\n      unaff_s7 = *(undefined4 *)(iVar7 + -31000);\n      pbVar3[0x50] = 0;\n      pbVar3[0x51] = 0;\n      pbVar3[0x52] = 0;\n      pbVar3[0x53] = 0;\n      pbVar3[0x58] = 0;\n      pbVar3[0x59] = 0;\n      pbVar3[0x5a] = 0;\n      pbVar3[0x5b] = 0;\n      pbVar3[0x54] = 0;\n      pbVar3[0x55] = 0;\n      pbVar3[0x56] = 0;\n      pbVar3[0x57] = 0;\n      pbVar3[0] = 0x67;\n      pbVar3[1] = 0x45;\n      pbVar3[2] = 0x23;\n      pbVar3[3] = 1;\n      pbVar3[4] = 0xef;\n      pbVar3[5] = 0xcd;\n      pbVar3[6] = 0xab;\n      pbVar3[7] = 0x89;\n      pbVar3[8] = 0x98;\n      pbVar3[9] = 0xba;\n      pbVar3[10] = 0xdc;\n      pbVar3[0xb] = 0xfe;\n      pbVar3[0xc] = 0x10;\n      pbVar3[0xd] = 0x32;\n      pbVar3[0xe] = 0x54;\n      pbVar3[0xf] = 0x76;\n      MD5Update(pbVar3,unaff_s2,0x40);\n      (**(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x754c))(unaff_s2,0x5c,0x40);\n      bVar1 = *unaff_s2;\n      unaff_s1 = unaff_s2;\n      while (*unaff_s1 = bVar1 ^ *param_2, unaff_s0 = param_2, param_2 != unaff_s4) {\n        param_2 = param_2 + 1;\n        unaff_s1 = unaff_s1 + 1;\n        unaff_s0 = param_2;\n        if (param_2 == unaff_s5) break;\n        bVar1 = *unaff_s1;\n      }\n    }\n    pbVar3[0xac] = 0;\n    pbVar3[0xad] = 0;\n    pbVar3[0xae] = 0;\n    pbVar3[0xaf] = 0;\n    pbVar3[0xb4] = 0;\n    pbVar3[0xb5] = 0;\n    pbVar3[0xb6] = 0;\n    pbVar3[0xb7] = 0;\n    pbVar3[0xb0] = 0;\n    pbVar3[0xb1] = 0;\n    pbVar3[0xb2] = 0;\n    pbVar3[0xb3] = 0;\n    pbVar3[0x5c] = 0x67;\n    pbVar3[0x5d] = 0x45;\n    pbVar3[0x5e] = 0x23;\n    pbVar3[0x5f] = 1;\n    pbVar3[0x60] = 0xef;\n    pbVar3[0x61] = 0xcd;\n    pbVar3[0x62] = 0xab;\n    pbVar3[99] = 0x89;\n    pbVar3[100] = 0x98;\n    pbVar3[0x65] = 0xba;\n    pbVar3[0x66] = 0xdc;\n    pbVar3[0x67] = 0xfe;\n    pbVar3[0x68] = 0x10;\n    pbVar3[0x69] = 0x32;\n    pbVar3[0x6a] = 0x54;\n    pbVar3[0x6b] = 0x76;\n    MD5Update(pbVar3 + 0x5c,unaff_s2,0x40);\n    param_2 = &DAT_00000040;\n    param_1 = unaff_s2;\n    (**(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x7f10))();\n    if (*(int *)((int)register0x00000074 + -0x2c) == *unaff_s3) {\n      return;\n    }\n    pcVar6 = *(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x7498);\n    unaff_retaddr = 0x6a8bc;\n    (*pcVar6)();\n    pcVar6 = *(code **)(pcVar6 + 0x47c48);\n    param_3 = &DAT_00000010;\n    unaff_s6 = pbVar3;\n    register0x00000074 = (BADSPACEBASE *)((int)register0x00000074 + -0x88);\n  } while( true );\n}" primitive_type (function_declarator "hmacmd5_key(byte *param_1,byte *param_2,byte *param_3)" identifier (parameter_list "(byte *param_1,byte *param_2,byte *param_3)" ( (parameter_declaration "byte *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "byte *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "byte *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  byte bVar1;\n  byte *pbVar2;\n  byte *pbVar3;\n  byte *pbVar4;\n  byte *unaff_s0;\n  byte *unaff_s1;\n  byte *unaff_s2;\n  int *unaff_s3;\n  byte *unaff_s4;\n  byte *unaff_s5;\n  byte *unaff_s6;\n  undefined4 unaff_s7;\n  code *pcVar5;\n  code *pcVar6;\n  int iVar7;\n  undefined4 unaff_retaddr;\n  undefined1 auStackX_0 [16];\n  \n  pcVar6 = hmacmd5_key;\n  do {\n    pbVar3 = param_1;\n    pcVar5 = *(code **)(&LAB_000487cc + (int)pcVar6);\n    *(int **)((int)register0x00000074 + -0x18) = unaff_s3;\n    unaff_s3 = *(int **)(pcVar6 + 0x488ac);\n    *(byte **)((int)register0x00000074 + -0x1c) = unaff_s2;\n    unaff_s2 = (byte *)((int)register0x00000074 + -0x6c);\n    *(byte **)((int)register0x00000074 + -0x14) = unaff_s4;\n    *(byte **)((int)register0x00000074 + -0x24) = unaff_s0;\n    *(code **)((int)register0x00000074 + -0x78) = pcVar6 + 0x4fd18;\n    *(byte **)((int)register0x00000074 + -0xc) = unaff_s6;\n    *(undefined4 *)((int)register0x00000074 + -4) = unaff_retaddr;\n    *(undefined4 *)((int)register0x00000074 + -8) = unaff_s7;\n    *(byte **)((int)register0x00000074 + -0x10) = unaff_s5;\n    *(byte **)((int)register0x00000074 + -0x20) = unaff_s1;\n    *(int *)((int)register0x00000074 + -0x2c) = *unaff_s3;\n    (*pcVar5)(unaff_s2,0x36,0x40);\n    iVar7 = *(int *)((int)register0x00000074 + -0x78);\n    if ((int)param_3 < 1) {\n      unaff_s7 = *(undefined4 *)(iVar7 + -31000);\n      pbVar3[0x50] = 0;\n      pbVar3[0x51] = 0;\n      pbVar3[0x52] = 0;\n      pbVar3[0x53] = 0;\n      pbVar3[0x58] = 0;\n      pbVar3[0x59] = 0;\n      pbVar3[0x5a] = 0;\n      pbVar3[0x5b] = 0;\n      pbVar3[0x54] = 0;\n      pbVar3[0x55] = 0;\n      pbVar3[0x56] = 0;\n      pbVar3[0x57] = 0;\n      pbVar3[0] = 0x67;\n      pbVar3[1] = 0x45;\n      pbVar3[2] = 0x23;\n      pbVar3[3] = 1;\n      pbVar3[4] = 0xef;\n      pbVar3[5] = 0xcd;\n      pbVar3[6] = 0xab;\n      pbVar3[7] = 0x89;\n      pbVar3[8] = 0x98;\n      pbVar3[9] = 0xba;\n      pbVar3[10] = 0xdc;\n      pbVar3[0xb] = 0xfe;\n      pbVar3[0xc] = 0x10;\n      pbVar3[0xd] = 0x32;\n      pbVar3[0xe] = 0x54;\n      pbVar3[0xf] = 0x76;\n      MD5Update(pbVar3,unaff_s2,0x40);\n      (**(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x754c))(unaff_s2,0x5c,0x40);\n      unaff_s0 = param_2;\n      unaff_s4 = param_3;\n    }\n    else {\n      unaff_s5 = param_2 + 0x40;\n      unaff_s4 = param_2 + (int)(param_3 + -1);\n      pbVar2 = param_2;\n      pbVar4 = unaff_s2;\n      do {\n        *pbVar4 = *pbVar4 ^ *pbVar2;\n        if (pbVar2 == unaff_s4) break;\n        pbVar2 = pbVar2 + 1;\n        pbVar4 = pbVar4 + 1;\n      } while (pbVar2 != unaff_s5);\n      unaff_s7 = *(undefined4 *)(iVar7 + -31000);\n      pbVar3[0x50] = 0;\n      pbVar3[0x51] = 0;\n      pbVar3[0x52] = 0;\n      pbVar3[0x53] = 0;\n      pbVar3[0x58] = 0;\n      pbVar3[0x59] = 0;\n      pbVar3[0x5a] = 0;\n      pbVar3[0x5b] = 0;\n      pbVar3[0x54] = 0;\n      pbVar3[0x55] = 0;\n      pbVar3[0x56] = 0;\n      pbVar3[0x57] = 0;\n      pbVar3[0] = 0x67;\n      pbVar3[1] = 0x45;\n      pbVar3[2] = 0x23;\n      pbVar3[3] = 1;\n      pbVar3[4] = 0xef;\n      pbVar3[5] = 0xcd;\n      pbVar3[6] = 0xab;\n      pbVar3[7] = 0x89;\n      pbVar3[8] = 0x98;\n      pbVar3[9] = 0xba;\n      pbVar3[10] = 0xdc;\n      pbVar3[0xb] = 0xfe;\n      pbVar3[0xc] = 0x10;\n      pbVar3[0xd] = 0x32;\n      pbVar3[0xe] = 0x54;\n      pbVar3[0xf] = 0x76;\n      MD5Update(pbVar3,unaff_s2,0x40);\n      (**(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x754c))(unaff_s2,0x5c,0x40);\n      bVar1 = *unaff_s2;\n      unaff_s1 = unaff_s2;\n      while (*unaff_s1 = bVar1 ^ *param_2, unaff_s0 = param_2, param_2 != unaff_s4) {\n        param_2 = param_2 + 1;\n        unaff_s1 = unaff_s1 + 1;\n        unaff_s0 = param_2;\n        if (param_2 == unaff_s5) break;\n        bVar1 = *unaff_s1;\n      }\n    }\n    pbVar3[0xac] = 0;\n    pbVar3[0xad] = 0;\n    pbVar3[0xae] = 0;\n    pbVar3[0xaf] = 0;\n    pbVar3[0xb4] = 0;\n    pbVar3[0xb5] = 0;\n    pbVar3[0xb6] = 0;\n    pbVar3[0xb7] = 0;\n    pbVar3[0xb0] = 0;\n    pbVar3[0xb1] = 0;\n    pbVar3[0xb2] = 0;\n    pbVar3[0xb3] = 0;\n    pbVar3[0x5c] = 0x67;\n    pbVar3[0x5d] = 0x45;\n    pbVar3[0x5e] = 0x23;\n    pbVar3[0x5f] = 1;\n    pbVar3[0x60] = 0xef;\n    pbVar3[0x61] = 0xcd;\n    pbVar3[0x62] = 0xab;\n    pbVar3[99] = 0x89;\n    pbVar3[100] = 0x98;\n    pbVar3[0x65] = 0xba;\n    pbVar3[0x66] = 0xdc;\n    pbVar3[0x67] = 0xfe;\n    pbVar3[0x68] = 0x10;\n    pbVar3[0x69] = 0x32;\n    pbVar3[0x6a] = 0x54;\n    pbVar3[0x6b] = 0x76;\n    MD5Update(pbVar3 + 0x5c,unaff_s2,0x40);\n    param_2 = &DAT_00000040;\n    param_1 = unaff_s2;\n    (**(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x7f10))();\n    if (*(int *)((int)register0x00000074 + -0x2c) == *unaff_s3) {\n      return;\n    }\n    pcVar6 = *(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x7498);\n    unaff_retaddr = 0x6a8bc;\n    (*pcVar6)();\n    pcVar6 = *(code **)(pcVar6 + 0x47c48);\n    param_3 = &DAT_00000010;\n    unaff_s6 = pbVar3;\n    register0x00000074 = (BADSPACEBASE *)((int)register0x00000074 + -0x88);\n  } while( true );\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "byte *pbVar2;" type_identifier (pointer_declarator "*pbVar2" * identifier) ;) (declaration "byte *pbVar3;" type_identifier (pointer_declarator "*pbVar3" * identifier) ;) (declaration "byte *pbVar4;" type_identifier (pointer_declarator "*pbVar4" * identifier) ;) (declaration "byte *unaff_s0;" type_identifier (pointer_declarator "*unaff_s0" * identifier) ;) (declaration "byte *unaff_s1;" type_identifier (pointer_declarator "*unaff_s1" * identifier) ;) (declaration "byte *unaff_s2;" type_identifier (pointer_declarator "*unaff_s2" * identifier) ;) (declaration "int *unaff_s3;" primitive_type (pointer_declarator "*unaff_s3" * identifier) ;) (declaration "byte *unaff_s4;" type_identifier (pointer_declarator "*unaff_s4" * identifier) ;) (declaration "byte *unaff_s5;" type_identifier (pointer_declarator "*unaff_s5" * identifier) ;) (declaration "byte *unaff_s6;" type_identifier (pointer_declarator "*unaff_s6" * identifier) ;) (declaration "undefined4 unaff_s7;" type_identifier identifier ;) (declaration "code *pcVar5;" type_identifier (pointer_declarator "*pcVar5" * identifier) ;) (declaration "code *pcVar6;" type_identifier (pointer_declarator "*pcVar6" * identifier) ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "undefined4 unaff_retaddr;" type_identifier identifier ;) (declaration "undefined1 auStackX_0 [16];" type_identifier (array_declarator "auStackX_0 [16]" identifier [ number_literal ]) ;) (expression_statement "pcVar6 = hmacmd5_key;" (assignment_expression "pcVar6 = hmacmd5_key" identifier = identifier) ;) (do_statement "do {\n    pbVar3 = param_1;\n    pcVar5 = *(code **)(&LAB_000487cc + (int)pcVar6);\n    *(int **)((int)register0x00000074 + -0x18) = unaff_s3;\n    unaff_s3 = *(int **)(pcVar6 + 0x488ac);\n    *(byte **)((int)register0x00000074 + -0x1c) = unaff_s2;\n    unaff_s2 = (byte *)((int)register0x00000074 + -0x6c);\n    *(byte **)((int)register0x00000074 + -0x14) = unaff_s4;\n    *(byte **)((int)register0x00000074 + -0x24) = unaff_s0;\n    *(code **)((int)register0x00000074 + -0x78) = pcVar6 + 0x4fd18;\n    *(byte **)((int)register0x00000074 + -0xc) = unaff_s6;\n    *(undefined4 *)((int)register0x00000074 + -4) = unaff_retaddr;\n    *(undefined4 *)((int)register0x00000074 + -8) = unaff_s7;\n    *(byte **)((int)register0x00000074 + -0x10) = unaff_s5;\n    *(byte **)((int)register0x00000074 + -0x20) = unaff_s1;\n    *(int *)((int)register0x00000074 + -0x2c) = *unaff_s3;\n    (*pcVar5)(unaff_s2,0x36,0x40);\n    iVar7 = *(int *)((int)register0x00000074 + -0x78);\n    if ((int)param_3 < 1) {\n      unaff_s7 = *(undefined4 *)(iVar7 + -31000);\n      pbVar3[0x50] = 0;\n      pbVar3[0x51] = 0;\n      pbVar3[0x52] = 0;\n      pbVar3[0x53] = 0;\n      pbVar3[0x58] = 0;\n      pbVar3[0x59] = 0;\n      pbVar3[0x5a] = 0;\n      pbVar3[0x5b] = 0;\n      pbVar3[0x54] = 0;\n      pbVar3[0x55] = 0;\n      pbVar3[0x56] = 0;\n      pbVar3[0x57] = 0;\n      pbVar3[0] = 0x67;\n      pbVar3[1] = 0x45;\n      pbVar3[2] = 0x23;\n      pbVar3[3] = 1;\n      pbVar3[4] = 0xef;\n      pbVar3[5] = 0xcd;\n      pbVar3[6] = 0xab;\n      pbVar3[7] = 0x89;\n      pbVar3[8] = 0x98;\n      pbVar3[9] = 0xba;\n      pbVar3[10] = 0xdc;\n      pbVar3[0xb] = 0xfe;\n      pbVar3[0xc] = 0x10;\n      pbVar3[0xd] = 0x32;\n      pbVar3[0xe] = 0x54;\n      pbVar3[0xf] = 0x76;\n      MD5Update(pbVar3,unaff_s2,0x40);\n      (**(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x754c))(unaff_s2,0x5c,0x40);\n      unaff_s0 = param_2;\n      unaff_s4 = param_3;\n    }\n    else {\n      unaff_s5 = param_2 + 0x40;\n      unaff_s4 = param_2 + (int)(param_3 + -1);\n      pbVar2 = param_2;\n      pbVar4 = unaff_s2;\n      do {\n        *pbVar4 = *pbVar4 ^ *pbVar2;\n        if (pbVar2 == unaff_s4) break;\n        pbVar2 = pbVar2 + 1;\n        pbVar4 = pbVar4 + 1;\n      } while (pbVar2 != unaff_s5);\n      unaff_s7 = *(undefined4 *)(iVar7 + -31000);\n      pbVar3[0x50] = 0;\n      pbVar3[0x51] = 0;\n      pbVar3[0x52] = 0;\n      pbVar3[0x53] = 0;\n      pbVar3[0x58] = 0;\n      pbVar3[0x59] = 0;\n      pbVar3[0x5a] = 0;\n      pbVar3[0x5b] = 0;\n      pbVar3[0x54] = 0;\n      pbVar3[0x55] = 0;\n      pbVar3[0x56] = 0;\n      pbVar3[0x57] = 0;\n      pbVar3[0] = 0x67;\n      pbVar3[1] = 0x45;\n      pbVar3[2] = 0x23;\n      pbVar3[3] = 1;\n      pbVar3[4] = 0xef;\n      pbVar3[5] = 0xcd;\n      pbVar3[6] = 0xab;\n      pbVar3[7] = 0x89;\n      pbVar3[8] = 0x98;\n      pbVar3[9] = 0xba;\n      pbVar3[10] = 0xdc;\n      pbVar3[0xb] = 0xfe;\n      pbVar3[0xc] = 0x10;\n      pbVar3[0xd] = 0x32;\n      pbVar3[0xe] = 0x54;\n      pbVar3[0xf] = 0x76;\n      MD5Update(pbVar3,unaff_s2,0x40);\n      (**(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x754c))(unaff_s2,0x5c,0x40);\n      bVar1 = *unaff_s2;\n      unaff_s1 = unaff_s2;\n      while (*unaff_s1 = bVar1 ^ *param_2, unaff_s0 = param_2, param_2 != unaff_s4) {\n        param_2 = param_2 + 1;\n        unaff_s1 = unaff_s1 + 1;\n        unaff_s0 = param_2;\n        if (param_2 == unaff_s5) break;\n        bVar1 = *unaff_s1;\n      }\n    }\n    pbVar3[0xac] = 0;\n    pbVar3[0xad] = 0;\n    pbVar3[0xae] = 0;\n    pbVar3[0xaf] = 0;\n    pbVar3[0xb4] = 0;\n    pbVar3[0xb5] = 0;\n    pbVar3[0xb6] = 0;\n    pbVar3[0xb7] = 0;\n    pbVar3[0xb0] = 0;\n    pbVar3[0xb1] = 0;\n    pbVar3[0xb2] = 0;\n    pbVar3[0xb3] = 0;\n    pbVar3[0x5c] = 0x67;\n    pbVar3[0x5d] = 0x45;\n    pbVar3[0x5e] = 0x23;\n    pbVar3[0x5f] = 1;\n    pbVar3[0x60] = 0xef;\n    pbVar3[0x61] = 0xcd;\n    pbVar3[0x62] = 0xab;\n    pbVar3[99] = 0x89;\n    pbVar3[100] = 0x98;\n    pbVar3[0x65] = 0xba;\n    pbVar3[0x66] = 0xdc;\n    pbVar3[0x67] = 0xfe;\n    pbVar3[0x68] = 0x10;\n    pbVar3[0x69] = 0x32;\n    pbVar3[0x6a] = 0x54;\n    pbVar3[0x6b] = 0x76;\n    MD5Update(pbVar3 + 0x5c,unaff_s2,0x40);\n    param_2 = &DAT_00000040;\n    param_1 = unaff_s2;\n    (**(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x7f10))();\n    if (*(int *)((int)register0x00000074 + -0x2c) == *unaff_s3) {\n      return;\n    }\n    pcVar6 = *(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x7498);\n    unaff_retaddr = 0x6a8bc;\n    (*pcVar6)();\n    pcVar6 = *(code **)(pcVar6 + 0x47c48);\n    param_3 = &DAT_00000010;\n    unaff_s6 = pbVar3;\n    register0x00000074 = (BADSPACEBASE *)((int)register0x00000074 + -0x88);\n  } while( true );" do (compound_statement "{\n    pbVar3 = param_1;\n    pcVar5 = *(code **)(&LAB_000487cc + (int)pcVar6);\n    *(int **)((int)register0x00000074 + -0x18) = unaff_s3;\n    unaff_s3 = *(int **)(pcVar6 + 0x488ac);\n    *(byte **)((int)register0x00000074 + -0x1c) = unaff_s2;\n    unaff_s2 = (byte *)((int)register0x00000074 + -0x6c);\n    *(byte **)((int)register0x00000074 + -0x14) = unaff_s4;\n    *(byte **)((int)register0x00000074 + -0x24) = unaff_s0;\n    *(code **)((int)register0x00000074 + -0x78) = pcVar6 + 0x4fd18;\n    *(byte **)((int)register0x00000074 + -0xc) = unaff_s6;\n    *(undefined4 *)((int)register0x00000074 + -4) = unaff_retaddr;\n    *(undefined4 *)((int)register0x00000074 + -8) = unaff_s7;\n    *(byte **)((int)register0x00000074 + -0x10) = unaff_s5;\n    *(byte **)((int)register0x00000074 + -0x20) = unaff_s1;\n    *(int *)((int)register0x00000074 + -0x2c) = *unaff_s3;\n    (*pcVar5)(unaff_s2,0x36,0x40);\n    iVar7 = *(int *)((int)register0x00000074 + -0x78);\n    if ((int)param_3 < 1) {\n      unaff_s7 = *(undefined4 *)(iVar7 + -31000);\n      pbVar3[0x50] = 0;\n      pbVar3[0x51] = 0;\n      pbVar3[0x52] = 0;\n      pbVar3[0x53] = 0;\n      pbVar3[0x58] = 0;\n      pbVar3[0x59] = 0;\n      pbVar3[0x5a] = 0;\n      pbVar3[0x5b] = 0;\n      pbVar3[0x54] = 0;\n      pbVar3[0x55] = 0;\n      pbVar3[0x56] = 0;\n      pbVar3[0x57] = 0;\n      pbVar3[0] = 0x67;\n      pbVar3[1] = 0x45;\n      pbVar3[2] = 0x23;\n      pbVar3[3] = 1;\n      pbVar3[4] = 0xef;\n      pbVar3[5] = 0xcd;\n      pbVar3[6] = 0xab;\n      pbVar3[7] = 0x89;\n      pbVar3[8] = 0x98;\n      pbVar3[9] = 0xba;\n      pbVar3[10] = 0xdc;\n      pbVar3[0xb] = 0xfe;\n      pbVar3[0xc] = 0x10;\n      pbVar3[0xd] = 0x32;\n      pbVar3[0xe] = 0x54;\n      pbVar3[0xf] = 0x76;\n      MD5Update(pbVar3,unaff_s2,0x40);\n      (**(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x754c))(unaff_s2,0x5c,0x40);\n      unaff_s0 = param_2;\n      unaff_s4 = param_3;\n    }\n    else {\n      unaff_s5 = param_2 + 0x40;\n      unaff_s4 = param_2 + (int)(param_3 + -1);\n      pbVar2 = param_2;\n      pbVar4 = unaff_s2;\n      do {\n        *pbVar4 = *pbVar4 ^ *pbVar2;\n        if (pbVar2 == unaff_s4) break;\n        pbVar2 = pbVar2 + 1;\n        pbVar4 = pbVar4 + 1;\n      } while (pbVar2 != unaff_s5);\n      unaff_s7 = *(undefined4 *)(iVar7 + -31000);\n      pbVar3[0x50] = 0;\n      pbVar3[0x51] = 0;\n      pbVar3[0x52] = 0;\n      pbVar3[0x53] = 0;\n      pbVar3[0x58] = 0;\n      pbVar3[0x59] = 0;\n      pbVar3[0x5a] = 0;\n      pbVar3[0x5b] = 0;\n      pbVar3[0x54] = 0;\n      pbVar3[0x55] = 0;\n      pbVar3[0x56] = 0;\n      pbVar3[0x57] = 0;\n      pbVar3[0] = 0x67;\n      pbVar3[1] = 0x45;\n      pbVar3[2] = 0x23;\n      pbVar3[3] = 1;\n      pbVar3[4] = 0xef;\n      pbVar3[5] = 0xcd;\n      pbVar3[6] = 0xab;\n      pbVar3[7] = 0x89;\n      pbVar3[8] = 0x98;\n      pbVar3[9] = 0xba;\n      pbVar3[10] = 0xdc;\n      pbVar3[0xb] = 0xfe;\n      pbVar3[0xc] = 0x10;\n      pbVar3[0xd] = 0x32;\n      pbVar3[0xe] = 0x54;\n      pbVar3[0xf] = 0x76;\n      MD5Update(pbVar3,unaff_s2,0x40);\n      (**(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x754c))(unaff_s2,0x5c,0x40);\n      bVar1 = *unaff_s2;\n      unaff_s1 = unaff_s2;\n      while (*unaff_s1 = bVar1 ^ *param_2, unaff_s0 = param_2, param_2 != unaff_s4) {\n        param_2 = param_2 + 1;\n        unaff_s1 = unaff_s1 + 1;\n        unaff_s0 = param_2;\n        if (param_2 == unaff_s5) break;\n        bVar1 = *unaff_s1;\n      }\n    }\n    pbVar3[0xac] = 0;\n    pbVar3[0xad] = 0;\n    pbVar3[0xae] = 0;\n    pbVar3[0xaf] = 0;\n    pbVar3[0xb4] = 0;\n    pbVar3[0xb5] = 0;\n    pbVar3[0xb6] = 0;\n    pbVar3[0xb7] = 0;\n    pbVar3[0xb0] = 0;\n    pbVar3[0xb1] = 0;\n    pbVar3[0xb2] = 0;\n    pbVar3[0xb3] = 0;\n    pbVar3[0x5c] = 0x67;\n    pbVar3[0x5d] = 0x45;\n    pbVar3[0x5e] = 0x23;\n    pbVar3[0x5f] = 1;\n    pbVar3[0x60] = 0xef;\n    pbVar3[0x61] = 0xcd;\n    pbVar3[0x62] = 0xab;\n    pbVar3[99] = 0x89;\n    pbVar3[100] = 0x98;\n    pbVar3[0x65] = 0xba;\n    pbVar3[0x66] = 0xdc;\n    pbVar3[0x67] = 0xfe;\n    pbVar3[0x68] = 0x10;\n    pbVar3[0x69] = 0x32;\n    pbVar3[0x6a] = 0x54;\n    pbVar3[0x6b] = 0x76;\n    MD5Update(pbVar3 + 0x5c,unaff_s2,0x40);\n    param_2 = &DAT_00000040;\n    param_1 = unaff_s2;\n    (**(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x7f10))();\n    if (*(int *)((int)register0x00000074 + -0x2c) == *unaff_s3) {\n      return;\n    }\n    pcVar6 = *(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x7498);\n    unaff_retaddr = 0x6a8bc;\n    (*pcVar6)();\n    pcVar6 = *(code **)(pcVar6 + 0x47c48);\n    param_3 = &DAT_00000010;\n    unaff_s6 = pbVar3;\n    register0x00000074 = (BADSPACEBASE *)((int)register0x00000074 + -0x88);\n  }" { (expression_statement "pbVar3 = param_1;" (assignment_expression "pbVar3 = param_1" identifier = identifier) ;) (expression_statement "pcVar5 = *(code **)(&LAB_000487cc + (int)pcVar6);" (assignment_expression "pcVar5 = *(code **)(&LAB_000487cc + (int)pcVar6)" identifier = (pointer_expression "*(code **)(&LAB_000487cc + (int)pcVar6)" * (cast_expression "(code **)(&LAB_000487cc + (int)pcVar6)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(&LAB_000487cc + (int)pcVar6)" ( (binary_expression "&LAB_000487cc + (int)pcVar6" (pointer_expression "&LAB_000487cc" & identifier) + (cast_expression "(int)pcVar6" ( (type_descriptor "int" primitive_type) ) identifier)) ))))) ;) (expression_statement "*(int **)((int)register0x00000074 + -0x18) = unaff_s3;" (assignment_expression "*(int **)((int)register0x00000074 + -0x18) = unaff_s3" (pointer_expression "*(int **)((int)register0x00000074 + -0x18)" * (cast_expression "(int **)((int)register0x00000074 + -0x18)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)register0x00000074 + -0x18)" ( (binary_expression "(int)register0x00000074 + -0x18" (cast_expression "(int)register0x00000074" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "unaff_s3 = *(int **)(pcVar6 + 0x488ac);" (assignment_expression "unaff_s3 = *(int **)(pcVar6 + 0x488ac)" identifier = (pointer_expression "*(int **)(pcVar6 + 0x488ac)" * (cast_expression "(int **)(pcVar6 + 0x488ac)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar6 + 0x488ac)" ( (binary_expression "pcVar6 + 0x488ac" identifier + number_literal) ))))) ;) (expression_statement "*(byte **)((int)register0x00000074 + -0x1c) = unaff_s2;" (assignment_expression "*(byte **)((int)register0x00000074 + -0x1c) = unaff_s2" (pointer_expression "*(byte **)((int)register0x00000074 + -0x1c)" * (cast_expression "(byte **)((int)register0x00000074 + -0x1c)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)register0x00000074 + -0x1c)" ( (binary_expression "(int)register0x00000074 + -0x1c" (cast_expression "(int)register0x00000074" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "unaff_s2 = (byte *)((int)register0x00000074 + -0x6c);" (assignment_expression "unaff_s2 = (byte *)((int)register0x00000074 + -0x6c)" identifier = (cast_expression "(byte *)((int)register0x00000074 + -0x6c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000074 + -0x6c)" ( (binary_expression "(int)register0x00000074 + -0x6c" (cast_expression "(int)register0x00000074" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "*(byte **)((int)register0x00000074 + -0x14) = unaff_s4;" (assignment_expression "*(byte **)((int)register0x00000074 + -0x14) = unaff_s4" (pointer_expression "*(byte **)((int)register0x00000074 + -0x14)" * (cast_expression "(byte **)((int)register0x00000074 + -0x14)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)register0x00000074 + -0x14)" ( (binary_expression "(int)register0x00000074 + -0x14" (cast_expression "(int)register0x00000074" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)((int)register0x00000074 + -0x24) = unaff_s0;" (assignment_expression "*(byte **)((int)register0x00000074 + -0x24) = unaff_s0" (pointer_expression "*(byte **)((int)register0x00000074 + -0x24)" * (cast_expression "(byte **)((int)register0x00000074 + -0x24)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)register0x00000074 + -0x24)" ( (binary_expression "(int)register0x00000074 + -0x24" (cast_expression "(int)register0x00000074" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(code **)((int)register0x00000074 + -0x78) = pcVar6 + 0x4fd18;" (assignment_expression "*(code **)((int)register0x00000074 + -0x78) = pcVar6 + 0x4fd18" (pointer_expression "*(code **)((int)register0x00000074 + -0x78)" * (cast_expression "(code **)((int)register0x00000074 + -0x78)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)register0x00000074 + -0x78)" ( (binary_expression "(int)register0x00000074 + -0x78" (cast_expression "(int)register0x00000074" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "pcVar6 + 0x4fd18" identifier + number_literal)) ;) (expression_statement "*(byte **)((int)register0x00000074 + -0xc) = unaff_s6;" (assignment_expression "*(byte **)((int)register0x00000074 + -0xc) = unaff_s6" (pointer_expression "*(byte **)((int)register0x00000074 + -0xc)" * (cast_expression "(byte **)((int)register0x00000074 + -0xc)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)register0x00000074 + -0xc)" ( (binary_expression "(int)register0x00000074 + -0xc" (cast_expression "(int)register0x00000074" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)register0x00000074 + -4) = unaff_retaddr;" (assignment_expression "*(undefined4 *)((int)register0x00000074 + -4) = unaff_retaddr" (pointer_expression "*(undefined4 *)((int)register0x00000074 + -4)" * (cast_expression "(undefined4 *)((int)register0x00000074 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000074 + -4)" ( (binary_expression "(int)register0x00000074 + -4" (cast_expression "(int)register0x00000074" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)register0x00000074 + -8) = unaff_s7;" (assignment_expression "*(undefined4 *)((int)register0x00000074 + -8) = unaff_s7" (pointer_expression "*(undefined4 *)((int)register0x00000074 + -8)" * (cast_expression "(undefined4 *)((int)register0x00000074 + -8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000074 + -8)" ( (binary_expression "(int)register0x00000074 + -8" (cast_expression "(int)register0x00000074" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)((int)register0x00000074 + -0x10) = unaff_s5;" (assignment_expression "*(byte **)((int)register0x00000074 + -0x10) = unaff_s5" (pointer_expression "*(byte **)((int)register0x00000074 + -0x10)" * (cast_expression "(byte **)((int)register0x00000074 + -0x10)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)register0x00000074 + -0x10)" ( (binary_expression "(int)register0x00000074 + -0x10" (cast_expression "(int)register0x00000074" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)((int)register0x00000074 + -0x20) = unaff_s1;" (assignment_expression "*(byte **)((int)register0x00000074 + -0x20) = unaff_s1" (pointer_expression "*(byte **)((int)register0x00000074 + -0x20)" * (cast_expression "(byte **)((int)register0x00000074 + -0x20)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)register0x00000074 + -0x20)" ( (binary_expression "(int)register0x00000074 + -0x20" (cast_expression "(int)register0x00000074" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(int *)((int)register0x00000074 + -0x2c) = *unaff_s3;" (assignment_expression "*(int *)((int)register0x00000074 + -0x2c) = *unaff_s3" (pointer_expression "*(int *)((int)register0x00000074 + -0x2c)" * (cast_expression "(int *)((int)register0x00000074 + -0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000074 + -0x2c)" ( (binary_expression "(int)register0x00000074 + -0x2c" (cast_expression "(int)register0x00000074" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "*unaff_s3" * identifier)) ;) (expression_statement "(*pcVar5)(unaff_s2,0x36,0x40);" (call_expression "(*pcVar5)(unaff_s2,0x36,0x40)" (parenthesized_expression "(*pcVar5)" ( (pointer_expression "*pcVar5" * identifier) )) (argument_list "(unaff_s2,0x36,0x40)" ( identifier , number_literal , number_literal ))) ;) (expression_statement "iVar7 = *(int *)((int)register0x00000074 + -0x78);" (assignment_expression "iVar7 = *(int *)((int)register0x00000074 + -0x78)" identifier = (pointer_expression "*(int *)((int)register0x00000074 + -0x78)" * (cast_expression "(int *)((int)register0x00000074 + -0x78)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000074 + -0x78)" ( (binary_expression "(int)register0x00000074 + -0x78" (cast_expression "(int)register0x00000074" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (if_statement "if ((int)param_3 < 1) {\n      unaff_s7 = *(undefined4 *)(iVar7 + -31000);\n      pbVar3[0x50] = 0;\n      pbVar3[0x51] = 0;\n      pbVar3[0x52] = 0;\n      pbVar3[0x53] = 0;\n      pbVar3[0x58] = 0;\n      pbVar3[0x59] = 0;\n      pbVar3[0x5a] = 0;\n      pbVar3[0x5b] = 0;\n      pbVar3[0x54] = 0;\n      pbVar3[0x55] = 0;\n      pbVar3[0x56] = 0;\n      pbVar3[0x57] = 0;\n      pbVar3[0] = 0x67;\n      pbVar3[1] = 0x45;\n      pbVar3[2] = 0x23;\n      pbVar3[3] = 1;\n      pbVar3[4] = 0xef;\n      pbVar3[5] = 0xcd;\n      pbVar3[6] = 0xab;\n      pbVar3[7] = 0x89;\n      pbVar3[8] = 0x98;\n      pbVar3[9] = 0xba;\n      pbVar3[10] = 0xdc;\n      pbVar3[0xb] = 0xfe;\n      pbVar3[0xc] = 0x10;\n      pbVar3[0xd] = 0x32;\n      pbVar3[0xe] = 0x54;\n      pbVar3[0xf] = 0x76;\n      MD5Update(pbVar3,unaff_s2,0x40);\n      (**(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x754c))(unaff_s2,0x5c,0x40);\n      unaff_s0 = param_2;\n      unaff_s4 = param_3;\n    }\n    else {\n      unaff_s5 = param_2 + 0x40;\n      unaff_s4 = param_2 + (int)(param_3 + -1);\n      pbVar2 = param_2;\n      pbVar4 = unaff_s2;\n      do {\n        *pbVar4 = *pbVar4 ^ *pbVar2;\n        if (pbVar2 == unaff_s4) break;\n        pbVar2 = pbVar2 + 1;\n        pbVar4 = pbVar4 + 1;\n      } while (pbVar2 != unaff_s5);\n      unaff_s7 = *(undefined4 *)(iVar7 + -31000);\n      pbVar3[0x50] = 0;\n      pbVar3[0x51] = 0;\n      pbVar3[0x52] = 0;\n      pbVar3[0x53] = 0;\n      pbVar3[0x58] = 0;\n      pbVar3[0x59] = 0;\n      pbVar3[0x5a] = 0;\n      pbVar3[0x5b] = 0;\n      pbVar3[0x54] = 0;\n      pbVar3[0x55] = 0;\n      pbVar3[0x56] = 0;\n      pbVar3[0x57] = 0;\n      pbVar3[0] = 0x67;\n      pbVar3[1] = 0x45;\n      pbVar3[2] = 0x23;\n      pbVar3[3] = 1;\n      pbVar3[4] = 0xef;\n      pbVar3[5] = 0xcd;\n      pbVar3[6] = 0xab;\n      pbVar3[7] = 0x89;\n      pbVar3[8] = 0x98;\n      pbVar3[9] = 0xba;\n      pbVar3[10] = 0xdc;\n      pbVar3[0xb] = 0xfe;\n      pbVar3[0xc] = 0x10;\n      pbVar3[0xd] = 0x32;\n      pbVar3[0xe] = 0x54;\n      pbVar3[0xf] = 0x76;\n      MD5Update(pbVar3,unaff_s2,0x40);\n      (**(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x754c))(unaff_s2,0x5c,0x40);\n      bVar1 = *unaff_s2;\n      unaff_s1 = unaff_s2;\n      while (*unaff_s1 = bVar1 ^ *param_2, unaff_s0 = param_2, param_2 != unaff_s4) {\n        param_2 = param_2 + 1;\n        unaff_s1 = unaff_s1 + 1;\n        unaff_s0 = param_2;\n        if (param_2 == unaff_s5) break;\n        bVar1 = *unaff_s1;\n      }\n    }" if (parenthesized_expression "((int)param_3 < 1)" ( (binary_expression "(int)param_3 < 1" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      unaff_s7 = *(undefined4 *)(iVar7 + -31000);\n      pbVar3[0x50] = 0;\n      pbVar3[0x51] = 0;\n      pbVar3[0x52] = 0;\n      pbVar3[0x53] = 0;\n      pbVar3[0x58] = 0;\n      pbVar3[0x59] = 0;\n      pbVar3[0x5a] = 0;\n      pbVar3[0x5b] = 0;\n      pbVar3[0x54] = 0;\n      pbVar3[0x55] = 0;\n      pbVar3[0x56] = 0;\n      pbVar3[0x57] = 0;\n      pbVar3[0] = 0x67;\n      pbVar3[1] = 0x45;\n      pbVar3[2] = 0x23;\n      pbVar3[3] = 1;\n      pbVar3[4] = 0xef;\n      pbVar3[5] = 0xcd;\n      pbVar3[6] = 0xab;\n      pbVar3[7] = 0x89;\n      pbVar3[8] = 0x98;\n      pbVar3[9] = 0xba;\n      pbVar3[10] = 0xdc;\n      pbVar3[0xb] = 0xfe;\n      pbVar3[0xc] = 0x10;\n      pbVar3[0xd] = 0x32;\n      pbVar3[0xe] = 0x54;\n      pbVar3[0xf] = 0x76;\n      MD5Update(pbVar3,unaff_s2,0x40);\n      (**(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x754c))(unaff_s2,0x5c,0x40);\n      unaff_s0 = param_2;\n      unaff_s4 = param_3;\n    }" { (expression_statement "unaff_s7 = *(undefined4 *)(iVar7 + -31000);" (assignment_expression "unaff_s7 = *(undefined4 *)(iVar7 + -31000)" identifier = (pointer_expression "*(undefined4 *)(iVar7 + -31000)" * (cast_expression "(undefined4 *)(iVar7 + -31000)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + -31000)" ( (binary_expression "iVar7 + -31000" identifier + number_literal) ))))) ;) (expression_statement "pbVar3[0x50] = 0;" (assignment_expression "pbVar3[0x50] = 0" (subscript_expression "pbVar3[0x50]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0x51] = 0;" (assignment_expression "pbVar3[0x51] = 0" (subscript_expression "pbVar3[0x51]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0x52] = 0;" (assignment_expression "pbVar3[0x52] = 0" (subscript_expression "pbVar3[0x52]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0x53] = 0;" (assignment_expression "pbVar3[0x53] = 0" (subscript_expression "pbVar3[0x53]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0x58] = 0;" (assignment_expression "pbVar3[0x58] = 0" (subscript_expression "pbVar3[0x58]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0x59] = 0;" (assignment_expression "pbVar3[0x59] = 0" (subscript_expression "pbVar3[0x59]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0x5a] = 0;" (assignment_expression "pbVar3[0x5a] = 0" (subscript_expression "pbVar3[0x5a]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0x5b] = 0;" (assignment_expression "pbVar3[0x5b] = 0" (subscript_expression "pbVar3[0x5b]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0x54] = 0;" (assignment_expression "pbVar3[0x54] = 0" (subscript_expression "pbVar3[0x54]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0x55] = 0;" (assignment_expression "pbVar3[0x55] = 0" (subscript_expression "pbVar3[0x55]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0x56] = 0;" (assignment_expression "pbVar3[0x56] = 0" (subscript_expression "pbVar3[0x56]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0x57] = 0;" (assignment_expression "pbVar3[0x57] = 0" (subscript_expression "pbVar3[0x57]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0] = 0x67;" (assignment_expression "pbVar3[0] = 0x67" (subscript_expression "pbVar3[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[1] = 0x45;" (assignment_expression "pbVar3[1] = 0x45" (subscript_expression "pbVar3[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[2] = 0x23;" (assignment_expression "pbVar3[2] = 0x23" (subscript_expression "pbVar3[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[3] = 1;" (assignment_expression "pbVar3[3] = 1" (subscript_expression "pbVar3[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[4] = 0xef;" (assignment_expression "pbVar3[4] = 0xef" (subscript_expression "pbVar3[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[5] = 0xcd;" (assignment_expression "pbVar3[5] = 0xcd" (subscript_expression "pbVar3[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[6] = 0xab;" (assignment_expression "pbVar3[6] = 0xab" (subscript_expression "pbVar3[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[7] = 0x89;" (assignment_expression "pbVar3[7] = 0x89" (subscript_expression "pbVar3[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[8] = 0x98;" (assignment_expression "pbVar3[8] = 0x98" (subscript_expression "pbVar3[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[9] = 0xba;" (assignment_expression "pbVar3[9] = 0xba" (subscript_expression "pbVar3[9]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[10] = 0xdc;" (assignment_expression "pbVar3[10] = 0xdc" (subscript_expression "pbVar3[10]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0xb] = 0xfe;" (assignment_expression "pbVar3[0xb] = 0xfe" (subscript_expression "pbVar3[0xb]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0xc] = 0x10;" (assignment_expression "pbVar3[0xc] = 0x10" (subscript_expression "pbVar3[0xc]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0xd] = 0x32;" (assignment_expression "pbVar3[0xd] = 0x32" (subscript_expression "pbVar3[0xd]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0xe] = 0x54;" (assignment_expression "pbVar3[0xe] = 0x54" (subscript_expression "pbVar3[0xe]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0xf] = 0x76;" (assignment_expression "pbVar3[0xf] = 0x76" (subscript_expression "pbVar3[0xf]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "MD5Update(pbVar3,unaff_s2,0x40);" (call_expression "MD5Update(pbVar3,unaff_s2,0x40)" identifier (argument_list "(pbVar3,unaff_s2,0x40)" ( identifier , identifier , number_literal ))) ;) (expression_statement "(**(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x754c))(unaff_s2,0x5c,0x40);" (call_expression "(**(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x754c))(unaff_s2,0x5c,0x40)" (parenthesized_expression "(**(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x754c))" ( (pointer_expression "**(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x754c)" * (pointer_expression "*(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x754c)" * (cast_expression "(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x754c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)((int)register0x00000074 + -0x78) + -0x754c)" ( (binary_expression "*(int *)((int)register0x00000074 + -0x78) + -0x754c" (pointer_expression "*(int *)((int)register0x00000074 + -0x78)" * (cast_expression "(int *)((int)register0x00000074 + -0x78)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000074 + -0x78)" ( (binary_expression "(int)register0x00000074 + -0x78" (cast_expression "(int)register0x00000074" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) + number_literal) ))))) )) (argument_list "(unaff_s2,0x5c,0x40)" ( identifier , number_literal , number_literal ))) ;) (expression_statement "unaff_s0 = param_2;" (assignment_expression "unaff_s0 = param_2" identifier = identifier) ;) (expression_statement "unaff_s4 = param_3;" (assignment_expression "unaff_s4 = param_3" identifier = identifier) ;) }) (else_clause "else {\n      unaff_s5 = param_2 + 0x40;\n      unaff_s4 = param_2 + (int)(param_3 + -1);\n      pbVar2 = param_2;\n      pbVar4 = unaff_s2;\n      do {\n        *pbVar4 = *pbVar4 ^ *pbVar2;\n        if (pbVar2 == unaff_s4) break;\n        pbVar2 = pbVar2 + 1;\n        pbVar4 = pbVar4 + 1;\n      } while (pbVar2 != unaff_s5);\n      unaff_s7 = *(undefined4 *)(iVar7 + -31000);\n      pbVar3[0x50] = 0;\n      pbVar3[0x51] = 0;\n      pbVar3[0x52] = 0;\n      pbVar3[0x53] = 0;\n      pbVar3[0x58] = 0;\n      pbVar3[0x59] = 0;\n      pbVar3[0x5a] = 0;\n      pbVar3[0x5b] = 0;\n      pbVar3[0x54] = 0;\n      pbVar3[0x55] = 0;\n      pbVar3[0x56] = 0;\n      pbVar3[0x57] = 0;\n      pbVar3[0] = 0x67;\n      pbVar3[1] = 0x45;\n      pbVar3[2] = 0x23;\n      pbVar3[3] = 1;\n      pbVar3[4] = 0xef;\n      pbVar3[5] = 0xcd;\n      pbVar3[6] = 0xab;\n      pbVar3[7] = 0x89;\n      pbVar3[8] = 0x98;\n      pbVar3[9] = 0xba;\n      pbVar3[10] = 0xdc;\n      pbVar3[0xb] = 0xfe;\n      pbVar3[0xc] = 0x10;\n      pbVar3[0xd] = 0x32;\n      pbVar3[0xe] = 0x54;\n      pbVar3[0xf] = 0x76;\n      MD5Update(pbVar3,unaff_s2,0x40);\n      (**(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x754c))(unaff_s2,0x5c,0x40);\n      bVar1 = *unaff_s2;\n      unaff_s1 = unaff_s2;\n      while (*unaff_s1 = bVar1 ^ *param_2, unaff_s0 = param_2, param_2 != unaff_s4) {\n        param_2 = param_2 + 1;\n        unaff_s1 = unaff_s1 + 1;\n        unaff_s0 = param_2;\n        if (param_2 == unaff_s5) break;\n        bVar1 = *unaff_s1;\n      }\n    }" else (compound_statement "{\n      unaff_s5 = param_2 + 0x40;\n      unaff_s4 = param_2 + (int)(param_3 + -1);\n      pbVar2 = param_2;\n      pbVar4 = unaff_s2;\n      do {\n        *pbVar4 = *pbVar4 ^ *pbVar2;\n        if (pbVar2 == unaff_s4) break;\n        pbVar2 = pbVar2 + 1;\n        pbVar4 = pbVar4 + 1;\n      } while (pbVar2 != unaff_s5);\n      unaff_s7 = *(undefined4 *)(iVar7 + -31000);\n      pbVar3[0x50] = 0;\n      pbVar3[0x51] = 0;\n      pbVar3[0x52] = 0;\n      pbVar3[0x53] = 0;\n      pbVar3[0x58] = 0;\n      pbVar3[0x59] = 0;\n      pbVar3[0x5a] = 0;\n      pbVar3[0x5b] = 0;\n      pbVar3[0x54] = 0;\n      pbVar3[0x55] = 0;\n      pbVar3[0x56] = 0;\n      pbVar3[0x57] = 0;\n      pbVar3[0] = 0x67;\n      pbVar3[1] = 0x45;\n      pbVar3[2] = 0x23;\n      pbVar3[3] = 1;\n      pbVar3[4] = 0xef;\n      pbVar3[5] = 0xcd;\n      pbVar3[6] = 0xab;\n      pbVar3[7] = 0x89;\n      pbVar3[8] = 0x98;\n      pbVar3[9] = 0xba;\n      pbVar3[10] = 0xdc;\n      pbVar3[0xb] = 0xfe;\n      pbVar3[0xc] = 0x10;\n      pbVar3[0xd] = 0x32;\n      pbVar3[0xe] = 0x54;\n      pbVar3[0xf] = 0x76;\n      MD5Update(pbVar3,unaff_s2,0x40);\n      (**(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x754c))(unaff_s2,0x5c,0x40);\n      bVar1 = *unaff_s2;\n      unaff_s1 = unaff_s2;\n      while (*unaff_s1 = bVar1 ^ *param_2, unaff_s0 = param_2, param_2 != unaff_s4) {\n        param_2 = param_2 + 1;\n        unaff_s1 = unaff_s1 + 1;\n        unaff_s0 = param_2;\n        if (param_2 == unaff_s5) break;\n        bVar1 = *unaff_s1;\n      }\n    }" { (expression_statement "unaff_s5 = param_2 + 0x40;" (assignment_expression "unaff_s5 = param_2 + 0x40" identifier = (binary_expression "param_2 + 0x40" identifier + number_literal)) ;) (expression_statement "unaff_s4 = param_2 + (int)(param_3 + -1);" (assignment_expression "unaff_s4 = param_2 + (int)(param_3 + -1)" identifier = (binary_expression "param_2 + (int)(param_3 + -1)" identifier + (cast_expression "(int)(param_3 + -1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(param_3 + -1)" ( (binary_expression "param_3 + -1" identifier + number_literal) ))))) ;) (expression_statement "pbVar2 = param_2;" (assignment_expression "pbVar2 = param_2" identifier = identifier) ;) (expression_statement "pbVar4 = unaff_s2;" (assignment_expression "pbVar4 = unaff_s2" identifier = identifier) ;) (do_statement "do {\n        *pbVar4 = *pbVar4 ^ *pbVar2;\n        if (pbVar2 == unaff_s4) break;\n        pbVar2 = pbVar2 + 1;\n        pbVar4 = pbVar4 + 1;\n      } while (pbVar2 != unaff_s5);" do (compound_statement "{\n        *pbVar4 = *pbVar4 ^ *pbVar2;\n        if (pbVar2 == unaff_s4) break;\n        pbVar2 = pbVar2 + 1;\n        pbVar4 = pbVar4 + 1;\n      }" { (expression_statement "*pbVar4 = *pbVar4 ^ *pbVar2;" (assignment_expression "*pbVar4 = *pbVar4 ^ *pbVar2" (pointer_expression "*pbVar4" * identifier) = (binary_expression "*pbVar4 ^ *pbVar2" (pointer_expression "*pbVar4" * identifier) ^ (pointer_expression "*pbVar2" * identifier))) ;) (if_statement "if (pbVar2 == unaff_s4) break;" if (parenthesized_expression "(pbVar2 == unaff_s4)" ( (binary_expression "pbVar2 == unaff_s4" identifier == identifier) )) (break_statement "break;" break ;)) (expression_statement "pbVar2 = pbVar2 + 1;" (assignment_expression "pbVar2 = pbVar2 + 1" identifier = (binary_expression "pbVar2 + 1" identifier + number_literal)) ;) (expression_statement "pbVar4 = pbVar4 + 1;" (assignment_expression "pbVar4 = pbVar4 + 1" identifier = (binary_expression "pbVar4 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(pbVar2 != unaff_s5)" ( (binary_expression "pbVar2 != unaff_s5" identifier != identifier) )) ;) (expression_statement "unaff_s7 = *(undefined4 *)(iVar7 + -31000);" (assignment_expression "unaff_s7 = *(undefined4 *)(iVar7 + -31000)" identifier = (pointer_expression "*(undefined4 *)(iVar7 + -31000)" * (cast_expression "(undefined4 *)(iVar7 + -31000)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + -31000)" ( (binary_expression "iVar7 + -31000" identifier + number_literal) ))))) ;) (expression_statement "pbVar3[0x50] = 0;" (assignment_expression "pbVar3[0x50] = 0" (subscript_expression "pbVar3[0x50]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0x51] = 0;" (assignment_expression "pbVar3[0x51] = 0" (subscript_expression "pbVar3[0x51]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0x52] = 0;" (assignment_expression "pbVar3[0x52] = 0" (subscript_expression "pbVar3[0x52]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0x53] = 0;" (assignment_expression "pbVar3[0x53] = 0" (subscript_expression "pbVar3[0x53]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0x58] = 0;" (assignment_expression "pbVar3[0x58] = 0" (subscript_expression "pbVar3[0x58]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0x59] = 0;" (assignment_expression "pbVar3[0x59] = 0" (subscript_expression "pbVar3[0x59]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0x5a] = 0;" (assignment_expression "pbVar3[0x5a] = 0" (subscript_expression "pbVar3[0x5a]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0x5b] = 0;" (assignment_expression "pbVar3[0x5b] = 0" (subscript_expression "pbVar3[0x5b]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0x54] = 0;" (assignment_expression "pbVar3[0x54] = 0" (subscript_expression "pbVar3[0x54]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0x55] = 0;" (assignment_expression "pbVar3[0x55] = 0" (subscript_expression "pbVar3[0x55]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0x56] = 0;" (assignment_expression "pbVar3[0x56] = 0" (subscript_expression "pbVar3[0x56]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0x57] = 0;" (assignment_expression "pbVar3[0x57] = 0" (subscript_expression "pbVar3[0x57]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0] = 0x67;" (assignment_expression "pbVar3[0] = 0x67" (subscript_expression "pbVar3[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[1] = 0x45;" (assignment_expression "pbVar3[1] = 0x45" (subscript_expression "pbVar3[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[2] = 0x23;" (assignment_expression "pbVar3[2] = 0x23" (subscript_expression "pbVar3[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[3] = 1;" (assignment_expression "pbVar3[3] = 1" (subscript_expression "pbVar3[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[4] = 0xef;" (assignment_expression "pbVar3[4] = 0xef" (subscript_expression "pbVar3[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[5] = 0xcd;" (assignment_expression "pbVar3[5] = 0xcd" (subscript_expression "pbVar3[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[6] = 0xab;" (assignment_expression "pbVar3[6] = 0xab" (subscript_expression "pbVar3[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[7] = 0x89;" (assignment_expression "pbVar3[7] = 0x89" (subscript_expression "pbVar3[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[8] = 0x98;" (assignment_expression "pbVar3[8] = 0x98" (subscript_expression "pbVar3[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[9] = 0xba;" (assignment_expression "pbVar3[9] = 0xba" (subscript_expression "pbVar3[9]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[10] = 0xdc;" (assignment_expression "pbVar3[10] = 0xdc" (subscript_expression "pbVar3[10]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0xb] = 0xfe;" (assignment_expression "pbVar3[0xb] = 0xfe" (subscript_expression "pbVar3[0xb]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0xc] = 0x10;" (assignment_expression "pbVar3[0xc] = 0x10" (subscript_expression "pbVar3[0xc]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0xd] = 0x32;" (assignment_expression "pbVar3[0xd] = 0x32" (subscript_expression "pbVar3[0xd]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0xe] = 0x54;" (assignment_expression "pbVar3[0xe] = 0x54" (subscript_expression "pbVar3[0xe]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0xf] = 0x76;" (assignment_expression "pbVar3[0xf] = 0x76" (subscript_expression "pbVar3[0xf]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "MD5Update(pbVar3,unaff_s2,0x40);" (call_expression "MD5Update(pbVar3,unaff_s2,0x40)" identifier (argument_list "(pbVar3,unaff_s2,0x40)" ( identifier , identifier , number_literal ))) ;) (expression_statement "(**(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x754c))(unaff_s2,0x5c,0x40);" (call_expression "(**(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x754c))(unaff_s2,0x5c,0x40)" (parenthesized_expression "(**(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x754c))" ( (pointer_expression "**(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x754c)" * (pointer_expression "*(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x754c)" * (cast_expression "(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x754c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)((int)register0x00000074 + -0x78) + -0x754c)" ( (binary_expression "*(int *)((int)register0x00000074 + -0x78) + -0x754c" (pointer_expression "*(int *)((int)register0x00000074 + -0x78)" * (cast_expression "(int *)((int)register0x00000074 + -0x78)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000074 + -0x78)" ( (binary_expression "(int)register0x00000074 + -0x78" (cast_expression "(int)register0x00000074" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) + number_literal) ))))) )) (argument_list "(unaff_s2,0x5c,0x40)" ( identifier , number_literal , number_literal ))) ;) (expression_statement "bVar1 = *unaff_s2;" (assignment_expression "bVar1 = *unaff_s2" identifier = (pointer_expression "*unaff_s2" * identifier)) ;) (expression_statement "unaff_s1 = unaff_s2;" (assignment_expression "unaff_s1 = unaff_s2" identifier = identifier) ;) (while_statement "while (*unaff_s1 = bVar1 ^ *param_2, unaff_s0 = param_2, param_2 != unaff_s4) {\n        param_2 = param_2 + 1;\n        unaff_s1 = unaff_s1 + 1;\n        unaff_s0 = param_2;\n        if (param_2 == unaff_s5) break;\n        bVar1 = *unaff_s1;\n      }" while (parenthesized_expression "(*unaff_s1 = bVar1 ^ *param_2, unaff_s0 = param_2, param_2 != unaff_s4)" ( (comma_expression "*unaff_s1 = bVar1 ^ *param_2, unaff_s0 = param_2, param_2 != unaff_s4" (assignment_expression "*unaff_s1 = bVar1 ^ *param_2" (pointer_expression "*unaff_s1" * identifier) = (binary_expression "bVar1 ^ *param_2" identifier ^ (pointer_expression "*param_2" * identifier))) , (comma_expression "unaff_s0 = param_2, param_2 != unaff_s4" (assignment_expression "unaff_s0 = param_2" identifier = identifier) , (binary_expression "param_2 != unaff_s4" identifier != identifier))) )) (compound_statement "{\n        param_2 = param_2 + 1;\n        unaff_s1 = unaff_s1 + 1;\n        unaff_s0 = param_2;\n        if (param_2 == unaff_s5) break;\n        bVar1 = *unaff_s1;\n      }" { (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;) (expression_statement "unaff_s1 = unaff_s1 + 1;" (assignment_expression "unaff_s1 = unaff_s1 + 1" identifier = (binary_expression "unaff_s1 + 1" identifier + number_literal)) ;) (expression_statement "unaff_s0 = param_2;" (assignment_expression "unaff_s0 = param_2" identifier = identifier) ;) (if_statement "if (param_2 == unaff_s5) break;" if (parenthesized_expression "(param_2 == unaff_s5)" ( (binary_expression "param_2 == unaff_s5" identifier == identifier) )) (break_statement "break;" break ;)) (expression_statement "bVar1 = *unaff_s1;" (assignment_expression "bVar1 = *unaff_s1" identifier = (pointer_expression "*unaff_s1" * identifier)) ;) })) }))) (expression_statement "pbVar3[0xac] = 0;" (assignment_expression "pbVar3[0xac] = 0" (subscript_expression "pbVar3[0xac]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0xad] = 0;" (assignment_expression "pbVar3[0xad] = 0" (subscript_expression "pbVar3[0xad]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0xae] = 0;" (assignment_expression "pbVar3[0xae] = 0" (subscript_expression "pbVar3[0xae]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0xaf] = 0;" (assignment_expression "pbVar3[0xaf] = 0" (subscript_expression "pbVar3[0xaf]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0xb4] = 0;" (assignment_expression "pbVar3[0xb4] = 0" (subscript_expression "pbVar3[0xb4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0xb5] = 0;" (assignment_expression "pbVar3[0xb5] = 0" (subscript_expression "pbVar3[0xb5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0xb6] = 0;" (assignment_expression "pbVar3[0xb6] = 0" (subscript_expression "pbVar3[0xb6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0xb7] = 0;" (assignment_expression "pbVar3[0xb7] = 0" (subscript_expression "pbVar3[0xb7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0xb0] = 0;" (assignment_expression "pbVar3[0xb0] = 0" (subscript_expression "pbVar3[0xb0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0xb1] = 0;" (assignment_expression "pbVar3[0xb1] = 0" (subscript_expression "pbVar3[0xb1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0xb2] = 0;" (assignment_expression "pbVar3[0xb2] = 0" (subscript_expression "pbVar3[0xb2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0xb3] = 0;" (assignment_expression "pbVar3[0xb3] = 0" (subscript_expression "pbVar3[0xb3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0x5c] = 0x67;" (assignment_expression "pbVar3[0x5c] = 0x67" (subscript_expression "pbVar3[0x5c]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0x5d] = 0x45;" (assignment_expression "pbVar3[0x5d] = 0x45" (subscript_expression "pbVar3[0x5d]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0x5e] = 0x23;" (assignment_expression "pbVar3[0x5e] = 0x23" (subscript_expression "pbVar3[0x5e]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0x5f] = 1;" (assignment_expression "pbVar3[0x5f] = 1" (subscript_expression "pbVar3[0x5f]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0x60] = 0xef;" (assignment_expression "pbVar3[0x60] = 0xef" (subscript_expression "pbVar3[0x60]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0x61] = 0xcd;" (assignment_expression "pbVar3[0x61] = 0xcd" (subscript_expression "pbVar3[0x61]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0x62] = 0xab;" (assignment_expression "pbVar3[0x62] = 0xab" (subscript_expression "pbVar3[0x62]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[99] = 0x89;" (assignment_expression "pbVar3[99] = 0x89" (subscript_expression "pbVar3[99]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[100] = 0x98;" (assignment_expression "pbVar3[100] = 0x98" (subscript_expression "pbVar3[100]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0x65] = 0xba;" (assignment_expression "pbVar3[0x65] = 0xba" (subscript_expression "pbVar3[0x65]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0x66] = 0xdc;" (assignment_expression "pbVar3[0x66] = 0xdc" (subscript_expression "pbVar3[0x66]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0x67] = 0xfe;" (assignment_expression "pbVar3[0x67] = 0xfe" (subscript_expression "pbVar3[0x67]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0x68] = 0x10;" (assignment_expression "pbVar3[0x68] = 0x10" (subscript_expression "pbVar3[0x68]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0x69] = 0x32;" (assignment_expression "pbVar3[0x69] = 0x32" (subscript_expression "pbVar3[0x69]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0x6a] = 0x54;" (assignment_expression "pbVar3[0x6a] = 0x54" (subscript_expression "pbVar3[0x6a]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[0x6b] = 0x76;" (assignment_expression "pbVar3[0x6b] = 0x76" (subscript_expression "pbVar3[0x6b]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "MD5Update(pbVar3 + 0x5c,unaff_s2,0x40);" (call_expression "MD5Update(pbVar3 + 0x5c,unaff_s2,0x40)" identifier (argument_list "(pbVar3 + 0x5c,unaff_s2,0x40)" ( (binary_expression "pbVar3 + 0x5c" identifier + number_literal) , identifier , number_literal ))) ;) (expression_statement "param_2 = &DAT_00000040;" (assignment_expression "param_2 = &DAT_00000040" identifier = (pointer_expression "&DAT_00000040" & identifier)) ;) (expression_statement "param_1 = unaff_s2;" (assignment_expression "param_1 = unaff_s2" identifier = identifier) ;) (expression_statement "(**(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x7f10))();" (call_expression "(**(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x7f10))()" (parenthesized_expression "(**(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x7f10))" ( (pointer_expression "**(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x7f10)" * (pointer_expression "*(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x7f10)" * (cast_expression "(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x7f10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)((int)register0x00000074 + -0x78) + -0x7f10)" ( (binary_expression "*(int *)((int)register0x00000074 + -0x78) + -0x7f10" (pointer_expression "*(int *)((int)register0x00000074 + -0x78)" * (cast_expression "(int *)((int)register0x00000074 + -0x78)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000074 + -0x78)" ( (binary_expression "(int)register0x00000074 + -0x78" (cast_expression "(int)register0x00000074" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) + number_literal) ))))) )) (argument_list "()" ( ))) ;) (if_statement "if (*(int *)((int)register0x00000074 + -0x2c) == *unaff_s3) {\n      return;\n    }" if (parenthesized_expression "(*(int *)((int)register0x00000074 + -0x2c) == *unaff_s3)" ( (binary_expression "*(int *)((int)register0x00000074 + -0x2c) == *unaff_s3" (pointer_expression "*(int *)((int)register0x00000074 + -0x2c)" * (cast_expression "(int *)((int)register0x00000074 + -0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000074 + -0x2c)" ( (binary_expression "(int)register0x00000074 + -0x2c" (cast_expression "(int)register0x00000074" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == (pointer_expression "*unaff_s3" * identifier)) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) (expression_statement "pcVar6 = *(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x7498);" (assignment_expression "pcVar6 = *(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x7498)" identifier = (pointer_expression "*(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x7498)" * (cast_expression "(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x7498)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)((int)register0x00000074 + -0x78) + -0x7498)" ( (binary_expression "*(int *)((int)register0x00000074 + -0x78) + -0x7498" (pointer_expression "*(int *)((int)register0x00000074 + -0x78)" * (cast_expression "(int *)((int)register0x00000074 + -0x78)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000074 + -0x78)" ( (binary_expression "(int)register0x00000074 + -0x78" (cast_expression "(int)register0x00000074" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) + number_literal) ))))) ;) (expression_statement "unaff_retaddr = 0x6a8bc;" (assignment_expression "unaff_retaddr = 0x6a8bc" identifier = number_literal) ;) (expression_statement "(*pcVar6)();" (call_expression "(*pcVar6)()" (parenthesized_expression "(*pcVar6)" ( (pointer_expression "*pcVar6" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "pcVar6 = *(code **)(pcVar6 + 0x47c48);" (assignment_expression "pcVar6 = *(code **)(pcVar6 + 0x47c48)" identifier = (pointer_expression "*(code **)(pcVar6 + 0x47c48)" * (cast_expression "(code **)(pcVar6 + 0x47c48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar6 + 0x47c48)" ( (binary_expression "pcVar6 + 0x47c48" identifier + number_literal) ))))) ;) (expression_statement "param_3 = &DAT_00000010;" (assignment_expression "param_3 = &DAT_00000010" identifier = (pointer_expression "&DAT_00000010" & identifier)) ;) (expression_statement "unaff_s6 = pbVar3;" (assignment_expression "unaff_s6 = pbVar3" identifier = identifier) ;) (expression_statement "register0x00000074 = (BADSPACEBASE *)((int)register0x00000074 + -0x88);" (assignment_expression "register0x00000074 = (BADSPACEBASE *)((int)register0x00000074 + -0x88)" identifier = (cast_expression "(BADSPACEBASE *)((int)register0x00000074 + -0x88)" ( (type_descriptor "BADSPACEBASE *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)register0x00000074 + -0x88)" ( (binary_expression "(int)register0x00000074 + -0x88" (cast_expression "(int)register0x00000074" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (pointer_expression * IDENT)) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , LIT , LIT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , LIT ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) + LIT) ))))) )) (argument_list ( IDENT , LIT , LIT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) ^ (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != 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 (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , LIT ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) + LIT) ))))) )) (argument_list ( IDENT , LIT , LIT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT ^ (pointer_expression * IDENT))) , (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT != IDENT))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) })) }))) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT , LIT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) + LIT) ))))) )) (argument_list ( ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) == (pointer_expression * IDENT)) )) (compound_statement { (return_statement return ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) }) while (parenthesized_expression ( BOOL )) ;) })))
(function_definition "void hmacmd5_key(byte *param_1,byte *param_2,byte *param_3)\n\n{\n  byte bVar1;\n  byte *pbVar2;\n  byte *pbVar3;\n  byte *pbVar4;\n  byte *unaff_s0;\n  byte *unaff_s1;\n  byte *unaff_s2;\n  int *unaff_s3;\n  byte *unaff_s4;\n  byte *unaff_s5;\n  byte *unaff_s6;\n  undefined4 unaff_s7;\n  code *pcVar5;\n  code *pcVar6;\n  int iVar7;\n  undefined4 unaff_retaddr;\n  undefined1 auStackX_0 [16];\n  \n  pcVar6 = hmacmd5_key;\n  do {\n    pbVar3 = param_1;\n    pcVar5 = *(code **)(&LAB_000487cc + (int)pcVar6);\n    *(int **)((int)register0x00000074 + -0x18) = unaff_s3;\n    unaff_s3 = *(int **)(pcVar6 + 0x488ac);\n    *(byte **)((int)register0x00000074 + -0x1c) = unaff_s2;\n    unaff_s2 = (byte *)((int)register0x00000074 + -0x6c);\n    *(byte **)((int)register0x00000074 + -0x14) = unaff_s4;\n    *(byte **)((int)register0x00000074 + -0x24) = unaff_s0;\n    *(code **)((int)register0x00000074 + -0x78) = pcVar6 + 0x4fd18;\n    *(byte **)((int)register0x00000074 + -0xc) = unaff_s6;\n    *(undefined4 *)((int)register0x00000074 + -4) = unaff_retaddr;\n    *(undefined4 *)((int)register0x00000074 + -8) = unaff_s7;\n    *(byte **)((int)register0x00000074 + -0x10) = unaff_s5;\n    *(byte **)((int)register0x00000074 + -0x20) = unaff_s1;\n    *(int *)((int)register0x00000074 + -0x2c) = *unaff_s3;\n    (*pcVar5)(unaff_s2,0x36,0x40);\n    iVar7 = *(int *)((int)register0x00000074 + -0x78);\n    if ((int)param_3 < 1) {\n      unaff_s7 = *(undefined4 *)(iVar7 + -31000);\n      pbVar3[0x50] = 0;\n      pbVar3[0x51] = 0;\n      pbVar3[0x52] = 0;\n      pbVar3[0x53] = 0;\n      pbVar3[0x58] = 0;\n      pbVar3[0x59] = 0;\n      pbVar3[0x5a] = 0;\n      pbVar3[0x5b] = 0;\n      pbVar3[0x54] = 0;\n      pbVar3[0x55] = 0;\n      pbVar3[0x56] = 0;\n      pbVar3[0x57] = 0;\n      pbVar3[0] = 0x67;\n      pbVar3[1] = 0x45;\n      pbVar3[2] = 0x23;\n      pbVar3[3] = 1;\n      pbVar3[4] = 0xef;\n      pbVar3[5] = 0xcd;\n      pbVar3[6] = 0xab;\n      pbVar3[7] = 0x89;\n      pbVar3[8] = 0x98;\n      pbVar3[9] = 0xba;\n      pbVar3[10] = 0xdc;\n      pbVar3[0xb] = 0xfe;\n      pbVar3[0xc] = 0x10;\n      pbVar3[0xd] = 0x32;\n      pbVar3[0xe] = 0x54;\n      pbVar3[0xf] = 0x76;\n      MD5Update(pbVar3,unaff_s2,0x40);\n      (**(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x754c))(unaff_s2,0x5c,0x40);\n      unaff_s0 = param_2;\n      unaff_s4 = param_3;\n    }\n    else {\n      unaff_s5 = param_2 + 0x40;\n      unaff_s4 = param_2 + (int)(param_3 + -1);\n      pbVar2 = param_2;\n      pbVar4 = unaff_s2;\n      do {\n        *pbVar4 = *pbVar4 ^ *pbVar2;\n        if (pbVar2 == unaff_s4) break;\n        pbVar2 = pbVar2 + 1;\n        pbVar4 = pbVar4 + 1;\n      } while (pbVar2 != unaff_s5);\n      unaff_s7 = *(undefined4 *)(iVar7 + -31000);\n      pbVar3[0x50] = 0;\n      pbVar3[0x51] = 0;\n      pbVar3[0x52] = 0;\n      pbVar3[0x53] = 0;\n      pbVar3[0x58] = 0;\n      pbVar3[0x59] = 0;\n      pbVar3[0x5a] = 0;\n      pbVar3[0x5b] = 0;\n      pbVar3[0x54] = 0;\n      pbVar3[0x55] = 0;\n      pbVar3[0x56] = 0;\n      pbVar3[0x57] = 0;\n      pbVar3[0] = 0x67;\n      pbVar3[1] = 0x45;\n      pbVar3[2] = 0x23;\n      pbVar3[3] = 1;\n      pbVar3[4] = 0xef;\n      pbVar3[5] = 0xcd;\n      pbVar3[6] = 0xab;\n      pbVar3[7] = 0x89;\n      pbVar3[8] = 0x98;\n      pbVar3[9] = 0xba;\n      pbVar3[10] = 0xdc;\n      pbVar3[0xb] = 0xfe;\n      pbVar3[0xc] = 0x10;\n      pbVar3[0xd] = 0x32;\n      pbVar3[0xe] = 0x54;\n      pbVar3[0xf] = 0x76;\n      MD5Update(pbVar3,unaff_s2,0x40);\n      (**(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x754c))(unaff_s2,0x5c,0x40);\n      bVar1 = *unaff_s2;\n      unaff_s1 = unaff_s2;\n      while (*unaff_s1 = bVar1 ^ *param_2, unaff_s0 = param_2, param_2 != unaff_s4) {\n        param_2 = param_2 + 1;\n        unaff_s1 = unaff_s1 + 1;\n        unaff_s0 = param_2;\n        if (param_2 == unaff_s5) break;\n        bVar1 = *unaff_s1;\n      }\n    }\n    pbVar3[0xac] = 0;\n    pbVar3[0xad] = 0;\n    pbVar3[0xae] = 0;\n    pbVar3[0xaf] = 0;\n    pbVar3[0xb4] = 0;\n    pbVar3[0xb5] = 0;\n    pbVar3[0xb6] = 0;\n    pbVar3[0xb7] = 0;\n    pbVar3[0xb0] = 0;\n    pbVar3[0xb1] = 0;\n    pbVar3[0xb2] = 0;\n    pbVar3[0xb3] = 0;\n    pbVar3[0x5c] = 0x67;\n    pbVar3[0x5d] = 0x45;\n    pbVar3[0x5e] = 0x23;\n    pbVar3[0x5f] = 1;\n    pbVar3[0x60] = 0xef;\n    pbVar3[0x61] = 0xcd;\n    pbVar3[0x62] = 0xab;\n    pbVar3[99] = 0x89;\n    pbVar3[100] = 0x98;\n    pbVar3[0x65] = 0xba;\n    pbVar3[0x66] = 0xdc;\n    pbVar3[0x67] = 0xfe;\n    pbVar3[0x68] = 0x10;\n    pbVar3[0x69] = 0x32;\n    pbVar3[0x6a] = 0x54;\n    pbVar3[0x6b] = 0x76;\n    MD5Update(pbVar3 + 0x5c,unaff_s2,0x40);\n    param_2 = &DAT_00000040;\n    param_1 = unaff_s2;\n    (**(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x7f10))();\n    if (*(int *)((int)register0x00000074 + -0x2c) == *unaff_s3) {\n      return;\n    }\n    pcVar6 = *(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x7498);\n    unaff_retaddr = 0x6a8bc;\n    (*pcVar6)();\n    pcVar6 = *(code **)(pcVar6 + 0x47c48);\n    param_3 = &DAT_00000010;\n    unaff_s6 = pbVar3;\n    register0x00000074 = (BADSPACEBASE *)((int)register0x00000074 + -0x88);\n  } while( true );\n}" (primitive_type "void") (function_declarator "hmacmd5_key(byte *param_1,byte *param_2,byte *param_3)" (identifier "hmacmd5_key") (parameter_list "(byte *param_1,byte *param_2,byte *param_3)" (( "(") (parameter_declaration "byte *param_1" (type_identifier "byte") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "byte *param_2" (type_identifier "byte") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "byte *param_3" (type_identifier "byte") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) () ")"))) (compound_statement "{\n  byte bVar1;\n  byte *pbVar2;\n  byte *pbVar3;\n  byte *pbVar4;\n  byte *unaff_s0;\n  byte *unaff_s1;\n  byte *unaff_s2;\n  int *unaff_s3;\n  byte *unaff_s4;\n  byte *unaff_s5;\n  byte *unaff_s6;\n  undefined4 unaff_s7;\n  code *pcVar5;\n  code *pcVar6;\n  int iVar7;\n  undefined4 unaff_retaddr;\n  undefined1 auStackX_0 [16];\n  \n  pcVar6 = hmacmd5_key;\n  do {\n    pbVar3 = param_1;\n    pcVar5 = *(code **)(&LAB_000487cc + (int)pcVar6);\n    *(int **)((int)register0x00000074 + -0x18) = unaff_s3;\n    unaff_s3 = *(int **)(pcVar6 + 0x488ac);\n    *(byte **)((int)register0x00000074 + -0x1c) = unaff_s2;\n    unaff_s2 = (byte *)((int)register0x00000074 + -0x6c);\n    *(byte **)((int)register0x00000074 + -0x14) = unaff_s4;\n    *(byte **)((int)register0x00000074 + -0x24) = unaff_s0;\n    *(code **)((int)register0x00000074 + -0x78) = pcVar6 + 0x4fd18;\n    *(byte **)((int)register0x00000074 + -0xc) = unaff_s6;\n    *(undefined4 *)((int)register0x00000074 + -4) = unaff_retaddr;\n    *(undefined4 *)((int)register0x00000074 + -8) = unaff_s7;\n    *(byte **)((int)register0x00000074 + -0x10) = unaff_s5;\n    *(byte **)((int)register0x00000074 + -0x20) = unaff_s1;\n    *(int *)((int)register0x00000074 + -0x2c) = *unaff_s3;\n    (*pcVar5)(unaff_s2,0x36,0x40);\n    iVar7 = *(int *)((int)register0x00000074 + -0x78);\n    if ((int)param_3 < 1) {\n      unaff_s7 = *(undefined4 *)(iVar7 + -31000);\n      pbVar3[0x50] = 0;\n      pbVar3[0x51] = 0;\n      pbVar3[0x52] = 0;\n      pbVar3[0x53] = 0;\n      pbVar3[0x58] = 0;\n      pbVar3[0x59] = 0;\n      pbVar3[0x5a] = 0;\n      pbVar3[0x5b] = 0;\n      pbVar3[0x54] = 0;\n      pbVar3[0x55] = 0;\n      pbVar3[0x56] = 0;\n      pbVar3[0x57] = 0;\n      pbVar3[0] = 0x67;\n      pbVar3[1] = 0x45;\n      pbVar3[2] = 0x23;\n      pbVar3[3] = 1;\n      pbVar3[4] = 0xef;\n      pbVar3[5] = 0xcd;\n      pbVar3[6] = 0xab;\n      pbVar3[7] = 0x89;\n      pbVar3[8] = 0x98;\n      pbVar3[9] = 0xba;\n      pbVar3[10] = 0xdc;\n      pbVar3[0xb] = 0xfe;\n      pbVar3[0xc] = 0x10;\n      pbVar3[0xd] = 0x32;\n      pbVar3[0xe] = 0x54;\n      pbVar3[0xf] = 0x76;\n      MD5Update(pbVar3,unaff_s2,0x40);\n      (**(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x754c))(unaff_s2,0x5c,0x40);\n      unaff_s0 = param_2;\n      unaff_s4 = param_3;\n    }\n    else {\n      unaff_s5 = param_2 + 0x40;\n      unaff_s4 = param_2 + (int)(param_3 + -1);\n      pbVar2 = param_2;\n      pbVar4 = unaff_s2;\n      do {\n        *pbVar4 = *pbVar4 ^ *pbVar2;\n        if (pbVar2 == unaff_s4) break;\n        pbVar2 = pbVar2 + 1;\n        pbVar4 = pbVar4 + 1;\n      } while (pbVar2 != unaff_s5);\n      unaff_s7 = *(undefined4 *)(iVar7 + -31000);\n      pbVar3[0x50] = 0;\n      pbVar3[0x51] = 0;\n      pbVar3[0x52] = 0;\n      pbVar3[0x53] = 0;\n      pbVar3[0x58] = 0;\n      pbVar3[0x59] = 0;\n      pbVar3[0x5a] = 0;\n      pbVar3[0x5b] = 0;\n      pbVar3[0x54] = 0;\n      pbVar3[0x55] = 0;\n      pbVar3[0x56] = 0;\n      pbVar3[0x57] = 0;\n      pbVar3[0] = 0x67;\n      pbVar3[1] = 0x45;\n      pbVar3[2] = 0x23;\n      pbVar3[3] = 1;\n      pbVar3[4] = 0xef;\n      pbVar3[5] = 0xcd;\n      pbVar3[6] = 0xab;\n      pbVar3[7] = 0x89;\n      pbVar3[8] = 0x98;\n      pbVar3[9] = 0xba;\n      pbVar3[10] = 0xdc;\n      pbVar3[0xb] = 0xfe;\n      pbVar3[0xc] = 0x10;\n      pbVar3[0xd] = 0x32;\n      pbVar3[0xe] = 0x54;\n      pbVar3[0xf] = 0x76;\n      MD5Update(pbVar3,unaff_s2,0x40);\n      (**(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x754c))(unaff_s2,0x5c,0x40);\n      bVar1 = *unaff_s2;\n      unaff_s1 = unaff_s2;\n      while (*unaff_s1 = bVar1 ^ *param_2, unaff_s0 = param_2, param_2 != unaff_s4) {\n        param_2 = param_2 + 1;\n        unaff_s1 = unaff_s1 + 1;\n        unaff_s0 = param_2;\n        if (param_2 == unaff_s5) break;\n        bVar1 = *unaff_s1;\n      }\n    }\n    pbVar3[0xac] = 0;\n    pbVar3[0xad] = 0;\n    pbVar3[0xae] = 0;\n    pbVar3[0xaf] = 0;\n    pbVar3[0xb4] = 0;\n    pbVar3[0xb5] = 0;\n    pbVar3[0xb6] = 0;\n    pbVar3[0xb7] = 0;\n    pbVar3[0xb0] = 0;\n    pbVar3[0xb1] = 0;\n    pbVar3[0xb2] = 0;\n    pbVar3[0xb3] = 0;\n    pbVar3[0x5c] = 0x67;\n    pbVar3[0x5d] = 0x45;\n    pbVar3[0x5e] = 0x23;\n    pbVar3[0x5f] = 1;\n    pbVar3[0x60] = 0xef;\n    pbVar3[0x61] = 0xcd;\n    pbVar3[0x62] = 0xab;\n    pbVar3[99] = 0x89;\n    pbVar3[100] = 0x98;\n    pbVar3[0x65] = 0xba;\n    pbVar3[0x66] = 0xdc;\n    pbVar3[0x67] = 0xfe;\n    pbVar3[0x68] = 0x10;\n    pbVar3[0x69] = 0x32;\n    pbVar3[0x6a] = 0x54;\n    pbVar3[0x6b] = 0x76;\n    MD5Update(pbVar3 + 0x5c,unaff_s2,0x40);\n    param_2 = &DAT_00000040;\n    param_1 = unaff_s2;\n    (**(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x7f10))();\n    if (*(int *)((int)register0x00000074 + -0x2c) == *unaff_s3) {\n      return;\n    }\n    pcVar6 = *(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x7498);\n    unaff_retaddr = 0x6a8bc;\n    (*pcVar6)();\n    pcVar6 = *(code **)(pcVar6 + 0x47c48);\n    param_3 = &DAT_00000010;\n    unaff_s6 = pbVar3;\n    register0x00000074 = (BADSPACEBASE *)((int)register0x00000074 + -0x88);\n  } while( true );\n}" ({ "{") (declaration "byte bVar1;" (type_identifier "byte") (identifier "bVar1") (; ";")) (declaration "byte *pbVar2;" (type_identifier "byte") (pointer_declarator "*pbVar2" (* "*") (identifier "pbVar2")) (; ";")) (declaration "byte *pbVar3;" (type_identifier "byte") (pointer_declarator "*pbVar3" (* "*") (identifier "pbVar3")) (; ";")) (declaration "byte *pbVar4;" (type_identifier "byte") (pointer_declarator "*pbVar4" (* "*") (identifier "pbVar4")) (; ";")) (declaration "byte *unaff_s0;" (type_identifier "byte") (pointer_declarator "*unaff_s0" (* "*") (identifier "unaff_s0")) (; ";")) (declaration "byte *unaff_s1;" (type_identifier "byte") (pointer_declarator "*unaff_s1" (* "*") (identifier "unaff_s1")) (; ";")) (declaration "byte *unaff_s2;" (type_identifier "byte") (pointer_declarator "*unaff_s2" (* "*") (identifier "unaff_s2")) (; ";")) (declaration "int *unaff_s3;" (primitive_type "int") (pointer_declarator "*unaff_s3" (* "*") (identifier "unaff_s3")) (; ";")) (declaration "byte *unaff_s4;" (type_identifier "byte") (pointer_declarator "*unaff_s4" (* "*") (identifier "unaff_s4")) (; ";")) (declaration "byte *unaff_s5;" (type_identifier "byte") (pointer_declarator "*unaff_s5" (* "*") (identifier "unaff_s5")) (; ";")) (declaration "byte *unaff_s6;" (type_identifier "byte") (pointer_declarator "*unaff_s6" (* "*") (identifier "unaff_s6")) (; ";")) (declaration "undefined4 unaff_s7;" (type_identifier "undefined4") (identifier "unaff_s7") (; ";")) (declaration "code *pcVar5;" (type_identifier "code") (pointer_declarator "*pcVar5" (* "*") (identifier "pcVar5")) (; ";")) (declaration "code *pcVar6;" (type_identifier "code") (pointer_declarator "*pcVar6" (* "*") (identifier "pcVar6")) (; ";")) (declaration "int iVar7;" (primitive_type "int") (identifier "iVar7") (; ";")) (declaration "undefined4 unaff_retaddr;" (type_identifier "undefined4") (identifier "unaff_retaddr") (; ";")) (declaration "undefined1 auStackX_0 [16];" (type_identifier "undefined1") (array_declarator "auStackX_0 [16]" (identifier "auStackX_0") ([ "[") (number_literal "16") (] "]")) (; ";")) (expression_statement "pcVar6 = hmacmd5_key;" (assignment_expression "pcVar6 = hmacmd5_key" (identifier "pcVar6") (= "=") (identifier "hmacmd5_key")) (; ";")) (do_statement "do {\n    pbVar3 = param_1;\n    pcVar5 = *(code **)(&LAB_000487cc + (int)pcVar6);\n    *(int **)((int)register0x00000074 + -0x18) = unaff_s3;\n    unaff_s3 = *(int **)(pcVar6 + 0x488ac);\n    *(byte **)((int)register0x00000074 + -0x1c) = unaff_s2;\n    unaff_s2 = (byte *)((int)register0x00000074 + -0x6c);\n    *(byte **)((int)register0x00000074 + -0x14) = unaff_s4;\n    *(byte **)((int)register0x00000074 + -0x24) = unaff_s0;\n    *(code **)((int)register0x00000074 + -0x78) = pcVar6 + 0x4fd18;\n    *(byte **)((int)register0x00000074 + -0xc) = unaff_s6;\n    *(undefined4 *)((int)register0x00000074 + -4) = unaff_retaddr;\n    *(undefined4 *)((int)register0x00000074 + -8) = unaff_s7;\n    *(byte **)((int)register0x00000074 + -0x10) = unaff_s5;\n    *(byte **)((int)register0x00000074 + -0x20) = unaff_s1;\n    *(int *)((int)register0x00000074 + -0x2c) = *unaff_s3;\n    (*pcVar5)(unaff_s2,0x36,0x40);\n    iVar7 = *(int *)((int)register0x00000074 + -0x78);\n    if ((int)param_3 < 1) {\n      unaff_s7 = *(undefined4 *)(iVar7 + -31000);\n      pbVar3[0x50] = 0;\n      pbVar3[0x51] = 0;\n      pbVar3[0x52] = 0;\n      pbVar3[0x53] = 0;\n      pbVar3[0x58] = 0;\n      pbVar3[0x59] = 0;\n      pbVar3[0x5a] = 0;\n      pbVar3[0x5b] = 0;\n      pbVar3[0x54] = 0;\n      pbVar3[0x55] = 0;\n      pbVar3[0x56] = 0;\n      pbVar3[0x57] = 0;\n      pbVar3[0] = 0x67;\n      pbVar3[1] = 0x45;\n      pbVar3[2] = 0x23;\n      pbVar3[3] = 1;\n      pbVar3[4] = 0xef;\n      pbVar3[5] = 0xcd;\n      pbVar3[6] = 0xab;\n      pbVar3[7] = 0x89;\n      pbVar3[8] = 0x98;\n      pbVar3[9] = 0xba;\n      pbVar3[10] = 0xdc;\n      pbVar3[0xb] = 0xfe;\n      pbVar3[0xc] = 0x10;\n      pbVar3[0xd] = 0x32;\n      pbVar3[0xe] = 0x54;\n      pbVar3[0xf] = 0x76;\n      MD5Update(pbVar3,unaff_s2,0x40);\n      (**(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x754c))(unaff_s2,0x5c,0x40);\n      unaff_s0 = param_2;\n      unaff_s4 = param_3;\n    }\n    else {\n      unaff_s5 = param_2 + 0x40;\n      unaff_s4 = param_2 + (int)(param_3 + -1);\n      pbVar2 = param_2;\n      pbVar4 = unaff_s2;\n      do {\n        *pbVar4 = *pbVar4 ^ *pbVar2;\n        if (pbVar2 == unaff_s4) break;\n        pbVar2 = pbVar2 + 1;\n        pbVar4 = pbVar4 + 1;\n      } while (pbVar2 != unaff_s5);\n      unaff_s7 = *(undefined4 *)(iVar7 + -31000);\n      pbVar3[0x50] = 0;\n      pbVar3[0x51] = 0;\n      pbVar3[0x52] = 0;\n      pbVar3[0x53] = 0;\n      pbVar3[0x58] = 0;\n      pbVar3[0x59] = 0;\n      pbVar3[0x5a] = 0;\n      pbVar3[0x5b] = 0;\n      pbVar3[0x54] = 0;\n      pbVar3[0x55] = 0;\n      pbVar3[0x56] = 0;\n      pbVar3[0x57] = 0;\n      pbVar3[0] = 0x67;\n      pbVar3[1] = 0x45;\n      pbVar3[2] = 0x23;\n      pbVar3[3] = 1;\n      pbVar3[4] = 0xef;\n      pbVar3[5] = 0xcd;\n      pbVar3[6] = 0xab;\n      pbVar3[7] = 0x89;\n      pbVar3[8] = 0x98;\n      pbVar3[9] = 0xba;\n      pbVar3[10] = 0xdc;\n      pbVar3[0xb] = 0xfe;\n      pbVar3[0xc] = 0x10;\n      pbVar3[0xd] = 0x32;\n      pbVar3[0xe] = 0x54;\n      pbVar3[0xf] = 0x76;\n      MD5Update(pbVar3,unaff_s2,0x40);\n      (**(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x754c))(unaff_s2,0x5c,0x40);\n      bVar1 = *unaff_s2;\n      unaff_s1 = unaff_s2;\n      while (*unaff_s1 = bVar1 ^ *param_2, unaff_s0 = param_2, param_2 != unaff_s4) {\n        param_2 = param_2 + 1;\n        unaff_s1 = unaff_s1 + 1;\n        unaff_s0 = param_2;\n        if (param_2 == unaff_s5) break;\n        bVar1 = *unaff_s1;\n      }\n    }\n    pbVar3[0xac] = 0;\n    pbVar3[0xad] = 0;\n    pbVar3[0xae] = 0;\n    pbVar3[0xaf] = 0;\n    pbVar3[0xb4] = 0;\n    pbVar3[0xb5] = 0;\n    pbVar3[0xb6] = 0;\n    pbVar3[0xb7] = 0;\n    pbVar3[0xb0] = 0;\n    pbVar3[0xb1] = 0;\n    pbVar3[0xb2] = 0;\n    pbVar3[0xb3] = 0;\n    pbVar3[0x5c] = 0x67;\n    pbVar3[0x5d] = 0x45;\n    pbVar3[0x5e] = 0x23;\n    pbVar3[0x5f] = 1;\n    pbVar3[0x60] = 0xef;\n    pbVar3[0x61] = 0xcd;\n    pbVar3[0x62] = 0xab;\n    pbVar3[99] = 0x89;\n    pbVar3[100] = 0x98;\n    pbVar3[0x65] = 0xba;\n    pbVar3[0x66] = 0xdc;\n    pbVar3[0x67] = 0xfe;\n    pbVar3[0x68] = 0x10;\n    pbVar3[0x69] = 0x32;\n    pbVar3[0x6a] = 0x54;\n    pbVar3[0x6b] = 0x76;\n    MD5Update(pbVar3 + 0x5c,unaff_s2,0x40);\n    param_2 = &DAT_00000040;\n    param_1 = unaff_s2;\n    (**(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x7f10))();\n    if (*(int *)((int)register0x00000074 + -0x2c) == *unaff_s3) {\n      return;\n    }\n    pcVar6 = *(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x7498);\n    unaff_retaddr = 0x6a8bc;\n    (*pcVar6)();\n    pcVar6 = *(code **)(pcVar6 + 0x47c48);\n    param_3 = &DAT_00000010;\n    unaff_s6 = pbVar3;\n    register0x00000074 = (BADSPACEBASE *)((int)register0x00000074 + -0x88);\n  } while( true );" (do "do") (compound_statement "{\n    pbVar3 = param_1;\n    pcVar5 = *(code **)(&LAB_000487cc + (int)pcVar6);\n    *(int **)((int)register0x00000074 + -0x18) = unaff_s3;\n    unaff_s3 = *(int **)(pcVar6 + 0x488ac);\n    *(byte **)((int)register0x00000074 + -0x1c) = unaff_s2;\n    unaff_s2 = (byte *)((int)register0x00000074 + -0x6c);\n    *(byte **)((int)register0x00000074 + -0x14) = unaff_s4;\n    *(byte **)((int)register0x00000074 + -0x24) = unaff_s0;\n    *(code **)((int)register0x00000074 + -0x78) = pcVar6 + 0x4fd18;\n    *(byte **)((int)register0x00000074 + -0xc) = unaff_s6;\n    *(undefined4 *)((int)register0x00000074 + -4) = unaff_retaddr;\n    *(undefined4 *)((int)register0x00000074 + -8) = unaff_s7;\n    *(byte **)((int)register0x00000074 + -0x10) = unaff_s5;\n    *(byte **)((int)register0x00000074 + -0x20) = unaff_s1;\n    *(int *)((int)register0x00000074 + -0x2c) = *unaff_s3;\n    (*pcVar5)(unaff_s2,0x36,0x40);\n    iVar7 = *(int *)((int)register0x00000074 + -0x78);\n    if ((int)param_3 < 1) {\n      unaff_s7 = *(undefined4 *)(iVar7 + -31000);\n      pbVar3[0x50] = 0;\n      pbVar3[0x51] = 0;\n      pbVar3[0x52] = 0;\n      pbVar3[0x53] = 0;\n      pbVar3[0x58] = 0;\n      pbVar3[0x59] = 0;\n      pbVar3[0x5a] = 0;\n      pbVar3[0x5b] = 0;\n      pbVar3[0x54] = 0;\n      pbVar3[0x55] = 0;\n      pbVar3[0x56] = 0;\n      pbVar3[0x57] = 0;\n      pbVar3[0] = 0x67;\n      pbVar3[1] = 0x45;\n      pbVar3[2] = 0x23;\n      pbVar3[3] = 1;\n      pbVar3[4] = 0xef;\n      pbVar3[5] = 0xcd;\n      pbVar3[6] = 0xab;\n      pbVar3[7] = 0x89;\n      pbVar3[8] = 0x98;\n      pbVar3[9] = 0xba;\n      pbVar3[10] = 0xdc;\n      pbVar3[0xb] = 0xfe;\n      pbVar3[0xc] = 0x10;\n      pbVar3[0xd] = 0x32;\n      pbVar3[0xe] = 0x54;\n      pbVar3[0xf] = 0x76;\n      MD5Update(pbVar3,unaff_s2,0x40);\n      (**(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x754c))(unaff_s2,0x5c,0x40);\n      unaff_s0 = param_2;\n      unaff_s4 = param_3;\n    }\n    else {\n      unaff_s5 = param_2 + 0x40;\n      unaff_s4 = param_2 + (int)(param_3 + -1);\n      pbVar2 = param_2;\n      pbVar4 = unaff_s2;\n      do {\n        *pbVar4 = *pbVar4 ^ *pbVar2;\n        if (pbVar2 == unaff_s4) break;\n        pbVar2 = pbVar2 + 1;\n        pbVar4 = pbVar4 + 1;\n      } while (pbVar2 != unaff_s5);\n      unaff_s7 = *(undefined4 *)(iVar7 + -31000);\n      pbVar3[0x50] = 0;\n      pbVar3[0x51] = 0;\n      pbVar3[0x52] = 0;\n      pbVar3[0x53] = 0;\n      pbVar3[0x58] = 0;\n      pbVar3[0x59] = 0;\n      pbVar3[0x5a] = 0;\n      pbVar3[0x5b] = 0;\n      pbVar3[0x54] = 0;\n      pbVar3[0x55] = 0;\n      pbVar3[0x56] = 0;\n      pbVar3[0x57] = 0;\n      pbVar3[0] = 0x67;\n      pbVar3[1] = 0x45;\n      pbVar3[2] = 0x23;\n      pbVar3[3] = 1;\n      pbVar3[4] = 0xef;\n      pbVar3[5] = 0xcd;\n      pbVar3[6] = 0xab;\n      pbVar3[7] = 0x89;\n      pbVar3[8] = 0x98;\n      pbVar3[9] = 0xba;\n      pbVar3[10] = 0xdc;\n      pbVar3[0xb] = 0xfe;\n      pbVar3[0xc] = 0x10;\n      pbVar3[0xd] = 0x32;\n      pbVar3[0xe] = 0x54;\n      pbVar3[0xf] = 0x76;\n      MD5Update(pbVar3,unaff_s2,0x40);\n      (**(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x754c))(unaff_s2,0x5c,0x40);\n      bVar1 = *unaff_s2;\n      unaff_s1 = unaff_s2;\n      while (*unaff_s1 = bVar1 ^ *param_2, unaff_s0 = param_2, param_2 != unaff_s4) {\n        param_2 = param_2 + 1;\n        unaff_s1 = unaff_s1 + 1;\n        unaff_s0 = param_2;\n        if (param_2 == unaff_s5) break;\n        bVar1 = *unaff_s1;\n      }\n    }\n    pbVar3[0xac] = 0;\n    pbVar3[0xad] = 0;\n    pbVar3[0xae] = 0;\n    pbVar3[0xaf] = 0;\n    pbVar3[0xb4] = 0;\n    pbVar3[0xb5] = 0;\n    pbVar3[0xb6] = 0;\n    pbVar3[0xb7] = 0;\n    pbVar3[0xb0] = 0;\n    pbVar3[0xb1] = 0;\n    pbVar3[0xb2] = 0;\n    pbVar3[0xb3] = 0;\n    pbVar3[0x5c] = 0x67;\n    pbVar3[0x5d] = 0x45;\n    pbVar3[0x5e] = 0x23;\n    pbVar3[0x5f] = 1;\n    pbVar3[0x60] = 0xef;\n    pbVar3[0x61] = 0xcd;\n    pbVar3[0x62] = 0xab;\n    pbVar3[99] = 0x89;\n    pbVar3[100] = 0x98;\n    pbVar3[0x65] = 0xba;\n    pbVar3[0x66] = 0xdc;\n    pbVar3[0x67] = 0xfe;\n    pbVar3[0x68] = 0x10;\n    pbVar3[0x69] = 0x32;\n    pbVar3[0x6a] = 0x54;\n    pbVar3[0x6b] = 0x76;\n    MD5Update(pbVar3 + 0x5c,unaff_s2,0x40);\n    param_2 = &DAT_00000040;\n    param_1 = unaff_s2;\n    (**(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x7f10))();\n    if (*(int *)((int)register0x00000074 + -0x2c) == *unaff_s3) {\n      return;\n    }\n    pcVar6 = *(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x7498);\n    unaff_retaddr = 0x6a8bc;\n    (*pcVar6)();\n    pcVar6 = *(code **)(pcVar6 + 0x47c48);\n    param_3 = &DAT_00000010;\n    unaff_s6 = pbVar3;\n    register0x00000074 = (BADSPACEBASE *)((int)register0x00000074 + -0x88);\n  }" ({ "{") (expression_statement "pbVar3 = param_1;" (assignment_expression "pbVar3 = param_1" (identifier "pbVar3") (= "=") (identifier "param_1")) (; ";")) (expression_statement "pcVar5 = *(code **)(&LAB_000487cc + (int)pcVar6);" (assignment_expression "pcVar5 = *(code **)(&LAB_000487cc + (int)pcVar6)" (identifier "pcVar5") (= "=") (pointer_expression "*(code **)(&LAB_000487cc + (int)pcVar6)" (* "*") (cast_expression "(code **)(&LAB_000487cc + (int)pcVar6)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(&LAB_000487cc + (int)pcVar6)" (( "(") (binary_expression "&LAB_000487cc + (int)pcVar6" (pointer_expression "&LAB_000487cc" (& "&") (identifier "LAB_000487cc")) (+ "+") (cast_expression "(int)pcVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar6"))) () ")"))))) (; ";")) (expression_statement "*(int **)((int)register0x00000074 + -0x18) = unaff_s3;" (assignment_expression "*(int **)((int)register0x00000074 + -0x18) = unaff_s3" (pointer_expression "*(int **)((int)register0x00000074 + -0x18)" (* "*") (cast_expression "(int **)((int)register0x00000074 + -0x18)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)register0x00000074 + -0x18)" (( "(") (binary_expression "(int)register0x00000074 + -0x18" (cast_expression "(int)register0x00000074" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000074")) (+ "+") (number_literal "-0x18")) () ")")))) (= "=") (identifier "unaff_s3")) (; ";")) (expression_statement "unaff_s3 = *(int **)(pcVar6 + 0x488ac);" (assignment_expression "unaff_s3 = *(int **)(pcVar6 + 0x488ac)" (identifier "unaff_s3") (= "=") (pointer_expression "*(int **)(pcVar6 + 0x488ac)" (* "*") (cast_expression "(int **)(pcVar6 + 0x488ac)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar6 + 0x488ac)" (( "(") (binary_expression "pcVar6 + 0x488ac" (identifier "pcVar6") (+ "+") (number_literal "0x488ac")) () ")"))))) (; ";")) (expression_statement "*(byte **)((int)register0x00000074 + -0x1c) = unaff_s2;" (assignment_expression "*(byte **)((int)register0x00000074 + -0x1c) = unaff_s2" (pointer_expression "*(byte **)((int)register0x00000074 + -0x1c)" (* "*") (cast_expression "(byte **)((int)register0x00000074 + -0x1c)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)register0x00000074 + -0x1c)" (( "(") (binary_expression "(int)register0x00000074 + -0x1c" (cast_expression "(int)register0x00000074" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000074")) (+ "+") (number_literal "-0x1c")) () ")")))) (= "=") (identifier "unaff_s2")) (; ";")) (expression_statement "unaff_s2 = (byte *)((int)register0x00000074 + -0x6c);" (assignment_expression "unaff_s2 = (byte *)((int)register0x00000074 + -0x6c)" (identifier "unaff_s2") (= "=") (cast_expression "(byte *)((int)register0x00000074 + -0x6c)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)register0x00000074 + -0x6c)" (( "(") (binary_expression "(int)register0x00000074 + -0x6c" (cast_expression "(int)register0x00000074" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000074")) (+ "+") (number_literal "-0x6c")) () ")")))) (; ";")) (expression_statement "*(byte **)((int)register0x00000074 + -0x14) = unaff_s4;" (assignment_expression "*(byte **)((int)register0x00000074 + -0x14) = unaff_s4" (pointer_expression "*(byte **)((int)register0x00000074 + -0x14)" (* "*") (cast_expression "(byte **)((int)register0x00000074 + -0x14)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)register0x00000074 + -0x14)" (( "(") (binary_expression "(int)register0x00000074 + -0x14" (cast_expression "(int)register0x00000074" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000074")) (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (identifier "unaff_s4")) (; ";")) (expression_statement "*(byte **)((int)register0x00000074 + -0x24) = unaff_s0;" (assignment_expression "*(byte **)((int)register0x00000074 + -0x24) = unaff_s0" (pointer_expression "*(byte **)((int)register0x00000074 + -0x24)" (* "*") (cast_expression "(byte **)((int)register0x00000074 + -0x24)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)register0x00000074 + -0x24)" (( "(") (binary_expression "(int)register0x00000074 + -0x24" (cast_expression "(int)register0x00000074" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000074")) (+ "+") (number_literal "-0x24")) () ")")))) (= "=") (identifier "unaff_s0")) (; ";")) (expression_statement "*(code **)((int)register0x00000074 + -0x78) = pcVar6 + 0x4fd18;" (assignment_expression "*(code **)((int)register0x00000074 + -0x78) = pcVar6 + 0x4fd18" (pointer_expression "*(code **)((int)register0x00000074 + -0x78)" (* "*") (cast_expression "(code **)((int)register0x00000074 + -0x78)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)register0x00000074 + -0x78)" (( "(") (binary_expression "(int)register0x00000074 + -0x78" (cast_expression "(int)register0x00000074" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000074")) (+ "+") (number_literal "-0x78")) () ")")))) (= "=") (binary_expression "pcVar6 + 0x4fd18" (identifier "pcVar6") (+ "+") (number_literal "0x4fd18"))) (; ";")) (expression_statement "*(byte **)((int)register0x00000074 + -0xc) = unaff_s6;" (assignment_expression "*(byte **)((int)register0x00000074 + -0xc) = unaff_s6" (pointer_expression "*(byte **)((int)register0x00000074 + -0xc)" (* "*") (cast_expression "(byte **)((int)register0x00000074 + -0xc)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)register0x00000074 + -0xc)" (( "(") (binary_expression "(int)register0x00000074 + -0xc" (cast_expression "(int)register0x00000074" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000074")) (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "unaff_s6")) (; ";")) (expression_statement "*(undefined4 *)((int)register0x00000074 + -4) = unaff_retaddr;" (assignment_expression "*(undefined4 *)((int)register0x00000074 + -4) = unaff_retaddr" (pointer_expression "*(undefined4 *)((int)register0x00000074 + -4)" (* "*") (cast_expression "(undefined4 *)((int)register0x00000074 + -4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)register0x00000074 + -4)" (( "(") (binary_expression "(int)register0x00000074 + -4" (cast_expression "(int)register0x00000074" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000074")) (+ "+") (number_literal "-4")) () ")")))) (= "=") (identifier "unaff_retaddr")) (; ";")) (expression_statement "*(undefined4 *)((int)register0x00000074 + -8) = unaff_s7;" (assignment_expression "*(undefined4 *)((int)register0x00000074 + -8) = unaff_s7" (pointer_expression "*(undefined4 *)((int)register0x00000074 + -8)" (* "*") (cast_expression "(undefined4 *)((int)register0x00000074 + -8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)register0x00000074 + -8)" (( "(") (binary_expression "(int)register0x00000074 + -8" (cast_expression "(int)register0x00000074" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000074")) (+ "+") (number_literal "-8")) () ")")))) (= "=") (identifier "unaff_s7")) (; ";")) (expression_statement "*(byte **)((int)register0x00000074 + -0x10) = unaff_s5;" (assignment_expression "*(byte **)((int)register0x00000074 + -0x10) = unaff_s5" (pointer_expression "*(byte **)((int)register0x00000074 + -0x10)" (* "*") (cast_expression "(byte **)((int)register0x00000074 + -0x10)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)register0x00000074 + -0x10)" (( "(") (binary_expression "(int)register0x00000074 + -0x10" (cast_expression "(int)register0x00000074" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000074")) (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "unaff_s5")) (; ";")) (expression_statement "*(byte **)((int)register0x00000074 + -0x20) = unaff_s1;" (assignment_expression "*(byte **)((int)register0x00000074 + -0x20) = unaff_s1" (pointer_expression "*(byte **)((int)register0x00000074 + -0x20)" (* "*") (cast_expression "(byte **)((int)register0x00000074 + -0x20)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)register0x00000074 + -0x20)" (( "(") (binary_expression "(int)register0x00000074 + -0x20" (cast_expression "(int)register0x00000074" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000074")) (+ "+") (number_literal "-0x20")) () ")")))) (= "=") (identifier "unaff_s1")) (; ";")) (expression_statement "*(int *)((int)register0x00000074 + -0x2c) = *unaff_s3;" (assignment_expression "*(int *)((int)register0x00000074 + -0x2c) = *unaff_s3" (pointer_expression "*(int *)((int)register0x00000074 + -0x2c)" (* "*") (cast_expression "(int *)((int)register0x00000074 + -0x2c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)register0x00000074 + -0x2c)" (( "(") (binary_expression "(int)register0x00000074 + -0x2c" (cast_expression "(int)register0x00000074" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000074")) (+ "+") (number_literal "-0x2c")) () ")")))) (= "=") (pointer_expression "*unaff_s3" (* "*") (identifier "unaff_s3"))) (; ";")) (expression_statement "(*pcVar5)(unaff_s2,0x36,0x40);" (call_expression "(*pcVar5)(unaff_s2,0x36,0x40)" (parenthesized_expression "(*pcVar5)" (( "(") (pointer_expression "*pcVar5" (* "*") (identifier "pcVar5")) () ")")) (argument_list "(unaff_s2,0x36,0x40)" (( "(") (identifier "unaff_s2") (, ",") (number_literal "0x36") (, ",") (number_literal "0x40") () ")"))) (; ";")) (expression_statement "iVar7 = *(int *)((int)register0x00000074 + -0x78);" (assignment_expression "iVar7 = *(int *)((int)register0x00000074 + -0x78)" (identifier "iVar7") (= "=") (pointer_expression "*(int *)((int)register0x00000074 + -0x78)" (* "*") (cast_expression "(int *)((int)register0x00000074 + -0x78)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)register0x00000074 + -0x78)" (( "(") (binary_expression "(int)register0x00000074 + -0x78" (cast_expression "(int)register0x00000074" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000074")) (+ "+") (number_literal "-0x78")) () ")"))))) (; ";")) (if_statement "if ((int)param_3 < 1) {\n      unaff_s7 = *(undefined4 *)(iVar7 + -31000);\n      pbVar3[0x50] = 0;\n      pbVar3[0x51] = 0;\n      pbVar3[0x52] = 0;\n      pbVar3[0x53] = 0;\n      pbVar3[0x58] = 0;\n      pbVar3[0x59] = 0;\n      pbVar3[0x5a] = 0;\n      pbVar3[0x5b] = 0;\n      pbVar3[0x54] = 0;\n      pbVar3[0x55] = 0;\n      pbVar3[0x56] = 0;\n      pbVar3[0x57] = 0;\n      pbVar3[0] = 0x67;\n      pbVar3[1] = 0x45;\n      pbVar3[2] = 0x23;\n      pbVar3[3] = 1;\n      pbVar3[4] = 0xef;\n      pbVar3[5] = 0xcd;\n      pbVar3[6] = 0xab;\n      pbVar3[7] = 0x89;\n      pbVar3[8] = 0x98;\n      pbVar3[9] = 0xba;\n      pbVar3[10] = 0xdc;\n      pbVar3[0xb] = 0xfe;\n      pbVar3[0xc] = 0x10;\n      pbVar3[0xd] = 0x32;\n      pbVar3[0xe] = 0x54;\n      pbVar3[0xf] = 0x76;\n      MD5Update(pbVar3,unaff_s2,0x40);\n      (**(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x754c))(unaff_s2,0x5c,0x40);\n      unaff_s0 = param_2;\n      unaff_s4 = param_3;\n    }\n    else {\n      unaff_s5 = param_2 + 0x40;\n      unaff_s4 = param_2 + (int)(param_3 + -1);\n      pbVar2 = param_2;\n      pbVar4 = unaff_s2;\n      do {\n        *pbVar4 = *pbVar4 ^ *pbVar2;\n        if (pbVar2 == unaff_s4) break;\n        pbVar2 = pbVar2 + 1;\n        pbVar4 = pbVar4 + 1;\n      } while (pbVar2 != unaff_s5);\n      unaff_s7 = *(undefined4 *)(iVar7 + -31000);\n      pbVar3[0x50] = 0;\n      pbVar3[0x51] = 0;\n      pbVar3[0x52] = 0;\n      pbVar3[0x53] = 0;\n      pbVar3[0x58] = 0;\n      pbVar3[0x59] = 0;\n      pbVar3[0x5a] = 0;\n      pbVar3[0x5b] = 0;\n      pbVar3[0x54] = 0;\n      pbVar3[0x55] = 0;\n      pbVar3[0x56] = 0;\n      pbVar3[0x57] = 0;\n      pbVar3[0] = 0x67;\n      pbVar3[1] = 0x45;\n      pbVar3[2] = 0x23;\n      pbVar3[3] = 1;\n      pbVar3[4] = 0xef;\n      pbVar3[5] = 0xcd;\n      pbVar3[6] = 0xab;\n      pbVar3[7] = 0x89;\n      pbVar3[8] = 0x98;\n      pbVar3[9] = 0xba;\n      pbVar3[10] = 0xdc;\n      pbVar3[0xb] = 0xfe;\n      pbVar3[0xc] = 0x10;\n      pbVar3[0xd] = 0x32;\n      pbVar3[0xe] = 0x54;\n      pbVar3[0xf] = 0x76;\n      MD5Update(pbVar3,unaff_s2,0x40);\n      (**(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x754c))(unaff_s2,0x5c,0x40);\n      bVar1 = *unaff_s2;\n      unaff_s1 = unaff_s2;\n      while (*unaff_s1 = bVar1 ^ *param_2, unaff_s0 = param_2, param_2 != unaff_s4) {\n        param_2 = param_2 + 1;\n        unaff_s1 = unaff_s1 + 1;\n        unaff_s0 = param_2;\n        if (param_2 == unaff_s5) break;\n        bVar1 = *unaff_s1;\n      }\n    }" (if "if") (parenthesized_expression "((int)param_3 < 1)" (( "(") (binary_expression "(int)param_3 < 1" (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3")) (< "<") (number_literal "1")) () ")")) (compound_statement "{\n      unaff_s7 = *(undefined4 *)(iVar7 + -31000);\n      pbVar3[0x50] = 0;\n      pbVar3[0x51] = 0;\n      pbVar3[0x52] = 0;\n      pbVar3[0x53] = 0;\n      pbVar3[0x58] = 0;\n      pbVar3[0x59] = 0;\n      pbVar3[0x5a] = 0;\n      pbVar3[0x5b] = 0;\n      pbVar3[0x54] = 0;\n      pbVar3[0x55] = 0;\n      pbVar3[0x56] = 0;\n      pbVar3[0x57] = 0;\n      pbVar3[0] = 0x67;\n      pbVar3[1] = 0x45;\n      pbVar3[2] = 0x23;\n      pbVar3[3] = 1;\n      pbVar3[4] = 0xef;\n      pbVar3[5] = 0xcd;\n      pbVar3[6] = 0xab;\n      pbVar3[7] = 0x89;\n      pbVar3[8] = 0x98;\n      pbVar3[9] = 0xba;\n      pbVar3[10] = 0xdc;\n      pbVar3[0xb] = 0xfe;\n      pbVar3[0xc] = 0x10;\n      pbVar3[0xd] = 0x32;\n      pbVar3[0xe] = 0x54;\n      pbVar3[0xf] = 0x76;\n      MD5Update(pbVar3,unaff_s2,0x40);\n      (**(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x754c))(unaff_s2,0x5c,0x40);\n      unaff_s0 = param_2;\n      unaff_s4 = param_3;\n    }" ({ "{") (expression_statement "unaff_s7 = *(undefined4 *)(iVar7 + -31000);" (assignment_expression "unaff_s7 = *(undefined4 *)(iVar7 + -31000)" (identifier "unaff_s7") (= "=") (pointer_expression "*(undefined4 *)(iVar7 + -31000)" (* "*") (cast_expression "(undefined4 *)(iVar7 + -31000)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + -31000)" (( "(") (binary_expression "iVar7 + -31000" (identifier "iVar7") (+ "+") (number_literal "-31000")) () ")"))))) (; ";")) (expression_statement "pbVar3[0x50] = 0;" (assignment_expression "pbVar3[0x50] = 0" (subscript_expression "pbVar3[0x50]" (identifier "pbVar3") ([ "[") (number_literal "0x50") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "pbVar3[0x51] = 0;" (assignment_expression "pbVar3[0x51] = 0" (subscript_expression "pbVar3[0x51]" (identifier "pbVar3") ([ "[") (number_literal "0x51") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "pbVar3[0x52] = 0;" (assignment_expression "pbVar3[0x52] = 0" (subscript_expression "pbVar3[0x52]" (identifier "pbVar3") ([ "[") (number_literal "0x52") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "pbVar3[0x53] = 0;" (assignment_expression "pbVar3[0x53] = 0" (subscript_expression "pbVar3[0x53]" (identifier "pbVar3") ([ "[") (number_literal "0x53") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "pbVar3[0x58] = 0;" (assignment_expression "pbVar3[0x58] = 0" (subscript_expression "pbVar3[0x58]" (identifier "pbVar3") ([ "[") (number_literal "0x58") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "pbVar3[0x59] = 0;" (assignment_expression "pbVar3[0x59] = 0" (subscript_expression "pbVar3[0x59]" (identifier "pbVar3") ([ "[") (number_literal "0x59") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "pbVar3[0x5a] = 0;" (assignment_expression "pbVar3[0x5a] = 0" (subscript_expression "pbVar3[0x5a]" (identifier "pbVar3") ([ "[") (number_literal "0x5a") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "pbVar3[0x5b] = 0;" (assignment_expression "pbVar3[0x5b] = 0" (subscript_expression "pbVar3[0x5b]" (identifier "pbVar3") ([ "[") (number_literal "0x5b") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "pbVar3[0x54] = 0;" (assignment_expression "pbVar3[0x54] = 0" (subscript_expression "pbVar3[0x54]" (identifier "pbVar3") ([ "[") (number_literal "0x54") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "pbVar3[0x55] = 0;" (assignment_expression "pbVar3[0x55] = 0" (subscript_expression "pbVar3[0x55]" (identifier "pbVar3") ([ "[") (number_literal "0x55") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "pbVar3[0x56] = 0;" (assignment_expression "pbVar3[0x56] = 0" (subscript_expression "pbVar3[0x56]" (identifier "pbVar3") ([ "[") (number_literal "0x56") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "pbVar3[0x57] = 0;" (assignment_expression "pbVar3[0x57] = 0" (subscript_expression "pbVar3[0x57]" (identifier "pbVar3") ([ "[") (number_literal "0x57") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "pbVar3[0] = 0x67;" (assignment_expression "pbVar3[0] = 0x67" (subscript_expression "pbVar3[0]" (identifier "pbVar3") ([ "[") (number_literal "0") (] "]")) (= "=") (number_literal "0x67")) (; ";")) (expression_statement "pbVar3[1] = 0x45;" (assignment_expression "pbVar3[1] = 0x45" (subscript_expression "pbVar3[1]" (identifier "pbVar3") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0x45")) (; ";")) (expression_statement "pbVar3[2] = 0x23;" (assignment_expression "pbVar3[2] = 0x23" (subscript_expression "pbVar3[2]" (identifier "pbVar3") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0x23")) (; ";")) (expression_statement "pbVar3[3] = 1;" (assignment_expression "pbVar3[3] = 1" (subscript_expression "pbVar3[3]" (identifier "pbVar3") ([ "[") (number_literal "3") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "pbVar3[4] = 0xef;" (assignment_expression "pbVar3[4] = 0xef" (subscript_expression "pbVar3[4]" (identifier "pbVar3") ([ "[") (number_literal "4") (] "]")) (= "=") (number_literal "0xef")) (; ";")) (expression_statement "pbVar3[5] = 0xcd;" (assignment_expression "pbVar3[5] = 0xcd" (subscript_expression "pbVar3[5]" (identifier "pbVar3") ([ "[") (number_literal "5") (] "]")) (= "=") (number_literal "0xcd")) (; ";")) (expression_statement "pbVar3[6] = 0xab;" (assignment_expression "pbVar3[6] = 0xab" (subscript_expression "pbVar3[6]" (identifier "pbVar3") ([ "[") (number_literal "6") (] "]")) (= "=") (number_literal "0xab")) (; ";")) (expression_statement "pbVar3[7] = 0x89;" (assignment_expression "pbVar3[7] = 0x89" (subscript_expression "pbVar3[7]" (identifier "pbVar3") ([ "[") (number_literal "7") (] "]")) (= "=") (number_literal "0x89")) (; ";")) (expression_statement "pbVar3[8] = 0x98;" (assignment_expression "pbVar3[8] = 0x98" (subscript_expression "pbVar3[8]" (identifier "pbVar3") ([ "[") (number_literal "8") (] "]")) (= "=") (number_literal "0x98")) (; ";")) (expression_statement "pbVar3[9] = 0xba;" (assignment_expression "pbVar3[9] = 0xba" (subscript_expression "pbVar3[9]" (identifier "pbVar3") ([ "[") (number_literal "9") (] "]")) (= "=") (number_literal "0xba")) (; ";")) (expression_statement "pbVar3[10] = 0xdc;" (assignment_expression "pbVar3[10] = 0xdc" (subscript_expression "pbVar3[10]" (identifier "pbVar3") ([ "[") (number_literal "10") (] "]")) (= "=") (number_literal "0xdc")) (; ";")) (expression_statement "pbVar3[0xb] = 0xfe;" (assignment_expression "pbVar3[0xb] = 0xfe" (subscript_expression "pbVar3[0xb]" (identifier "pbVar3") ([ "[") (number_literal "0xb") (] "]")) (= "=") (number_literal "0xfe")) (; ";")) (expression_statement "pbVar3[0xc] = 0x10;" (assignment_expression "pbVar3[0xc] = 0x10" (subscript_expression "pbVar3[0xc]" (identifier "pbVar3") ([ "[") (number_literal "0xc") (] "]")) (= "=") (number_literal "0x10")) (; ";")) (expression_statement "pbVar3[0xd] = 0x32;" (assignment_expression "pbVar3[0xd] = 0x32" (subscript_expression "pbVar3[0xd]" (identifier "pbVar3") ([ "[") (number_literal "0xd") (] "]")) (= "=") (number_literal "0x32")) (; ";")) (expression_statement "pbVar3[0xe] = 0x54;" (assignment_expression "pbVar3[0xe] = 0x54" (subscript_expression "pbVar3[0xe]" (identifier "pbVar3") ([ "[") (number_literal "0xe") (] "]")) (= "=") (number_literal "0x54")) (; ";")) (expression_statement "pbVar3[0xf] = 0x76;" (assignment_expression "pbVar3[0xf] = 0x76" (subscript_expression "pbVar3[0xf]" (identifier "pbVar3") ([ "[") (number_literal "0xf") (] "]")) (= "=") (number_literal "0x76")) (; ";")) (expression_statement "MD5Update(pbVar3,unaff_s2,0x40);" (call_expression "MD5Update(pbVar3,unaff_s2,0x40)" (identifier "MD5Update") (argument_list "(pbVar3,unaff_s2,0x40)" (( "(") (identifier "pbVar3") (, ",") (identifier "unaff_s2") (, ",") (number_literal "0x40") () ")"))) (; ";")) (expression_statement "(**(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x754c))(unaff_s2,0x5c,0x40);" (call_expression "(**(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x754c))(unaff_s2,0x5c,0x40)" (parenthesized_expression "(**(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x754c))" (( "(") (pointer_expression "**(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x754c)" (* "*") (pointer_expression "*(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x754c)" (* "*") (cast_expression "(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x754c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)((int)register0x00000074 + -0x78) + -0x754c)" (( "(") (binary_expression "*(int *)((int)register0x00000074 + -0x78) + -0x754c" (pointer_expression "*(int *)((int)register0x00000074 + -0x78)" (* "*") (cast_expression "(int *)((int)register0x00000074 + -0x78)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)register0x00000074 + -0x78)" (( "(") (binary_expression "(int)register0x00000074 + -0x78" (cast_expression "(int)register0x00000074" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000074")) (+ "+") (number_literal "-0x78")) () ")")))) (+ "+") (number_literal "-0x754c")) () ")"))))) () ")")) (argument_list "(unaff_s2,0x5c,0x40)" (( "(") (identifier "unaff_s2") (, ",") (number_literal "0x5c") (, ",") (number_literal "0x40") () ")"))) (; ";")) (expression_statement "unaff_s0 = param_2;" (assignment_expression "unaff_s0 = param_2" (identifier "unaff_s0") (= "=") (identifier "param_2")) (; ";")) (expression_statement "unaff_s4 = param_3;" (assignment_expression "unaff_s4 = param_3" (identifier "unaff_s4") (= "=") (identifier "param_3")) (; ";")) (} "}")) (else_clause "else {\n      unaff_s5 = param_2 + 0x40;\n      unaff_s4 = param_2 + (int)(param_3 + -1);\n      pbVar2 = param_2;\n      pbVar4 = unaff_s2;\n      do {\n        *pbVar4 = *pbVar4 ^ *pbVar2;\n        if (pbVar2 == unaff_s4) break;\n        pbVar2 = pbVar2 + 1;\n        pbVar4 = pbVar4 + 1;\n      } while (pbVar2 != unaff_s5);\n      unaff_s7 = *(undefined4 *)(iVar7 + -31000);\n      pbVar3[0x50] = 0;\n      pbVar3[0x51] = 0;\n      pbVar3[0x52] = 0;\n      pbVar3[0x53] = 0;\n      pbVar3[0x58] = 0;\n      pbVar3[0x59] = 0;\n      pbVar3[0x5a] = 0;\n      pbVar3[0x5b] = 0;\n      pbVar3[0x54] = 0;\n      pbVar3[0x55] = 0;\n      pbVar3[0x56] = 0;\n      pbVar3[0x57] = 0;\n      pbVar3[0] = 0x67;\n      pbVar3[1] = 0x45;\n      pbVar3[2] = 0x23;\n      pbVar3[3] = 1;\n      pbVar3[4] = 0xef;\n      pbVar3[5] = 0xcd;\n      pbVar3[6] = 0xab;\n      pbVar3[7] = 0x89;\n      pbVar3[8] = 0x98;\n      pbVar3[9] = 0xba;\n      pbVar3[10] = 0xdc;\n      pbVar3[0xb] = 0xfe;\n      pbVar3[0xc] = 0x10;\n      pbVar3[0xd] = 0x32;\n      pbVar3[0xe] = 0x54;\n      pbVar3[0xf] = 0x76;\n      MD5Update(pbVar3,unaff_s2,0x40);\n      (**(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x754c))(unaff_s2,0x5c,0x40);\n      bVar1 = *unaff_s2;\n      unaff_s1 = unaff_s2;\n      while (*unaff_s1 = bVar1 ^ *param_2, unaff_s0 = param_2, param_2 != unaff_s4) {\n        param_2 = param_2 + 1;\n        unaff_s1 = unaff_s1 + 1;\n        unaff_s0 = param_2;\n        if (param_2 == unaff_s5) break;\n        bVar1 = *unaff_s1;\n      }\n    }" (else "else") (compound_statement "{\n      unaff_s5 = param_2 + 0x40;\n      unaff_s4 = param_2 + (int)(param_3 + -1);\n      pbVar2 = param_2;\n      pbVar4 = unaff_s2;\n      do {\n        *pbVar4 = *pbVar4 ^ *pbVar2;\n        if (pbVar2 == unaff_s4) break;\n        pbVar2 = pbVar2 + 1;\n        pbVar4 = pbVar4 + 1;\n      } while (pbVar2 != unaff_s5);\n      unaff_s7 = *(undefined4 *)(iVar7 + -31000);\n      pbVar3[0x50] = 0;\n      pbVar3[0x51] = 0;\n      pbVar3[0x52] = 0;\n      pbVar3[0x53] = 0;\n      pbVar3[0x58] = 0;\n      pbVar3[0x59] = 0;\n      pbVar3[0x5a] = 0;\n      pbVar3[0x5b] = 0;\n      pbVar3[0x54] = 0;\n      pbVar3[0x55] = 0;\n      pbVar3[0x56] = 0;\n      pbVar3[0x57] = 0;\n      pbVar3[0] = 0x67;\n      pbVar3[1] = 0x45;\n      pbVar3[2] = 0x23;\n      pbVar3[3] = 1;\n      pbVar3[4] = 0xef;\n      pbVar3[5] = 0xcd;\n      pbVar3[6] = 0xab;\n      pbVar3[7] = 0x89;\n      pbVar3[8] = 0x98;\n      pbVar3[9] = 0xba;\n      pbVar3[10] = 0xdc;\n      pbVar3[0xb] = 0xfe;\n      pbVar3[0xc] = 0x10;\n      pbVar3[0xd] = 0x32;\n      pbVar3[0xe] = 0x54;\n      pbVar3[0xf] = 0x76;\n      MD5Update(pbVar3,unaff_s2,0x40);\n      (**(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x754c))(unaff_s2,0x5c,0x40);\n      bVar1 = *unaff_s2;\n      unaff_s1 = unaff_s2;\n      while (*unaff_s1 = bVar1 ^ *param_2, unaff_s0 = param_2, param_2 != unaff_s4) {\n        param_2 = param_2 + 1;\n        unaff_s1 = unaff_s1 + 1;\n        unaff_s0 = param_2;\n        if (param_2 == unaff_s5) break;\n        bVar1 = *unaff_s1;\n      }\n    }" ({ "{") (expression_statement "unaff_s5 = param_2 + 0x40;" (assignment_expression "unaff_s5 = param_2 + 0x40" (identifier "unaff_s5") (= "=") (binary_expression "param_2 + 0x40" (identifier "param_2") (+ "+") (number_literal "0x40"))) (; ";")) (expression_statement "unaff_s4 = param_2 + (int)(param_3 + -1);" (assignment_expression "unaff_s4 = param_2 + (int)(param_3 + -1)" (identifier "unaff_s4") (= "=") (binary_expression "param_2 + (int)(param_3 + -1)" (identifier "param_2") (+ "+") (cast_expression "(int)(param_3 + -1)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(param_3 + -1)" (( "(") (binary_expression "param_3 + -1" (identifier "param_3") (+ "+") (number_literal "-1")) () ")"))))) (; ";")) (expression_statement "pbVar2 = param_2;" (assignment_expression "pbVar2 = param_2" (identifier "pbVar2") (= "=") (identifier "param_2")) (; ";")) (expression_statement "pbVar4 = unaff_s2;" (assignment_expression "pbVar4 = unaff_s2" (identifier "pbVar4") (= "=") (identifier "unaff_s2")) (; ";")) (do_statement "do {\n        *pbVar4 = *pbVar4 ^ *pbVar2;\n        if (pbVar2 == unaff_s4) break;\n        pbVar2 = pbVar2 + 1;\n        pbVar4 = pbVar4 + 1;\n      } while (pbVar2 != unaff_s5);" (do "do") (compound_statement "{\n        *pbVar4 = *pbVar4 ^ *pbVar2;\n        if (pbVar2 == unaff_s4) break;\n        pbVar2 = pbVar2 + 1;\n        pbVar4 = pbVar4 + 1;\n      }" ({ "{") (expression_statement "*pbVar4 = *pbVar4 ^ *pbVar2;" (assignment_expression "*pbVar4 = *pbVar4 ^ *pbVar2" (pointer_expression "*pbVar4" (* "*") (identifier "pbVar4")) (= "=") (binary_expression "*pbVar4 ^ *pbVar2" (pointer_expression "*pbVar4" (* "*") (identifier "pbVar4")) (^ "^") (pointer_expression "*pbVar2" (* "*") (identifier "pbVar2")))) (; ";")) (if_statement "if (pbVar2 == unaff_s4) break;" (if "if") (parenthesized_expression "(pbVar2 == unaff_s4)" (( "(") (binary_expression "pbVar2 == unaff_s4" (identifier "pbVar2") (== "==") (identifier "unaff_s4")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "pbVar2 = pbVar2 + 1;" (assignment_expression "pbVar2 = pbVar2 + 1" (identifier "pbVar2") (= "=") (binary_expression "pbVar2 + 1" (identifier "pbVar2") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar4 = pbVar4 + 1;" (assignment_expression "pbVar4 = pbVar4 + 1" (identifier "pbVar4") (= "=") (binary_expression "pbVar4 + 1" (identifier "pbVar4") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(pbVar2 != unaff_s5)" (( "(") (binary_expression "pbVar2 != unaff_s5" (identifier "pbVar2") (!= "!=") (identifier "unaff_s5")) () ")")) (; ";")) (expression_statement "unaff_s7 = *(undefined4 *)(iVar7 + -31000);" (assignment_expression "unaff_s7 = *(undefined4 *)(iVar7 + -31000)" (identifier "unaff_s7") (= "=") (pointer_expression "*(undefined4 *)(iVar7 + -31000)" (* "*") (cast_expression "(undefined4 *)(iVar7 + -31000)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + -31000)" (( "(") (binary_expression "iVar7 + -31000" (identifier "iVar7") (+ "+") (number_literal "-31000")) () ")"))))) (; ";")) (expression_statement "pbVar3[0x50] = 0;" (assignment_expression "pbVar3[0x50] = 0" (subscript_expression "pbVar3[0x50]" (identifier "pbVar3") ([ "[") (number_literal "0x50") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "pbVar3[0x51] = 0;" (assignment_expression "pbVar3[0x51] = 0" (subscript_expression "pbVar3[0x51]" (identifier "pbVar3") ([ "[") (number_literal "0x51") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "pbVar3[0x52] = 0;" (assignment_expression "pbVar3[0x52] = 0" (subscript_expression "pbVar3[0x52]" (identifier "pbVar3") ([ "[") (number_literal "0x52") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "pbVar3[0x53] = 0;" (assignment_expression "pbVar3[0x53] = 0" (subscript_expression "pbVar3[0x53]" (identifier "pbVar3") ([ "[") (number_literal "0x53") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "pbVar3[0x58] = 0;" (assignment_expression "pbVar3[0x58] = 0" (subscript_expression "pbVar3[0x58]" (identifier "pbVar3") ([ "[") (number_literal "0x58") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "pbVar3[0x59] = 0;" (assignment_expression "pbVar3[0x59] = 0" (subscript_expression "pbVar3[0x59]" (identifier "pbVar3") ([ "[") (number_literal "0x59") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "pbVar3[0x5a] = 0;" (assignment_expression "pbVar3[0x5a] = 0" (subscript_expression "pbVar3[0x5a]" (identifier "pbVar3") ([ "[") (number_literal "0x5a") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "pbVar3[0x5b] = 0;" (assignment_expression "pbVar3[0x5b] = 0" (subscript_expression "pbVar3[0x5b]" (identifier "pbVar3") ([ "[") (number_literal "0x5b") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "pbVar3[0x54] = 0;" (assignment_expression "pbVar3[0x54] = 0" (subscript_expression "pbVar3[0x54]" (identifier "pbVar3") ([ "[") (number_literal "0x54") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "pbVar3[0x55] = 0;" (assignment_expression "pbVar3[0x55] = 0" (subscript_expression "pbVar3[0x55]" (identifier "pbVar3") ([ "[") (number_literal "0x55") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "pbVar3[0x56] = 0;" (assignment_expression "pbVar3[0x56] = 0" (subscript_expression "pbVar3[0x56]" (identifier "pbVar3") ([ "[") (number_literal "0x56") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "pbVar3[0x57] = 0;" (assignment_expression "pbVar3[0x57] = 0" (subscript_expression "pbVar3[0x57]" (identifier "pbVar3") ([ "[") (number_literal "0x57") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "pbVar3[0] = 0x67;" (assignment_expression "pbVar3[0] = 0x67" (subscript_expression "pbVar3[0]" (identifier "pbVar3") ([ "[") (number_literal "0") (] "]")) (= "=") (number_literal "0x67")) (; ";")) (expression_statement "pbVar3[1] = 0x45;" (assignment_expression "pbVar3[1] = 0x45" (subscript_expression "pbVar3[1]" (identifier "pbVar3") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0x45")) (; ";")) (expression_statement "pbVar3[2] = 0x23;" (assignment_expression "pbVar3[2] = 0x23" (subscript_expression "pbVar3[2]" (identifier "pbVar3") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0x23")) (; ";")) (expression_statement "pbVar3[3] = 1;" (assignment_expression "pbVar3[3] = 1" (subscript_expression "pbVar3[3]" (identifier "pbVar3") ([ "[") (number_literal "3") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "pbVar3[4] = 0xef;" (assignment_expression "pbVar3[4] = 0xef" (subscript_expression "pbVar3[4]" (identifier "pbVar3") ([ "[") (number_literal "4") (] "]")) (= "=") (number_literal "0xef")) (; ";")) (expression_statement "pbVar3[5] = 0xcd;" (assignment_expression "pbVar3[5] = 0xcd" (subscript_expression "pbVar3[5]" (identifier "pbVar3") ([ "[") (number_literal "5") (] "]")) (= "=") (number_literal "0xcd")) (; ";")) (expression_statement "pbVar3[6] = 0xab;" (assignment_expression "pbVar3[6] = 0xab" (subscript_expression "pbVar3[6]" (identifier "pbVar3") ([ "[") (number_literal "6") (] "]")) (= "=") (number_literal "0xab")) (; ";")) (expression_statement "pbVar3[7] = 0x89;" (assignment_expression "pbVar3[7] = 0x89" (subscript_expression "pbVar3[7]" (identifier "pbVar3") ([ "[") (number_literal "7") (] "]")) (= "=") (number_literal "0x89")) (; ";")) (expression_statement "pbVar3[8] = 0x98;" (assignment_expression "pbVar3[8] = 0x98" (subscript_expression "pbVar3[8]" (identifier "pbVar3") ([ "[") (number_literal "8") (] "]")) (= "=") (number_literal "0x98")) (; ";")) (expression_statement "pbVar3[9] = 0xba;" (assignment_expression "pbVar3[9] = 0xba" (subscript_expression "pbVar3[9]" (identifier "pbVar3") ([ "[") (number_literal "9") (] "]")) (= "=") (number_literal "0xba")) (; ";")) (expression_statement "pbVar3[10] = 0xdc;" (assignment_expression "pbVar3[10] = 0xdc" (subscript_expression "pbVar3[10]" (identifier "pbVar3") ([ "[") (number_literal "10") (] "]")) (= "=") (number_literal "0xdc")) (; ";")) (expression_statement "pbVar3[0xb] = 0xfe;" (assignment_expression "pbVar3[0xb] = 0xfe" (subscript_expression "pbVar3[0xb]" (identifier "pbVar3") ([ "[") (number_literal "0xb") (] "]")) (= "=") (number_literal "0xfe")) (; ";")) (expression_statement "pbVar3[0xc] = 0x10;" (assignment_expression "pbVar3[0xc] = 0x10" (subscript_expression "pbVar3[0xc]" (identifier "pbVar3") ([ "[") (number_literal "0xc") (] "]")) (= "=") (number_literal "0x10")) (; ";")) (expression_statement "pbVar3[0xd] = 0x32;" (assignment_expression "pbVar3[0xd] = 0x32" (subscript_expression "pbVar3[0xd]" (identifier "pbVar3") ([ "[") (number_literal "0xd") (] "]")) (= "=") (number_literal "0x32")) (; ";")) (expression_statement "pbVar3[0xe] = 0x54;" (assignment_expression "pbVar3[0xe] = 0x54" (subscript_expression "pbVar3[0xe]" (identifier "pbVar3") ([ "[") (number_literal "0xe") (] "]")) (= "=") (number_literal "0x54")) (; ";")) (expression_statement "pbVar3[0xf] = 0x76;" (assignment_expression "pbVar3[0xf] = 0x76" (subscript_expression "pbVar3[0xf]" (identifier "pbVar3") ([ "[") (number_literal "0xf") (] "]")) (= "=") (number_literal "0x76")) (; ";")) (expression_statement "MD5Update(pbVar3,unaff_s2,0x40);" (call_expression "MD5Update(pbVar3,unaff_s2,0x40)" (identifier "MD5Update") (argument_list "(pbVar3,unaff_s2,0x40)" (( "(") (identifier "pbVar3") (, ",") (identifier "unaff_s2") (, ",") (number_literal "0x40") () ")"))) (; ";")) (expression_statement "(**(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x754c))(unaff_s2,0x5c,0x40);" (call_expression "(**(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x754c))(unaff_s2,0x5c,0x40)" (parenthesized_expression "(**(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x754c))" (( "(") (pointer_expression "**(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x754c)" (* "*") (pointer_expression "*(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x754c)" (* "*") (cast_expression "(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x754c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)((int)register0x00000074 + -0x78) + -0x754c)" (( "(") (binary_expression "*(int *)((int)register0x00000074 + -0x78) + -0x754c" (pointer_expression "*(int *)((int)register0x00000074 + -0x78)" (* "*") (cast_expression "(int *)((int)register0x00000074 + -0x78)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)register0x00000074 + -0x78)" (( "(") (binary_expression "(int)register0x00000074 + -0x78" (cast_expression "(int)register0x00000074" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000074")) (+ "+") (number_literal "-0x78")) () ")")))) (+ "+") (number_literal "-0x754c")) () ")"))))) () ")")) (argument_list "(unaff_s2,0x5c,0x40)" (( "(") (identifier "unaff_s2") (, ",") (number_literal "0x5c") (, ",") (number_literal "0x40") () ")"))) (; ";")) (expression_statement "bVar1 = *unaff_s2;" (assignment_expression "bVar1 = *unaff_s2" (identifier "bVar1") (= "=") (pointer_expression "*unaff_s2" (* "*") (identifier "unaff_s2"))) (; ";")) (expression_statement "unaff_s1 = unaff_s2;" (assignment_expression "unaff_s1 = unaff_s2" (identifier "unaff_s1") (= "=") (identifier "unaff_s2")) (; ";")) (while_statement "while (*unaff_s1 = bVar1 ^ *param_2, unaff_s0 = param_2, param_2 != unaff_s4) {\n        param_2 = param_2 + 1;\n        unaff_s1 = unaff_s1 + 1;\n        unaff_s0 = param_2;\n        if (param_2 == unaff_s5) break;\n        bVar1 = *unaff_s1;\n      }" (while "while") (parenthesized_expression "(*unaff_s1 = bVar1 ^ *param_2, unaff_s0 = param_2, param_2 != unaff_s4)" (( "(") (comma_expression "*unaff_s1 = bVar1 ^ *param_2, unaff_s0 = param_2, param_2 != unaff_s4" (assignment_expression "*unaff_s1 = bVar1 ^ *param_2" (pointer_expression "*unaff_s1" (* "*") (identifier "unaff_s1")) (= "=") (binary_expression "bVar1 ^ *param_2" (identifier "bVar1") (^ "^") (pointer_expression "*param_2" (* "*") (identifier "param_2")))) (, ",") (comma_expression "unaff_s0 = param_2, param_2 != unaff_s4" (assignment_expression "unaff_s0 = param_2" (identifier "unaff_s0") (= "=") (identifier "param_2")) (, ",") (binary_expression "param_2 != unaff_s4" (identifier "param_2") (!= "!=") (identifier "unaff_s4")))) () ")")) (compound_statement "{\n        param_2 = param_2 + 1;\n        unaff_s1 = unaff_s1 + 1;\n        unaff_s0 = param_2;\n        if (param_2 == unaff_s5) break;\n        bVar1 = *unaff_s1;\n      }" ({ "{") (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" (identifier "param_2") (= "=") (binary_expression "param_2 + 1" (identifier "param_2") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "unaff_s1 = unaff_s1 + 1;" (assignment_expression "unaff_s1 = unaff_s1 + 1" (identifier "unaff_s1") (= "=") (binary_expression "unaff_s1 + 1" (identifier "unaff_s1") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "unaff_s0 = param_2;" (assignment_expression "unaff_s0 = param_2" (identifier "unaff_s0") (= "=") (identifier "param_2")) (; ";")) (if_statement "if (param_2 == unaff_s5) break;" (if "if") (parenthesized_expression "(param_2 == unaff_s5)" (( "(") (binary_expression "param_2 == unaff_s5" (identifier "param_2") (== "==") (identifier "unaff_s5")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "bVar1 = *unaff_s1;" (assignment_expression "bVar1 = *unaff_s1" (identifier "bVar1") (= "=") (pointer_expression "*unaff_s1" (* "*") (identifier "unaff_s1"))) (; ";")) (} "}"))) (} "}")))) (expression_statement "pbVar3[0xac] = 0;" (assignment_expression "pbVar3[0xac] = 0" (subscript_expression "pbVar3[0xac]" (identifier "pbVar3") ([ "[") (number_literal "0xac") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "pbVar3[0xad] = 0;" (assignment_expression "pbVar3[0xad] = 0" (subscript_expression "pbVar3[0xad]" (identifier "pbVar3") ([ "[") (number_literal "0xad") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "pbVar3[0xae] = 0;" (assignment_expression "pbVar3[0xae] = 0" (subscript_expression "pbVar3[0xae]" (identifier "pbVar3") ([ "[") (number_literal "0xae") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "pbVar3[0xaf] = 0;" (assignment_expression "pbVar3[0xaf] = 0" (subscript_expression "pbVar3[0xaf]" (identifier "pbVar3") ([ "[") (number_literal "0xaf") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "pbVar3[0xb4] = 0;" (assignment_expression "pbVar3[0xb4] = 0" (subscript_expression "pbVar3[0xb4]" (identifier "pbVar3") ([ "[") (number_literal "0xb4") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "pbVar3[0xb5] = 0;" (assignment_expression "pbVar3[0xb5] = 0" (subscript_expression "pbVar3[0xb5]" (identifier "pbVar3") ([ "[") (number_literal "0xb5") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "pbVar3[0xb6] = 0;" (assignment_expression "pbVar3[0xb6] = 0" (subscript_expression "pbVar3[0xb6]" (identifier "pbVar3") ([ "[") (number_literal "0xb6") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "pbVar3[0xb7] = 0;" (assignment_expression "pbVar3[0xb7] = 0" (subscript_expression "pbVar3[0xb7]" (identifier "pbVar3") ([ "[") (number_literal "0xb7") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "pbVar3[0xb0] = 0;" (assignment_expression "pbVar3[0xb0] = 0" (subscript_expression "pbVar3[0xb0]" (identifier "pbVar3") ([ "[") (number_literal "0xb0") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "pbVar3[0xb1] = 0;" (assignment_expression "pbVar3[0xb1] = 0" (subscript_expression "pbVar3[0xb1]" (identifier "pbVar3") ([ "[") (number_literal "0xb1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "pbVar3[0xb2] = 0;" (assignment_expression "pbVar3[0xb2] = 0" (subscript_expression "pbVar3[0xb2]" (identifier "pbVar3") ([ "[") (number_literal "0xb2") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "pbVar3[0xb3] = 0;" (assignment_expression "pbVar3[0xb3] = 0" (subscript_expression "pbVar3[0xb3]" (identifier "pbVar3") ([ "[") (number_literal "0xb3") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "pbVar3[0x5c] = 0x67;" (assignment_expression "pbVar3[0x5c] = 0x67" (subscript_expression "pbVar3[0x5c]" (identifier "pbVar3") ([ "[") (number_literal "0x5c") (] "]")) (= "=") (number_literal "0x67")) (; ";")) (expression_statement "pbVar3[0x5d] = 0x45;" (assignment_expression "pbVar3[0x5d] = 0x45" (subscript_expression "pbVar3[0x5d]" (identifier "pbVar3") ([ "[") (number_literal "0x5d") (] "]")) (= "=") (number_literal "0x45")) (; ";")) (expression_statement "pbVar3[0x5e] = 0x23;" (assignment_expression "pbVar3[0x5e] = 0x23" (subscript_expression "pbVar3[0x5e]" (identifier "pbVar3") ([ "[") (number_literal "0x5e") (] "]")) (= "=") (number_literal "0x23")) (; ";")) (expression_statement "pbVar3[0x5f] = 1;" (assignment_expression "pbVar3[0x5f] = 1" (subscript_expression "pbVar3[0x5f]" (identifier "pbVar3") ([ "[") (number_literal "0x5f") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "pbVar3[0x60] = 0xef;" (assignment_expression "pbVar3[0x60] = 0xef" (subscript_expression "pbVar3[0x60]" (identifier "pbVar3") ([ "[") (number_literal "0x60") (] "]")) (= "=") (number_literal "0xef")) (; ";")) (expression_statement "pbVar3[0x61] = 0xcd;" (assignment_expression "pbVar3[0x61] = 0xcd" (subscript_expression "pbVar3[0x61]" (identifier "pbVar3") ([ "[") (number_literal "0x61") (] "]")) (= "=") (number_literal "0xcd")) (; ";")) (expression_statement "pbVar3[0x62] = 0xab;" (assignment_expression "pbVar3[0x62] = 0xab" (subscript_expression "pbVar3[0x62]" (identifier "pbVar3") ([ "[") (number_literal "0x62") (] "]")) (= "=") (number_literal "0xab")) (; ";")) (expression_statement "pbVar3[99] = 0x89;" (assignment_expression "pbVar3[99] = 0x89" (subscript_expression "pbVar3[99]" (identifier "pbVar3") ([ "[") (number_literal "99") (] "]")) (= "=") (number_literal "0x89")) (; ";")) (expression_statement "pbVar3[100] = 0x98;" (assignment_expression "pbVar3[100] = 0x98" (subscript_expression "pbVar3[100]" (identifier "pbVar3") ([ "[") (number_literal "100") (] "]")) (= "=") (number_literal "0x98")) (; ";")) (expression_statement "pbVar3[0x65] = 0xba;" (assignment_expression "pbVar3[0x65] = 0xba" (subscript_expression "pbVar3[0x65]" (identifier "pbVar3") ([ "[") (number_literal "0x65") (] "]")) (= "=") (number_literal "0xba")) (; ";")) (expression_statement "pbVar3[0x66] = 0xdc;" (assignment_expression "pbVar3[0x66] = 0xdc" (subscript_expression "pbVar3[0x66]" (identifier "pbVar3") ([ "[") (number_literal "0x66") (] "]")) (= "=") (number_literal "0xdc")) (; ";")) (expression_statement "pbVar3[0x67] = 0xfe;" (assignment_expression "pbVar3[0x67] = 0xfe" (subscript_expression "pbVar3[0x67]" (identifier "pbVar3") ([ "[") (number_literal "0x67") (] "]")) (= "=") (number_literal "0xfe")) (; ";")) (expression_statement "pbVar3[0x68] = 0x10;" (assignment_expression "pbVar3[0x68] = 0x10" (subscript_expression "pbVar3[0x68]" (identifier "pbVar3") ([ "[") (number_literal "0x68") (] "]")) (= "=") (number_literal "0x10")) (; ";")) (expression_statement "pbVar3[0x69] = 0x32;" (assignment_expression "pbVar3[0x69] = 0x32" (subscript_expression "pbVar3[0x69]" (identifier "pbVar3") ([ "[") (number_literal "0x69") (] "]")) (= "=") (number_literal "0x32")) (; ";")) (expression_statement "pbVar3[0x6a] = 0x54;" (assignment_expression "pbVar3[0x6a] = 0x54" (subscript_expression "pbVar3[0x6a]" (identifier "pbVar3") ([ "[") (number_literal "0x6a") (] "]")) (= "=") (number_literal "0x54")) (; ";")) (expression_statement "pbVar3[0x6b] = 0x76;" (assignment_expression "pbVar3[0x6b] = 0x76" (subscript_expression "pbVar3[0x6b]" (identifier "pbVar3") ([ "[") (number_literal "0x6b") (] "]")) (= "=") (number_literal "0x76")) (; ";")) (expression_statement "MD5Update(pbVar3 + 0x5c,unaff_s2,0x40);" (call_expression "MD5Update(pbVar3 + 0x5c,unaff_s2,0x40)" (identifier "MD5Update") (argument_list "(pbVar3 + 0x5c,unaff_s2,0x40)" (( "(") (binary_expression "pbVar3 + 0x5c" (identifier "pbVar3") (+ "+") (number_literal "0x5c")) (, ",") (identifier "unaff_s2") (, ",") (number_literal "0x40") () ")"))) (; ";")) (expression_statement "param_2 = &DAT_00000040;" (assignment_expression "param_2 = &DAT_00000040" (identifier "param_2") (= "=") (pointer_expression "&DAT_00000040" (& "&") (identifier "DAT_00000040"))) (; ";")) (expression_statement "param_1 = unaff_s2;" (assignment_expression "param_1 = unaff_s2" (identifier "param_1") (= "=") (identifier "unaff_s2")) (; ";")) (expression_statement "(**(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x7f10))();" (call_expression "(**(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x7f10))()" (parenthesized_expression "(**(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x7f10))" (( "(") (pointer_expression "**(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x7f10)" (* "*") (pointer_expression "*(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x7f10)" (* "*") (cast_expression "(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x7f10)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)((int)register0x00000074 + -0x78) + -0x7f10)" (( "(") (binary_expression "*(int *)((int)register0x00000074 + -0x78) + -0x7f10" (pointer_expression "*(int *)((int)register0x00000074 + -0x78)" (* "*") (cast_expression "(int *)((int)register0x00000074 + -0x78)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)register0x00000074 + -0x78)" (( "(") (binary_expression "(int)register0x00000074 + -0x78" (cast_expression "(int)register0x00000074" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000074")) (+ "+") (number_literal "-0x78")) () ")")))) (+ "+") (number_literal "-0x7f10")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (if_statement "if (*(int *)((int)register0x00000074 + -0x2c) == *unaff_s3) {\n      return;\n    }" (if "if") (parenthesized_expression "(*(int *)((int)register0x00000074 + -0x2c) == *unaff_s3)" (( "(") (binary_expression "*(int *)((int)register0x00000074 + -0x2c) == *unaff_s3" (pointer_expression "*(int *)((int)register0x00000074 + -0x2c)" (* "*") (cast_expression "(int *)((int)register0x00000074 + -0x2c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)register0x00000074 + -0x2c)" (( "(") (binary_expression "(int)register0x00000074 + -0x2c" (cast_expression "(int)register0x00000074" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000074")) (+ "+") (number_literal "-0x2c")) () ")")))) (== "==") (pointer_expression "*unaff_s3" (* "*") (identifier "unaff_s3"))) () ")")) (compound_statement "{\n      return;\n    }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "pcVar6 = *(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x7498);" (assignment_expression "pcVar6 = *(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x7498)" (identifier "pcVar6") (= "=") (pointer_expression "*(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x7498)" (* "*") (cast_expression "(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x7498)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)((int)register0x00000074 + -0x78) + -0x7498)" (( "(") (binary_expression "*(int *)((int)register0x00000074 + -0x78) + -0x7498" (pointer_expression "*(int *)((int)register0x00000074 + -0x78)" (* "*") (cast_expression "(int *)((int)register0x00000074 + -0x78)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)register0x00000074 + -0x78)" (( "(") (binary_expression "(int)register0x00000074 + -0x78" (cast_expression "(int)register0x00000074" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000074")) (+ "+") (number_literal "-0x78")) () ")")))) (+ "+") (number_literal "-0x7498")) () ")"))))) (; ";")) (expression_statement "unaff_retaddr = 0x6a8bc;" (assignment_expression "unaff_retaddr = 0x6a8bc" (identifier "unaff_retaddr") (= "=") (number_literal "0x6a8bc")) (; ";")) (expression_statement "(*pcVar6)();" (call_expression "(*pcVar6)()" (parenthesized_expression "(*pcVar6)" (( "(") (pointer_expression "*pcVar6" (* "*") (identifier "pcVar6")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "pcVar6 = *(code **)(pcVar6 + 0x47c48);" (assignment_expression "pcVar6 = *(code **)(pcVar6 + 0x47c48)" (identifier "pcVar6") (= "=") (pointer_expression "*(code **)(pcVar6 + 0x47c48)" (* "*") (cast_expression "(code **)(pcVar6 + 0x47c48)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar6 + 0x47c48)" (( "(") (binary_expression "pcVar6 + 0x47c48" (identifier "pcVar6") (+ "+") (number_literal "0x47c48")) () ")"))))) (; ";")) (expression_statement "param_3 = &DAT_00000010;" (assignment_expression "param_3 = &DAT_00000010" (identifier "param_3") (= "=") (pointer_expression "&DAT_00000010" (& "&") (identifier "DAT_00000010"))) (; ";")) (expression_statement "unaff_s6 = pbVar3;" (assignment_expression "unaff_s6 = pbVar3" (identifier "unaff_s6") (= "=") (identifier "pbVar3")) (; ";")) (expression_statement "register0x00000074 = (BADSPACEBASE *)((int)register0x00000074 + -0x88);" (assignment_expression "register0x00000074 = (BADSPACEBASE *)((int)register0x00000074 + -0x88)" (identifier "register0x00000074") (= "=") (cast_expression "(BADSPACEBASE *)((int)register0x00000074 + -0x88)" (( "(") (type_descriptor "BADSPACEBASE *" (type_identifier "BADSPACEBASE") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)register0x00000074 + -0x88)" (( "(") (binary_expression "(int)register0x00000074 + -0x88" (cast_expression "(int)register0x00000074" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "register0x00000074")) (+ "+") (number_literal "-0x88")) () ")")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}")))

void function_1(void *handle,void *keyv,int var_1)

{
  type_1 *puVar1;
  int var_7;
  type_2 *var_5;
  type_2 *p;
  type_3 *keyv_00;
  type_2 *var_3;
  type_2 *var_4;
  type_2 *var_6;
  type_4 foo [64];
  
  puVar1 = PTR___stack_chk_guard_000b2f04;
  p = foo;
  var_7 = *(int *)PTR___stack_chk_guard_000b2f04;
  (*(type_5 *)PTR_memset_000b2e24)(p,0x36,0x40);
  if (var_1 < 1) {
    *(type_6 *)((int)handle + 0x50) = 0;
    *(type_6 *)((int)handle + 0x58) = 0;
    *(type_6 *)((int)handle + 0x54) = 0;
    *(type_6 *)handle = 0x67452301;
    *(type_6 *)((int)handle + 4) = 0xefcdab89;
    *(type_6 *)((int)handle + 8) = 0x98badcfe;
    *(type_6 *)((int)handle + 0xc) = 0x10325476;
    var_2((type_7 *)handle,p,0x40);
    (*(type_5 *)PTR_memset_000b2e24)(p,0x5c,0x40);
  }
  else {
    var_6 = (type_2 *)((int)keyv + 0x40);
    var_4 = (type_2 *)((int)keyv + var_1 + -1);
    var_3 = (type_2 *)keyv;
    var_5 = p;
    do {
      *var_5 = *var_5 ^ *var_3;
      if (var_3 == var_4) break;
      var_3 = var_3 + 1;
      var_5 = var_5 + 1;
    } while (var_3 != var_6);
    *(type_6 *)((int)handle + 0x50) = 0;
    *(type_6 *)((int)handle + 0x58) = 0;
    *(type_6 *)((int)handle + 0x54) = 0;
    *(type_6 *)handle = 0x67452301;
    *(type_6 *)((int)handle + 4) = 0xefcdab89;
    *(type_6 *)((int)handle + 8) = 0x98badcfe;
    *(type_6 *)((int)handle + 0xc) = 0x10325476;
    var_2((type_7 *)handle,p,0x40);
    (*(type_5 *)PTR_memset_000b2e24)(p,0x5c,0x40);
    var_3 = p;
                    /* WARNING: Load size is inaccurate */
    while (*var_3 = foo[0] ^ *keyv, (type_2 *)keyv != var_4) {
      keyv = (void *)((int)keyv + 1);
      var_3 = var_3 + 1;
      if ((type_2 *)keyv == var_6) break;
      foo[0] = *var_3;
    }
  }
  *(type_6 *)((int)handle + 0xac) = 0;
  *(type_6 *)((int)handle + 0xb4) = 0;
  *(type_6 *)((int)handle + 0xb0) = 0;
  *(type_6 *)((int)handle + 0x5c) = 0x67452301;
  *(type_6 *)((int)handle + 0x60) = 0xefcdab89;
  *(type_6 *)((int)handle + 100) = 0x98badcfe;
  *(type_6 *)((int)handle + 0x68) = 0x10325476;
  var_2((type_7 *)((int)handle + 0x5c),p,0x40);
  keyv_00 = &DAT_00000040;
  (*(type_5 *)PTR_smemclr_000b2460)();
  if (var_7 != *(int *)puVar1) {
    (*(type_5 *)PTR___stack_chk_fail_000b2ed8)();
    function_1(p,keyv_00,0x10);
    return;
  }
  return;
}


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

void MASKED(byte *param_1,byte *param_2,byte *param_3)

{
  byte bVar1;
  byte *pbVar2;
  byte *pbVar3;
  byte *pbVar4;
  byte *unaff_s0;
  byte *unaff_s1;
  byte *unaff_s2;
  int *unaff_s3;
  byte *unaff_s4;
  byte *unaff_s5;
  byte *unaff_s6;
  undefined4 unaff_s7;
  code *pcVar5;
  code *pcVar6;
  int iVar7;
  undefined4 unaff_retaddr;
  undefined1 auStackX_0 [16];
  
  pcVar6 = MASKED;
  do {
    pbVar3 = param_1;
    pcVar5 = *(code **)(&LAB_000487cc + (int)pcVar6);
    *(int **)((int)register0x00000074 + -0x18) = unaff_s3;
    unaff_s3 = *(int **)(pcVar6 + 0x488ac);
    *(byte **)((int)register0x00000074 + -0x1c) = unaff_s2;
    unaff_s2 = (byte *)((int)register0x00000074 + -0x6c);
    *(byte **)((int)register0x00000074 + -0x14) = unaff_s4;
    *(byte **)((int)register0x00000074 + -0x24) = unaff_s0;
    *(code **)((int)register0x00000074 + -0x78) = pcVar6 + 0x4fd18;
    *(byte **)((int)register0x00000074 + -0xc) = unaff_s6;
    *(undefined4 *)((int)register0x00000074 + -4) = unaff_retaddr;
    *(undefined4 *)((int)register0x00000074 + -8) = unaff_s7;
    *(byte **)((int)register0x00000074 + -0x10) = unaff_s5;
    *(byte **)((int)register0x00000074 + -0x20) = unaff_s1;
    *(int *)((int)register0x00000074 + -0x2c) = *unaff_s3;
    (*pcVar5)(unaff_s2,0x36,0x40);
    iVar7 = *(int *)((int)register0x00000074 + -0x78);
    if ((int)param_3 < 1) {
      unaff_s7 = *(undefined4 *)(iVar7 + -31000);
      pbVar3[0x50] = 0;
      pbVar3[0x51] = 0;
      pbVar3[0x52] = 0;
      pbVar3[0x53] = 0;
      pbVar3[0x58] = 0;
      pbVar3[0x59] = 0;
      pbVar3[0x5a] = 0;
      pbVar3[0x5b] = 0;
      pbVar3[0x54] = 0;
      pbVar3[0x55] = 0;
      pbVar3[0x56] = 0;
      pbVar3[0x57] = 0;
      pbVar3[0] = 0x67;
      pbVar3[1] = 0x45;
      pbVar3[2] = 0x23;
      pbVar3[3] = 1;
      pbVar3[4] = 0xef;
      pbVar3[5] = 0xcd;
      pbVar3[6] = 0xab;
      pbVar3[7] = 0x89;
      pbVar3[8] = 0x98;
      pbVar3[9] = 0xba;
      pbVar3[10] = 0xdc;
      pbVar3[0xb] = 0xfe;
      pbVar3[0xc] = 0x10;
      pbVar3[0xd] = 0x32;
      pbVar3[0xe] = 0x54;
      pbVar3[0xf] = 0x76;
      MD5Update(pbVar3,unaff_s2,0x40);
      (**(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x754c))(unaff_s2,0x5c,0x40);
      unaff_s0 = param_2;
      unaff_s4 = param_3;
    }
    else {
      unaff_s5 = param_2 + 0x40;
      unaff_s4 = param_2 + (int)(param_3 + -1);
      pbVar2 = param_2;
      pbVar4 = unaff_s2;
      do {
        *pbVar4 = *pbVar4 ^ *pbVar2;
        if (pbVar2 == unaff_s4) break;
        pbVar2 = pbVar2 + 1;
        pbVar4 = pbVar4 + 1;
      } while (pbVar2 != unaff_s5);
      unaff_s7 = *(undefined4 *)(iVar7 + -31000);
      pbVar3[0x50] = 0;
      pbVar3[0x51] = 0;
      pbVar3[0x52] = 0;
      pbVar3[0x53] = 0;
      pbVar3[0x58] = 0;
      pbVar3[0x59] = 0;
      pbVar3[0x5a] = 0;
      pbVar3[0x5b] = 0;
      pbVar3[0x54] = 0;
      pbVar3[0x55] = 0;
      pbVar3[0x56] = 0;
      pbVar3[0x57] = 0;
      pbVar3[0] = 0x67;
      pbVar3[1] = 0x45;
      pbVar3[2] = 0x23;
      pbVar3[3] = 1;
      pbVar3[4] = 0xef;
      pbVar3[5] = 0xcd;
      pbVar3[6] = 0xab;
      pbVar3[7] = 0x89;
      pbVar3[8] = 0x98;
      pbVar3[9] = 0xba;
      pbVar3[10] = 0xdc;
      pbVar3[0xb] = 0xfe;
      pbVar3[0xc] = 0x10;
      pbVar3[0xd] = 0x32;
      pbVar3[0xe] = 0x54;
      pbVar3[0xf] = 0x76;
      MD5Update(pbVar3,unaff_s2,0x40);
      (**(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x754c))(unaff_s2,0x5c,0x40);
      bVar1 = *unaff_s2;
      unaff_s1 = unaff_s2;
      while (*unaff_s1 = bVar1 ^ *param_2, unaff_s0 = param_2, param_2 != unaff_s4) {
        param_2 = param_2 + 1;
        unaff_s1 = unaff_s1 + 1;
        unaff_s0 = param_2;
        if (param_2 == unaff_s5) break;
        bVar1 = *unaff_s1;
      }
    }
    pbVar3[0xac] = 0;
    pbVar3[0xad] = 0;
    pbVar3[0xae] = 0;
    pbVar3[0xaf] = 0;
    pbVar3[0xb4] = 0;
    pbVar3[0xb5] = 0;
    pbVar3[0xb6] = 0;
    pbVar3[0xb7] = 0;
    pbVar3[0xb0] = 0;
    pbVar3[0xb1] = 0;
    pbVar3[0xb2] = 0;
    pbVar3[0xb3] = 0;
    pbVar3[0x5c] = 0x67;
    pbVar3[0x5d] = 0x45;
    pbVar3[0x5e] = 0x23;
    pbVar3[0x5f] = 1;
    pbVar3[0x60] = 0xef;
    pbVar3[0x61] = 0xcd;
    pbVar3[0x62] = 0xab;
    pbVar3[99] = 0x89;
    pbVar3[100] = 0x98;
    pbVar3[0x65] = 0xba;
    pbVar3[0x66] = 0xdc;
    pbVar3[0x67] = 0xfe;
    pbVar3[0x68] = 0x10;
    pbVar3[0x69] = 0x32;
    pbVar3[0x6a] = 0x54;
    pbVar3[0x6b] = 0x76;
    MD5Update(pbVar3 + 0x5c,unaff_s2,0x40);
    param_2 = &DAT_00000040;
    param_1 = unaff_s2;
    (**(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x7f10))();
    if (*(int *)((int)register0x00000074 + -0x2c) == *unaff_s3) {
      return;
    }
    pcVar6 = *(code **)(*(int *)((int)register0x00000074 + -0x78) + -0x7498);
    unaff_retaddr = 0x6a8bc;
    (*pcVar6)();
    pcVar6 = *(code **)(pcVar6 + 0x47c48);
    param_3 = &DAT_00000010;
    unaff_s6 = pbVar3;
    register0x00000074 = (BADSPACEBASE *)((int)register0x00000074 + -0x88);
  } while( true );
}

