
/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */
/* WARNING: Unknown calling convention */

void hmacsha256_genresult(void *handle,uchar *hmac)

{
  uint uVar1;
  int iVar2;
  undefined **ppuVar3;
  uint uVar4;
  uint uVar5;
  int iVar6;
  uint32 *puVar7;
  SHA256_State *pSVar8;
  int in_GS_OFFSET;
  byte bVar9;
  SHA256_State s;
  uchar intermediate [32];
  uchar c [64];
  
  bVar9 = 0;
  ppuVar3 = &_GLOBAL_OFFSET_TABLE_;
  iVar2 = *(int *)(in_GS_OFFSET + 0x14);
  puVar7 = (uint32 *)((int)handle + 0xd8);
  pSVar8 = &s;
  for (iVar6 = 0x1b; iVar6 != 0; iVar6 = iVar6 + -1) {
    pSVar8->h[0] = *puVar7;
    puVar7 = puVar7 + 1;
    pSVar8 = (SHA256_State *)(pSVar8->h + 1);
  }
  SHA256_Final(&s,intermediate);
  puVar7 = (uint32 *)((int)handle + 0x6c);
  pSVar8 = &s;
  for (iVar6 = 0x1b; iVar6 != 0; iVar6 = iVar6 + -1) {
    pSVar8->h[0] = *puVar7;
    puVar7 = puVar7 + (uint)bVar9 * -2 + 1;
    pSVar8 = (SHA256_State *)((int)pSVar8 + (uint)bVar9 * -8 + 4);
  }
  SHA256_Bytes(&s,intermediate,0x20);
  if (s.blkused < 0x38) {
    iVar6 = 0x38 - s.blkused;
  }
  else {
    iVar6 = 0x78 - s.blkused;
  }
  uVar1 = s.lenhi * 8;
  uVar4 = s.lenlo >> 0x1d;
  __memset_chk(c,0,iVar6,0x40,ppuVar3,s.lenlo);
  c[0] = 0x80;
  SHA256_Bytes(&s,c,iVar6);
  uVar5 = s.lenlo << 3;
  c._4_4_ = uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8 | s.lenlo << 0x1b;
  c._0_4_ = uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |
            (uVar1 | uVar4) << 0x18;
  SHA256_Bytes(&s,c,8);
  *(uint32 *)hmac =
       s.h[0] >> 0x18 | (s.h[0] & 0xff0000) >> 8 | (s.h[0] & 0xff00) << 8 | s.h[0] << 0x18;
  *(uint32 *)(hmac + 4) =
       s.h[1] >> 0x18 | (s.h[1] & 0xff0000) >> 8 | (s.h[1] & 0xff00) << 8 | s.h[1] << 0x18;
  *(uint32 *)(hmac + 8) =
       s.h[2] >> 0x18 | (s.h[2] & 0xff0000) >> 8 | (s.h[2] & 0xff00) << 8 | s.h[2] << 0x18;
  *(uint32 *)(hmac + 0xc) =
       s.h[3] >> 0x18 | (s.h[3] & 0xff0000) >> 8 | (s.h[3] & 0xff00) << 8 | s.h[3] << 0x18;
  *(uint32 *)(hmac + 0x10) =
       s.h[4] >> 0x18 | (s.h[4] & 0xff0000) >> 8 | (s.h[4] & 0xff00) << 8 | s.h[4] << 0x18;
  *(uint32 *)(hmac + 0x14) =
       s.h[5] >> 0x18 | (s.h[5] & 0xff0000) >> 8 | (s.h[5] & 0xff00) << 8 | s.h[5] << 0x18;
  *(uint32 *)(hmac + 0x18) =
       s.h[6] >> 0x18 | (s.h[6] & 0xff0000) >> 8 | (s.h[6] & 0xff00) << 8 | s.h[6] << 0x18;
  *(uint32 *)(hmac + 0x1c) =
       s.h[7] >> 0x18 | (s.h[7] & 0xff0000) >> 8 | (s.h[7] & 0xff00) << 8 | s.h[7] << 0x18;
  if (iVar2 == *(int *)(in_GS_OFFSET + 0x14)) {
    return;
  }
                    /* WARNING: Subroutine does not return */
  __stack_chk_fail_local();
}



/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */

void FUN_000729a0(int param_1,uint *param_2)

{
  uint uVar1;
  undefined **ppuVar2;
  uint uVar3;
  uint uVar4;
  int iVar5;
  uint *puVar6;
  uint *puVar7;
  int in_GS_OFFSET;
  byte bVar8;
  uint local_ec [4];
  uint local_dc;
  uint local_d8;
  uint local_d4;
  uint local_d0;
  int local_8c;
  int local_88;
  uint local_84;
  undefined1 local_80 [32];
  uint local_60;
  uint local_5c;
  int local_20;
  
  bVar8 = 0;
  ppuVar2 = &__DT_PLTGOT;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  puVar6 = (uint *)(param_1 + 0xd8);
  puVar7 = local_ec;
  for (iVar5 = 0x1b; iVar5 != 0; iVar5 = iVar5 + -1) {
    *puVar7 = *puVar6;
    puVar6 = puVar6 + 1;
    puVar7 = puVar7 + 1;
  }
  FUN_000727b0(local_ec,local_80);
  puVar6 = (uint *)(param_1 + 0x6c);
  puVar7 = local_ec;
  for (iVar5 = 0x1b; iVar5 != 0; iVar5 = iVar5 + -1) {
    *puVar7 = *puVar6;
    puVar6 = puVar6 + (uint)bVar8 * -2 + 1;
    puVar7 = puVar7 + (uint)bVar8 * -2 + 1;
  }
  FUN_00072230(local_ec,local_80,0x20);
  if (local_8c < 0x38) {
    iVar5 = 0x38 - local_8c;
  }
  else {
    iVar5 = 0x78 - local_8c;
  }
  uVar1 = local_88 * 8;
  uVar3 = local_84 >> 0x1d;
  __memset_chk(&local_60,0,iVar5,0x40,ppuVar2,local_84,iVar5);
  local_60 = CONCAT31(local_60._1_3_,0x80);
  FUN_00072230(local_ec,&local_60,iVar5);
  uVar4 = local_84 << 3;
  local_5c = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | local_84 << 0x1b;
  local_60 = uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |
             (uVar1 | uVar3) << 0x18;
  FUN_00072230(local_ec,&local_60,8);
  *param_2 = local_ec[0] >> 0x18 | (local_ec[0] & 0xff0000) >> 8 | (local_ec[0] & 0xff00) << 8 |
             local_ec[0] << 0x18;
  param_2[1] = local_ec[1] >> 0x18 | (local_ec[1] & 0xff0000) >> 8 | (local_ec[1] & 0xff00) << 8 |
               local_ec[1] << 0x18;
  param_2[2] = local_ec[2] >> 0x18 | (local_ec[2] & 0xff0000) >> 8 | (local_ec[2] & 0xff00) << 8 |
               local_ec[2] << 0x18;
  param_2[3] = local_ec[3] >> 0x18 | (local_ec[3] & 0xff0000) >> 8 | (local_ec[3] & 0xff00) << 8 |
               local_ec[3] << 0x18;
  param_2[4] = local_dc >> 0x18 | (local_dc & 0xff0000) >> 8 | (local_dc & 0xff00) << 8 |
               local_dc << 0x18;
  param_2[5] = local_d8 >> 0x18 | (local_d8 & 0xff0000) >> 8 | (local_d8 & 0xff00) << 8 |
               local_d8 << 0x18;
  param_2[6] = local_d4 >> 0x18 | (local_d4 & 0xff0000) >> 8 | (local_d4 & 0xff00) << 8 |
               local_d4 << 0x18;
  param_2[7] = local_d0 >> 0x18 | (local_d0 & 0xff0000) >> 8 | (local_d0 & 0xff00) << 8 |
               local_d0 << 0x18;
  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {
    return;
  }
                    /* WARNING: Subroutine does not return */
  FUN_0008eb20();
}


CALL 0x00014ffe
ADD EAX,0x5d3eb
PUSH EBP
MOV ECX,0x1b
PUSH EDI
PUSH ESI
PUSH EBX
SUB ESP,0xec
MOV EDX,dword ptr [ESP + 0x104]
MOV dword ptr [ESP],EAX
LEA EDI,[ESP + 0x10]
SUB ESP,0x8
MOV EAX,dword ptr [ESP + 0x108]
MOV dword ptr [ESP + 0x10],EDX
LEA ESI,[EAX + 0xd8]
MOV EBX,dword ptr GS:[0x14]
MOV dword ptr [ESP + 0xe4],EBX
XOR EBX,EBX
MOV dword ptr [ESP + 0xc],EAX
LEA EBX,[ESP + 0x84]
MOVSD.REP ES:EDI,ESI
PUSH EBX
LEA EBP,[ESP + 0x1c]
PUSH EBP
MOV EDI,EBP
CALL 0x000727b0
MOV EAX,dword ptr [ESP + 0x14]
ADD ESP,0xc
MOV ECX,0x1b
LEA ESI,[EAX + 0x6c]
MOVSD.REP ES:EDI,ESI
PUSH 0x20
PUSH EBX
PUSH EBP
CALL 0x00072230
MOV EAX,dword ptr [ESP + 0x80]
ADD ESP,0x10
MOV EDX,dword ptr [ESP + 0x8]
CMP EAX,0x37
JLE 0x00072b20
MOV EDI,0x78
MOV ECX,EDI
SUB ECX,EAX
MOV EAX,dword ptr [ESP + 0x78]
MOV EBX,dword ptr [ESP + 0x74]
MOV dword ptr [ESP + 0xc],EDX
MOV dword ptr [ESP + 0x4],EAX
LEA ESI,[EBX*0x8 + 0x0]
SHR EAX,0x1d
PUSH 0x40
OR ESI,EAX
PUSH ECX
BSWAP ESI
MOV dword ptr [ESP + 0x10],ECX
PUSH 0x0
LEA EDI,[ESP + 0xa8]
PUSH EDI
MOV EBX,dword ptr [ESP + 0x10]
CALL 0x000146d0
MOV byte ptr [ESP + 0xac],0x80
ADD ESP,0xc
MOV ECX,dword ptr [ESP + 0xc]
PUSH ECX
PUSH EDI
PUSH EBP
CALL 0x00072230
MOV EAX,dword ptr [ESP + 0x14]
MOV dword ptr [ESP + 0xac],ESI
SHL EAX,0x3
BSWAP EAX
MOV dword ptr [ESP + 0xb0],EAX
ADD ESP,0xc
PUSH 0x8
PUSH EDI
PUSH EBP
CALL 0x00072230
MOV EDX,dword ptr [ESP + 0x1c]
MOV EAX,dword ptr [ESP + 0x20]
BSWAP EAX
MOV dword ptr [EDX],EAX
MOV EAX,dword ptr [ESP + 0x24]
BSWAP EAX
MOV dword ptr [EDX + 0x4],EAX
MOV EAX,dword ptr [ESP + 0x28]
BSWAP EAX
MOV dword ptr [EDX + 0x8],EAX
MOV EAX,dword ptr [ESP + 0x2c]
BSWAP EAX
MOV dword ptr [EDX + 0xc],EAX
MOV EAX,dword ptr [ESP + 0x30]
BSWAP EAX
MOV dword ptr [EDX + 0x10],EAX
MOV EAX,dword ptr [ESP + 0x34]
BSWAP EAX
MOV dword ptr [EDX + 0x14],EAX
MOV EAX,dword ptr [ESP + 0x38]
BSWAP EAX
MOV dword ptr [EDX + 0x18],EAX
MOV EAX,dword ptr [ESP + 0x3c]
ADD ESP,0x10
BSWAP EAX
MOV dword ptr [EDX + 0x1c],EAX
MOV EAX,dword ptr [ESP + 0xdc]
XOR EAX,dword ptr GS:[0x14]
JNZ 0x00072b2e
ADD ESP,0xec
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EDI,0x38
SUB EDI,EAX
MOV ECX,EDI
JMP 0x00072a3f
CALL 0x0008eb20
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n\nvoid FUN_000729a0(int param_1,uint *param_2)\n\n{\n  uint uVar1;\n  undefined **ppuVar2;\n  uint uVar3;\n  uint uVar4;\n  int iVar5;\n  uint *puVar6;\n  uint *puVar7;\n  int in_GS_OFFSET;\n  byte bVar8;\n  uint local_ec [4];\n  uint local_dc;\n  uint local_d8;\n  uint local_d4;\n  uint local_d0;\n  int local_8c;\n  int local_88;\n  uint local_84;\n  undefined1 local_80 [32];\n  uint local_60;\n  uint local_5c;\n  int local_20;\n  \n  bVar8 = 0;\n  ppuVar2 = &__DT_PLTGOT;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  puVar6 = (uint *)(param_1 + 0xd8);\n  puVar7 = local_ec;\n  for (iVar5 = 0x1b; iVar5 != 0; iVar5 = iVar5 + -1) {\n    *puVar7 = *puVar6;\n    puVar6 = puVar6 + 1;\n    puVar7 = puVar7 + 1;\n  }\n  FUN_000727b0(local_ec,local_80);\n  puVar6 = (uint *)(param_1 + 0x6c);\n  puVar7 = local_ec;\n  for (iVar5 = 0x1b; iVar5 != 0; iVar5 = iVar5 + -1) {\n    *puVar7 = *puVar6;\n    puVar6 = puVar6 + (uint)bVar8 * -2 + 1;\n    puVar7 = puVar7 + (uint)bVar8 * -2 + 1;\n  }\n  FUN_00072230(local_ec,local_80,0x20);\n  if (local_8c < 0x38) {\n    iVar5 = 0x38 - local_8c;\n  }\n  else {\n    iVar5 = 0x78 - local_8c;\n  }\n  uVar1 = local_88 * 8;\n  uVar3 = local_84 >> 0x1d;\n  __memset_chk(&local_60,0,iVar5,0x40,ppuVar2,local_84,iVar5);\n  local_60 = CONCAT31(local_60._1_3_,0x80);\n  FUN_00072230(local_ec,&local_60,iVar5);\n  uVar4 = local_84 << 3;\n  local_5c = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | local_84 << 0x1b;\n  local_60 = uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n             (uVar1 | uVar3) << 0x18;\n  FUN_00072230(local_ec,&local_60,8);\n  *param_2 = local_ec[0] >> 0x18 | (local_ec[0] & 0xff0000) >> 8 | (local_ec[0] & 0xff00) << 8 |\n             local_ec[0] << 0x18;\n  param_2[1] = local_ec[1] >> 0x18 | (local_ec[1] & 0xff0000) >> 8 | (local_ec[1] & 0xff00) << 8 |\n               local_ec[1] << 0x18;\n  param_2[2] = local_ec[2] >> 0x18 | (local_ec[2] & 0xff0000) >> 8 | (local_ec[2] & 0xff00) << 8 |\n               local_ec[2] << 0x18;\n  param_2[3] = local_ec[3] >> 0x18 | (local_ec[3] & 0xff0000) >> 8 | (local_ec[3] & 0xff00) << 8 |\n               local_ec[3] << 0x18;\n  param_2[4] = local_dc >> 0x18 | (local_dc & 0xff0000) >> 8 | (local_dc & 0xff00) << 8 |\n               local_dc << 0x18;\n  param_2[5] = local_d8 >> 0x18 | (local_d8 & 0xff0000) >> 8 | (local_d8 & 0xff00) << 8 |\n               local_d8 << 0x18;\n  param_2[6] = local_d4 >> 0x18 | (local_d4 & 0xff0000) >> 8 | (local_d4 & 0xff00) << 8 |\n               local_d4 << 0x18;\n  param_2[7] = local_d0 >> 0x18 | (local_d0 & 0xff0000) >> 8 | (local_d0 & 0xff00) << 8 |\n               local_d0 << 0x18;\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0008eb20();\n}\n\n" comment (function_definition "void FUN_000729a0(int param_1,uint *param_2)\n\n{\n  uint uVar1;\n  undefined **ppuVar2;\n  uint uVar3;\n  uint uVar4;\n  int iVar5;\n  uint *puVar6;\n  uint *puVar7;\n  int in_GS_OFFSET;\n  byte bVar8;\n  uint local_ec [4];\n  uint local_dc;\n  uint local_d8;\n  uint local_d4;\n  uint local_d0;\n  int local_8c;\n  int local_88;\n  uint local_84;\n  undefined1 local_80 [32];\n  uint local_60;\n  uint local_5c;\n  int local_20;\n  \n  bVar8 = 0;\n  ppuVar2 = &__DT_PLTGOT;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  puVar6 = (uint *)(param_1 + 0xd8);\n  puVar7 = local_ec;\n  for (iVar5 = 0x1b; iVar5 != 0; iVar5 = iVar5 + -1) {\n    *puVar7 = *puVar6;\n    puVar6 = puVar6 + 1;\n    puVar7 = puVar7 + 1;\n  }\n  FUN_000727b0(local_ec,local_80);\n  puVar6 = (uint *)(param_1 + 0x6c);\n  puVar7 = local_ec;\n  for (iVar5 = 0x1b; iVar5 != 0; iVar5 = iVar5 + -1) {\n    *puVar7 = *puVar6;\n    puVar6 = puVar6 + (uint)bVar8 * -2 + 1;\n    puVar7 = puVar7 + (uint)bVar8 * -2 + 1;\n  }\n  FUN_00072230(local_ec,local_80,0x20);\n  if (local_8c < 0x38) {\n    iVar5 = 0x38 - local_8c;\n  }\n  else {\n    iVar5 = 0x78 - local_8c;\n  }\n  uVar1 = local_88 * 8;\n  uVar3 = local_84 >> 0x1d;\n  __memset_chk(&local_60,0,iVar5,0x40,ppuVar2,local_84,iVar5);\n  local_60 = CONCAT31(local_60._1_3_,0x80);\n  FUN_00072230(local_ec,&local_60,iVar5);\n  uVar4 = local_84 << 3;\n  local_5c = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | local_84 << 0x1b;\n  local_60 = uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n             (uVar1 | uVar3) << 0x18;\n  FUN_00072230(local_ec,&local_60,8);\n  *param_2 = local_ec[0] >> 0x18 | (local_ec[0] & 0xff0000) >> 8 | (local_ec[0] & 0xff00) << 8 |\n             local_ec[0] << 0x18;\n  param_2[1] = local_ec[1] >> 0x18 | (local_ec[1] & 0xff0000) >> 8 | (local_ec[1] & 0xff00) << 8 |\n               local_ec[1] << 0x18;\n  param_2[2] = local_ec[2] >> 0x18 | (local_ec[2] & 0xff0000) >> 8 | (local_ec[2] & 0xff00) << 8 |\n               local_ec[2] << 0x18;\n  param_2[3] = local_ec[3] >> 0x18 | (local_ec[3] & 0xff0000) >> 8 | (local_ec[3] & 0xff00) << 8 |\n               local_ec[3] << 0x18;\n  param_2[4] = local_dc >> 0x18 | (local_dc & 0xff0000) >> 8 | (local_dc & 0xff00) << 8 |\n               local_dc << 0x18;\n  param_2[5] = local_d8 >> 0x18 | (local_d8 & 0xff0000) >> 8 | (local_d8 & 0xff00) << 8 |\n               local_d8 << 0x18;\n  param_2[6] = local_d4 >> 0x18 | (local_d4 & 0xff0000) >> 8 | (local_d4 & 0xff00) << 8 |\n               local_d4 << 0x18;\n  param_2[7] = local_d0 >> 0x18 | (local_d0 & 0xff0000) >> 8 | (local_d0 & 0xff00) << 8 |\n               local_d0 << 0x18;\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0008eb20();\n}" primitive_type (function_declarator "FUN_000729a0(int param_1,uint *param_2)" identifier (parameter_list "(int param_1,uint *param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "uint *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  uint uVar1;\n  undefined **ppuVar2;\n  uint uVar3;\n  uint uVar4;\n  int iVar5;\n  uint *puVar6;\n  uint *puVar7;\n  int in_GS_OFFSET;\n  byte bVar8;\n  uint local_ec [4];\n  uint local_dc;\n  uint local_d8;\n  uint local_d4;\n  uint local_d0;\n  int local_8c;\n  int local_88;\n  uint local_84;\n  undefined1 local_80 [32];\n  uint local_60;\n  uint local_5c;\n  int local_20;\n  \n  bVar8 = 0;\n  ppuVar2 = &__DT_PLTGOT;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  puVar6 = (uint *)(param_1 + 0xd8);\n  puVar7 = local_ec;\n  for (iVar5 = 0x1b; iVar5 != 0; iVar5 = iVar5 + -1) {\n    *puVar7 = *puVar6;\n    puVar6 = puVar6 + 1;\n    puVar7 = puVar7 + 1;\n  }\n  FUN_000727b0(local_ec,local_80);\n  puVar6 = (uint *)(param_1 + 0x6c);\n  puVar7 = local_ec;\n  for (iVar5 = 0x1b; iVar5 != 0; iVar5 = iVar5 + -1) {\n    *puVar7 = *puVar6;\n    puVar6 = puVar6 + (uint)bVar8 * -2 + 1;\n    puVar7 = puVar7 + (uint)bVar8 * -2 + 1;\n  }\n  FUN_00072230(local_ec,local_80,0x20);\n  if (local_8c < 0x38) {\n    iVar5 = 0x38 - local_8c;\n  }\n  else {\n    iVar5 = 0x78 - local_8c;\n  }\n  uVar1 = local_88 * 8;\n  uVar3 = local_84 >> 0x1d;\n  __memset_chk(&local_60,0,iVar5,0x40,ppuVar2,local_84,iVar5);\n  local_60 = CONCAT31(local_60._1_3_,0x80);\n  FUN_00072230(local_ec,&local_60,iVar5);\n  uVar4 = local_84 << 3;\n  local_5c = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | local_84 << 0x1b;\n  local_60 = uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n             (uVar1 | uVar3) << 0x18;\n  FUN_00072230(local_ec,&local_60,8);\n  *param_2 = local_ec[0] >> 0x18 | (local_ec[0] & 0xff0000) >> 8 | (local_ec[0] & 0xff00) << 8 |\n             local_ec[0] << 0x18;\n  param_2[1] = local_ec[1] >> 0x18 | (local_ec[1] & 0xff0000) >> 8 | (local_ec[1] & 0xff00) << 8 |\n               local_ec[1] << 0x18;\n  param_2[2] = local_ec[2] >> 0x18 | (local_ec[2] & 0xff0000) >> 8 | (local_ec[2] & 0xff00) << 8 |\n               local_ec[2] << 0x18;\n  param_2[3] = local_ec[3] >> 0x18 | (local_ec[3] & 0xff0000) >> 8 | (local_ec[3] & 0xff00) << 8 |\n               local_ec[3] << 0x18;\n  param_2[4] = local_dc >> 0x18 | (local_dc & 0xff0000) >> 8 | (local_dc & 0xff00) << 8 |\n               local_dc << 0x18;\n  param_2[5] = local_d8 >> 0x18 | (local_d8 & 0xff0000) >> 8 | (local_d8 & 0xff00) << 8 |\n               local_d8 << 0x18;\n  param_2[6] = local_d4 >> 0x18 | (local_d4 & 0xff0000) >> 8 | (local_d4 & 0xff00) << 8 |\n               local_d4 << 0x18;\n  param_2[7] = local_d0 >> 0x18 | (local_d0 & 0xff0000) >> 8 | (local_d0 & 0xff00) << 8 |\n               local_d0 << 0x18;\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0008eb20();\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "undefined **ppuVar2;" type_identifier (pointer_declarator "**ppuVar2" * (pointer_declarator "*ppuVar2" * identifier)) ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "uint *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "uint *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "byte bVar8;" type_identifier identifier ;) (declaration "uint local_ec [4];" type_identifier (array_declarator "local_ec [4]" identifier [ number_literal ]) ;) (declaration "uint local_dc;" type_identifier identifier ;) (declaration "uint local_d8;" type_identifier identifier ;) (declaration "uint local_d4;" type_identifier identifier ;) (declaration "uint local_d0;" type_identifier identifier ;) (declaration "int local_8c;" primitive_type identifier ;) (declaration "int local_88;" primitive_type identifier ;) (declaration "uint local_84;" type_identifier identifier ;) (declaration "undefined1 local_80 [32];" type_identifier (array_declarator "local_80 [32]" identifier [ number_literal ]) ;) (declaration "uint local_60;" type_identifier identifier ;) (declaration "uint local_5c;" type_identifier identifier ;) (declaration "int local_20;" primitive_type identifier ;) (expression_statement "bVar8 = 0;" (assignment_expression "bVar8 = 0" identifier = number_literal) ;) (expression_statement "ppuVar2 = &__DT_PLTGOT;" (assignment_expression "ppuVar2 = &__DT_PLTGOT" identifier = (pointer_expression "&__DT_PLTGOT" & identifier)) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "puVar6 = (uint *)(param_1 + 0xd8);" (assignment_expression "puVar6 = (uint *)(param_1 + 0xd8)" identifier = (cast_expression "(uint *)(param_1 + 0xd8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xd8)" ( (binary_expression "param_1 + 0xd8" identifier + number_literal) )))) ;) (expression_statement "puVar7 = local_ec;" (assignment_expression "puVar7 = local_ec" identifier = identifier) ;) (for_statement "for (iVar5 = 0x1b; iVar5 != 0; iVar5 = iVar5 + -1) {\n    *puVar7 = *puVar6;\n    puVar6 = puVar6 + 1;\n    puVar7 = puVar7 + 1;\n  }" for ( (assignment_expression "iVar5 = 0x1b" identifier = number_literal) ; (binary_expression "iVar5 != 0" identifier != number_literal) ; (assignment_expression "iVar5 = iVar5 + -1" identifier = (binary_expression "iVar5 + -1" identifier + number_literal)) ) (compound_statement "{\n    *puVar7 = *puVar6;\n    puVar6 = puVar6 + 1;\n    puVar7 = puVar7 + 1;\n  }" { (expression_statement "*puVar7 = *puVar6;" (assignment_expression "*puVar7 = *puVar6" (pointer_expression "*puVar7" * identifier) = (pointer_expression "*puVar6" * identifier)) ;) (expression_statement "puVar6 = puVar6 + 1;" (assignment_expression "puVar6 = puVar6 + 1" identifier = (binary_expression "puVar6 + 1" identifier + number_literal)) ;) (expression_statement "puVar7 = puVar7 + 1;" (assignment_expression "puVar7 = puVar7 + 1" identifier = (binary_expression "puVar7 + 1" identifier + number_literal)) ;) })) (expression_statement "FUN_000727b0(local_ec,local_80);" (call_expression "FUN_000727b0(local_ec,local_80)" identifier (argument_list "(local_ec,local_80)" ( identifier , identifier ))) ;) (expression_statement "puVar6 = (uint *)(param_1 + 0x6c);" (assignment_expression "puVar6 = (uint *)(param_1 + 0x6c)" identifier = (cast_expression "(uint *)(param_1 + 0x6c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x6c)" ( (binary_expression "param_1 + 0x6c" identifier + number_literal) )))) ;) (expression_statement "puVar7 = local_ec;" (assignment_expression "puVar7 = local_ec" identifier = identifier) ;) (for_statement "for (iVar5 = 0x1b; iVar5 != 0; iVar5 = iVar5 + -1) {\n    *puVar7 = *puVar6;\n    puVar6 = puVar6 + (uint)bVar8 * -2 + 1;\n    puVar7 = puVar7 + (uint)bVar8 * -2 + 1;\n  }" for ( (assignment_expression "iVar5 = 0x1b" identifier = number_literal) ; (binary_expression "iVar5 != 0" identifier != number_literal) ; (assignment_expression "iVar5 = iVar5 + -1" identifier = (binary_expression "iVar5 + -1" identifier + number_literal)) ) (compound_statement "{\n    *puVar7 = *puVar6;\n    puVar6 = puVar6 + (uint)bVar8 * -2 + 1;\n    puVar7 = puVar7 + (uint)bVar8 * -2 + 1;\n  }" { (expression_statement "*puVar7 = *puVar6;" (assignment_expression "*puVar7 = *puVar6" (pointer_expression "*puVar7" * identifier) = (pointer_expression "*puVar6" * identifier)) ;) (expression_statement "puVar6 = puVar6 + (uint)bVar8 * -2 + 1;" (assignment_expression "puVar6 = puVar6 + (uint)bVar8 * -2 + 1" identifier = (binary_expression "puVar6 + (uint)bVar8 * -2 + 1" (binary_expression "puVar6 + (uint)bVar8 * -2" identifier + (binary_expression "(uint)bVar8 * -2" (cast_expression "(uint)bVar8" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "puVar7 = puVar7 + (uint)bVar8 * -2 + 1;" (assignment_expression "puVar7 = puVar7 + (uint)bVar8 * -2 + 1" identifier = (binary_expression "puVar7 + (uint)bVar8 * -2 + 1" (binary_expression "puVar7 + (uint)bVar8 * -2" identifier + (binary_expression "(uint)bVar8 * -2" (cast_expression "(uint)bVar8" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (expression_statement "FUN_00072230(local_ec,local_80,0x20);" (call_expression "FUN_00072230(local_ec,local_80,0x20)" identifier (argument_list "(local_ec,local_80,0x20)" ( identifier , identifier , number_literal ))) ;) (if_statement "if (local_8c < 0x38) {\n    iVar5 = 0x38 - local_8c;\n  }\n  else {\n    iVar5 = 0x78 - local_8c;\n  }" if (parenthesized_expression "(local_8c < 0x38)" ( (binary_expression "local_8c < 0x38" identifier < number_literal) )) (compound_statement "{\n    iVar5 = 0x38 - local_8c;\n  }" { (expression_statement "iVar5 = 0x38 - local_8c;" (assignment_expression "iVar5 = 0x38 - local_8c" identifier = (binary_expression "0x38 - local_8c" number_literal - identifier)) ;) }) (else_clause "else {\n    iVar5 = 0x78 - local_8c;\n  }" else (compound_statement "{\n    iVar5 = 0x78 - local_8c;\n  }" { (expression_statement "iVar5 = 0x78 - local_8c;" (assignment_expression "iVar5 = 0x78 - local_8c" identifier = (binary_expression "0x78 - local_8c" number_literal - identifier)) ;) }))) (expression_statement "uVar1 = local_88 * 8;" (assignment_expression "uVar1 = local_88 * 8" identifier = (binary_expression "local_88 * 8" identifier * number_literal)) ;) (expression_statement "uVar3 = local_84 >> 0x1d;" (assignment_expression "uVar3 = local_84 >> 0x1d" identifier = (binary_expression "local_84 >> 0x1d" identifier >> number_literal)) ;) (expression_statement "__memset_chk(&local_60,0,iVar5,0x40,ppuVar2,local_84,iVar5);" (call_expression "__memset_chk(&local_60,0,iVar5,0x40,ppuVar2,local_84,iVar5)" identifier (argument_list "(&local_60,0,iVar5,0x40,ppuVar2,local_84,iVar5)" ( (pointer_expression "&local_60" & identifier) , number_literal , identifier , number_literal , identifier , identifier , identifier ))) ;) (expression_statement "local_60 = CONCAT31(local_60._1_3_,0x80);" (assignment_expression "local_60 = CONCAT31(local_60._1_3_,0x80)" identifier = (call_expression "CONCAT31(local_60._1_3_,0x80)" identifier (argument_list "(local_60._1_3_,0x80)" ( (field_expression "local_60._1_3_" identifier . field_identifier) , number_literal )))) ;) (expression_statement "FUN_00072230(local_ec,&local_60,iVar5);" (call_expression "FUN_00072230(local_ec,&local_60,iVar5)" identifier (argument_list "(local_ec,&local_60,iVar5)" ( identifier , (pointer_expression "&local_60" & identifier) , identifier ))) ;) (expression_statement "uVar4 = local_84 << 3;" (assignment_expression "uVar4 = local_84 << 3" identifier = (binary_expression "local_84 << 3" identifier << number_literal)) ;) (expression_statement "local_5c = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | local_84 << 0x1b;" (assignment_expression "local_5c = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | local_84 << 0x1b" identifier = (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | local_84 << 0x1b" (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8" (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8" (binary_expression "uVar4 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar4 & 0xff0000) >> 8" (parenthesized_expression "(uVar4 & 0xff0000)" ( (binary_expression "uVar4 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar4 & 0xff00) << 8" (parenthesized_expression "(uVar4 & 0xff00)" ( (binary_expression "uVar4 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "local_84 << 0x1b" identifier << number_literal))) ;) (expression_statement "local_60 = uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n             (uVar1 | uVar3) << 0x18;" (assignment_expression "local_60 = uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n             (uVar1 | uVar3) << 0x18" identifier = (binary_expression "uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n             (uVar1 | uVar3) << 0x18" (binary_expression "uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8" (binary_expression "uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8" (binary_expression "uVar1 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar1 & 0xff0000) >> 8" (parenthesized_expression "(uVar1 & 0xff0000)" ( (binary_expression "uVar1 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar1 & 0xff00) << 8" (parenthesized_expression "(uVar1 & 0xff00)" ( (binary_expression "uVar1 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "(uVar1 | uVar3) << 0x18" (parenthesized_expression "(uVar1 | uVar3)" ( (binary_expression "uVar1 | uVar3" identifier | identifier) )) << number_literal))) ;) (expression_statement "FUN_00072230(local_ec,&local_60,8);" (call_expression "FUN_00072230(local_ec,&local_60,8)" identifier (argument_list "(local_ec,&local_60,8)" ( identifier , (pointer_expression "&local_60" & identifier) , number_literal ))) ;) (expression_statement "*param_2 = local_ec[0] >> 0x18 | (local_ec[0] & 0xff0000) >> 8 | (local_ec[0] & 0xff00) << 8 |\n             local_ec[0] << 0x18;" (assignment_expression "*param_2 = local_ec[0] >> 0x18 | (local_ec[0] & 0xff0000) >> 8 | (local_ec[0] & 0xff00) << 8 |\n             local_ec[0] << 0x18" (pointer_expression "*param_2" * identifier) = (binary_expression "local_ec[0] >> 0x18 | (local_ec[0] & 0xff0000) >> 8 | (local_ec[0] & 0xff00) << 8 |\n             local_ec[0] << 0x18" (binary_expression "local_ec[0] >> 0x18 | (local_ec[0] & 0xff0000) >> 8 | (local_ec[0] & 0xff00) << 8" (binary_expression "local_ec[0] >> 0x18 | (local_ec[0] & 0xff0000) >> 8" (binary_expression "local_ec[0] >> 0x18" (subscript_expression "local_ec[0]" identifier [ number_literal ]) >> number_literal) | (binary_expression "(local_ec[0] & 0xff0000) >> 8" (parenthesized_expression "(local_ec[0] & 0xff0000)" ( (binary_expression "local_ec[0] & 0xff0000" (subscript_expression "local_ec[0]" identifier [ number_literal ]) & number_literal) )) >> number_literal)) | (binary_expression "(local_ec[0] & 0xff00) << 8" (parenthesized_expression "(local_ec[0] & 0xff00)" ( (binary_expression "local_ec[0] & 0xff00" (subscript_expression "local_ec[0]" identifier [ number_literal ]) & number_literal) )) << number_literal)) | (binary_expression "local_ec[0] << 0x18" (subscript_expression "local_ec[0]" identifier [ number_literal ]) << number_literal))) ;) (expression_statement "param_2[1] = local_ec[1] >> 0x18 | (local_ec[1] & 0xff0000) >> 8 | (local_ec[1] & 0xff00) << 8 |\n               local_ec[1] << 0x18;" (assignment_expression "param_2[1] = local_ec[1] >> 0x18 | (local_ec[1] & 0xff0000) >> 8 | (local_ec[1] & 0xff00) << 8 |\n               local_ec[1] << 0x18" (subscript_expression "param_2[1]" identifier [ number_literal ]) = (binary_expression "local_ec[1] >> 0x18 | (local_ec[1] & 0xff0000) >> 8 | (local_ec[1] & 0xff00) << 8 |\n               local_ec[1] << 0x18" (binary_expression "local_ec[1] >> 0x18 | (local_ec[1] & 0xff0000) >> 8 | (local_ec[1] & 0xff00) << 8" (binary_expression "local_ec[1] >> 0x18 | (local_ec[1] & 0xff0000) >> 8" (binary_expression "local_ec[1] >> 0x18" (subscript_expression "local_ec[1]" identifier [ number_literal ]) >> number_literal) | (binary_expression "(local_ec[1] & 0xff0000) >> 8" (parenthesized_expression "(local_ec[1] & 0xff0000)" ( (binary_expression "local_ec[1] & 0xff0000" (subscript_expression "local_ec[1]" identifier [ number_literal ]) & number_literal) )) >> number_literal)) | (binary_expression "(local_ec[1] & 0xff00) << 8" (parenthesized_expression "(local_ec[1] & 0xff00)" ( (binary_expression "local_ec[1] & 0xff00" (subscript_expression "local_ec[1]" identifier [ number_literal ]) & number_literal) )) << number_literal)) | (binary_expression "local_ec[1] << 0x18" (subscript_expression "local_ec[1]" identifier [ number_literal ]) << number_literal))) ;) (expression_statement "param_2[2] = local_ec[2] >> 0x18 | (local_ec[2] & 0xff0000) >> 8 | (local_ec[2] & 0xff00) << 8 |\n               local_ec[2] << 0x18;" (assignment_expression "param_2[2] = local_ec[2] >> 0x18 | (local_ec[2] & 0xff0000) >> 8 | (local_ec[2] & 0xff00) << 8 |\n               local_ec[2] << 0x18" (subscript_expression "param_2[2]" identifier [ number_literal ]) = (binary_expression "local_ec[2] >> 0x18 | (local_ec[2] & 0xff0000) >> 8 | (local_ec[2] & 0xff00) << 8 |\n               local_ec[2] << 0x18" (binary_expression "local_ec[2] >> 0x18 | (local_ec[2] & 0xff0000) >> 8 | (local_ec[2] & 0xff00) << 8" (binary_expression "local_ec[2] >> 0x18 | (local_ec[2] & 0xff0000) >> 8" (binary_expression "local_ec[2] >> 0x18" (subscript_expression "local_ec[2]" identifier [ number_literal ]) >> number_literal) | (binary_expression "(local_ec[2] & 0xff0000) >> 8" (parenthesized_expression "(local_ec[2] & 0xff0000)" ( (binary_expression "local_ec[2] & 0xff0000" (subscript_expression "local_ec[2]" identifier [ number_literal ]) & number_literal) )) >> number_literal)) | (binary_expression "(local_ec[2] & 0xff00) << 8" (parenthesized_expression "(local_ec[2] & 0xff00)" ( (binary_expression "local_ec[2] & 0xff00" (subscript_expression "local_ec[2]" identifier [ number_literal ]) & number_literal) )) << number_literal)) | (binary_expression "local_ec[2] << 0x18" (subscript_expression "local_ec[2]" identifier [ number_literal ]) << number_literal))) ;) (expression_statement "param_2[3] = local_ec[3] >> 0x18 | (local_ec[3] & 0xff0000) >> 8 | (local_ec[3] & 0xff00) << 8 |\n               local_ec[3] << 0x18;" (assignment_expression "param_2[3] = local_ec[3] >> 0x18 | (local_ec[3] & 0xff0000) >> 8 | (local_ec[3] & 0xff00) << 8 |\n               local_ec[3] << 0x18" (subscript_expression "param_2[3]" identifier [ number_literal ]) = (binary_expression "local_ec[3] >> 0x18 | (local_ec[3] & 0xff0000) >> 8 | (local_ec[3] & 0xff00) << 8 |\n               local_ec[3] << 0x18" (binary_expression "local_ec[3] >> 0x18 | (local_ec[3] & 0xff0000) >> 8 | (local_ec[3] & 0xff00) << 8" (binary_expression "local_ec[3] >> 0x18 | (local_ec[3] & 0xff0000) >> 8" (binary_expression "local_ec[3] >> 0x18" (subscript_expression "local_ec[3]" identifier [ number_literal ]) >> number_literal) | (binary_expression "(local_ec[3] & 0xff0000) >> 8" (parenthesized_expression "(local_ec[3] & 0xff0000)" ( (binary_expression "local_ec[3] & 0xff0000" (subscript_expression "local_ec[3]" identifier [ number_literal ]) & number_literal) )) >> number_literal)) | (binary_expression "(local_ec[3] & 0xff00) << 8" (parenthesized_expression "(local_ec[3] & 0xff00)" ( (binary_expression "local_ec[3] & 0xff00" (subscript_expression "local_ec[3]" identifier [ number_literal ]) & number_literal) )) << number_literal)) | (binary_expression "local_ec[3] << 0x18" (subscript_expression "local_ec[3]" identifier [ number_literal ]) << number_literal))) ;) (expression_statement "param_2[4] = local_dc >> 0x18 | (local_dc & 0xff0000) >> 8 | (local_dc & 0xff00) << 8 |\n               local_dc << 0x18;" (assignment_expression "param_2[4] = local_dc >> 0x18 | (local_dc & 0xff0000) >> 8 | (local_dc & 0xff00) << 8 |\n               local_dc << 0x18" (subscript_expression "param_2[4]" identifier [ number_literal ]) = (binary_expression "local_dc >> 0x18 | (local_dc & 0xff0000) >> 8 | (local_dc & 0xff00) << 8 |\n               local_dc << 0x18" (binary_expression "local_dc >> 0x18 | (local_dc & 0xff0000) >> 8 | (local_dc & 0xff00) << 8" (binary_expression "local_dc >> 0x18 | (local_dc & 0xff0000) >> 8" (binary_expression "local_dc >> 0x18" identifier >> number_literal) | (binary_expression "(local_dc & 0xff0000) >> 8" (parenthesized_expression "(local_dc & 0xff0000)" ( (binary_expression "local_dc & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(local_dc & 0xff00) << 8" (parenthesized_expression "(local_dc & 0xff00)" ( (binary_expression "local_dc & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "local_dc << 0x18" identifier << number_literal))) ;) (expression_statement "param_2[5] = local_d8 >> 0x18 | (local_d8 & 0xff0000) >> 8 | (local_d8 & 0xff00) << 8 |\n               local_d8 << 0x18;" (assignment_expression "param_2[5] = local_d8 >> 0x18 | (local_d8 & 0xff0000) >> 8 | (local_d8 & 0xff00) << 8 |\n               local_d8 << 0x18" (subscript_expression "param_2[5]" identifier [ number_literal ]) = (binary_expression "local_d8 >> 0x18 | (local_d8 & 0xff0000) >> 8 | (local_d8 & 0xff00) << 8 |\n               local_d8 << 0x18" (binary_expression "local_d8 >> 0x18 | (local_d8 & 0xff0000) >> 8 | (local_d8 & 0xff00) << 8" (binary_expression "local_d8 >> 0x18 | (local_d8 & 0xff0000) >> 8" (binary_expression "local_d8 >> 0x18" identifier >> number_literal) | (binary_expression "(local_d8 & 0xff0000) >> 8" (parenthesized_expression "(local_d8 & 0xff0000)" ( (binary_expression "local_d8 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(local_d8 & 0xff00) << 8" (parenthesized_expression "(local_d8 & 0xff00)" ( (binary_expression "local_d8 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "local_d8 << 0x18" identifier << number_literal))) ;) (expression_statement "param_2[6] = local_d4 >> 0x18 | (local_d4 & 0xff0000) >> 8 | (local_d4 & 0xff00) << 8 |\n               local_d4 << 0x18;" (assignment_expression "param_2[6] = local_d4 >> 0x18 | (local_d4 & 0xff0000) >> 8 | (local_d4 & 0xff00) << 8 |\n               local_d4 << 0x18" (subscript_expression "param_2[6]" identifier [ number_literal ]) = (binary_expression "local_d4 >> 0x18 | (local_d4 & 0xff0000) >> 8 | (local_d4 & 0xff00) << 8 |\n               local_d4 << 0x18" (binary_expression "local_d4 >> 0x18 | (local_d4 & 0xff0000) >> 8 | (local_d4 & 0xff00) << 8" (binary_expression "local_d4 >> 0x18 | (local_d4 & 0xff0000) >> 8" (binary_expression "local_d4 >> 0x18" identifier >> number_literal) | (binary_expression "(local_d4 & 0xff0000) >> 8" (parenthesized_expression "(local_d4 & 0xff0000)" ( (binary_expression "local_d4 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(local_d4 & 0xff00) << 8" (parenthesized_expression "(local_d4 & 0xff00)" ( (binary_expression "local_d4 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "local_d4 << 0x18" identifier << number_literal))) ;) (expression_statement "param_2[7] = local_d0 >> 0x18 | (local_d0 & 0xff0000) >> 8 | (local_d0 & 0xff00) << 8 |\n               local_d0 << 0x18;" (assignment_expression "param_2[7] = local_d0 >> 0x18 | (local_d0 & 0xff0000) >> 8 | (local_d0 & 0xff00) << 8 |\n               local_d0 << 0x18" (subscript_expression "param_2[7]" identifier [ number_literal ]) = (binary_expression "local_d0 >> 0x18 | (local_d0 & 0xff0000) >> 8 | (local_d0 & 0xff00) << 8 |\n               local_d0 << 0x18" (binary_expression "local_d0 >> 0x18 | (local_d0 & 0xff0000) >> 8 | (local_d0 & 0xff00) << 8" (binary_expression "local_d0 >> 0x18 | (local_d0 & 0xff0000) >> 8" (binary_expression "local_d0 >> 0x18" identifier >> number_literal) | (binary_expression "(local_d0 & 0xff0000) >> 8" (parenthesized_expression "(local_d0 & 0xff0000)" ( (binary_expression "local_d0 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(local_d0 & 0xff00) << 8" (parenthesized_expression "(local_d0 & 0xff00)" ( (binary_expression "local_d0 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "local_d0 << 0x18" identifier << number_literal))) ;) (if_statement "if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }" if (parenthesized_expression "(local_20 == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 == *(int *)(in_GS_OFFSET + 0x14)" identifier == (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) comment (expression_statement "FUN_0008eb20();" (call_expression "FUN_0008eb20()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n/* WARNING: Unknown calling convention */\n\nvoid hmacsha256_genresult(void *handle,uchar *hmac)\n\n{\n  uint uVar1;\n  int iVar2;\n  undefined **ppuVar3;\n  uint uVar4;\n  uint uVar5;\n  int iVar6;\n  uint32 *puVar7;\n  SHA256_State *pSVar8;\n  int in_GS_OFFSET;\n  byte bVar9;\n  SHA256_State s;\n  uchar intermediate [32];\n  uchar c [64];\n  \n  bVar9 = 0;\n  ppuVar3 = &_GLOBAL_OFFSET_TABLE_;\n  iVar2 = *(int *)(in_GS_OFFSET + 0x14);\n  puVar7 = (uint32 *)((int)handle + 0xd8);\n  pSVar8 = &s;\n  for (iVar6 = 0x1b; iVar6 != 0; iVar6 = iVar6 + -1) {\n    pSVar8->h[0] = *puVar7;\n    puVar7 = puVar7 + 1;\n    pSVar8 = (SHA256_State *)(pSVar8->h + 1);\n  }\n  SHA256_Final(&s,intermediate);\n  puVar7 = (uint32 *)((int)handle + 0x6c);\n  pSVar8 = &s;\n  for (iVar6 = 0x1b; iVar6 != 0; iVar6 = iVar6 + -1) {\n    pSVar8->h[0] = *puVar7;\n    puVar7 = puVar7 + (uint)bVar9 * -2 + 1;\n    pSVar8 = (SHA256_State *)((int)pSVar8 + (uint)bVar9 * -8 + 4);\n  }\n  SHA256_Bytes(&s,intermediate,0x20);\n  if (s.blkused < 0x38) {\n    iVar6 = 0x38 - s.blkused;\n  }\n  else {\n    iVar6 = 0x78 - s.blkused;\n  }\n  uVar1 = s.lenhi * 8;\n  uVar4 = s.lenlo >> 0x1d;\n  __memset_chk(c,0,iVar6,0x40,ppuVar3,s.lenlo);\n  c[0] = 0x80;\n  SHA256_Bytes(&s,c,iVar6);\n  uVar5 = s.lenlo << 3;\n  c._4_4_ = uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8 | s.lenlo << 0x1b;\n  c._0_4_ = uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n            (uVar1 | uVar4) << 0x18;\n  SHA256_Bytes(&s,c,8);\n  *(uint32 *)hmac =\n       s.h[0] >> 0x18 | (s.h[0] & 0xff0000) >> 8 | (s.h[0] & 0xff00) << 8 | s.h[0] << 0x18;\n  *(uint32 *)(hmac + 4) =\n       s.h[1] >> 0x18 | (s.h[1] & 0xff0000) >> 8 | (s.h[1] & 0xff00) << 8 | s.h[1] << 0x18;\n  *(uint32 *)(hmac + 8) =\n       s.h[2] >> 0x18 | (s.h[2] & 0xff0000) >> 8 | (s.h[2] & 0xff00) << 8 | s.h[2] << 0x18;\n  *(uint32 *)(hmac + 0xc) =\n       s.h[3] >> 0x18 | (s.h[3] & 0xff0000) >> 8 | (s.h[3] & 0xff00) << 8 | s.h[3] << 0x18;\n  *(uint32 *)(hmac + 0x10) =\n       s.h[4] >> 0x18 | (s.h[4] & 0xff0000) >> 8 | (s.h[4] & 0xff00) << 8 | s.h[4] << 0x18;\n  *(uint32 *)(hmac + 0x14) =\n       s.h[5] >> 0x18 | (s.h[5] & 0xff0000) >> 8 | (s.h[5] & 0xff00) << 8 | s.h[5] << 0x18;\n  *(uint32 *)(hmac + 0x18) =\n       s.h[6] >> 0x18 | (s.h[6] & 0xff0000) >> 8 | (s.h[6] & 0xff00) << 8 | s.h[6] << 0x18;\n  *(uint32 *)(hmac + 0x1c) =\n       s.h[7] >> 0x18 | (s.h[7] & 0xff0000) >> 8 | (s.h[7] & 0xff00) << 8 | s.h[7] << 0x18;\n  if (iVar2 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail_local();\n}\n\n" comment comment (function_definition "void hmacsha256_genresult(void *handle,uchar *hmac)\n\n{\n  uint uVar1;\n  int iVar2;\n  undefined **ppuVar3;\n  uint uVar4;\n  uint uVar5;\n  int iVar6;\n  uint32 *puVar7;\n  SHA256_State *pSVar8;\n  int in_GS_OFFSET;\n  byte bVar9;\n  SHA256_State s;\n  uchar intermediate [32];\n  uchar c [64];\n  \n  bVar9 = 0;\n  ppuVar3 = &_GLOBAL_OFFSET_TABLE_;\n  iVar2 = *(int *)(in_GS_OFFSET + 0x14);\n  puVar7 = (uint32 *)((int)handle + 0xd8);\n  pSVar8 = &s;\n  for (iVar6 = 0x1b; iVar6 != 0; iVar6 = iVar6 + -1) {\n    pSVar8->h[0] = *puVar7;\n    puVar7 = puVar7 + 1;\n    pSVar8 = (SHA256_State *)(pSVar8->h + 1);\n  }\n  SHA256_Final(&s,intermediate);\n  puVar7 = (uint32 *)((int)handle + 0x6c);\n  pSVar8 = &s;\n  for (iVar6 = 0x1b; iVar6 != 0; iVar6 = iVar6 + -1) {\n    pSVar8->h[0] = *puVar7;\n    puVar7 = puVar7 + (uint)bVar9 * -2 + 1;\n    pSVar8 = (SHA256_State *)((int)pSVar8 + (uint)bVar9 * -8 + 4);\n  }\n  SHA256_Bytes(&s,intermediate,0x20);\n  if (s.blkused < 0x38) {\n    iVar6 = 0x38 - s.blkused;\n  }\n  else {\n    iVar6 = 0x78 - s.blkused;\n  }\n  uVar1 = s.lenhi * 8;\n  uVar4 = s.lenlo >> 0x1d;\n  __memset_chk(c,0,iVar6,0x40,ppuVar3,s.lenlo);\n  c[0] = 0x80;\n  SHA256_Bytes(&s,c,iVar6);\n  uVar5 = s.lenlo << 3;\n  c._4_4_ = uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8 | s.lenlo << 0x1b;\n  c._0_4_ = uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n            (uVar1 | uVar4) << 0x18;\n  SHA256_Bytes(&s,c,8);\n  *(uint32 *)hmac =\n       s.h[0] >> 0x18 | (s.h[0] & 0xff0000) >> 8 | (s.h[0] & 0xff00) << 8 | s.h[0] << 0x18;\n  *(uint32 *)(hmac + 4) =\n       s.h[1] >> 0x18 | (s.h[1] & 0xff0000) >> 8 | (s.h[1] & 0xff00) << 8 | s.h[1] << 0x18;\n  *(uint32 *)(hmac + 8) =\n       s.h[2] >> 0x18 | (s.h[2] & 0xff0000) >> 8 | (s.h[2] & 0xff00) << 8 | s.h[2] << 0x18;\n  *(uint32 *)(hmac + 0xc) =\n       s.h[3] >> 0x18 | (s.h[3] & 0xff0000) >> 8 | (s.h[3] & 0xff00) << 8 | s.h[3] << 0x18;\n  *(uint32 *)(hmac + 0x10) =\n       s.h[4] >> 0x18 | (s.h[4] & 0xff0000) >> 8 | (s.h[4] & 0xff00) << 8 | s.h[4] << 0x18;\n  *(uint32 *)(hmac + 0x14) =\n       s.h[5] >> 0x18 | (s.h[5] & 0xff0000) >> 8 | (s.h[5] & 0xff00) << 8 | s.h[5] << 0x18;\n  *(uint32 *)(hmac + 0x18) =\n       s.h[6] >> 0x18 | (s.h[6] & 0xff0000) >> 8 | (s.h[6] & 0xff00) << 8 | s.h[6] << 0x18;\n  *(uint32 *)(hmac + 0x1c) =\n       s.h[7] >> 0x18 | (s.h[7] & 0xff0000) >> 8 | (s.h[7] & 0xff00) << 8 | s.h[7] << 0x18;\n  if (iVar2 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail_local();\n}" primitive_type (function_declarator "hmacsha256_genresult(void *handle,uchar *hmac)" identifier (parameter_list "(void *handle,uchar *hmac)" ( (parameter_declaration "void *handle" primitive_type (pointer_declarator "*handle" * identifier)) , (parameter_declaration "uchar *hmac" type_identifier (pointer_declarator "*hmac" * identifier)) ))) (compound_statement "{\n  uint uVar1;\n  int iVar2;\n  undefined **ppuVar3;\n  uint uVar4;\n  uint uVar5;\n  int iVar6;\n  uint32 *puVar7;\n  SHA256_State *pSVar8;\n  int in_GS_OFFSET;\n  byte bVar9;\n  SHA256_State s;\n  uchar intermediate [32];\n  uchar c [64];\n  \n  bVar9 = 0;\n  ppuVar3 = &_GLOBAL_OFFSET_TABLE_;\n  iVar2 = *(int *)(in_GS_OFFSET + 0x14);\n  puVar7 = (uint32 *)((int)handle + 0xd8);\n  pSVar8 = &s;\n  for (iVar6 = 0x1b; iVar6 != 0; iVar6 = iVar6 + -1) {\n    pSVar8->h[0] = *puVar7;\n    puVar7 = puVar7 + 1;\n    pSVar8 = (SHA256_State *)(pSVar8->h + 1);\n  }\n  SHA256_Final(&s,intermediate);\n  puVar7 = (uint32 *)((int)handle + 0x6c);\n  pSVar8 = &s;\n  for (iVar6 = 0x1b; iVar6 != 0; iVar6 = iVar6 + -1) {\n    pSVar8->h[0] = *puVar7;\n    puVar7 = puVar7 + (uint)bVar9 * -2 + 1;\n    pSVar8 = (SHA256_State *)((int)pSVar8 + (uint)bVar9 * -8 + 4);\n  }\n  SHA256_Bytes(&s,intermediate,0x20);\n  if (s.blkused < 0x38) {\n    iVar6 = 0x38 - s.blkused;\n  }\n  else {\n    iVar6 = 0x78 - s.blkused;\n  }\n  uVar1 = s.lenhi * 8;\n  uVar4 = s.lenlo >> 0x1d;\n  __memset_chk(c,0,iVar6,0x40,ppuVar3,s.lenlo);\n  c[0] = 0x80;\n  SHA256_Bytes(&s,c,iVar6);\n  uVar5 = s.lenlo << 3;\n  c._4_4_ = uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8 | s.lenlo << 0x1b;\n  c._0_4_ = uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n            (uVar1 | uVar4) << 0x18;\n  SHA256_Bytes(&s,c,8);\n  *(uint32 *)hmac =\n       s.h[0] >> 0x18 | (s.h[0] & 0xff0000) >> 8 | (s.h[0] & 0xff00) << 8 | s.h[0] << 0x18;\n  *(uint32 *)(hmac + 4) =\n       s.h[1] >> 0x18 | (s.h[1] & 0xff0000) >> 8 | (s.h[1] & 0xff00) << 8 | s.h[1] << 0x18;\n  *(uint32 *)(hmac + 8) =\n       s.h[2] >> 0x18 | (s.h[2] & 0xff0000) >> 8 | (s.h[2] & 0xff00) << 8 | s.h[2] << 0x18;\n  *(uint32 *)(hmac + 0xc) =\n       s.h[3] >> 0x18 | (s.h[3] & 0xff0000) >> 8 | (s.h[3] & 0xff00) << 8 | s.h[3] << 0x18;\n  *(uint32 *)(hmac + 0x10) =\n       s.h[4] >> 0x18 | (s.h[4] & 0xff0000) >> 8 | (s.h[4] & 0xff00) << 8 | s.h[4] << 0x18;\n  *(uint32 *)(hmac + 0x14) =\n       s.h[5] >> 0x18 | (s.h[5] & 0xff0000) >> 8 | (s.h[5] & 0xff00) << 8 | s.h[5] << 0x18;\n  *(uint32 *)(hmac + 0x18) =\n       s.h[6] >> 0x18 | (s.h[6] & 0xff0000) >> 8 | (s.h[6] & 0xff00) << 8 | s.h[6] << 0x18;\n  *(uint32 *)(hmac + 0x1c) =\n       s.h[7] >> 0x18 | (s.h[7] & 0xff0000) >> 8 | (s.h[7] & 0xff00) << 8 | s.h[7] << 0x18;\n  if (iVar2 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail_local();\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "undefined **ppuVar3;" type_identifier (pointer_declarator "**ppuVar3" * (pointer_declarator "*ppuVar3" * identifier)) ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "uint32 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "SHA256_State *pSVar8;" type_identifier (pointer_declarator "*pSVar8" * identifier) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "byte bVar9;" type_identifier identifier ;) (declaration "SHA256_State s;" type_identifier identifier ;) (declaration "uchar intermediate [32];" type_identifier (array_declarator "intermediate [32]" identifier [ number_literal ]) ;) (declaration "uchar c [64];" type_identifier (array_declarator "c [64]" identifier [ number_literal ]) ;) (expression_statement "bVar9 = 0;" (assignment_expression "bVar9 = 0" identifier = number_literal) ;) (expression_statement "ppuVar3 = &_GLOBAL_OFFSET_TABLE_;" (assignment_expression "ppuVar3 = &_GLOBAL_OFFSET_TABLE_" identifier = (pointer_expression "&_GLOBAL_OFFSET_TABLE_" & identifier)) ;) (expression_statement "iVar2 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "iVar2 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "puVar7 = (uint32 *)((int)handle + 0xd8);" (assignment_expression "puVar7 = (uint32 *)((int)handle + 0xd8)" identifier = (cast_expression "(uint32 *)((int)handle + 0xd8)" ( (type_descriptor "uint32 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)handle + 0xd8)" ( (binary_expression "(int)handle + 0xd8" (cast_expression "(int)handle" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "pSVar8 = &s;" (assignment_expression "pSVar8 = &s" identifier = (pointer_expression "&s" & identifier)) ;) (for_statement "for (iVar6 = 0x1b; iVar6 != 0; iVar6 = iVar6 + -1) {\n    pSVar8->h[0] = *puVar7;\n    puVar7 = puVar7 + 1;\n    pSVar8 = (SHA256_State *)(pSVar8->h + 1);\n  }" for ( (assignment_expression "iVar6 = 0x1b" identifier = number_literal) ; (binary_expression "iVar6 != 0" identifier != number_literal) ; (assignment_expression "iVar6 = iVar6 + -1" identifier = (binary_expression "iVar6 + -1" identifier + number_literal)) ) (compound_statement "{\n    pSVar8->h[0] = *puVar7;\n    puVar7 = puVar7 + 1;\n    pSVar8 = (SHA256_State *)(pSVar8->h + 1);\n  }" { (expression_statement "pSVar8->h[0] = *puVar7;" (assignment_expression "pSVar8->h[0] = *puVar7" (subscript_expression "pSVar8->h[0]" (field_expression "pSVar8->h" identifier -> field_identifier) [ number_literal ]) = (pointer_expression "*puVar7" * identifier)) ;) (expression_statement "puVar7 = puVar7 + 1;" (assignment_expression "puVar7 = puVar7 + 1" identifier = (binary_expression "puVar7 + 1" identifier + number_literal)) ;) (expression_statement "pSVar8 = (SHA256_State *)(pSVar8->h + 1);" (assignment_expression "pSVar8 = (SHA256_State *)(pSVar8->h + 1)" identifier = (cast_expression "(SHA256_State *)(pSVar8->h + 1)" ( (type_descriptor "SHA256_State *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pSVar8->h + 1)" ( (binary_expression "pSVar8->h + 1" (field_expression "pSVar8->h" identifier -> field_identifier) + number_literal) )))) ;) })) (expression_statement "SHA256_Final(&s,intermediate);" (call_expression "SHA256_Final(&s,intermediate)" identifier (argument_list "(&s,intermediate)" ( (pointer_expression "&s" & identifier) , identifier ))) ;) (expression_statement "puVar7 = (uint32 *)((int)handle + 0x6c);" (assignment_expression "puVar7 = (uint32 *)((int)handle + 0x6c)" identifier = (cast_expression "(uint32 *)((int)handle + 0x6c)" ( (type_descriptor "uint32 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)handle + 0x6c)" ( (binary_expression "(int)handle + 0x6c" (cast_expression "(int)handle" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "pSVar8 = &s;" (assignment_expression "pSVar8 = &s" identifier = (pointer_expression "&s" & identifier)) ;) (for_statement "for (iVar6 = 0x1b; iVar6 != 0; iVar6 = iVar6 + -1) {\n    pSVar8->h[0] = *puVar7;\n    puVar7 = puVar7 + (uint)bVar9 * -2 + 1;\n    pSVar8 = (SHA256_State *)((int)pSVar8 + (uint)bVar9 * -8 + 4);\n  }" for ( (assignment_expression "iVar6 = 0x1b" identifier = number_literal) ; (binary_expression "iVar6 != 0" identifier != number_literal) ; (assignment_expression "iVar6 = iVar6 + -1" identifier = (binary_expression "iVar6 + -1" identifier + number_literal)) ) (compound_statement "{\n    pSVar8->h[0] = *puVar7;\n    puVar7 = puVar7 + (uint)bVar9 * -2 + 1;\n    pSVar8 = (SHA256_State *)((int)pSVar8 + (uint)bVar9 * -8 + 4);\n  }" { (expression_statement "pSVar8->h[0] = *puVar7;" (assignment_expression "pSVar8->h[0] = *puVar7" (subscript_expression "pSVar8->h[0]" (field_expression "pSVar8->h" identifier -> field_identifier) [ number_literal ]) = (pointer_expression "*puVar7" * identifier)) ;) (expression_statement "puVar7 = puVar7 + (uint)bVar9 * -2 + 1;" (assignment_expression "puVar7 = puVar7 + (uint)bVar9 * -2 + 1" identifier = (binary_expression "puVar7 + (uint)bVar9 * -2 + 1" (binary_expression "puVar7 + (uint)bVar9 * -2" identifier + (binary_expression "(uint)bVar9 * -2" (cast_expression "(uint)bVar9" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pSVar8 = (SHA256_State *)((int)pSVar8 + (uint)bVar9 * -8 + 4);" (assignment_expression "pSVar8 = (SHA256_State *)((int)pSVar8 + (uint)bVar9 * -8 + 4)" identifier = (cast_expression "(SHA256_State *)((int)pSVar8 + (uint)bVar9 * -8 + 4)" ( (type_descriptor "SHA256_State *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pSVar8 + (uint)bVar9 * -8 + 4)" ( (binary_expression "(int)pSVar8 + (uint)bVar9 * -8 + 4" (binary_expression "(int)pSVar8 + (uint)bVar9 * -8" (cast_expression "(int)pSVar8" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "(uint)bVar9 * -8" (cast_expression "(uint)bVar9" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal) )))) ;) })) (expression_statement "SHA256_Bytes(&s,intermediate,0x20);" (call_expression "SHA256_Bytes(&s,intermediate,0x20)" identifier (argument_list "(&s,intermediate,0x20)" ( (pointer_expression "&s" & identifier) , identifier , number_literal ))) ;) (if_statement "if (s.blkused < 0x38) {\n    iVar6 = 0x38 - s.blkused;\n  }\n  else {\n    iVar6 = 0x78 - s.blkused;\n  }" if (parenthesized_expression "(s.blkused < 0x38)" ( (binary_expression "s.blkused < 0x38" (field_expression "s.blkused" identifier . field_identifier) < number_literal) )) (compound_statement "{\n    iVar6 = 0x38 - s.blkused;\n  }" { (expression_statement "iVar6 = 0x38 - s.blkused;" (assignment_expression "iVar6 = 0x38 - s.blkused" identifier = (binary_expression "0x38 - s.blkused" number_literal - (field_expression "s.blkused" identifier . field_identifier))) ;) }) (else_clause "else {\n    iVar6 = 0x78 - s.blkused;\n  }" else (compound_statement "{\n    iVar6 = 0x78 - s.blkused;\n  }" { (expression_statement "iVar6 = 0x78 - s.blkused;" (assignment_expression "iVar6 = 0x78 - s.blkused" identifier = (binary_expression "0x78 - s.blkused" number_literal - (field_expression "s.blkused" identifier . field_identifier))) ;) }))) (expression_statement "uVar1 = s.lenhi * 8;" (assignment_expression "uVar1 = s.lenhi * 8" identifier = (binary_expression "s.lenhi * 8" (field_expression "s.lenhi" identifier . field_identifier) * number_literal)) ;) (expression_statement "uVar4 = s.lenlo >> 0x1d;" (assignment_expression "uVar4 = s.lenlo >> 0x1d" identifier = (binary_expression "s.lenlo >> 0x1d" (field_expression "s.lenlo" identifier . field_identifier) >> number_literal)) ;) (expression_statement "__memset_chk(c,0,iVar6,0x40,ppuVar3,s.lenlo);" (call_expression "__memset_chk(c,0,iVar6,0x40,ppuVar3,s.lenlo)" identifier (argument_list "(c,0,iVar6,0x40,ppuVar3,s.lenlo)" ( identifier , number_literal , identifier , number_literal , identifier , (field_expression "s.lenlo" identifier . field_identifier) ))) ;) (expression_statement "c[0] = 0x80;" (assignment_expression "c[0] = 0x80" (subscript_expression "c[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "SHA256_Bytes(&s,c,iVar6);" (call_expression "SHA256_Bytes(&s,c,iVar6)" identifier (argument_list "(&s,c,iVar6)" ( (pointer_expression "&s" & identifier) , identifier , identifier ))) ;) (expression_statement "uVar5 = s.lenlo << 3;" (assignment_expression "uVar5 = s.lenlo << 3" identifier = (binary_expression "s.lenlo << 3" (field_expression "s.lenlo" identifier . field_identifier) << number_literal)) ;) (expression_statement "c._4_4_ = uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8 | s.lenlo << 0x1b;" (assignment_expression "c._4_4_ = uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8 | s.lenlo << 0x1b" (field_expression "c._4_4_" identifier . field_identifier) = (binary_expression "uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8 | s.lenlo << 0x1b" (binary_expression "uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8" (binary_expression "uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8" (binary_expression "uVar5 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar5 & 0xff0000) >> 8" (parenthesized_expression "(uVar5 & 0xff0000)" ( (binary_expression "uVar5 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar5 & 0xff00) << 8" (parenthesized_expression "(uVar5 & 0xff00)" ( (binary_expression "uVar5 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "s.lenlo << 0x1b" (field_expression "s.lenlo" identifier . field_identifier) << number_literal))) ;) (expression_statement "c._0_4_ = uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n            (uVar1 | uVar4) << 0x18;" (assignment_expression "c._0_4_ = uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n            (uVar1 | uVar4) << 0x18" (field_expression "c._0_4_" identifier . field_identifier) = (binary_expression "uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n            (uVar1 | uVar4) << 0x18" (binary_expression "uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8" (binary_expression "uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8" (binary_expression "uVar1 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar1 & 0xff0000) >> 8" (parenthesized_expression "(uVar1 & 0xff0000)" ( (binary_expression "uVar1 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar1 & 0xff00) << 8" (parenthesized_expression "(uVar1 & 0xff00)" ( (binary_expression "uVar1 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "(uVar1 | uVar4) << 0x18" (parenthesized_expression "(uVar1 | uVar4)" ( (binary_expression "uVar1 | uVar4" identifier | identifier) )) << number_literal))) ;) (expression_statement "SHA256_Bytes(&s,c,8);" (call_expression "SHA256_Bytes(&s,c,8)" identifier (argument_list "(&s,c,8)" ( (pointer_expression "&s" & identifier) , identifier , number_literal ))) ;) (expression_statement "*(uint32 *)hmac =\n       s.h[0] >> 0x18 | (s.h[0] & 0xff0000) >> 8 | (s.h[0] & 0xff00) << 8 | s.h[0] << 0x18;" (assignment_expression "*(uint32 *)hmac =\n       s.h[0] >> 0x18 | (s.h[0] & 0xff0000) >> 8 | (s.h[0] & 0xff00) << 8 | s.h[0] << 0x18" (pointer_expression "*(uint32 *)hmac" * (cast_expression "(uint32 *)hmac" ( (type_descriptor "uint32 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (binary_expression "s.h[0] >> 0x18 | (s.h[0] & 0xff0000) >> 8 | (s.h[0] & 0xff00) << 8 | s.h[0] << 0x18" (binary_expression "s.h[0] >> 0x18 | (s.h[0] & 0xff0000) >> 8 | (s.h[0] & 0xff00) << 8" (binary_expression "s.h[0] >> 0x18 | (s.h[0] & 0xff0000) >> 8" (binary_expression "s.h[0] >> 0x18" (subscript_expression "s.h[0]" (field_expression "s.h" identifier . field_identifier) [ number_literal ]) >> number_literal) | (binary_expression "(s.h[0] & 0xff0000) >> 8" (parenthesized_expression "(s.h[0] & 0xff0000)" ( (binary_expression "s.h[0] & 0xff0000" (subscript_expression "s.h[0]" (field_expression "s.h" identifier . field_identifier) [ number_literal ]) & number_literal) )) >> number_literal)) | (binary_expression "(s.h[0] & 0xff00) << 8" (parenthesized_expression "(s.h[0] & 0xff00)" ( (binary_expression "s.h[0] & 0xff00" (subscript_expression "s.h[0]" (field_expression "s.h" identifier . field_identifier) [ number_literal ]) & number_literal) )) << number_literal)) | (binary_expression "s.h[0] << 0x18" (subscript_expression "s.h[0]" (field_expression "s.h" identifier . field_identifier) [ number_literal ]) << number_literal))) ;) (expression_statement "*(uint32 *)(hmac + 4) =\n       s.h[1] >> 0x18 | (s.h[1] & 0xff0000) >> 8 | (s.h[1] & 0xff00) << 8 | s.h[1] << 0x18;" (assignment_expression "*(uint32 *)(hmac + 4) =\n       s.h[1] >> 0x18 | (s.h[1] & 0xff0000) >> 8 | (s.h[1] & 0xff00) << 8 | s.h[1] << 0x18" (pointer_expression "*(uint32 *)(hmac + 4)" * (cast_expression "(uint32 *)(hmac + 4)" ( (type_descriptor "uint32 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(hmac + 4)" ( (binary_expression "hmac + 4" identifier + number_literal) )))) = (binary_expression "s.h[1] >> 0x18 | (s.h[1] & 0xff0000) >> 8 | (s.h[1] & 0xff00) << 8 | s.h[1] << 0x18" (binary_expression "s.h[1] >> 0x18 | (s.h[1] & 0xff0000) >> 8 | (s.h[1] & 0xff00) << 8" (binary_expression "s.h[1] >> 0x18 | (s.h[1] & 0xff0000) >> 8" (binary_expression "s.h[1] >> 0x18" (subscript_expression "s.h[1]" (field_expression "s.h" identifier . field_identifier) [ number_literal ]) >> number_literal) | (binary_expression "(s.h[1] & 0xff0000) >> 8" (parenthesized_expression "(s.h[1] & 0xff0000)" ( (binary_expression "s.h[1] & 0xff0000" (subscript_expression "s.h[1]" (field_expression "s.h" identifier . field_identifier) [ number_literal ]) & number_literal) )) >> number_literal)) | (binary_expression "(s.h[1] & 0xff00) << 8" (parenthesized_expression "(s.h[1] & 0xff00)" ( (binary_expression "s.h[1] & 0xff00" (subscript_expression "s.h[1]" (field_expression "s.h" identifier . field_identifier) [ number_literal ]) & number_literal) )) << number_literal)) | (binary_expression "s.h[1] << 0x18" (subscript_expression "s.h[1]" (field_expression "s.h" identifier . field_identifier) [ number_literal ]) << number_literal))) ;) (expression_statement "*(uint32 *)(hmac + 8) =\n       s.h[2] >> 0x18 | (s.h[2] & 0xff0000) >> 8 | (s.h[2] & 0xff00) << 8 | s.h[2] << 0x18;" (assignment_expression "*(uint32 *)(hmac + 8) =\n       s.h[2] >> 0x18 | (s.h[2] & 0xff0000) >> 8 | (s.h[2] & 0xff00) << 8 | s.h[2] << 0x18" (pointer_expression "*(uint32 *)(hmac + 8)" * (cast_expression "(uint32 *)(hmac + 8)" ( (type_descriptor "uint32 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(hmac + 8)" ( (binary_expression "hmac + 8" identifier + number_literal) )))) = (binary_expression "s.h[2] >> 0x18 | (s.h[2] & 0xff0000) >> 8 | (s.h[2] & 0xff00) << 8 | s.h[2] << 0x18" (binary_expression "s.h[2] >> 0x18 | (s.h[2] & 0xff0000) >> 8 | (s.h[2] & 0xff00) << 8" (binary_expression "s.h[2] >> 0x18 | (s.h[2] & 0xff0000) >> 8" (binary_expression "s.h[2] >> 0x18" (subscript_expression "s.h[2]" (field_expression "s.h" identifier . field_identifier) [ number_literal ]) >> number_literal) | (binary_expression "(s.h[2] & 0xff0000) >> 8" (parenthesized_expression "(s.h[2] & 0xff0000)" ( (binary_expression "s.h[2] & 0xff0000" (subscript_expression "s.h[2]" (field_expression "s.h" identifier . field_identifier) [ number_literal ]) & number_literal) )) >> number_literal)) | (binary_expression "(s.h[2] & 0xff00) << 8" (parenthesized_expression "(s.h[2] & 0xff00)" ( (binary_expression "s.h[2] & 0xff00" (subscript_expression "s.h[2]" (field_expression "s.h" identifier . field_identifier) [ number_literal ]) & number_literal) )) << number_literal)) | (binary_expression "s.h[2] << 0x18" (subscript_expression "s.h[2]" (field_expression "s.h" identifier . field_identifier) [ number_literal ]) << number_literal))) ;) (expression_statement "*(uint32 *)(hmac + 0xc) =\n       s.h[3] >> 0x18 | (s.h[3] & 0xff0000) >> 8 | (s.h[3] & 0xff00) << 8 | s.h[3] << 0x18;" (assignment_expression "*(uint32 *)(hmac + 0xc) =\n       s.h[3] >> 0x18 | (s.h[3] & 0xff0000) >> 8 | (s.h[3] & 0xff00) << 8 | s.h[3] << 0x18" (pointer_expression "*(uint32 *)(hmac + 0xc)" * (cast_expression "(uint32 *)(hmac + 0xc)" ( (type_descriptor "uint32 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(hmac + 0xc)" ( (binary_expression "hmac + 0xc" identifier + number_literal) )))) = (binary_expression "s.h[3] >> 0x18 | (s.h[3] & 0xff0000) >> 8 | (s.h[3] & 0xff00) << 8 | s.h[3] << 0x18" (binary_expression "s.h[3] >> 0x18 | (s.h[3] & 0xff0000) >> 8 | (s.h[3] & 0xff00) << 8" (binary_expression "s.h[3] >> 0x18 | (s.h[3] & 0xff0000) >> 8" (binary_expression "s.h[3] >> 0x18" (subscript_expression "s.h[3]" (field_expression "s.h" identifier . field_identifier) [ number_literal ]) >> number_literal) | (binary_expression "(s.h[3] & 0xff0000) >> 8" (parenthesized_expression "(s.h[3] & 0xff0000)" ( (binary_expression "s.h[3] & 0xff0000" (subscript_expression "s.h[3]" (field_expression "s.h" identifier . field_identifier) [ number_literal ]) & number_literal) )) >> number_literal)) | (binary_expression "(s.h[3] & 0xff00) << 8" (parenthesized_expression "(s.h[3] & 0xff00)" ( (binary_expression "s.h[3] & 0xff00" (subscript_expression "s.h[3]" (field_expression "s.h" identifier . field_identifier) [ number_literal ]) & number_literal) )) << number_literal)) | (binary_expression "s.h[3] << 0x18" (subscript_expression "s.h[3]" (field_expression "s.h" identifier . field_identifier) [ number_literal ]) << number_literal))) ;) (expression_statement "*(uint32 *)(hmac + 0x10) =\n       s.h[4] >> 0x18 | (s.h[4] & 0xff0000) >> 8 | (s.h[4] & 0xff00) << 8 | s.h[4] << 0x18;" (assignment_expression "*(uint32 *)(hmac + 0x10) =\n       s.h[4] >> 0x18 | (s.h[4] & 0xff0000) >> 8 | (s.h[4] & 0xff00) << 8 | s.h[4] << 0x18" (pointer_expression "*(uint32 *)(hmac + 0x10)" * (cast_expression "(uint32 *)(hmac + 0x10)" ( (type_descriptor "uint32 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(hmac + 0x10)" ( (binary_expression "hmac + 0x10" identifier + number_literal) )))) = (binary_expression "s.h[4] >> 0x18 | (s.h[4] & 0xff0000) >> 8 | (s.h[4] & 0xff00) << 8 | s.h[4] << 0x18" (binary_expression "s.h[4] >> 0x18 | (s.h[4] & 0xff0000) >> 8 | (s.h[4] & 0xff00) << 8" (binary_expression "s.h[4] >> 0x18 | (s.h[4] & 0xff0000) >> 8" (binary_expression "s.h[4] >> 0x18" (subscript_expression "s.h[4]" (field_expression "s.h" identifier . field_identifier) [ number_literal ]) >> number_literal) | (binary_expression "(s.h[4] & 0xff0000) >> 8" (parenthesized_expression "(s.h[4] & 0xff0000)" ( (binary_expression "s.h[4] & 0xff0000" (subscript_expression "s.h[4]" (field_expression "s.h" identifier . field_identifier) [ number_literal ]) & number_literal) )) >> number_literal)) | (binary_expression "(s.h[4] & 0xff00) << 8" (parenthesized_expression "(s.h[4] & 0xff00)" ( (binary_expression "s.h[4] & 0xff00" (subscript_expression "s.h[4]" (field_expression "s.h" identifier . field_identifier) [ number_literal ]) & number_literal) )) << number_literal)) | (binary_expression "s.h[4] << 0x18" (subscript_expression "s.h[4]" (field_expression "s.h" identifier . field_identifier) [ number_literal ]) << number_literal))) ;) (expression_statement "*(uint32 *)(hmac + 0x14) =\n       s.h[5] >> 0x18 | (s.h[5] & 0xff0000) >> 8 | (s.h[5] & 0xff00) << 8 | s.h[5] << 0x18;" (assignment_expression "*(uint32 *)(hmac + 0x14) =\n       s.h[5] >> 0x18 | (s.h[5] & 0xff0000) >> 8 | (s.h[5] & 0xff00) << 8 | s.h[5] << 0x18" (pointer_expression "*(uint32 *)(hmac + 0x14)" * (cast_expression "(uint32 *)(hmac + 0x14)" ( (type_descriptor "uint32 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(hmac + 0x14)" ( (binary_expression "hmac + 0x14" identifier + number_literal) )))) = (binary_expression "s.h[5] >> 0x18 | (s.h[5] & 0xff0000) >> 8 | (s.h[5] & 0xff00) << 8 | s.h[5] << 0x18" (binary_expression "s.h[5] >> 0x18 | (s.h[5] & 0xff0000) >> 8 | (s.h[5] & 0xff00) << 8" (binary_expression "s.h[5] >> 0x18 | (s.h[5] & 0xff0000) >> 8" (binary_expression "s.h[5] >> 0x18" (subscript_expression "s.h[5]" (field_expression "s.h" identifier . field_identifier) [ number_literal ]) >> number_literal) | (binary_expression "(s.h[5] & 0xff0000) >> 8" (parenthesized_expression "(s.h[5] & 0xff0000)" ( (binary_expression "s.h[5] & 0xff0000" (subscript_expression "s.h[5]" (field_expression "s.h" identifier . field_identifier) [ number_literal ]) & number_literal) )) >> number_literal)) | (binary_expression "(s.h[5] & 0xff00) << 8" (parenthesized_expression "(s.h[5] & 0xff00)" ( (binary_expression "s.h[5] & 0xff00" (subscript_expression "s.h[5]" (field_expression "s.h" identifier . field_identifier) [ number_literal ]) & number_literal) )) << number_literal)) | (binary_expression "s.h[5] << 0x18" (subscript_expression "s.h[5]" (field_expression "s.h" identifier . field_identifier) [ number_literal ]) << number_literal))) ;) (expression_statement "*(uint32 *)(hmac + 0x18) =\n       s.h[6] >> 0x18 | (s.h[6] & 0xff0000) >> 8 | (s.h[6] & 0xff00) << 8 | s.h[6] << 0x18;" (assignment_expression "*(uint32 *)(hmac + 0x18) =\n       s.h[6] >> 0x18 | (s.h[6] & 0xff0000) >> 8 | (s.h[6] & 0xff00) << 8 | s.h[6] << 0x18" (pointer_expression "*(uint32 *)(hmac + 0x18)" * (cast_expression "(uint32 *)(hmac + 0x18)" ( (type_descriptor "uint32 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(hmac + 0x18)" ( (binary_expression "hmac + 0x18" identifier + number_literal) )))) = (binary_expression "s.h[6] >> 0x18 | (s.h[6] & 0xff0000) >> 8 | (s.h[6] & 0xff00) << 8 | s.h[6] << 0x18" (binary_expression "s.h[6] >> 0x18 | (s.h[6] & 0xff0000) >> 8 | (s.h[6] & 0xff00) << 8" (binary_expression "s.h[6] >> 0x18 | (s.h[6] & 0xff0000) >> 8" (binary_expression "s.h[6] >> 0x18" (subscript_expression "s.h[6]" (field_expression "s.h" identifier . field_identifier) [ number_literal ]) >> number_literal) | (binary_expression "(s.h[6] & 0xff0000) >> 8" (parenthesized_expression "(s.h[6] & 0xff0000)" ( (binary_expression "s.h[6] & 0xff0000" (subscript_expression "s.h[6]" (field_expression "s.h" identifier . field_identifier) [ number_literal ]) & number_literal) )) >> number_literal)) | (binary_expression "(s.h[6] & 0xff00) << 8" (parenthesized_expression "(s.h[6] & 0xff00)" ( (binary_expression "s.h[6] & 0xff00" (subscript_expression "s.h[6]" (field_expression "s.h" identifier . field_identifier) [ number_literal ]) & number_literal) )) << number_literal)) | (binary_expression "s.h[6] << 0x18" (subscript_expression "s.h[6]" (field_expression "s.h" identifier . field_identifier) [ number_literal ]) << number_literal))) ;) (expression_statement "*(uint32 *)(hmac + 0x1c) =\n       s.h[7] >> 0x18 | (s.h[7] & 0xff0000) >> 8 | (s.h[7] & 0xff00) << 8 | s.h[7] << 0x18;" (assignment_expression "*(uint32 *)(hmac + 0x1c) =\n       s.h[7] >> 0x18 | (s.h[7] & 0xff0000) >> 8 | (s.h[7] & 0xff00) << 8 | s.h[7] << 0x18" (pointer_expression "*(uint32 *)(hmac + 0x1c)" * (cast_expression "(uint32 *)(hmac + 0x1c)" ( (type_descriptor "uint32 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(hmac + 0x1c)" ( (binary_expression "hmac + 0x1c" identifier + number_literal) )))) = (binary_expression "s.h[7] >> 0x18 | (s.h[7] & 0xff0000) >> 8 | (s.h[7] & 0xff00) << 8 | s.h[7] << 0x18" (binary_expression "s.h[7] >> 0x18 | (s.h[7] & 0xff0000) >> 8 | (s.h[7] & 0xff00) << 8" (binary_expression "s.h[7] >> 0x18 | (s.h[7] & 0xff0000) >> 8" (binary_expression "s.h[7] >> 0x18" (subscript_expression "s.h[7]" (field_expression "s.h" identifier . field_identifier) [ number_literal ]) >> number_literal) | (binary_expression "(s.h[7] & 0xff0000) >> 8" (parenthesized_expression "(s.h[7] & 0xff0000)" ( (binary_expression "s.h[7] & 0xff0000" (subscript_expression "s.h[7]" (field_expression "s.h" identifier . field_identifier) [ number_literal ]) & number_literal) )) >> number_literal)) | (binary_expression "(s.h[7] & 0xff00) << 8" (parenthesized_expression "(s.h[7] & 0xff00)" ( (binary_expression "s.h[7] & 0xff00" (subscript_expression "s.h[7]" (field_expression "s.h" identifier . field_identifier) [ number_literal ]) & number_literal) )) << number_literal)) | (binary_expression "s.h[7] << 0x18" (subscript_expression "s.h[7]" (field_expression "s.h" identifier . field_identifier) [ number_literal ]) << number_literal))) ;) (if_statement "if (iVar2 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }" if (parenthesized_expression "(iVar2 == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "iVar2 == *(int *)(in_GS_OFFSET + 0x14)" identifier == (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) comment (expression_statement "__stack_chk_fail_local();" (call_expression "__stack_chk_fail_local()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "void FUN_000729a0(int param_1,uint *param_2)\n\n{\n  uint uVar1;\n  undefined **ppuVar2;\n  uint uVar3;\n  uint uVar4;\n  int iVar5;\n  uint *puVar6;\n  uint *puVar7;\n  int in_GS_OFFSET;\n  byte bVar8;\n  uint local_ec [4];\n  uint local_dc;\n  uint local_d8;\n  uint local_d4;\n  uint local_d0;\n  int local_8c;\n  int local_88;\n  uint local_84;\n  undefined1 local_80 [32];\n  uint local_60;\n  uint local_5c;\n  int local_20;\n  \n  bVar8 = 0;\n  ppuVar2 = &__DT_PLTGOT;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  puVar6 = (uint *)(param_1 + 0xd8);\n  puVar7 = local_ec;\n  for (iVar5 = 0x1b; iVar5 != 0; iVar5 = iVar5 + -1) {\n    *puVar7 = *puVar6;\n    puVar6 = puVar6 + 1;\n    puVar7 = puVar7 + 1;\n  }\n  FUN_000727b0(local_ec,local_80);\n  puVar6 = (uint *)(param_1 + 0x6c);\n  puVar7 = local_ec;\n  for (iVar5 = 0x1b; iVar5 != 0; iVar5 = iVar5 + -1) {\n    *puVar7 = *puVar6;\n    puVar6 = puVar6 + (uint)bVar8 * -2 + 1;\n    puVar7 = puVar7 + (uint)bVar8 * -2 + 1;\n  }\n  FUN_00072230(local_ec,local_80,0x20);\n  if (local_8c < 0x38) {\n    iVar5 = 0x38 - local_8c;\n  }\n  else {\n    iVar5 = 0x78 - local_8c;\n  }\n  uVar1 = local_88 * 8;\n  uVar3 = local_84 >> 0x1d;\n  __memset_chk(&local_60,0,iVar5,0x40,ppuVar2,local_84,iVar5);\n  local_60 = CONCAT31(local_60._1_3_,0x80);\n  FUN_00072230(local_ec,&local_60,iVar5);\n  uVar4 = local_84 << 3;\n  local_5c = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | local_84 << 0x1b;\n  local_60 = uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n             (uVar1 | uVar3) << 0x18;\n  FUN_00072230(local_ec,&local_60,8);\n  *param_2 = local_ec[0] >> 0x18 | (local_ec[0] & 0xff0000) >> 8 | (local_ec[0] & 0xff00) << 8 |\n             local_ec[0] << 0x18;\n  param_2[1] = local_ec[1] >> 0x18 | (local_ec[1] & 0xff0000) >> 8 | (local_ec[1] & 0xff00) << 8 |\n               local_ec[1] << 0x18;\n  param_2[2] = local_ec[2] >> 0x18 | (local_ec[2] & 0xff0000) >> 8 | (local_ec[2] & 0xff00) << 8 |\n               local_ec[2] << 0x18;\n  param_2[3] = local_ec[3] >> 0x18 | (local_ec[3] & 0xff0000) >> 8 | (local_ec[3] & 0xff00) << 8 |\n               local_ec[3] << 0x18;\n  param_2[4] = local_dc >> 0x18 | (local_dc & 0xff0000) >> 8 | (local_dc & 0xff00) << 8 |\n               local_dc << 0x18;\n  param_2[5] = local_d8 >> 0x18 | (local_d8 & 0xff0000) >> 8 | (local_d8 & 0xff00) << 8 |\n               local_d8 << 0x18;\n  param_2[6] = local_d4 >> 0x18 | (local_d4 & 0xff0000) >> 8 | (local_d4 & 0xff00) << 8 |\n               local_d4 << 0x18;\n  param_2[7] = local_d0 >> 0x18 | (local_d0 & 0xff0000) >> 8 | (local_d0 & 0xff00) << 8 |\n               local_d0 << 0x18;\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    \n  FUN_0008eb20();\n}\n\n" (function_definition "void FUN_000729a0(int param_1,uint *param_2)\n\n{\n  uint uVar1;\n  undefined **ppuVar2;\n  uint uVar3;\n  uint uVar4;\n  int iVar5;\n  uint *puVar6;\n  uint *puVar7;\n  int in_GS_OFFSET;\n  byte bVar8;\n  uint local_ec [4];\n  uint local_dc;\n  uint local_d8;\n  uint local_d4;\n  uint local_d0;\n  int local_8c;\n  int local_88;\n  uint local_84;\n  undefined1 local_80 [32];\n  uint local_60;\n  uint local_5c;\n  int local_20;\n  \n  bVar8 = 0;\n  ppuVar2 = &__DT_PLTGOT;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  puVar6 = (uint *)(param_1 + 0xd8);\n  puVar7 = local_ec;\n  for (iVar5 = 0x1b; iVar5 != 0; iVar5 = iVar5 + -1) {\n    *puVar7 = *puVar6;\n    puVar6 = puVar6 + 1;\n    puVar7 = puVar7 + 1;\n  }\n  FUN_000727b0(local_ec,local_80);\n  puVar6 = (uint *)(param_1 + 0x6c);\n  puVar7 = local_ec;\n  for (iVar5 = 0x1b; iVar5 != 0; iVar5 = iVar5 + -1) {\n    *puVar7 = *puVar6;\n    puVar6 = puVar6 + (uint)bVar8 * -2 + 1;\n    puVar7 = puVar7 + (uint)bVar8 * -2 + 1;\n  }\n  FUN_00072230(local_ec,local_80,0x20);\n  if (local_8c < 0x38) {\n    iVar5 = 0x38 - local_8c;\n  }\n  else {\n    iVar5 = 0x78 - local_8c;\n  }\n  uVar1 = local_88 * 8;\n  uVar3 = local_84 >> 0x1d;\n  __memset_chk(&local_60,0,iVar5,0x40,ppuVar2,local_84,iVar5);\n  local_60 = CONCAT31(local_60._1_3_,0x80);\n  FUN_00072230(local_ec,&local_60,iVar5);\n  uVar4 = local_84 << 3;\n  local_5c = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | local_84 << 0x1b;\n  local_60 = uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n             (uVar1 | uVar3) << 0x18;\n  FUN_00072230(local_ec,&local_60,8);\n  *param_2 = local_ec[0] >> 0x18 | (local_ec[0] & 0xff0000) >> 8 | (local_ec[0] & 0xff00) << 8 |\n             local_ec[0] << 0x18;\n  param_2[1] = local_ec[1] >> 0x18 | (local_ec[1] & 0xff0000) >> 8 | (local_ec[1] & 0xff00) << 8 |\n               local_ec[1] << 0x18;\n  param_2[2] = local_ec[2] >> 0x18 | (local_ec[2] & 0xff0000) >> 8 | (local_ec[2] & 0xff00) << 8 |\n               local_ec[2] << 0x18;\n  param_2[3] = local_ec[3] >> 0x18 | (local_ec[3] & 0xff0000) >> 8 | (local_ec[3] & 0xff00) << 8 |\n               local_ec[3] << 0x18;\n  param_2[4] = local_dc >> 0x18 | (local_dc & 0xff0000) >> 8 | (local_dc & 0xff00) << 8 |\n               local_dc << 0x18;\n  param_2[5] = local_d8 >> 0x18 | (local_d8 & 0xff0000) >> 8 | (local_d8 & 0xff00) << 8 |\n               local_d8 << 0x18;\n  param_2[6] = local_d4 >> 0x18 | (local_d4 & 0xff0000) >> 8 | (local_d4 & 0xff00) << 8 |\n               local_d4 << 0x18;\n  param_2[7] = local_d0 >> 0x18 | (local_d0 & 0xff0000) >> 8 | (local_d0 & 0xff00) << 8 |\n               local_d0 << 0x18;\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    \n  FUN_0008eb20();\n}" primitive_type (function_declarator "FUN_000729a0(int param_1,uint *param_2)" identifier (parameter_list "(int param_1,uint *param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "uint *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  uint uVar1;\n  undefined **ppuVar2;\n  uint uVar3;\n  uint uVar4;\n  int iVar5;\n  uint *puVar6;\n  uint *puVar7;\n  int in_GS_OFFSET;\n  byte bVar8;\n  uint local_ec [4];\n  uint local_dc;\n  uint local_d8;\n  uint local_d4;\n  uint local_d0;\n  int local_8c;\n  int local_88;\n  uint local_84;\n  undefined1 local_80 [32];\n  uint local_60;\n  uint local_5c;\n  int local_20;\n  \n  bVar8 = 0;\n  ppuVar2 = &__DT_PLTGOT;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  puVar6 = (uint *)(param_1 + 0xd8);\n  puVar7 = local_ec;\n  for (iVar5 = 0x1b; iVar5 != 0; iVar5 = iVar5 + -1) {\n    *puVar7 = *puVar6;\n    puVar6 = puVar6 + 1;\n    puVar7 = puVar7 + 1;\n  }\n  FUN_000727b0(local_ec,local_80);\n  puVar6 = (uint *)(param_1 + 0x6c);\n  puVar7 = local_ec;\n  for (iVar5 = 0x1b; iVar5 != 0; iVar5 = iVar5 + -1) {\n    *puVar7 = *puVar6;\n    puVar6 = puVar6 + (uint)bVar8 * -2 + 1;\n    puVar7 = puVar7 + (uint)bVar8 * -2 + 1;\n  }\n  FUN_00072230(local_ec,local_80,0x20);\n  if (local_8c < 0x38) {\n    iVar5 = 0x38 - local_8c;\n  }\n  else {\n    iVar5 = 0x78 - local_8c;\n  }\n  uVar1 = local_88 * 8;\n  uVar3 = local_84 >> 0x1d;\n  __memset_chk(&local_60,0,iVar5,0x40,ppuVar2,local_84,iVar5);\n  local_60 = CONCAT31(local_60._1_3_,0x80);\n  FUN_00072230(local_ec,&local_60,iVar5);\n  uVar4 = local_84 << 3;\n  local_5c = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | local_84 << 0x1b;\n  local_60 = uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n             (uVar1 | uVar3) << 0x18;\n  FUN_00072230(local_ec,&local_60,8);\n  *param_2 = local_ec[0] >> 0x18 | (local_ec[0] & 0xff0000) >> 8 | (local_ec[0] & 0xff00) << 8 |\n             local_ec[0] << 0x18;\n  param_2[1] = local_ec[1] >> 0x18 | (local_ec[1] & 0xff0000) >> 8 | (local_ec[1] & 0xff00) << 8 |\n               local_ec[1] << 0x18;\n  param_2[2] = local_ec[2] >> 0x18 | (local_ec[2] & 0xff0000) >> 8 | (local_ec[2] & 0xff00) << 8 |\n               local_ec[2] << 0x18;\n  param_2[3] = local_ec[3] >> 0x18 | (local_ec[3] & 0xff0000) >> 8 | (local_ec[3] & 0xff00) << 8 |\n               local_ec[3] << 0x18;\n  param_2[4] = local_dc >> 0x18 | (local_dc & 0xff0000) >> 8 | (local_dc & 0xff00) << 8 |\n               local_dc << 0x18;\n  param_2[5] = local_d8 >> 0x18 | (local_d8 & 0xff0000) >> 8 | (local_d8 & 0xff00) << 8 |\n               local_d8 << 0x18;\n  param_2[6] = local_d4 >> 0x18 | (local_d4 & 0xff0000) >> 8 | (local_d4 & 0xff00) << 8 |\n               local_d4 << 0x18;\n  param_2[7] = local_d0 >> 0x18 | (local_d0 & 0xff0000) >> 8 | (local_d0 & 0xff00) << 8 |\n               local_d0 << 0x18;\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    \n  FUN_0008eb20();\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "undefined **ppuVar2;" type_identifier (pointer_declarator "**ppuVar2" * (pointer_declarator "*ppuVar2" * identifier)) ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "uint *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "uint *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "byte bVar8;" type_identifier identifier ;) (declaration "uint local_ec [4];" type_identifier (array_declarator "local_ec [4]" identifier [ number_literal ]) ;) (declaration "uint local_dc;" type_identifier identifier ;) (declaration "uint local_d8;" type_identifier identifier ;) (declaration "uint local_d4;" type_identifier identifier ;) (declaration "uint local_d0;" type_identifier identifier ;) (declaration "int local_8c;" primitive_type identifier ;) (declaration "int local_88;" primitive_type identifier ;) (declaration "uint local_84;" type_identifier identifier ;) (declaration "undefined1 local_80 [32];" type_identifier (array_declarator "local_80 [32]" identifier [ number_literal ]) ;) (declaration "uint local_60;" type_identifier identifier ;) (declaration "uint local_5c;" type_identifier identifier ;) (declaration "int local_20;" primitive_type identifier ;) (expression_statement "bVar8 = 0;" (assignment_expression "bVar8 = 0" identifier = number_literal) ;) (expression_statement "ppuVar2 = &__DT_PLTGOT;" (assignment_expression "ppuVar2 = &__DT_PLTGOT" identifier = (pointer_expression "&__DT_PLTGOT" & identifier)) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "puVar6 = (uint *)(param_1 + 0xd8);" (assignment_expression "puVar6 = (uint *)(param_1 + 0xd8)" identifier = (cast_expression "(uint *)(param_1 + 0xd8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xd8)" ( (binary_expression "param_1 + 0xd8" identifier + number_literal) )))) ;) (expression_statement "puVar7 = local_ec;" (assignment_expression "puVar7 = local_ec" identifier = identifier) ;) (for_statement "for (iVar5 = 0x1b; iVar5 != 0; iVar5 = iVar5 + -1) {\n    *puVar7 = *puVar6;\n    puVar6 = puVar6 + 1;\n    puVar7 = puVar7 + 1;\n  }" for ( (assignment_expression "iVar5 = 0x1b" identifier = number_literal) ; (binary_expression "iVar5 != 0" identifier != number_literal) ; (assignment_expression "iVar5 = iVar5 + -1" identifier = (binary_expression "iVar5 + -1" identifier + number_literal)) ) (compound_statement "{\n    *puVar7 = *puVar6;\n    puVar6 = puVar6 + 1;\n    puVar7 = puVar7 + 1;\n  }" { (expression_statement "*puVar7 = *puVar6;" (assignment_expression "*puVar7 = *puVar6" (pointer_expression "*puVar7" * identifier) = (pointer_expression "*puVar6" * identifier)) ;) (expression_statement "puVar6 = puVar6 + 1;" (assignment_expression "puVar6 = puVar6 + 1" identifier = (binary_expression "puVar6 + 1" identifier + number_literal)) ;) (expression_statement "puVar7 = puVar7 + 1;" (assignment_expression "puVar7 = puVar7 + 1" identifier = (binary_expression "puVar7 + 1" identifier + number_literal)) ;) })) (expression_statement "FUN_000727b0(local_ec,local_80);" (call_expression "FUN_000727b0(local_ec,local_80)" identifier (argument_list "(local_ec,local_80)" ( identifier , identifier ))) ;) (expression_statement "puVar6 = (uint *)(param_1 + 0x6c);" (assignment_expression "puVar6 = (uint *)(param_1 + 0x6c)" identifier = (cast_expression "(uint *)(param_1 + 0x6c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x6c)" ( (binary_expression "param_1 + 0x6c" identifier + number_literal) )))) ;) (expression_statement "puVar7 = local_ec;" (assignment_expression "puVar7 = local_ec" identifier = identifier) ;) (for_statement "for (iVar5 = 0x1b; iVar5 != 0; iVar5 = iVar5 + -1) {\n    *puVar7 = *puVar6;\n    puVar6 = puVar6 + (uint)bVar8 * -2 + 1;\n    puVar7 = puVar7 + (uint)bVar8 * -2 + 1;\n  }" for ( (assignment_expression "iVar5 = 0x1b" identifier = number_literal) ; (binary_expression "iVar5 != 0" identifier != number_literal) ; (assignment_expression "iVar5 = iVar5 + -1" identifier = (binary_expression "iVar5 + -1" identifier + number_literal)) ) (compound_statement "{\n    *puVar7 = *puVar6;\n    puVar6 = puVar6 + (uint)bVar8 * -2 + 1;\n    puVar7 = puVar7 + (uint)bVar8 * -2 + 1;\n  }" { (expression_statement "*puVar7 = *puVar6;" (assignment_expression "*puVar7 = *puVar6" (pointer_expression "*puVar7" * identifier) = (pointer_expression "*puVar6" * identifier)) ;) (expression_statement "puVar6 = puVar6 + (uint)bVar8 * -2 + 1;" (assignment_expression "puVar6 = puVar6 + (uint)bVar8 * -2 + 1" identifier = (binary_expression "puVar6 + (uint)bVar8 * -2 + 1" (binary_expression "puVar6 + (uint)bVar8 * -2" identifier + (binary_expression "(uint)bVar8 * -2" (cast_expression "(uint)bVar8" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "puVar7 = puVar7 + (uint)bVar8 * -2 + 1;" (assignment_expression "puVar7 = puVar7 + (uint)bVar8 * -2 + 1" identifier = (binary_expression "puVar7 + (uint)bVar8 * -2 + 1" (binary_expression "puVar7 + (uint)bVar8 * -2" identifier + (binary_expression "(uint)bVar8 * -2" (cast_expression "(uint)bVar8" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (expression_statement "FUN_00072230(local_ec,local_80,0x20);" (call_expression "FUN_00072230(local_ec,local_80,0x20)" identifier (argument_list "(local_ec,local_80,0x20)" ( identifier , identifier , number_literal ))) ;) (if_statement "if (local_8c < 0x38) {\n    iVar5 = 0x38 - local_8c;\n  }\n  else {\n    iVar5 = 0x78 - local_8c;\n  }" if (parenthesized_expression "(local_8c < 0x38)" ( (binary_expression "local_8c < 0x38" identifier < number_literal) )) (compound_statement "{\n    iVar5 = 0x38 - local_8c;\n  }" { (expression_statement "iVar5 = 0x38 - local_8c;" (assignment_expression "iVar5 = 0x38 - local_8c" identifier = (binary_expression "0x38 - local_8c" number_literal - identifier)) ;) }) (else_clause "else {\n    iVar5 = 0x78 - local_8c;\n  }" else (compound_statement "{\n    iVar5 = 0x78 - local_8c;\n  }" { (expression_statement "iVar5 = 0x78 - local_8c;" (assignment_expression "iVar5 = 0x78 - local_8c" identifier = (binary_expression "0x78 - local_8c" number_literal - identifier)) ;) }))) (expression_statement "uVar1 = local_88 * 8;" (assignment_expression "uVar1 = local_88 * 8" identifier = (binary_expression "local_88 * 8" identifier * number_literal)) ;) (expression_statement "uVar3 = local_84 >> 0x1d;" (assignment_expression "uVar3 = local_84 >> 0x1d" identifier = (binary_expression "local_84 >> 0x1d" identifier >> number_literal)) ;) (expression_statement "__memset_chk(&local_60,0,iVar5,0x40,ppuVar2,local_84,iVar5);" (call_expression "__memset_chk(&local_60,0,iVar5,0x40,ppuVar2,local_84,iVar5)" identifier (argument_list "(&local_60,0,iVar5,0x40,ppuVar2,local_84,iVar5)" ( (pointer_expression "&local_60" & identifier) , number_literal , identifier , number_literal , identifier , identifier , identifier ))) ;) (expression_statement "local_60 = CONCAT31(local_60._1_3_,0x80);" (assignment_expression "local_60 = CONCAT31(local_60._1_3_,0x80)" identifier = (call_expression "CONCAT31(local_60._1_3_,0x80)" identifier (argument_list "(local_60._1_3_,0x80)" ( (field_expression "local_60._1_3_" identifier . field_identifier) , number_literal )))) ;) (expression_statement "FUN_00072230(local_ec,&local_60,iVar5);" (call_expression "FUN_00072230(local_ec,&local_60,iVar5)" identifier (argument_list "(local_ec,&local_60,iVar5)" ( identifier , (pointer_expression "&local_60" & identifier) , identifier ))) ;) (expression_statement "uVar4 = local_84 << 3;" (assignment_expression "uVar4 = local_84 << 3" identifier = (binary_expression "local_84 << 3" identifier << number_literal)) ;) (expression_statement "local_5c = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | local_84 << 0x1b;" (assignment_expression "local_5c = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | local_84 << 0x1b" identifier = (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | local_84 << 0x1b" (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8" (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8" (binary_expression "uVar4 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar4 & 0xff0000) >> 8" (parenthesized_expression "(uVar4 & 0xff0000)" ( (binary_expression "uVar4 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar4 & 0xff00) << 8" (parenthesized_expression "(uVar4 & 0xff00)" ( (binary_expression "uVar4 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "local_84 << 0x1b" identifier << number_literal))) ;) (expression_statement "local_60 = uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n             (uVar1 | uVar3) << 0x18;" (assignment_expression "local_60 = uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n             (uVar1 | uVar3) << 0x18" identifier = (binary_expression "uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n             (uVar1 | uVar3) << 0x18" (binary_expression "uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8" (binary_expression "uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8" (binary_expression "uVar1 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar1 & 0xff0000) >> 8" (parenthesized_expression "(uVar1 & 0xff0000)" ( (binary_expression "uVar1 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar1 & 0xff00) << 8" (parenthesized_expression "(uVar1 & 0xff00)" ( (binary_expression "uVar1 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "(uVar1 | uVar3) << 0x18" (parenthesized_expression "(uVar1 | uVar3)" ( (binary_expression "uVar1 | uVar3" identifier | identifier) )) << number_literal))) ;) (expression_statement "FUN_00072230(local_ec,&local_60,8);" (call_expression "FUN_00072230(local_ec,&local_60,8)" identifier (argument_list "(local_ec,&local_60,8)" ( identifier , (pointer_expression "&local_60" & identifier) , number_literal ))) ;) (expression_statement "*param_2 = local_ec[0] >> 0x18 | (local_ec[0] & 0xff0000) >> 8 | (local_ec[0] & 0xff00) << 8 |\n             local_ec[0] << 0x18;" (assignment_expression "*param_2 = local_ec[0] >> 0x18 | (local_ec[0] & 0xff0000) >> 8 | (local_ec[0] & 0xff00) << 8 |\n             local_ec[0] << 0x18" (pointer_expression "*param_2" * identifier) = (binary_expression "local_ec[0] >> 0x18 | (local_ec[0] & 0xff0000) >> 8 | (local_ec[0] & 0xff00) << 8 |\n             local_ec[0] << 0x18" (binary_expression "local_ec[0] >> 0x18 | (local_ec[0] & 0xff0000) >> 8 | (local_ec[0] & 0xff00) << 8" (binary_expression "local_ec[0] >> 0x18 | (local_ec[0] & 0xff0000) >> 8" (binary_expression "local_ec[0] >> 0x18" (subscript_expression "local_ec[0]" identifier [ number_literal ]) >> number_literal) | (binary_expression "(local_ec[0] & 0xff0000) >> 8" (parenthesized_expression "(local_ec[0] & 0xff0000)" ( (binary_expression "local_ec[0] & 0xff0000" (subscript_expression "local_ec[0]" identifier [ number_literal ]) & number_literal) )) >> number_literal)) | (binary_expression "(local_ec[0] & 0xff00) << 8" (parenthesized_expression "(local_ec[0] & 0xff00)" ( (binary_expression "local_ec[0] & 0xff00" (subscript_expression "local_ec[0]" identifier [ number_literal ]) & number_literal) )) << number_literal)) | (binary_expression "local_ec[0] << 0x18" (subscript_expression "local_ec[0]" identifier [ number_literal ]) << number_literal))) ;) (expression_statement "param_2[1] = local_ec[1] >> 0x18 | (local_ec[1] & 0xff0000) >> 8 | (local_ec[1] & 0xff00) << 8 |\n               local_ec[1] << 0x18;" (assignment_expression "param_2[1] = local_ec[1] >> 0x18 | (local_ec[1] & 0xff0000) >> 8 | (local_ec[1] & 0xff00) << 8 |\n               local_ec[1] << 0x18" (subscript_expression "param_2[1]" identifier [ number_literal ]) = (binary_expression "local_ec[1] >> 0x18 | (local_ec[1] & 0xff0000) >> 8 | (local_ec[1] & 0xff00) << 8 |\n               local_ec[1] << 0x18" (binary_expression "local_ec[1] >> 0x18 | (local_ec[1] & 0xff0000) >> 8 | (local_ec[1] & 0xff00) << 8" (binary_expression "local_ec[1] >> 0x18 | (local_ec[1] & 0xff0000) >> 8" (binary_expression "local_ec[1] >> 0x18" (subscript_expression "local_ec[1]" identifier [ number_literal ]) >> number_literal) | (binary_expression "(local_ec[1] & 0xff0000) >> 8" (parenthesized_expression "(local_ec[1] & 0xff0000)" ( (binary_expression "local_ec[1] & 0xff0000" (subscript_expression "local_ec[1]" identifier [ number_literal ]) & number_literal) )) >> number_literal)) | (binary_expression "(local_ec[1] & 0xff00) << 8" (parenthesized_expression "(local_ec[1] & 0xff00)" ( (binary_expression "local_ec[1] & 0xff00" (subscript_expression "local_ec[1]" identifier [ number_literal ]) & number_literal) )) << number_literal)) | (binary_expression "local_ec[1] << 0x18" (subscript_expression "local_ec[1]" identifier [ number_literal ]) << number_literal))) ;) (expression_statement "param_2[2] = local_ec[2] >> 0x18 | (local_ec[2] & 0xff0000) >> 8 | (local_ec[2] & 0xff00) << 8 |\n               local_ec[2] << 0x18;" (assignment_expression "param_2[2] = local_ec[2] >> 0x18 | (local_ec[2] & 0xff0000) >> 8 | (local_ec[2] & 0xff00) << 8 |\n               local_ec[2] << 0x18" (subscript_expression "param_2[2]" identifier [ number_literal ]) = (binary_expression "local_ec[2] >> 0x18 | (local_ec[2] & 0xff0000) >> 8 | (local_ec[2] & 0xff00) << 8 |\n               local_ec[2] << 0x18" (binary_expression "local_ec[2] >> 0x18 | (local_ec[2] & 0xff0000) >> 8 | (local_ec[2] & 0xff00) << 8" (binary_expression "local_ec[2] >> 0x18 | (local_ec[2] & 0xff0000) >> 8" (binary_expression "local_ec[2] >> 0x18" (subscript_expression "local_ec[2]" identifier [ number_literal ]) >> number_literal) | (binary_expression "(local_ec[2] & 0xff0000) >> 8" (parenthesized_expression "(local_ec[2] & 0xff0000)" ( (binary_expression "local_ec[2] & 0xff0000" (subscript_expression "local_ec[2]" identifier [ number_literal ]) & number_literal) )) >> number_literal)) | (binary_expression "(local_ec[2] & 0xff00) << 8" (parenthesized_expression "(local_ec[2] & 0xff00)" ( (binary_expression "local_ec[2] & 0xff00" (subscript_expression "local_ec[2]" identifier [ number_literal ]) & number_literal) )) << number_literal)) | (binary_expression "local_ec[2] << 0x18" (subscript_expression "local_ec[2]" identifier [ number_literal ]) << number_literal))) ;) (expression_statement "param_2[3] = local_ec[3] >> 0x18 | (local_ec[3] & 0xff0000) >> 8 | (local_ec[3] & 0xff00) << 8 |\n               local_ec[3] << 0x18;" (assignment_expression "param_2[3] = local_ec[3] >> 0x18 | (local_ec[3] & 0xff0000) >> 8 | (local_ec[3] & 0xff00) << 8 |\n               local_ec[3] << 0x18" (subscript_expression "param_2[3]" identifier [ number_literal ]) = (binary_expression "local_ec[3] >> 0x18 | (local_ec[3] & 0xff0000) >> 8 | (local_ec[3] & 0xff00) << 8 |\n               local_ec[3] << 0x18" (binary_expression "local_ec[3] >> 0x18 | (local_ec[3] & 0xff0000) >> 8 | (local_ec[3] & 0xff00) << 8" (binary_expression "local_ec[3] >> 0x18 | (local_ec[3] & 0xff0000) >> 8" (binary_expression "local_ec[3] >> 0x18" (subscript_expression "local_ec[3]" identifier [ number_literal ]) >> number_literal) | (binary_expression "(local_ec[3] & 0xff0000) >> 8" (parenthesized_expression "(local_ec[3] & 0xff0000)" ( (binary_expression "local_ec[3] & 0xff0000" (subscript_expression "local_ec[3]" identifier [ number_literal ]) & number_literal) )) >> number_literal)) | (binary_expression "(local_ec[3] & 0xff00) << 8" (parenthesized_expression "(local_ec[3] & 0xff00)" ( (binary_expression "local_ec[3] & 0xff00" (subscript_expression "local_ec[3]" identifier [ number_literal ]) & number_literal) )) << number_literal)) | (binary_expression "local_ec[3] << 0x18" (subscript_expression "local_ec[3]" identifier [ number_literal ]) << number_literal))) ;) (expression_statement "param_2[4] = local_dc >> 0x18 | (local_dc & 0xff0000) >> 8 | (local_dc & 0xff00) << 8 |\n               local_dc << 0x18;" (assignment_expression "param_2[4] = local_dc >> 0x18 | (local_dc & 0xff0000) >> 8 | (local_dc & 0xff00) << 8 |\n               local_dc << 0x18" (subscript_expression "param_2[4]" identifier [ number_literal ]) = (binary_expression "local_dc >> 0x18 | (local_dc & 0xff0000) >> 8 | (local_dc & 0xff00) << 8 |\n               local_dc << 0x18" (binary_expression "local_dc >> 0x18 | (local_dc & 0xff0000) >> 8 | (local_dc & 0xff00) << 8" (binary_expression "local_dc >> 0x18 | (local_dc & 0xff0000) >> 8" (binary_expression "local_dc >> 0x18" identifier >> number_literal) | (binary_expression "(local_dc & 0xff0000) >> 8" (parenthesized_expression "(local_dc & 0xff0000)" ( (binary_expression "local_dc & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(local_dc & 0xff00) << 8" (parenthesized_expression "(local_dc & 0xff00)" ( (binary_expression "local_dc & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "local_dc << 0x18" identifier << number_literal))) ;) (expression_statement "param_2[5] = local_d8 >> 0x18 | (local_d8 & 0xff0000) >> 8 | (local_d8 & 0xff00) << 8 |\n               local_d8 << 0x18;" (assignment_expression "param_2[5] = local_d8 >> 0x18 | (local_d8 & 0xff0000) >> 8 | (local_d8 & 0xff00) << 8 |\n               local_d8 << 0x18" (subscript_expression "param_2[5]" identifier [ number_literal ]) = (binary_expression "local_d8 >> 0x18 | (local_d8 & 0xff0000) >> 8 | (local_d8 & 0xff00) << 8 |\n               local_d8 << 0x18" (binary_expression "local_d8 >> 0x18 | (local_d8 & 0xff0000) >> 8 | (local_d8 & 0xff00) << 8" (binary_expression "local_d8 >> 0x18 | (local_d8 & 0xff0000) >> 8" (binary_expression "local_d8 >> 0x18" identifier >> number_literal) | (binary_expression "(local_d8 & 0xff0000) >> 8" (parenthesized_expression "(local_d8 & 0xff0000)" ( (binary_expression "local_d8 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(local_d8 & 0xff00) << 8" (parenthesized_expression "(local_d8 & 0xff00)" ( (binary_expression "local_d8 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "local_d8 << 0x18" identifier << number_literal))) ;) (expression_statement "param_2[6] = local_d4 >> 0x18 | (local_d4 & 0xff0000) >> 8 | (local_d4 & 0xff00) << 8 |\n               local_d4 << 0x18;" (assignment_expression "param_2[6] = local_d4 >> 0x18 | (local_d4 & 0xff0000) >> 8 | (local_d4 & 0xff00) << 8 |\n               local_d4 << 0x18" (subscript_expression "param_2[6]" identifier [ number_literal ]) = (binary_expression "local_d4 >> 0x18 | (local_d4 & 0xff0000) >> 8 | (local_d4 & 0xff00) << 8 |\n               local_d4 << 0x18" (binary_expression "local_d4 >> 0x18 | (local_d4 & 0xff0000) >> 8 | (local_d4 & 0xff00) << 8" (binary_expression "local_d4 >> 0x18 | (local_d4 & 0xff0000) >> 8" (binary_expression "local_d4 >> 0x18" identifier >> number_literal) | (binary_expression "(local_d4 & 0xff0000) >> 8" (parenthesized_expression "(local_d4 & 0xff0000)" ( (binary_expression "local_d4 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(local_d4 & 0xff00) << 8" (parenthesized_expression "(local_d4 & 0xff00)" ( (binary_expression "local_d4 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "local_d4 << 0x18" identifier << number_literal))) ;) (expression_statement "param_2[7] = local_d0 >> 0x18 | (local_d0 & 0xff0000) >> 8 | (local_d0 & 0xff00) << 8 |\n               local_d0 << 0x18;" (assignment_expression "param_2[7] = local_d0 >> 0x18 | (local_d0 & 0xff0000) >> 8 | (local_d0 & 0xff00) << 8 |\n               local_d0 << 0x18" (subscript_expression "param_2[7]" identifier [ number_literal ]) = (binary_expression "local_d0 >> 0x18 | (local_d0 & 0xff0000) >> 8 | (local_d0 & 0xff00) << 8 |\n               local_d0 << 0x18" (binary_expression "local_d0 >> 0x18 | (local_d0 & 0xff0000) >> 8 | (local_d0 & 0xff00) << 8" (binary_expression "local_d0 >> 0x18 | (local_d0 & 0xff0000) >> 8" (binary_expression "local_d0 >> 0x18" identifier >> number_literal) | (binary_expression "(local_d0 & 0xff0000) >> 8" (parenthesized_expression "(local_d0 & 0xff0000)" ( (binary_expression "local_d0 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(local_d0 & 0xff00) << 8" (parenthesized_expression "(local_d0 & 0xff00)" ( (binary_expression "local_d0 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "local_d0 << 0x18" identifier << number_literal))) ;) (if_statement "if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }" if (parenthesized_expression "(local_20 == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 == *(int *)(in_GS_OFFSET + 0x14)" identifier == (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "FUN_0008eb20();" (call_expression "FUN_0008eb20()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * (pointer_declarator * IDENT)) ;) (declaration TYPE IDENT ;) (declaration TYPE 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 ]) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & 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 IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (for_statement for ( (assignment_expression IDENT = LIT) ; (binary_expression IDENT != LIT) ; (assignment_expression IDENT = (binary_expression IDENT + LIT)) ) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (for_statement for ( (assignment_expression IDENT = LIT) ; (binary_expression IDENT != LIT) ; (assignment_expression IDENT = (binary_expression IDENT + LIT)) ) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , LIT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression LIT - IDENT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression LIT - IDENT)) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , LIT , IDENT , LIT , IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (field_expression IDENT . field_identifier) , LIT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT << LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (binary_expression IDENT >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression IDENT << LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (binary_expression IDENT >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT | IDENT) )) << LIT))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) , LIT ))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (binary_expression (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) & LIT) )) << LIT)) | (binary_expression (subscript_expression IDENT [ LIT ]) << LIT))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (binary_expression (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) & LIT) )) << LIT)) | (binary_expression (subscript_expression IDENT [ LIT ]) << LIT))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (binary_expression (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) & LIT) )) << LIT)) | (binary_expression (subscript_expression IDENT [ LIT ]) << LIT))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (binary_expression (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) & LIT) )) << LIT)) | (binary_expression (subscript_expression IDENT [ LIT ]) << LIT))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (binary_expression (binary_expression (binary_expression IDENT >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression IDENT << LIT))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (binary_expression (binary_expression (binary_expression IDENT >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression IDENT << LIT))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (binary_expression (binary_expression (binary_expression IDENT >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression IDENT << LIT))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (binary_expression (binary_expression (binary_expression IDENT >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression IDENT << LIT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (return_statement return ;) })) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })))
(function_definition "void FUN_000729a0(int param_1,uint *param_2)\n\n{\n  uint uVar1;\n  undefined **ppuVar2;\n  uint uVar3;\n  uint uVar4;\n  int iVar5;\n  uint *puVar6;\n  uint *puVar7;\n  int in_GS_OFFSET;\n  byte bVar8;\n  uint local_ec [4];\n  uint local_dc;\n  uint local_d8;\n  uint local_d4;\n  uint local_d0;\n  int local_8c;\n  int local_88;\n  uint local_84;\n  undefined1 local_80 [32];\n  uint local_60;\n  uint local_5c;\n  int local_20;\n  \n  bVar8 = 0;\n  ppuVar2 = &__DT_PLTGOT;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  puVar6 = (uint *)(param_1 + 0xd8);\n  puVar7 = local_ec;\n  for (iVar5 = 0x1b; iVar5 != 0; iVar5 = iVar5 + -1) {\n    *puVar7 = *puVar6;\n    puVar6 = puVar6 + 1;\n    puVar7 = puVar7 + 1;\n  }\n  FUN_000727b0(local_ec,local_80);\n  puVar6 = (uint *)(param_1 + 0x6c);\n  puVar7 = local_ec;\n  for (iVar5 = 0x1b; iVar5 != 0; iVar5 = iVar5 + -1) {\n    *puVar7 = *puVar6;\n    puVar6 = puVar6 + (uint)bVar8 * -2 + 1;\n    puVar7 = puVar7 + (uint)bVar8 * -2 + 1;\n  }\n  FUN_00072230(local_ec,local_80,0x20);\n  if (local_8c < 0x38) {\n    iVar5 = 0x38 - local_8c;\n  }\n  else {\n    iVar5 = 0x78 - local_8c;\n  }\n  uVar1 = local_88 * 8;\n  uVar3 = local_84 >> 0x1d;\n  __memset_chk(&local_60,0,iVar5,0x40,ppuVar2,local_84,iVar5);\n  local_60 = CONCAT31(local_60._1_3_,0x80);\n  FUN_00072230(local_ec,&local_60,iVar5);\n  uVar4 = local_84 << 3;\n  local_5c = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | local_84 << 0x1b;\n  local_60 = uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n             (uVar1 | uVar3) << 0x18;\n  FUN_00072230(local_ec,&local_60,8);\n  *param_2 = local_ec[0] >> 0x18 | (local_ec[0] & 0xff0000) >> 8 | (local_ec[0] & 0xff00) << 8 |\n             local_ec[0] << 0x18;\n  param_2[1] = local_ec[1] >> 0x18 | (local_ec[1] & 0xff0000) >> 8 | (local_ec[1] & 0xff00) << 8 |\n               local_ec[1] << 0x18;\n  param_2[2] = local_ec[2] >> 0x18 | (local_ec[2] & 0xff0000) >> 8 | (local_ec[2] & 0xff00) << 8 |\n               local_ec[2] << 0x18;\n  param_2[3] = local_ec[3] >> 0x18 | (local_ec[3] & 0xff0000) >> 8 | (local_ec[3] & 0xff00) << 8 |\n               local_ec[3] << 0x18;\n  param_2[4] = local_dc >> 0x18 | (local_dc & 0xff0000) >> 8 | (local_dc & 0xff00) << 8 |\n               local_dc << 0x18;\n  param_2[5] = local_d8 >> 0x18 | (local_d8 & 0xff0000) >> 8 | (local_d8 & 0xff00) << 8 |\n               local_d8 << 0x18;\n  param_2[6] = local_d4 >> 0x18 | (local_d4 & 0xff0000) >> 8 | (local_d4 & 0xff00) << 8 |\n               local_d4 << 0x18;\n  param_2[7] = local_d0 >> 0x18 | (local_d0 & 0xff0000) >> 8 | (local_d0 & 0xff00) << 8 |\n               local_d0 << 0x18;\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    \n  FUN_0008eb20();\n}" (primitive_type "void") (function_declarator "FUN_000729a0(int param_1,uint *param_2)" (identifier "FUN_000729a0") (parameter_list "(int param_1,uint *param_2)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "uint *param_2" (type_identifier "uint") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) () ")"))) (compound_statement "{\n  uint uVar1;\n  undefined **ppuVar2;\n  uint uVar3;\n  uint uVar4;\n  int iVar5;\n  uint *puVar6;\n  uint *puVar7;\n  int in_GS_OFFSET;\n  byte bVar8;\n  uint local_ec [4];\n  uint local_dc;\n  uint local_d8;\n  uint local_d4;\n  uint local_d0;\n  int local_8c;\n  int local_88;\n  uint local_84;\n  undefined1 local_80 [32];\n  uint local_60;\n  uint local_5c;\n  int local_20;\n  \n  bVar8 = 0;\n  ppuVar2 = &__DT_PLTGOT;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  puVar6 = (uint *)(param_1 + 0xd8);\n  puVar7 = local_ec;\n  for (iVar5 = 0x1b; iVar5 != 0; iVar5 = iVar5 + -1) {\n    *puVar7 = *puVar6;\n    puVar6 = puVar6 + 1;\n    puVar7 = puVar7 + 1;\n  }\n  FUN_000727b0(local_ec,local_80);\n  puVar6 = (uint *)(param_1 + 0x6c);\n  puVar7 = local_ec;\n  for (iVar5 = 0x1b; iVar5 != 0; iVar5 = iVar5 + -1) {\n    *puVar7 = *puVar6;\n    puVar6 = puVar6 + (uint)bVar8 * -2 + 1;\n    puVar7 = puVar7 + (uint)bVar8 * -2 + 1;\n  }\n  FUN_00072230(local_ec,local_80,0x20);\n  if (local_8c < 0x38) {\n    iVar5 = 0x38 - local_8c;\n  }\n  else {\n    iVar5 = 0x78 - local_8c;\n  }\n  uVar1 = local_88 * 8;\n  uVar3 = local_84 >> 0x1d;\n  __memset_chk(&local_60,0,iVar5,0x40,ppuVar2,local_84,iVar5);\n  local_60 = CONCAT31(local_60._1_3_,0x80);\n  FUN_00072230(local_ec,&local_60,iVar5);\n  uVar4 = local_84 << 3;\n  local_5c = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | local_84 << 0x1b;\n  local_60 = uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n             (uVar1 | uVar3) << 0x18;\n  FUN_00072230(local_ec,&local_60,8);\n  *param_2 = local_ec[0] >> 0x18 | (local_ec[0] & 0xff0000) >> 8 | (local_ec[0] & 0xff00) << 8 |\n             local_ec[0] << 0x18;\n  param_2[1] = local_ec[1] >> 0x18 | (local_ec[1] & 0xff0000) >> 8 | (local_ec[1] & 0xff00) << 8 |\n               local_ec[1] << 0x18;\n  param_2[2] = local_ec[2] >> 0x18 | (local_ec[2] & 0xff0000) >> 8 | (local_ec[2] & 0xff00) << 8 |\n               local_ec[2] << 0x18;\n  param_2[3] = local_ec[3] >> 0x18 | (local_ec[3] & 0xff0000) >> 8 | (local_ec[3] & 0xff00) << 8 |\n               local_ec[3] << 0x18;\n  param_2[4] = local_dc >> 0x18 | (local_dc & 0xff0000) >> 8 | (local_dc & 0xff00) << 8 |\n               local_dc << 0x18;\n  param_2[5] = local_d8 >> 0x18 | (local_d8 & 0xff0000) >> 8 | (local_d8 & 0xff00) << 8 |\n               local_d8 << 0x18;\n  param_2[6] = local_d4 >> 0x18 | (local_d4 & 0xff0000) >> 8 | (local_d4 & 0xff00) << 8 |\n               local_d4 << 0x18;\n  param_2[7] = local_d0 >> 0x18 | (local_d0 & 0xff0000) >> 8 | (local_d0 & 0xff00) << 8 |\n               local_d0 << 0x18;\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    \n  FUN_0008eb20();\n}" ({ "{") (declaration "uint uVar1;" (type_identifier "uint") (identifier "uVar1") (; ";")) (declaration "undefined **ppuVar2;" (type_identifier "undefined") (pointer_declarator "**ppuVar2" (* "*") (pointer_declarator "*ppuVar2" (* "*") (identifier "ppuVar2"))) (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "uint *puVar6;" (type_identifier "uint") (pointer_declarator "*puVar6" (* "*") (identifier "puVar6")) (; ";")) (declaration "uint *puVar7;" (type_identifier "uint") (pointer_declarator "*puVar7" (* "*") (identifier "puVar7")) (; ";")) (declaration "int in_GS_OFFSET;" (primitive_type "int") (identifier "in_GS_OFFSET") (; ";")) (declaration "byte bVar8;" (type_identifier "byte") (identifier "bVar8") (; ";")) (declaration "uint local_ec [4];" (type_identifier "uint") (array_declarator "local_ec [4]" (identifier "local_ec") ([ "[") (number_literal "4") (] "]")) (; ";")) (declaration "uint local_dc;" (type_identifier "uint") (identifier "local_dc") (; ";")) (declaration "uint local_d8;" (type_identifier "uint") (identifier "local_d8") (; ";")) (declaration "uint local_d4;" (type_identifier "uint") (identifier "local_d4") (; ";")) (declaration "uint local_d0;" (type_identifier "uint") (identifier "local_d0") (; ";")) (declaration "int local_8c;" (primitive_type "int") (identifier "local_8c") (; ";")) (declaration "int local_88;" (primitive_type "int") (identifier "local_88") (; ";")) (declaration "uint local_84;" (type_identifier "uint") (identifier "local_84") (; ";")) (declaration "undefined1 local_80 [32];" (type_identifier "undefined1") (array_declarator "local_80 [32]" (identifier "local_80") ([ "[") (number_literal "32") (] "]")) (; ";")) (declaration "uint local_60;" (type_identifier "uint") (identifier "local_60") (; ";")) (declaration "uint local_5c;" (type_identifier "uint") (identifier "local_5c") (; ";")) (declaration "int local_20;" (primitive_type "int") (identifier "local_20") (; ";")) (expression_statement "bVar8 = 0;" (assignment_expression "bVar8 = 0" (identifier "bVar8") (= "=") (number_literal "0")) (; ";")) (expression_statement "ppuVar2 = &__DT_PLTGOT;" (assignment_expression "ppuVar2 = &__DT_PLTGOT" (identifier "ppuVar2") (= "=") (pointer_expression "&__DT_PLTGOT" (& "&") (identifier "__DT_PLTGOT"))) (; ";")) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_20") (= "=") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "puVar6 = (uint *)(param_1 + 0xd8);" (assignment_expression "puVar6 = (uint *)(param_1 + 0xd8)" (identifier "puVar6") (= "=") (cast_expression "(uint *)(param_1 + 0xd8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xd8)" (( "(") (binary_expression "param_1 + 0xd8" (identifier "param_1") (+ "+") (number_literal "0xd8")) () ")")))) (; ";")) (expression_statement "puVar7 = local_ec;" (assignment_expression "puVar7 = local_ec" (identifier "puVar7") (= "=") (identifier "local_ec")) (; ";")) (for_statement "for (iVar5 = 0x1b; iVar5 != 0; iVar5 = iVar5 + -1) {\n    *puVar7 = *puVar6;\n    puVar6 = puVar6 + 1;\n    puVar7 = puVar7 + 1;\n  }" (for "for") (( "(") (assignment_expression "iVar5 = 0x1b" (identifier "iVar5") (= "=") (number_literal "0x1b")) (; ";") (binary_expression "iVar5 != 0" (identifier "iVar5") (!= "!=") (number_literal "0")) (; ";") (assignment_expression "iVar5 = iVar5 + -1" (identifier "iVar5") (= "=") (binary_expression "iVar5 + -1" (identifier "iVar5") (+ "+") (number_literal "-1"))) () ")") (compound_statement "{\n    *puVar7 = *puVar6;\n    puVar6 = puVar6 + 1;\n    puVar7 = puVar7 + 1;\n  }" ({ "{") (expression_statement "*puVar7 = *puVar6;" (assignment_expression "*puVar7 = *puVar6" (pointer_expression "*puVar7" (* "*") (identifier "puVar7")) (= "=") (pointer_expression "*puVar6" (* "*") (identifier "puVar6"))) (; ";")) (expression_statement "puVar6 = puVar6 + 1;" (assignment_expression "puVar6 = puVar6 + 1" (identifier "puVar6") (= "=") (binary_expression "puVar6 + 1" (identifier "puVar6") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar7 = puVar7 + 1;" (assignment_expression "puVar7 = puVar7 + 1" (identifier "puVar7") (= "=") (binary_expression "puVar7 + 1" (identifier "puVar7") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "FUN_000727b0(local_ec,local_80);" (call_expression "FUN_000727b0(local_ec,local_80)" (identifier "FUN_000727b0") (argument_list "(local_ec,local_80)" (( "(") (identifier "local_ec") (, ",") (identifier "local_80") () ")"))) (; ";")) (expression_statement "puVar6 = (uint *)(param_1 + 0x6c);" (assignment_expression "puVar6 = (uint *)(param_1 + 0x6c)" (identifier "puVar6") (= "=") (cast_expression "(uint *)(param_1 + 0x6c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x6c)" (( "(") (binary_expression "param_1 + 0x6c" (identifier "param_1") (+ "+") (number_literal "0x6c")) () ")")))) (; ";")) (expression_statement "puVar7 = local_ec;" (assignment_expression "puVar7 = local_ec" (identifier "puVar7") (= "=") (identifier "local_ec")) (; ";")) (for_statement "for (iVar5 = 0x1b; iVar5 != 0; iVar5 = iVar5 + -1) {\n    *puVar7 = *puVar6;\n    puVar6 = puVar6 + (uint)bVar8 * -2 + 1;\n    puVar7 = puVar7 + (uint)bVar8 * -2 + 1;\n  }" (for "for") (( "(") (assignment_expression "iVar5 = 0x1b" (identifier "iVar5") (= "=") (number_literal "0x1b")) (; ";") (binary_expression "iVar5 != 0" (identifier "iVar5") (!= "!=") (number_literal "0")) (; ";") (assignment_expression "iVar5 = iVar5 + -1" (identifier "iVar5") (= "=") (binary_expression "iVar5 + -1" (identifier "iVar5") (+ "+") (number_literal "-1"))) () ")") (compound_statement "{\n    *puVar7 = *puVar6;\n    puVar6 = puVar6 + (uint)bVar8 * -2 + 1;\n    puVar7 = puVar7 + (uint)bVar8 * -2 + 1;\n  }" ({ "{") (expression_statement "*puVar7 = *puVar6;" (assignment_expression "*puVar7 = *puVar6" (pointer_expression "*puVar7" (* "*") (identifier "puVar7")) (= "=") (pointer_expression "*puVar6" (* "*") (identifier "puVar6"))) (; ";")) (expression_statement "puVar6 = puVar6 + (uint)bVar8 * -2 + 1;" (assignment_expression "puVar6 = puVar6 + (uint)bVar8 * -2 + 1" (identifier "puVar6") (= "=") (binary_expression "puVar6 + (uint)bVar8 * -2 + 1" (binary_expression "puVar6 + (uint)bVar8 * -2" (identifier "puVar6") (+ "+") (binary_expression "(uint)bVar8 * -2" (cast_expression "(uint)bVar8" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar8")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar7 = puVar7 + (uint)bVar8 * -2 + 1;" (assignment_expression "puVar7 = puVar7 + (uint)bVar8 * -2 + 1" (identifier "puVar7") (= "=") (binary_expression "puVar7 + (uint)bVar8 * -2 + 1" (binary_expression "puVar7 + (uint)bVar8 * -2" (identifier "puVar7") (+ "+") (binary_expression "(uint)bVar8 * -2" (cast_expression "(uint)bVar8" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar8")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "FUN_00072230(local_ec,local_80,0x20);" (call_expression "FUN_00072230(local_ec,local_80,0x20)" (identifier "FUN_00072230") (argument_list "(local_ec,local_80,0x20)" (( "(") (identifier "local_ec") (, ",") (identifier "local_80") (, ",") (number_literal "0x20") () ")"))) (; ";")) (if_statement "if (local_8c < 0x38) {\n    iVar5 = 0x38 - local_8c;\n  }\n  else {\n    iVar5 = 0x78 - local_8c;\n  }" (if "if") (parenthesized_expression "(local_8c < 0x38)" (( "(") (binary_expression "local_8c < 0x38" (identifier "local_8c") (< "<") (number_literal "0x38")) () ")")) (compound_statement "{\n    iVar5 = 0x38 - local_8c;\n  }" ({ "{") (expression_statement "iVar5 = 0x38 - local_8c;" (assignment_expression "iVar5 = 0x38 - local_8c" (identifier "iVar5") (= "=") (binary_expression "0x38 - local_8c" (number_literal "0x38") (- "-") (identifier "local_8c"))) (; ";")) (} "}")) (else_clause "else {\n    iVar5 = 0x78 - local_8c;\n  }" (else "else") (compound_statement "{\n    iVar5 = 0x78 - local_8c;\n  }" ({ "{") (expression_statement "iVar5 = 0x78 - local_8c;" (assignment_expression "iVar5 = 0x78 - local_8c" (identifier "iVar5") (= "=") (binary_expression "0x78 - local_8c" (number_literal "0x78") (- "-") (identifier "local_8c"))) (; ";")) (} "}")))) (expression_statement "uVar1 = local_88 * 8;" (assignment_expression "uVar1 = local_88 * 8" (identifier "uVar1") (= "=") (binary_expression "local_88 * 8" (identifier "local_88") (* "*") (number_literal "8"))) (; ";")) (expression_statement "uVar3 = local_84 >> 0x1d;" (assignment_expression "uVar3 = local_84 >> 0x1d" (identifier "uVar3") (= "=") (binary_expression "local_84 >> 0x1d" (identifier "local_84") (>> ">>") (number_literal "0x1d"))) (; ";")) (expression_statement "__memset_chk(&local_60,0,iVar5,0x40,ppuVar2,local_84,iVar5);" (call_expression "__memset_chk(&local_60,0,iVar5,0x40,ppuVar2,local_84,iVar5)" (identifier "__memset_chk") (argument_list "(&local_60,0,iVar5,0x40,ppuVar2,local_84,iVar5)" (( "(") (pointer_expression "&local_60" (& "&") (identifier "local_60")) (, ",") (number_literal "0") (, ",") (identifier "iVar5") (, ",") (number_literal "0x40") (, ",") (identifier "ppuVar2") (, ",") (identifier "local_84") (, ",") (identifier "iVar5") () ")"))) (; ";")) (expression_statement "local_60 = CONCAT31(local_60._1_3_,0x80);" (assignment_expression "local_60 = CONCAT31(local_60._1_3_,0x80)" (identifier "local_60") (= "=") (call_expression "CONCAT31(local_60._1_3_,0x80)" (identifier "CONCAT31") (argument_list "(local_60._1_3_,0x80)" (( "(") (field_expression "local_60._1_3_" (identifier "local_60") (. ".") (field_identifier "_1_3_")) (, ",") (number_literal "0x80") () ")")))) (; ";")) (expression_statement "FUN_00072230(local_ec,&local_60,iVar5);" (call_expression "FUN_00072230(local_ec,&local_60,iVar5)" (identifier "FUN_00072230") (argument_list "(local_ec,&local_60,iVar5)" (( "(") (identifier "local_ec") (, ",") (pointer_expression "&local_60" (& "&") (identifier "local_60")) (, ",") (identifier "iVar5") () ")"))) (; ";")) (expression_statement "uVar4 = local_84 << 3;" (assignment_expression "uVar4 = local_84 << 3" (identifier "uVar4") (= "=") (binary_expression "local_84 << 3" (identifier "local_84") (<< "<<") (number_literal "3"))) (; ";")) (expression_statement "local_5c = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | local_84 << 0x1b;" (assignment_expression "local_5c = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | local_84 << 0x1b" (identifier "local_5c") (= "=") (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | local_84 << 0x1b" (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8" (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8" (binary_expression "uVar4 >> 0x18" (identifier "uVar4") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(uVar4 & 0xff0000) >> 8" (parenthesized_expression "(uVar4 & 0xff0000)" (( "(") (binary_expression "uVar4 & 0xff0000" (identifier "uVar4") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar4 & 0xff00) << 8" (parenthesized_expression "(uVar4 & 0xff00)" (( "(") (binary_expression "uVar4 & 0xff00" (identifier "uVar4") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "local_84 << 0x1b" (identifier "local_84") (<< "<<") (number_literal "0x1b")))) (; ";")) (expression_statement "local_60 = uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n             (uVar1 | uVar3) << 0x18;" (assignment_expression "local_60 = uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n             (uVar1 | uVar3) << 0x18" (identifier "local_60") (= "=") (binary_expression "uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n             (uVar1 | uVar3) << 0x18" (binary_expression "uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8" (binary_expression "uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8" (binary_expression "uVar1 >> 0x18" (identifier "uVar1") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(uVar1 & 0xff0000) >> 8" (parenthesized_expression "(uVar1 & 0xff0000)" (( "(") (binary_expression "uVar1 & 0xff0000" (identifier "uVar1") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar1 & 0xff00) << 8" (parenthesized_expression "(uVar1 & 0xff00)" (( "(") (binary_expression "uVar1 & 0xff00" (identifier "uVar1") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "(uVar1 | uVar3) << 0x18" (parenthesized_expression "(uVar1 | uVar3)" (( "(") (binary_expression "uVar1 | uVar3" (identifier "uVar1") (| "|") (identifier "uVar3")) () ")")) (<< "<<") (number_literal "0x18")))) (; ";")) (expression_statement "FUN_00072230(local_ec,&local_60,8);" (call_expression "FUN_00072230(local_ec,&local_60,8)" (identifier "FUN_00072230") (argument_list "(local_ec,&local_60,8)" (( "(") (identifier "local_ec") (, ",") (pointer_expression "&local_60" (& "&") (identifier "local_60")) (, ",") (number_literal "8") () ")"))) (; ";")) (expression_statement "*param_2 = local_ec[0] >> 0x18 | (local_ec[0] & 0xff0000) >> 8 | (local_ec[0] & 0xff00) << 8 |\n             local_ec[0] << 0x18;" (assignment_expression "*param_2 = local_ec[0] >> 0x18 | (local_ec[0] & 0xff0000) >> 8 | (local_ec[0] & 0xff00) << 8 |\n             local_ec[0] << 0x18" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (binary_expression "local_ec[0] >> 0x18 | (local_ec[0] & 0xff0000) >> 8 | (local_ec[0] & 0xff00) << 8 |\n             local_ec[0] << 0x18" (binary_expression "local_ec[0] >> 0x18 | (local_ec[0] & 0xff0000) >> 8 | (local_ec[0] & 0xff00) << 8" (binary_expression "local_ec[0] >> 0x18 | (local_ec[0] & 0xff0000) >> 8" (binary_expression "local_ec[0] >> 0x18" (subscript_expression "local_ec[0]" (identifier "local_ec") ([ "[") (number_literal "0") (] "]")) (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(local_ec[0] & 0xff0000) >> 8" (parenthesized_expression "(local_ec[0] & 0xff0000)" (( "(") (binary_expression "local_ec[0] & 0xff0000" (subscript_expression "local_ec[0]" (identifier "local_ec") ([ "[") (number_literal "0") (] "]")) (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(local_ec[0] & 0xff00) << 8" (parenthesized_expression "(local_ec[0] & 0xff00)" (( "(") (binary_expression "local_ec[0] & 0xff00" (subscript_expression "local_ec[0]" (identifier "local_ec") ([ "[") (number_literal "0") (] "]")) (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "local_ec[0] << 0x18" (subscript_expression "local_ec[0]" (identifier "local_ec") ([ "[") (number_literal "0") (] "]")) (<< "<<") (number_literal "0x18")))) (; ";")) (expression_statement "param_2[1] = local_ec[1] >> 0x18 | (local_ec[1] & 0xff0000) >> 8 | (local_ec[1] & 0xff00) << 8 |\n               local_ec[1] << 0x18;" (assignment_expression "param_2[1] = local_ec[1] >> 0x18 | (local_ec[1] & 0xff0000) >> 8 | (local_ec[1] & 0xff00) << 8 |\n               local_ec[1] << 0x18" (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "local_ec[1] >> 0x18 | (local_ec[1] & 0xff0000) >> 8 | (local_ec[1] & 0xff00) << 8 |\n               local_ec[1] << 0x18" (binary_expression "local_ec[1] >> 0x18 | (local_ec[1] & 0xff0000) >> 8 | (local_ec[1] & 0xff00) << 8" (binary_expression "local_ec[1] >> 0x18 | (local_ec[1] & 0xff0000) >> 8" (binary_expression "local_ec[1] >> 0x18" (subscript_expression "local_ec[1]" (identifier "local_ec") ([ "[") (number_literal "1") (] "]")) (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(local_ec[1] & 0xff0000) >> 8" (parenthesized_expression "(local_ec[1] & 0xff0000)" (( "(") (binary_expression "local_ec[1] & 0xff0000" (subscript_expression "local_ec[1]" (identifier "local_ec") ([ "[") (number_literal "1") (] "]")) (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(local_ec[1] & 0xff00) << 8" (parenthesized_expression "(local_ec[1] & 0xff00)" (( "(") (binary_expression "local_ec[1] & 0xff00" (subscript_expression "local_ec[1]" (identifier "local_ec") ([ "[") (number_literal "1") (] "]")) (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "local_ec[1] << 0x18" (subscript_expression "local_ec[1]" (identifier "local_ec") ([ "[") (number_literal "1") (] "]")) (<< "<<") (number_literal "0x18")))) (; ";")) (expression_statement "param_2[2] = local_ec[2] >> 0x18 | (local_ec[2] & 0xff0000) >> 8 | (local_ec[2] & 0xff00) << 8 |\n               local_ec[2] << 0x18;" (assignment_expression "param_2[2] = local_ec[2] >> 0x18 | (local_ec[2] & 0xff0000) >> 8 | (local_ec[2] & 0xff00) << 8 |\n               local_ec[2] << 0x18" (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "local_ec[2] >> 0x18 | (local_ec[2] & 0xff0000) >> 8 | (local_ec[2] & 0xff00) << 8 |\n               local_ec[2] << 0x18" (binary_expression "local_ec[2] >> 0x18 | (local_ec[2] & 0xff0000) >> 8 | (local_ec[2] & 0xff00) << 8" (binary_expression "local_ec[2] >> 0x18 | (local_ec[2] & 0xff0000) >> 8" (binary_expression "local_ec[2] >> 0x18" (subscript_expression "local_ec[2]" (identifier "local_ec") ([ "[") (number_literal "2") (] "]")) (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(local_ec[2] & 0xff0000) >> 8" (parenthesized_expression "(local_ec[2] & 0xff0000)" (( "(") (binary_expression "local_ec[2] & 0xff0000" (subscript_expression "local_ec[2]" (identifier "local_ec") ([ "[") (number_literal "2") (] "]")) (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(local_ec[2] & 0xff00) << 8" (parenthesized_expression "(local_ec[2] & 0xff00)" (( "(") (binary_expression "local_ec[2] & 0xff00" (subscript_expression "local_ec[2]" (identifier "local_ec") ([ "[") (number_literal "2") (] "]")) (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "local_ec[2] << 0x18" (subscript_expression "local_ec[2]" (identifier "local_ec") ([ "[") (number_literal "2") (] "]")) (<< "<<") (number_literal "0x18")))) (; ";")) (expression_statement "param_2[3] = local_ec[3] >> 0x18 | (local_ec[3] & 0xff0000) >> 8 | (local_ec[3] & 0xff00) << 8 |\n               local_ec[3] << 0x18;" (assignment_expression "param_2[3] = local_ec[3] >> 0x18 | (local_ec[3] & 0xff0000) >> 8 | (local_ec[3] & 0xff00) << 8 |\n               local_ec[3] << 0x18" (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]")) (= "=") (binary_expression "local_ec[3] >> 0x18 | (local_ec[3] & 0xff0000) >> 8 | (local_ec[3] & 0xff00) << 8 |\n               local_ec[3] << 0x18" (binary_expression "local_ec[3] >> 0x18 | (local_ec[3] & 0xff0000) >> 8 | (local_ec[3] & 0xff00) << 8" (binary_expression "local_ec[3] >> 0x18 | (local_ec[3] & 0xff0000) >> 8" (binary_expression "local_ec[3] >> 0x18" (subscript_expression "local_ec[3]" (identifier "local_ec") ([ "[") (number_literal "3") (] "]")) (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(local_ec[3] & 0xff0000) >> 8" (parenthesized_expression "(local_ec[3] & 0xff0000)" (( "(") (binary_expression "local_ec[3] & 0xff0000" (subscript_expression "local_ec[3]" (identifier "local_ec") ([ "[") (number_literal "3") (] "]")) (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(local_ec[3] & 0xff00) << 8" (parenthesized_expression "(local_ec[3] & 0xff00)" (( "(") (binary_expression "local_ec[3] & 0xff00" (subscript_expression "local_ec[3]" (identifier "local_ec") ([ "[") (number_literal "3") (] "]")) (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "local_ec[3] << 0x18" (subscript_expression "local_ec[3]" (identifier "local_ec") ([ "[") (number_literal "3") (] "]")) (<< "<<") (number_literal "0x18")))) (; ";")) (expression_statement "param_2[4] = local_dc >> 0x18 | (local_dc & 0xff0000) >> 8 | (local_dc & 0xff00) << 8 |\n               local_dc << 0x18;" (assignment_expression "param_2[4] = local_dc >> 0x18 | (local_dc & 0xff0000) >> 8 | (local_dc & 0xff00) << 8 |\n               local_dc << 0x18" (subscript_expression "param_2[4]" (identifier "param_2") ([ "[") (number_literal "4") (] "]")) (= "=") (binary_expression "local_dc >> 0x18 | (local_dc & 0xff0000) >> 8 | (local_dc & 0xff00) << 8 |\n               local_dc << 0x18" (binary_expression "local_dc >> 0x18 | (local_dc & 0xff0000) >> 8 | (local_dc & 0xff00) << 8" (binary_expression "local_dc >> 0x18 | (local_dc & 0xff0000) >> 8" (binary_expression "local_dc >> 0x18" (identifier "local_dc") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(local_dc & 0xff0000) >> 8" (parenthesized_expression "(local_dc & 0xff0000)" (( "(") (binary_expression "local_dc & 0xff0000" (identifier "local_dc") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(local_dc & 0xff00) << 8" (parenthesized_expression "(local_dc & 0xff00)" (( "(") (binary_expression "local_dc & 0xff00" (identifier "local_dc") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "local_dc << 0x18" (identifier "local_dc") (<< "<<") (number_literal "0x18")))) (; ";")) (expression_statement "param_2[5] = local_d8 >> 0x18 | (local_d8 & 0xff0000) >> 8 | (local_d8 & 0xff00) << 8 |\n               local_d8 << 0x18;" (assignment_expression "param_2[5] = local_d8 >> 0x18 | (local_d8 & 0xff0000) >> 8 | (local_d8 & 0xff00) << 8 |\n               local_d8 << 0x18" (subscript_expression "param_2[5]" (identifier "param_2") ([ "[") (number_literal "5") (] "]")) (= "=") (binary_expression "local_d8 >> 0x18 | (local_d8 & 0xff0000) >> 8 | (local_d8 & 0xff00) << 8 |\n               local_d8 << 0x18" (binary_expression "local_d8 >> 0x18 | (local_d8 & 0xff0000) >> 8 | (local_d8 & 0xff00) << 8" (binary_expression "local_d8 >> 0x18 | (local_d8 & 0xff0000) >> 8" (binary_expression "local_d8 >> 0x18" (identifier "local_d8") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(local_d8 & 0xff0000) >> 8" (parenthesized_expression "(local_d8 & 0xff0000)" (( "(") (binary_expression "local_d8 & 0xff0000" (identifier "local_d8") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(local_d8 & 0xff00) << 8" (parenthesized_expression "(local_d8 & 0xff00)" (( "(") (binary_expression "local_d8 & 0xff00" (identifier "local_d8") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "local_d8 << 0x18" (identifier "local_d8") (<< "<<") (number_literal "0x18")))) (; ";")) (expression_statement "param_2[6] = local_d4 >> 0x18 | (local_d4 & 0xff0000) >> 8 | (local_d4 & 0xff00) << 8 |\n               local_d4 << 0x18;" (assignment_expression "param_2[6] = local_d4 >> 0x18 | (local_d4 & 0xff0000) >> 8 | (local_d4 & 0xff00) << 8 |\n               local_d4 << 0x18" (subscript_expression "param_2[6]" (identifier "param_2") ([ "[") (number_literal "6") (] "]")) (= "=") (binary_expression "local_d4 >> 0x18 | (local_d4 & 0xff0000) >> 8 | (local_d4 & 0xff00) << 8 |\n               local_d4 << 0x18" (binary_expression "local_d4 >> 0x18 | (local_d4 & 0xff0000) >> 8 | (local_d4 & 0xff00) << 8" (binary_expression "local_d4 >> 0x18 | (local_d4 & 0xff0000) >> 8" (binary_expression "local_d4 >> 0x18" (identifier "local_d4") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(local_d4 & 0xff0000) >> 8" (parenthesized_expression "(local_d4 & 0xff0000)" (( "(") (binary_expression "local_d4 & 0xff0000" (identifier "local_d4") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(local_d4 & 0xff00) << 8" (parenthesized_expression "(local_d4 & 0xff00)" (( "(") (binary_expression "local_d4 & 0xff00" (identifier "local_d4") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "local_d4 << 0x18" (identifier "local_d4") (<< "<<") (number_literal "0x18")))) (; ";")) (expression_statement "param_2[7] = local_d0 >> 0x18 | (local_d0 & 0xff0000) >> 8 | (local_d0 & 0xff00) << 8 |\n               local_d0 << 0x18;" (assignment_expression "param_2[7] = local_d0 >> 0x18 | (local_d0 & 0xff0000) >> 8 | (local_d0 & 0xff00) << 8 |\n               local_d0 << 0x18" (subscript_expression "param_2[7]" (identifier "param_2") ([ "[") (number_literal "7") (] "]")) (= "=") (binary_expression "local_d0 >> 0x18 | (local_d0 & 0xff0000) >> 8 | (local_d0 & 0xff00) << 8 |\n               local_d0 << 0x18" (binary_expression "local_d0 >> 0x18 | (local_d0 & 0xff0000) >> 8 | (local_d0 & 0xff00) << 8" (binary_expression "local_d0 >> 0x18 | (local_d0 & 0xff0000) >> 8" (binary_expression "local_d0 >> 0x18" (identifier "local_d0") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(local_d0 & 0xff0000) >> 8" (parenthesized_expression "(local_d0 & 0xff0000)" (( "(") (binary_expression "local_d0 & 0xff0000" (identifier "local_d0") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(local_d0 & 0xff00) << 8" (parenthesized_expression "(local_d0 & 0xff00)" (( "(") (binary_expression "local_d0 & 0xff00" (identifier "local_d0") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "local_d0 << 0x18" (identifier "local_d0") (<< "<<") (number_literal "0x18")))) (; ";")) (if_statement "if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }" (if "if") (parenthesized_expression "(local_20 == *(int *)(in_GS_OFFSET + 0x14))" (( "(") (binary_expression "local_20 == *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_20") (== "==") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (compound_statement "{\n    return;\n  }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "FUN_0008eb20();" (call_expression "FUN_0008eb20()" (identifier "FUN_0008eb20") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */
/* WARNING: Unknown calling convention */

void function_1(void *handle,type_1 *var_10)

{
  type_2 var_8;
  int var_11;
  type_3 **ppuVar3;
  type_2 var_9;
  type_2 var_7;
  int var_2;
  type_4 *var_3;
  type_5 *pSVar8;
  int var_1;
  type_6 bVar9;
  type_5 s;
  type_1 intermediate [32];
  type_1 c [64];
  
  bVar9 = 0;
  ppuVar3 = &_GLOBAL_OFFSET_TABLE_;
  var_11 = *(int *)(var_1 + 0x14);
  var_3 = (type_4 *)((int)handle + 0xd8);
  pSVar8 = &s;
  for (var_2 = 0x1b; var_2 != 0; var_2 = var_2 + -1) {
    pSVar8->h[0] = *var_3;
    var_3 = var_3 + 1;
    pSVar8 = (type_5 *)(pSVar8->h + 1);
  }
  var_4(&s,intermediate);
  var_3 = (type_4 *)((int)handle + 0x6c);
  pSVar8 = &s;
  for (var_2 = 0x1b; var_2 != 0; var_2 = var_2 + -1) {
    pSVar8->h[0] = *var_3;
    var_3 = var_3 + (type_2)bVar9 * -2 + 1;
    pSVar8 = (type_5 *)((int)pSVar8 + (type_2)bVar9 * -8 + 4);
  }
  var_5(&s,intermediate,0x20);
  if (s.blkused < 0x38) {
    var_2 = 0x38 - s.blkused;
  }
  else {
    var_2 = 0x78 - s.blkused;
  }
  var_8 = s.lenhi * 8;
  var_9 = s.lenlo >> 0x1d;
  var_6(c,0,var_2,0x40,ppuVar3,s.lenlo);
  c[0] = 0x80;
  var_5(&s,c,var_2);
  var_7 = s.lenlo << 3;
  c._4_4_ = var_7 >> 0x18 | (var_7 & 0xff0000) >> 8 | (var_7 & 0xff00) << 8 | s.lenlo << 0x1b;
  c._0_4_ = var_8 >> 0x18 | (var_8 & 0xff0000) >> 8 | (var_8 & 0xff00) << 8 |
            (var_8 | var_9) << 0x18;
  var_5(&s,c,8);
  *(type_4 *)var_10 =
       s.h[0] >> 0x18 | (s.h[0] & 0xff0000) >> 8 | (s.h[0] & 0xff00) << 8 | s.h[0] << 0x18;
  *(type_4 *)(var_10 + 4) =
       s.h[1] >> 0x18 | (s.h[1] & 0xff0000) >> 8 | (s.h[1] & 0xff00) << 8 | s.h[1] << 0x18;
  *(type_4 *)(var_10 + 8) =
       s.h[2] >> 0x18 | (s.h[2] & 0xff0000) >> 8 | (s.h[2] & 0xff00) << 8 | s.h[2] << 0x18;
  *(type_4 *)(var_10 + 0xc) =
       s.h[3] >> 0x18 | (s.h[3] & 0xff0000) >> 8 | (s.h[3] & 0xff00) << 8 | s.h[3] << 0x18;
  *(type_4 *)(var_10 + 0x10) =
       s.h[4] >> 0x18 | (s.h[4] & 0xff0000) >> 8 | (s.h[4] & 0xff00) << 8 | s.h[4] << 0x18;
  *(type_4 *)(var_10 + 0x14) =
       s.h[5] >> 0x18 | (s.h[5] & 0xff0000) >> 8 | (s.h[5] & 0xff00) << 8 | s.h[5] << 0x18;
  *(type_4 *)(var_10 + 0x18) =
       s.h[6] >> 0x18 | (s.h[6] & 0xff0000) >> 8 | (s.h[6] & 0xff00) << 8 | s.h[6] << 0x18;
  *(type_4 *)(var_10 + 0x1c) =
       s.h[7] >> 0x18 | (s.h[7] & 0xff0000) >> 8 | (s.h[7] & 0xff00) << 8 | s.h[7] << 0x18;
  if (var_11 == *(int *)(var_1 + 0x14)) {
    return;
  }
                    /* WARNING: Subroutine does not return */
  var_12();
}


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

/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */

void MASKED(int param_1,uint *param_2)

{
  uint uVar1;
  undefined **ppuVar2;
  uint uVar3;
  uint uVar4;
  int iVar5;
  uint *puVar6;
  uint *puVar7;
  int in_GS_OFFSET;
  byte bVar8;
  uint local_ec [4];
  uint local_dc;
  uint local_d8;
  uint local_d4;
  uint local_d0;
  int local_8c;
  int local_88;
  uint local_84;
  undefined1 local_80 [32];
  uint local_60;
  uint local_5c;
  int local_20;
  
  bVar8 = 0;
  ppuVar2 = &__DT_PLTGOT;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  puVar6 = (uint *)(param_1 + 0xd8);
  puVar7 = local_ec;
  for (iVar5 = 0x1b; iVar5 != 0; iVar5 = iVar5 + -1) {
    *puVar7 = *puVar6;
    puVar6 = puVar6 + 1;
    puVar7 = puVar7 + 1;
  }
  FUN_000727b0(local_ec,local_80);
  puVar6 = (uint *)(param_1 + 0x6c);
  puVar7 = local_ec;
  for (iVar5 = 0x1b; iVar5 != 0; iVar5 = iVar5 + -1) {
    *puVar7 = *puVar6;
    puVar6 = puVar6 + (uint)bVar8 * -2 + 1;
    puVar7 = puVar7 + (uint)bVar8 * -2 + 1;
  }
  FUN_00072230(local_ec,local_80,0x20);
  if (local_8c < 0x38) {
    iVar5 = 0x38 - local_8c;
  }
  else {
    iVar5 = 0x78 - local_8c;
  }
  uVar1 = local_88 * 8;
  uVar3 = local_84 >> 0x1d;
  __memset_chk(&local_60,0,iVar5,0x40,ppuVar2,local_84,iVar5);
  local_60 = CONCAT31(local_60._1_3_,0x80);
  FUN_00072230(local_ec,&local_60,iVar5);
  uVar4 = local_84 << 3;
  local_5c = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | local_84 << 0x1b;
  local_60 = uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |
             (uVar1 | uVar3) << 0x18;
  FUN_00072230(local_ec,&local_60,8);
  *param_2 = local_ec[0] >> 0x18 | (local_ec[0] & 0xff0000) >> 8 | (local_ec[0] & 0xff00) << 8 |
             local_ec[0] << 0x18;
  param_2[1] = local_ec[1] >> 0x18 | (local_ec[1] & 0xff0000) >> 8 | (local_ec[1] & 0xff00) << 8 |
               local_ec[1] << 0x18;
  param_2[2] = local_ec[2] >> 0x18 | (local_ec[2] & 0xff0000) >> 8 | (local_ec[2] & 0xff00) << 8 |
               local_ec[2] << 0x18;
  param_2[3] = local_ec[3] >> 0x18 | (local_ec[3] & 0xff0000) >> 8 | (local_ec[3] & 0xff00) << 8 |
               local_ec[3] << 0x18;
  param_2[4] = local_dc >> 0x18 | (local_dc & 0xff0000) >> 8 | (local_dc & 0xff00) << 8 |
               local_dc << 0x18;
  param_2[5] = local_d8 >> 0x18 | (local_d8 & 0xff0000) >> 8 | (local_d8 & 0xff00) << 8 |
               local_d8 << 0x18;
  param_2[6] = local_d4 >> 0x18 | (local_d4 & 0xff0000) >> 8 | (local_d4 & 0xff00) << 8 |
               local_d4 << 0x18;
  param_2[7] = local_d0 >> 0x18 | (local_d0 & 0xff0000) >> 8 | (local_d0 & 0xff00) << 8 |
               local_d0 << 0x18;
  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {
    return;
  }
                    /* WARNING: Subroutine does not return */
  FUN_0008eb20();
}

