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

void sha256_generate(void *handle,uchar *blk,int len,ulong seq)

{
  uint *puVar1;
  uint uVar2;
  int iVar3;
  undefined **ppuVar4;
  uint uVar5;
  uint uVar6;
  int iVar7;
  undefined4 *puVar8;
  SHA256_State *pSVar9;
  uint32 *puVar10;
  undefined4 *puVar11;
  SHA256_State *pSVar12;
  int in_GS_OFFSET;
  byte bVar13;
  SHA256_State s;
  uchar seqbuf [4];
  uchar intermediate [32];
  uchar c [64];
  
  bVar13 = 0;
  ppuVar4 = &_GLOBAL_OFFSET_TABLE_;
  iVar3 = *(int *)(in_GS_OFFSET + 0x14);
  puVar1 = (uint *)(blk + len);
  seqbuf = (uchar  [4])(seq >> 0x18 | (seq & 0xff0000) >> 8 | (seq & 0xff00) << 8 | seq << 0x18);
  puVar8 = (undefined4 *)handle;
  puVar11 = (undefined4 *)((int)handle + 0xd8);
  for (iVar7 = 0x1b; iVar7 != 0; iVar7 = iVar7 + -1) {
    *puVar11 = *puVar8;
    puVar8 = puVar8 + 1;
    puVar11 = puVar11 + 1;
  }
  pSVar9 = (SHA256_State *)((int)handle + 0xd8);
  SHA256_Bytes(pSVar9,seqbuf,4);
  SHA256_Bytes(pSVar9,blk,len);
  pSVar12 = &s;
  for (iVar7 = 0x1b; iVar7 != 0; iVar7 = iVar7 + -1) {
    pSVar12->h[0] = pSVar9->h[0];
    pSVar9 = (SHA256_State *)((int)pSVar9 + (uint)bVar13 * -8 + 4);
    pSVar12 = (SHA256_State *)((int)pSVar12 + (uint)bVar13 * -8 + 4);
  }
  SHA256_Final(&s,intermediate);
  puVar10 = (uint32 *)((int)handle + 0x6c);
  pSVar9 = &s;
  for (iVar7 = 0x1b; iVar7 != 0; iVar7 = iVar7 + -1) {
    pSVar9->h[0] = *puVar10;
    puVar10 = puVar10 + (uint)bVar13 * -2 + 1;
    pSVar9 = (SHA256_State *)((int)pSVar9 + (uint)bVar13 * -8 + 4);
  }
  SHA256_Bytes(&s,intermediate,0x20);
  if (s.blkused < 0x38) {
    iVar7 = 0x38 - s.blkused;
  }
  else {
    iVar7 = 0x78 - s.blkused;
  }
  uVar5 = s.lenlo >> 0x1d;
  uVar2 = s.lenhi * 8;
  __memset_chk(c,0,iVar7,0x40,ppuVar4,s.lenlo);
  c[0] = 0x80;
  SHA256_Bytes(&s,c,iVar7);
  uVar6 = s.lenlo << 3;
  c._4_4_ = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | s.lenlo << 0x1b;
  c._0_4_ = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 |
            (uVar2 | uVar5) << 0x18;
  SHA256_Bytes(&s,c,8);
  *puVar1 = s.h[0] >> 0x18 | (s.h[0] & 0xff0000) >> 8 | (s.h[0] & 0xff00) << 8 | s.h[0] << 0x18;
  puVar1[1] = s.h[1] >> 0x18 | (s.h[1] & 0xff0000) >> 8 | (s.h[1] & 0xff00) << 8 | s.h[1] << 0x18;
  puVar1[2] = s.h[2] >> 0x18 | (s.h[2] & 0xff0000) >> 8 | (s.h[2] & 0xff00) << 8 | s.h[2] << 0x18;
  puVar1[3] = s.h[3] >> 0x18 | (s.h[3] & 0xff0000) >> 8 | (s.h[3] & 0xff00) << 8 | s.h[3] << 0x18;
  puVar1[4] = s.h[4] >> 0x18 | (s.h[4] & 0xff0000) >> 8 | (s.h[4] & 0xff00) << 8 | s.h[4] << 0x18;
  puVar1[5] = s.h[5] >> 0x18 | (s.h[5] & 0xff0000) >> 8 | (s.h[5] & 0xff00) << 8 | s.h[5] << 0x18;
  puVar1[6] = s.h[6] >> 0x18 | (s.h[6] & 0xff0000) >> 8 | (s.h[6] & 0xff00) << 8 | s.h[6] << 0x18;
  puVar1[7] = s.h[7] >> 0x18 | (s.h[7] & 0xff0000) >> 8 | (s.h[7] & 0xff00) << 8 | s.h[7] << 0x18;
  if (iVar3 == *(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_0007d190(undefined4 *param_1,int param_2,int param_3,uint param_4)

{
  uint uVar1;
  undefined **ppuVar2;
  uint uVar3;
  uint uVar4;
  int iVar5;
  undefined4 *puVar6;
  uint *puVar7;
  undefined4 *puVar8;
  uint *puVar9;
  int in_GS_OFFSET;
  byte bVar10;
  uint *puVar11;
  uint local_f0;
  uint local_ec;
  uint local_e8;
  uint local_e4;
  uint local_e0;
  uint local_dc;
  uint local_d8;
  uint local_d4;
  int local_90;
  int local_8c;
  uint local_88;
  uint local_84;
  undefined1 local_80 [32];
  uint local_60;
  uint local_5c;
  int local_20;
  
  bVar10 = 0;
  ppuVar2 = &__DT_PLTGOT;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  puVar11 = (uint *)(param_2 + param_3);
  local_84 = param_4 >> 0x18 | (param_4 & 0xff0000) >> 8 | (param_4 & 0xff00) << 8 | param_4 << 0x18
  ;
  puVar6 = param_1;
  puVar8 = param_1 + 0x36;
  for (iVar5 = 0x1b; iVar5 != 0; iVar5 = iVar5 + -1) {
    *puVar8 = *puVar6;
    puVar6 = puVar6 + 1;
    puVar8 = puVar8 + 1;
  }
  puVar7 = param_1 + 0x36;
  FUN_0007c880(puVar7,&local_84,4);
  FUN_0007c880(puVar7,param_2,param_3);
  puVar9 = &local_f0;
  for (iVar5 = 0x1b; iVar5 != 0; iVar5 = iVar5 + -1) {
    *puVar9 = *puVar7;
    puVar7 = puVar7 + (uint)bVar10 * -2 + 1;
    puVar9 = puVar9 + (uint)bVar10 * -2 + 1;
  }
  FUN_0007ce00(&local_f0,local_80);
  puVar7 = param_1 + 0x1b;
  puVar9 = &local_f0;
  for (iVar5 = 0x1b; iVar5 != 0; iVar5 = iVar5 + -1) {
    *puVar9 = *puVar7;
    puVar7 = puVar7 + (uint)bVar10 * -2 + 1;
    puVar9 = puVar9 + (uint)bVar10 * -2 + 1;
  }
  FUN_0007c880(&local_f0,local_80,0x20);
  if (local_90 < 0x38) {
    iVar5 = 0x38 - local_90;
  }
  else {
    iVar5 = 0x78 - local_90;
  }
  uVar3 = local_88 >> 0x1d;
  uVar1 = local_8c * 8;
  __memset_chk(&local_60,0,iVar5,0x40,ppuVar2,local_88,iVar5);
  local_60 = CONCAT31(local_60._1_3_,0x80);
  FUN_0007c880(&local_f0,&local_60,iVar5);
  uVar4 = local_88 << 3;
  local_5c = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | local_88 << 0x1b;
  local_60 = uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |
             (uVar1 | uVar3) << 0x18;
  FUN_0007c880(&local_f0,&local_60,8);
  *puVar11 = local_f0 >> 0x18 | (local_f0 & 0xff0000) >> 8 | (local_f0 & 0xff00) << 8 |
             local_f0 << 0x18;
  puVar11[1] = local_ec >> 0x18 | (local_ec & 0xff0000) >> 8 | (local_ec & 0xff00) << 8 |
               local_ec << 0x18;
  puVar11[2] = local_e8 >> 0x18 | (local_e8 & 0xff0000) >> 8 | (local_e8 & 0xff00) << 8 |
               local_e8 << 0x18;
  puVar11[3] = local_e4 >> 0x18 | (local_e4 & 0xff0000) >> 8 | (local_e4 & 0xff00) << 8 |
               local_e4 << 0x18;
  puVar11[4] = local_e0 >> 0x18 | (local_e0 & 0xff0000) >> 8 | (local_e0 & 0xff00) << 8 |
               local_e0 << 0x18;
  puVar11[5] = local_dc >> 0x18 | (local_dc & 0xff0000) >> 8 | (local_dc & 0xff00) << 8 |
               local_dc << 0x18;
  puVar11[6] = local_d8 >> 0x18 | (local_d8 & 0xff0000) >> 8 | (local_d8 & 0xff00) << 8 |
               local_d8 << 0x18;
  puVar11[7] = local_d4 >> 0x18 | (local_d4 & 0xff0000) >> 8 | (local_d4 & 0xff00) << 8 |
               local_d4 << 0x18;
  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {
    return;
  }
                    /* WARNING: Subroutine does not return */
  FUN_000c60b0();
}


CALL 0x0001cb7e
ADD EAX,0xbd5bb
PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
SUB ESP,0x100
MOV dword ptr [ESP + 0x4],EAX
MOV EBX,dword ptr [ESP + 0x118]
MOV EBP,dword ptr [ESP + 0x11c]
MOV EAX,dword ptr [ESP + 0x114]
MOV ECX,dword ptr [ESP + 0x120]
MOV EDX,dword ptr GS:[0x14]
MOV dword ptr [ESP + 0xf0],EDX
XOR EDX,EDX
LEA EDX,[EBX + EBP*0x1]
MOV dword ptr [ESP + 0x8],EAX
LEA EDI,[EAX + 0xd8]
MOV dword ptr [ESP + 0xc],EDX
MOV ESI,EAX
BSWAP ECX
MOV dword ptr [ESP + 0x8c],ECX
MOV ECX,0x1b
MOVSD.REP ES:EDI,ESI
PUSH 0x4
LEA ESI,[EAX + 0xd8]
LEA ECX,[ESP + 0x90]
PUSH ECX
PUSH ESI
CALL 0x0007c880
ADD ESP,0xc
PUSH EBP
PUSH EBX
PUSH ESI
CALL 0x0007c880
LEA EDI,[ESP + 0x2c]
MOV ECX,0x1b
MOVSD.REP ES:EDI,ESI
POP EAX
POP EDX
LEA EBX,[ESP + 0x94]
PUSH EBX
LEA EBP,[ESP + 0x28]
PUSH EBP
MOV EDI,EBP
CALL 0x0007ce00
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 0x0007c880
MOV EAX,dword ptr [ESP + 0x8c]
ADD ESP,0x10
MOV EDX,dword ptr [ESP + 0x8]
CMP EAX,0x37
JLE 0x0007d358
MOV EDI,0x78
SUB EDI,EAX
MOV ECX,EDI
MOV EAX,dword ptr [ESP + 0x84]
MOV dword ptr [ESP + 0xc],EDX
MOV EBX,dword ptr [ESP + 0x80]
MOV dword ptr [ESP + 0x4],EAX
SHR EAX,0x1d
PUSH 0x40
LEA ESI,[EBX*0x8 + 0x0]
PUSH ECX
OR ESI,EAX
BSWAP ESI
MOV dword ptr [ESP + 0x10],ECX
PUSH 0x0
LEA EDI,[ESP + 0xb8]
PUSH EDI
MOV EBX,dword ptr [ESP + 0x10]
CALL 0x0001b650
MOV byte ptr [ESP + 0xbc],0x80
ADD ESP,0xc
MOV ECX,dword ptr [ESP + 0xc]
PUSH ECX
PUSH EDI
PUSH EBP
CALL 0x0007c880
MOV EAX,dword ptr [ESP + 0x14]
MOV dword ptr [ESP + 0xbc],ESI
SHL EAX,0x3
BSWAP EAX
MOV dword ptr [ESP + 0xc0],EAX
ADD ESP,0xc
PUSH 0x8
PUSH EDI
PUSH EBP
CALL 0x0007c880
MOV EDX,dword ptr [ESP + 0x1c]
MOV EAX,dword ptr [ESP + 0x2c]
BSWAP EAX
MOV dword ptr [EDX],EAX
MOV EAX,dword ptr [ESP + 0x30]
BSWAP EAX
MOV dword ptr [EDX + 0x4],EAX
MOV EAX,dword ptr [ESP + 0x34]
BSWAP EAX
MOV dword ptr [EDX + 0x8],EAX
MOV EAX,dword ptr [ESP + 0x38]
BSWAP EAX
MOV dword ptr [EDX + 0xc],EAX
MOV EAX,dword ptr [ESP + 0x3c]
BSWAP EAX
MOV dword ptr [EDX + 0x10],EAX
MOV EAX,dword ptr [ESP + 0x40]
BSWAP EAX
MOV dword ptr [EDX + 0x14],EAX
MOV EAX,dword ptr [ESP + 0x44]
BSWAP EAX
MOV dword ptr [EDX + 0x18],EAX
MOV EAX,dword ptr [ESP + 0x48]
ADD ESP,0x10
BSWAP EAX
MOV dword ptr [EDX + 0x1c],EAX
MOV EAX,dword ptr [ESP + 0xec]
XOR EAX,dword ptr GS:[0x14]
JNZ 0x0007d366
ADD ESP,0xfc
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EDI,0x38
SUB EDI,EAX
MOV ECX,EDI
JMP 0x0007d273
CALL 0x000c60b0
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n\nvoid FUN_0007d190(undefined4 *param_1,int param_2,int param_3,uint param_4)\n\n{\n  uint uVar1;\n  undefined **ppuVar2;\n  uint uVar3;\n  uint uVar4;\n  int iVar5;\n  undefined4 *puVar6;\n  uint *puVar7;\n  undefined4 *puVar8;\n  uint *puVar9;\n  int in_GS_OFFSET;\n  byte bVar10;\n  uint *puVar11;\n  uint local_f0;\n  uint local_ec;\n  uint local_e8;\n  uint local_e4;\n  uint local_e0;\n  uint local_dc;\n  uint local_d8;\n  uint local_d4;\n  int local_90;\n  int local_8c;\n  uint 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  bVar10 = 0;\n  ppuVar2 = &__DT_PLTGOT;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  puVar11 = (uint *)(param_2 + param_3);\n  local_84 = param_4 >> 0x18 | (param_4 & 0xff0000) >> 8 | (param_4 & 0xff00) << 8 | param_4 << 0x18\n  ;\n  puVar6 = param_1;\n  puVar8 = param_1 + 0x36;\n  for (iVar5 = 0x1b; iVar5 != 0; iVar5 = iVar5 + -1) {\n    *puVar8 = *puVar6;\n    puVar6 = puVar6 + 1;\n    puVar8 = puVar8 + 1;\n  }\n  puVar7 = param_1 + 0x36;\n  FUN_0007c880(puVar7,&local_84,4);\n  FUN_0007c880(puVar7,param_2,param_3);\n  puVar9 = &local_f0;\n  for (iVar5 = 0x1b; iVar5 != 0; iVar5 = iVar5 + -1) {\n    *puVar9 = *puVar7;\n    puVar7 = puVar7 + (uint)bVar10 * -2 + 1;\n    puVar9 = puVar9 + (uint)bVar10 * -2 + 1;\n  }\n  FUN_0007ce00(&local_f0,local_80);\n  puVar7 = param_1 + 0x1b;\n  puVar9 = &local_f0;\n  for (iVar5 = 0x1b; iVar5 != 0; iVar5 = iVar5 + -1) {\n    *puVar9 = *puVar7;\n    puVar7 = puVar7 + (uint)bVar10 * -2 + 1;\n    puVar9 = puVar9 + (uint)bVar10 * -2 + 1;\n  }\n  FUN_0007c880(&local_f0,local_80,0x20);\n  if (local_90 < 0x38) {\n    iVar5 = 0x38 - local_90;\n  }\n  else {\n    iVar5 = 0x78 - local_90;\n  }\n  uVar3 = local_88 >> 0x1d;\n  uVar1 = local_8c * 8;\n  __memset_chk(&local_60,0,iVar5,0x40,ppuVar2,local_88,iVar5);\n  local_60 = CONCAT31(local_60._1_3_,0x80);\n  FUN_0007c880(&local_f0,&local_60,iVar5);\n  uVar4 = local_88 << 3;\n  local_5c = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | local_88 << 0x1b;\n  local_60 = uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n             (uVar1 | uVar3) << 0x18;\n  FUN_0007c880(&local_f0,&local_60,8);\n  *puVar11 = local_f0 >> 0x18 | (local_f0 & 0xff0000) >> 8 | (local_f0 & 0xff00) << 8 |\n             local_f0 << 0x18;\n  puVar11[1] = local_ec >> 0x18 | (local_ec & 0xff0000) >> 8 | (local_ec & 0xff00) << 8 |\n               local_ec << 0x18;\n  puVar11[2] = local_e8 >> 0x18 | (local_e8 & 0xff0000) >> 8 | (local_e8 & 0xff00) << 8 |\n               local_e8 << 0x18;\n  puVar11[3] = local_e4 >> 0x18 | (local_e4 & 0xff0000) >> 8 | (local_e4 & 0xff00) << 8 |\n               local_e4 << 0x18;\n  puVar11[4] = local_e0 >> 0x18 | (local_e0 & 0xff0000) >> 8 | (local_e0 & 0xff00) << 8 |\n               local_e0 << 0x18;\n  puVar11[5] = local_dc >> 0x18 | (local_dc & 0xff0000) >> 8 | (local_dc & 0xff00) << 8 |\n               local_dc << 0x18;\n  puVar11[6] = local_d8 >> 0x18 | (local_d8 & 0xff0000) >> 8 | (local_d8 & 0xff00) << 8 |\n               local_d8 << 0x18;\n  puVar11[7] = local_d4 >> 0x18 | (local_d4 & 0xff0000) >> 8 | (local_d4 & 0xff00) << 8 |\n               local_d4 << 0x18;\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_000c60b0();\n}\n\n" comment (function_definition "void FUN_0007d190(undefined4 *param_1,int param_2,int param_3,uint param_4)\n\n{\n  uint uVar1;\n  undefined **ppuVar2;\n  uint uVar3;\n  uint uVar4;\n  int iVar5;\n  undefined4 *puVar6;\n  uint *puVar7;\n  undefined4 *puVar8;\n  uint *puVar9;\n  int in_GS_OFFSET;\n  byte bVar10;\n  uint *puVar11;\n  uint local_f0;\n  uint local_ec;\n  uint local_e8;\n  uint local_e4;\n  uint local_e0;\n  uint local_dc;\n  uint local_d8;\n  uint local_d4;\n  int local_90;\n  int local_8c;\n  uint 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  bVar10 = 0;\n  ppuVar2 = &__DT_PLTGOT;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  puVar11 = (uint *)(param_2 + param_3);\n  local_84 = param_4 >> 0x18 | (param_4 & 0xff0000) >> 8 | (param_4 & 0xff00) << 8 | param_4 << 0x18\n  ;\n  puVar6 = param_1;\n  puVar8 = param_1 + 0x36;\n  for (iVar5 = 0x1b; iVar5 != 0; iVar5 = iVar5 + -1) {\n    *puVar8 = *puVar6;\n    puVar6 = puVar6 + 1;\n    puVar8 = puVar8 + 1;\n  }\n  puVar7 = param_1 + 0x36;\n  FUN_0007c880(puVar7,&local_84,4);\n  FUN_0007c880(puVar7,param_2,param_3);\n  puVar9 = &local_f0;\n  for (iVar5 = 0x1b; iVar5 != 0; iVar5 = iVar5 + -1) {\n    *puVar9 = *puVar7;\n    puVar7 = puVar7 + (uint)bVar10 * -2 + 1;\n    puVar9 = puVar9 + (uint)bVar10 * -2 + 1;\n  }\n  FUN_0007ce00(&local_f0,local_80);\n  puVar7 = param_1 + 0x1b;\n  puVar9 = &local_f0;\n  for (iVar5 = 0x1b; iVar5 != 0; iVar5 = iVar5 + -1) {\n    *puVar9 = *puVar7;\n    puVar7 = puVar7 + (uint)bVar10 * -2 + 1;\n    puVar9 = puVar9 + (uint)bVar10 * -2 + 1;\n  }\n  FUN_0007c880(&local_f0,local_80,0x20);\n  if (local_90 < 0x38) {\n    iVar5 = 0x38 - local_90;\n  }\n  else {\n    iVar5 = 0x78 - local_90;\n  }\n  uVar3 = local_88 >> 0x1d;\n  uVar1 = local_8c * 8;\n  __memset_chk(&local_60,0,iVar5,0x40,ppuVar2,local_88,iVar5);\n  local_60 = CONCAT31(local_60._1_3_,0x80);\n  FUN_0007c880(&local_f0,&local_60,iVar5);\n  uVar4 = local_88 << 3;\n  local_5c = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | local_88 << 0x1b;\n  local_60 = uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n             (uVar1 | uVar3) << 0x18;\n  FUN_0007c880(&local_f0,&local_60,8);\n  *puVar11 = local_f0 >> 0x18 | (local_f0 & 0xff0000) >> 8 | (local_f0 & 0xff00) << 8 |\n             local_f0 << 0x18;\n  puVar11[1] = local_ec >> 0x18 | (local_ec & 0xff0000) >> 8 | (local_ec & 0xff00) << 8 |\n               local_ec << 0x18;\n  puVar11[2] = local_e8 >> 0x18 | (local_e8 & 0xff0000) >> 8 | (local_e8 & 0xff00) << 8 |\n               local_e8 << 0x18;\n  puVar11[3] = local_e4 >> 0x18 | (local_e4 & 0xff0000) >> 8 | (local_e4 & 0xff00) << 8 |\n               local_e4 << 0x18;\n  puVar11[4] = local_e0 >> 0x18 | (local_e0 & 0xff0000) >> 8 | (local_e0 & 0xff00) << 8 |\n               local_e0 << 0x18;\n  puVar11[5] = local_dc >> 0x18 | (local_dc & 0xff0000) >> 8 | (local_dc & 0xff00) << 8 |\n               local_dc << 0x18;\n  puVar11[6] = local_d8 >> 0x18 | (local_d8 & 0xff0000) >> 8 | (local_d8 & 0xff00) << 8 |\n               local_d8 << 0x18;\n  puVar11[7] = local_d4 >> 0x18 | (local_d4 & 0xff0000) >> 8 | (local_d4 & 0xff00) << 8 |\n               local_d4 << 0x18;\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_000c60b0();\n}" primitive_type (function_declarator "FUN_0007d190(undefined4 *param_1,int param_2,int param_3,uint param_4)" identifier (parameter_list "(undefined4 *param_1,int param_2,int param_3,uint param_4)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "uint param_4" type_identifier identifier) ))) (compound_statement "{\n  uint uVar1;\n  undefined **ppuVar2;\n  uint uVar3;\n  uint uVar4;\n  int iVar5;\n  undefined4 *puVar6;\n  uint *puVar7;\n  undefined4 *puVar8;\n  uint *puVar9;\n  int in_GS_OFFSET;\n  byte bVar10;\n  uint *puVar11;\n  uint local_f0;\n  uint local_ec;\n  uint local_e8;\n  uint local_e4;\n  uint local_e0;\n  uint local_dc;\n  uint local_d8;\n  uint local_d4;\n  int local_90;\n  int local_8c;\n  uint 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  bVar10 = 0;\n  ppuVar2 = &__DT_PLTGOT;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  puVar11 = (uint *)(param_2 + param_3);\n  local_84 = param_4 >> 0x18 | (param_4 & 0xff0000) >> 8 | (param_4 & 0xff00) << 8 | param_4 << 0x18\n  ;\n  puVar6 = param_1;\n  puVar8 = param_1 + 0x36;\n  for (iVar5 = 0x1b; iVar5 != 0; iVar5 = iVar5 + -1) {\n    *puVar8 = *puVar6;\n    puVar6 = puVar6 + 1;\n    puVar8 = puVar8 + 1;\n  }\n  puVar7 = param_1 + 0x36;\n  FUN_0007c880(puVar7,&local_84,4);\n  FUN_0007c880(puVar7,param_2,param_3);\n  puVar9 = &local_f0;\n  for (iVar5 = 0x1b; iVar5 != 0; iVar5 = iVar5 + -1) {\n    *puVar9 = *puVar7;\n    puVar7 = puVar7 + (uint)bVar10 * -2 + 1;\n    puVar9 = puVar9 + (uint)bVar10 * -2 + 1;\n  }\n  FUN_0007ce00(&local_f0,local_80);\n  puVar7 = param_1 + 0x1b;\n  puVar9 = &local_f0;\n  for (iVar5 = 0x1b; iVar5 != 0; iVar5 = iVar5 + -1) {\n    *puVar9 = *puVar7;\n    puVar7 = puVar7 + (uint)bVar10 * -2 + 1;\n    puVar9 = puVar9 + (uint)bVar10 * -2 + 1;\n  }\n  FUN_0007c880(&local_f0,local_80,0x20);\n  if (local_90 < 0x38) {\n    iVar5 = 0x38 - local_90;\n  }\n  else {\n    iVar5 = 0x78 - local_90;\n  }\n  uVar3 = local_88 >> 0x1d;\n  uVar1 = local_8c * 8;\n  __memset_chk(&local_60,0,iVar5,0x40,ppuVar2,local_88,iVar5);\n  local_60 = CONCAT31(local_60._1_3_,0x80);\n  FUN_0007c880(&local_f0,&local_60,iVar5);\n  uVar4 = local_88 << 3;\n  local_5c = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | local_88 << 0x1b;\n  local_60 = uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n             (uVar1 | uVar3) << 0x18;\n  FUN_0007c880(&local_f0,&local_60,8);\n  *puVar11 = local_f0 >> 0x18 | (local_f0 & 0xff0000) >> 8 | (local_f0 & 0xff00) << 8 |\n             local_f0 << 0x18;\n  puVar11[1] = local_ec >> 0x18 | (local_ec & 0xff0000) >> 8 | (local_ec & 0xff00) << 8 |\n               local_ec << 0x18;\n  puVar11[2] = local_e8 >> 0x18 | (local_e8 & 0xff0000) >> 8 | (local_e8 & 0xff00) << 8 |\n               local_e8 << 0x18;\n  puVar11[3] = local_e4 >> 0x18 | (local_e4 & 0xff0000) >> 8 | (local_e4 & 0xff00) << 8 |\n               local_e4 << 0x18;\n  puVar11[4] = local_e0 >> 0x18 | (local_e0 & 0xff0000) >> 8 | (local_e0 & 0xff00) << 8 |\n               local_e0 << 0x18;\n  puVar11[5] = local_dc >> 0x18 | (local_dc & 0xff0000) >> 8 | (local_dc & 0xff00) << 8 |\n               local_dc << 0x18;\n  puVar11[6] = local_d8 >> 0x18 | (local_d8 & 0xff0000) >> 8 | (local_d8 & 0xff00) << 8 |\n               local_d8 << 0x18;\n  puVar11[7] = local_d4 >> 0x18 | (local_d4 & 0xff0000) >> 8 | (local_d4 & 0xff00) << 8 |\n               local_d4 << 0x18;\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_000c60b0();\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 "undefined4 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "uint *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "undefined4 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "uint *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "byte bVar10;" type_identifier identifier ;) (declaration "uint *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "uint local_f0;" type_identifier identifier ;) (declaration "uint local_ec;" type_identifier identifier ;) (declaration "uint local_e8;" type_identifier identifier ;) (declaration "uint local_e4;" type_identifier identifier ;) (declaration "uint local_e0;" type_identifier identifier ;) (declaration "uint local_dc;" type_identifier identifier ;) (declaration "uint local_d8;" type_identifier identifier ;) (declaration "uint local_d4;" type_identifier identifier ;) (declaration "int local_90;" primitive_type identifier ;) (declaration "int local_8c;" primitive_type identifier ;) (declaration "uint local_88;" type_identifier 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 "bVar10 = 0;" (assignment_expression "bVar10 = 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 "puVar11 = (uint *)(param_2 + param_3);" (assignment_expression "puVar11 = (uint *)(param_2 + param_3)" identifier = (cast_expression "(uint *)(param_2 + param_3)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + param_3)" ( (binary_expression "param_2 + param_3" identifier + identifier) )))) ;) (expression_statement "local_84 = param_4 >> 0x18 | (param_4 & 0xff0000) >> 8 | (param_4 & 0xff00) << 8 | param_4 << 0x18\n  ;" (assignment_expression "local_84 = param_4 >> 0x18 | (param_4 & 0xff0000) >> 8 | (param_4 & 0xff00) << 8 | param_4 << 0x18" identifier = (binary_expression "param_4 >> 0x18 | (param_4 & 0xff0000) >> 8 | (param_4 & 0xff00) << 8 | param_4 << 0x18" (binary_expression "param_4 >> 0x18 | (param_4 & 0xff0000) >> 8 | (param_4 & 0xff00) << 8" (binary_expression "param_4 >> 0x18 | (param_4 & 0xff0000) >> 8" (binary_expression "param_4 >> 0x18" identifier >> number_literal) | (binary_expression "(param_4 & 0xff0000) >> 8" (parenthesized_expression "(param_4 & 0xff0000)" ( (binary_expression "param_4 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(param_4 & 0xff00) << 8" (parenthesized_expression "(param_4 & 0xff00)" ( (binary_expression "param_4 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "param_4 << 0x18" identifier << number_literal))) ;) (expression_statement "puVar6 = param_1;" (assignment_expression "puVar6 = param_1" identifier = identifier) ;) (expression_statement "puVar8 = param_1 + 0x36;" (assignment_expression "puVar8 = param_1 + 0x36" identifier = (binary_expression "param_1 + 0x36" identifier + number_literal)) ;) (for_statement "for (iVar5 = 0x1b; iVar5 != 0; iVar5 = iVar5 + -1) {\n    *puVar8 = *puVar6;\n    puVar6 = puVar6 + 1;\n    puVar8 = puVar8 + 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    *puVar8 = *puVar6;\n    puVar6 = puVar6 + 1;\n    puVar8 = puVar8 + 1;\n  }" { (expression_statement "*puVar8 = *puVar6;" (assignment_expression "*puVar8 = *puVar6" (pointer_expression "*puVar8" * 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 "puVar8 = puVar8 + 1;" (assignment_expression "puVar8 = puVar8 + 1" identifier = (binary_expression "puVar8 + 1" identifier + number_literal)) ;) })) (expression_statement "puVar7 = param_1 + 0x36;" (assignment_expression "puVar7 = param_1 + 0x36" identifier = (binary_expression "param_1 + 0x36" identifier + number_literal)) ;) (expression_statement "FUN_0007c880(puVar7,&local_84,4);" (call_expression "FUN_0007c880(puVar7,&local_84,4)" identifier (argument_list "(puVar7,&local_84,4)" ( identifier , (pointer_expression "&local_84" & identifier) , number_literal ))) ;) (expression_statement "FUN_0007c880(puVar7,param_2,param_3);" (call_expression "FUN_0007c880(puVar7,param_2,param_3)" identifier (argument_list "(puVar7,param_2,param_3)" ( identifier , identifier , identifier ))) ;) (expression_statement "puVar9 = &local_f0;" (assignment_expression "puVar9 = &local_f0" identifier = (pointer_expression "&local_f0" & identifier)) ;) (for_statement "for (iVar5 = 0x1b; iVar5 != 0; iVar5 = iVar5 + -1) {\n    *puVar9 = *puVar7;\n    puVar7 = puVar7 + (uint)bVar10 * -2 + 1;\n    puVar9 = puVar9 + (uint)bVar10 * -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    *puVar9 = *puVar7;\n    puVar7 = puVar7 + (uint)bVar10 * -2 + 1;\n    puVar9 = puVar9 + (uint)bVar10 * -2 + 1;\n  }" { (expression_statement "*puVar9 = *puVar7;" (assignment_expression "*puVar9 = *puVar7" (pointer_expression "*puVar9" * identifier) = (pointer_expression "*puVar7" * identifier)) ;) (expression_statement "puVar7 = puVar7 + (uint)bVar10 * -2 + 1;" (assignment_expression "puVar7 = puVar7 + (uint)bVar10 * -2 + 1" identifier = (binary_expression "puVar7 + (uint)bVar10 * -2 + 1" (binary_expression "puVar7 + (uint)bVar10 * -2" identifier + (binary_expression "(uint)bVar10 * -2" (cast_expression "(uint)bVar10" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "puVar9 = puVar9 + (uint)bVar10 * -2 + 1;" (assignment_expression "puVar9 = puVar9 + (uint)bVar10 * -2 + 1" identifier = (binary_expression "puVar9 + (uint)bVar10 * -2 + 1" (binary_expression "puVar9 + (uint)bVar10 * -2" identifier + (binary_expression "(uint)bVar10 * -2" (cast_expression "(uint)bVar10" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (expression_statement "FUN_0007ce00(&local_f0,local_80);" (call_expression "FUN_0007ce00(&local_f0,local_80)" identifier (argument_list "(&local_f0,local_80)" ( (pointer_expression "&local_f0" & identifier) , identifier ))) ;) (expression_statement "puVar7 = param_1 + 0x1b;" (assignment_expression "puVar7 = param_1 + 0x1b" identifier = (binary_expression "param_1 + 0x1b" identifier + number_literal)) ;) (expression_statement "puVar9 = &local_f0;" (assignment_expression "puVar9 = &local_f0" identifier = (pointer_expression "&local_f0" & identifier)) ;) (for_statement "for (iVar5 = 0x1b; iVar5 != 0; iVar5 = iVar5 + -1) {\n    *puVar9 = *puVar7;\n    puVar7 = puVar7 + (uint)bVar10 * -2 + 1;\n    puVar9 = puVar9 + (uint)bVar10 * -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    *puVar9 = *puVar7;\n    puVar7 = puVar7 + (uint)bVar10 * -2 + 1;\n    puVar9 = puVar9 + (uint)bVar10 * -2 + 1;\n  }" { (expression_statement "*puVar9 = *puVar7;" (assignment_expression "*puVar9 = *puVar7" (pointer_expression "*puVar9" * identifier) = (pointer_expression "*puVar7" * identifier)) ;) (expression_statement "puVar7 = puVar7 + (uint)bVar10 * -2 + 1;" (assignment_expression "puVar7 = puVar7 + (uint)bVar10 * -2 + 1" identifier = (binary_expression "puVar7 + (uint)bVar10 * -2 + 1" (binary_expression "puVar7 + (uint)bVar10 * -2" identifier + (binary_expression "(uint)bVar10 * -2" (cast_expression "(uint)bVar10" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "puVar9 = puVar9 + (uint)bVar10 * -2 + 1;" (assignment_expression "puVar9 = puVar9 + (uint)bVar10 * -2 + 1" identifier = (binary_expression "puVar9 + (uint)bVar10 * -2 + 1" (binary_expression "puVar9 + (uint)bVar10 * -2" identifier + (binary_expression "(uint)bVar10 * -2" (cast_expression "(uint)bVar10" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (expression_statement "FUN_0007c880(&local_f0,local_80,0x20);" (call_expression "FUN_0007c880(&local_f0,local_80,0x20)" identifier (argument_list "(&local_f0,local_80,0x20)" ( (pointer_expression "&local_f0" & identifier) , identifier , number_literal ))) ;) (if_statement "if (local_90 < 0x38) {\n    iVar5 = 0x38 - local_90;\n  }\n  else {\n    iVar5 = 0x78 - local_90;\n  }" if (parenthesized_expression "(local_90 < 0x38)" ( (binary_expression "local_90 < 0x38" identifier < number_literal) )) (compound_statement "{\n    iVar5 = 0x38 - local_90;\n  }" { (expression_statement "iVar5 = 0x38 - local_90;" (assignment_expression "iVar5 = 0x38 - local_90" identifier = (binary_expression "0x38 - local_90" number_literal - identifier)) ;) }) (else_clause "else {\n    iVar5 = 0x78 - local_90;\n  }" else (compound_statement "{\n    iVar5 = 0x78 - local_90;\n  }" { (expression_statement "iVar5 = 0x78 - local_90;" (assignment_expression "iVar5 = 0x78 - local_90" identifier = (binary_expression "0x78 - local_90" number_literal - identifier)) ;) }))) (expression_statement "uVar3 = local_88 >> 0x1d;" (assignment_expression "uVar3 = local_88 >> 0x1d" identifier = (binary_expression "local_88 >> 0x1d" identifier >> number_literal)) ;) (expression_statement "uVar1 = local_8c * 8;" (assignment_expression "uVar1 = local_8c * 8" identifier = (binary_expression "local_8c * 8" identifier * number_literal)) ;) (expression_statement "__memset_chk(&local_60,0,iVar5,0x40,ppuVar2,local_88,iVar5);" (call_expression "__memset_chk(&local_60,0,iVar5,0x40,ppuVar2,local_88,iVar5)" identifier (argument_list "(&local_60,0,iVar5,0x40,ppuVar2,local_88,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_0007c880(&local_f0,&local_60,iVar5);" (call_expression "FUN_0007c880(&local_f0,&local_60,iVar5)" identifier (argument_list "(&local_f0,&local_60,iVar5)" ( (pointer_expression "&local_f0" & identifier) , (pointer_expression "&local_60" & identifier) , identifier ))) ;) (expression_statement "uVar4 = local_88 << 3;" (assignment_expression "uVar4 = local_88 << 3" identifier = (binary_expression "local_88 << 3" identifier << number_literal)) ;) (expression_statement "local_5c = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | local_88 << 0x1b;" (assignment_expression "local_5c = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | local_88 << 0x1b" identifier = (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | local_88 << 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_88 << 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_0007c880(&local_f0,&local_60,8);" (call_expression "FUN_0007c880(&local_f0,&local_60,8)" identifier (argument_list "(&local_f0,&local_60,8)" ( (pointer_expression "&local_f0" & identifier) , (pointer_expression "&local_60" & identifier) , number_literal ))) ;) (expression_statement "*puVar11 = local_f0 >> 0x18 | (local_f0 & 0xff0000) >> 8 | (local_f0 & 0xff00) << 8 |\n             local_f0 << 0x18;" (assignment_expression "*puVar11 = local_f0 >> 0x18 | (local_f0 & 0xff0000) >> 8 | (local_f0 & 0xff00) << 8 |\n             local_f0 << 0x18" (pointer_expression "*puVar11" * identifier) = (binary_expression "local_f0 >> 0x18 | (local_f0 & 0xff0000) >> 8 | (local_f0 & 0xff00) << 8 |\n             local_f0 << 0x18" (binary_expression "local_f0 >> 0x18 | (local_f0 & 0xff0000) >> 8 | (local_f0 & 0xff00) << 8" (binary_expression "local_f0 >> 0x18 | (local_f0 & 0xff0000) >> 8" (binary_expression "local_f0 >> 0x18" identifier >> number_literal) | (binary_expression "(local_f0 & 0xff0000) >> 8" (parenthesized_expression "(local_f0 & 0xff0000)" ( (binary_expression "local_f0 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(local_f0 & 0xff00) << 8" (parenthesized_expression "(local_f0 & 0xff00)" ( (binary_expression "local_f0 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "local_f0 << 0x18" identifier << number_literal))) ;) (expression_statement "puVar11[1] = local_ec >> 0x18 | (local_ec & 0xff0000) >> 8 | (local_ec & 0xff00) << 8 |\n               local_ec << 0x18;" (assignment_expression "puVar11[1] = local_ec >> 0x18 | (local_ec & 0xff0000) >> 8 | (local_ec & 0xff00) << 8 |\n               local_ec << 0x18" (subscript_expression "puVar11[1]" identifier [ number_literal ]) = (binary_expression "local_ec >> 0x18 | (local_ec & 0xff0000) >> 8 | (local_ec & 0xff00) << 8 |\n               local_ec << 0x18" (binary_expression "local_ec >> 0x18 | (local_ec & 0xff0000) >> 8 | (local_ec & 0xff00) << 8" (binary_expression "local_ec >> 0x18 | (local_ec & 0xff0000) >> 8" (binary_expression "local_ec >> 0x18" identifier >> number_literal) | (binary_expression "(local_ec & 0xff0000) >> 8" (parenthesized_expression "(local_ec & 0xff0000)" ( (binary_expression "local_ec & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(local_ec & 0xff00) << 8" (parenthesized_expression "(local_ec & 0xff00)" ( (binary_expression "local_ec & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "local_ec << 0x18" identifier << number_literal))) ;) (expression_statement "puVar11[2] = local_e8 >> 0x18 | (local_e8 & 0xff0000) >> 8 | (local_e8 & 0xff00) << 8 |\n               local_e8 << 0x18;" (assignment_expression "puVar11[2] = local_e8 >> 0x18 | (local_e8 & 0xff0000) >> 8 | (local_e8 & 0xff00) << 8 |\n               local_e8 << 0x18" (subscript_expression "puVar11[2]" identifier [ number_literal ]) = (binary_expression "local_e8 >> 0x18 | (local_e8 & 0xff0000) >> 8 | (local_e8 & 0xff00) << 8 |\n               local_e8 << 0x18" (binary_expression "local_e8 >> 0x18 | (local_e8 & 0xff0000) >> 8 | (local_e8 & 0xff00) << 8" (binary_expression "local_e8 >> 0x18 | (local_e8 & 0xff0000) >> 8" (binary_expression "local_e8 >> 0x18" identifier >> number_literal) | (binary_expression "(local_e8 & 0xff0000) >> 8" (parenthesized_expression "(local_e8 & 0xff0000)" ( (binary_expression "local_e8 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(local_e8 & 0xff00) << 8" (parenthesized_expression "(local_e8 & 0xff00)" ( (binary_expression "local_e8 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "local_e8 << 0x18" identifier << number_literal))) ;) (expression_statement "puVar11[3] = local_e4 >> 0x18 | (local_e4 & 0xff0000) >> 8 | (local_e4 & 0xff00) << 8 |\n               local_e4 << 0x18;" (assignment_expression "puVar11[3] = local_e4 >> 0x18 | (local_e4 & 0xff0000) >> 8 | (local_e4 & 0xff00) << 8 |\n               local_e4 << 0x18" (subscript_expression "puVar11[3]" identifier [ number_literal ]) = (binary_expression "local_e4 >> 0x18 | (local_e4 & 0xff0000) >> 8 | (local_e4 & 0xff00) << 8 |\n               local_e4 << 0x18" (binary_expression "local_e4 >> 0x18 | (local_e4 & 0xff0000) >> 8 | (local_e4 & 0xff00) << 8" (binary_expression "local_e4 >> 0x18 | (local_e4 & 0xff0000) >> 8" (binary_expression "local_e4 >> 0x18" identifier >> number_literal) | (binary_expression "(local_e4 & 0xff0000) >> 8" (parenthesized_expression "(local_e4 & 0xff0000)" ( (binary_expression "local_e4 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(local_e4 & 0xff00) << 8" (parenthesized_expression "(local_e4 & 0xff00)" ( (binary_expression "local_e4 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "local_e4 << 0x18" identifier << number_literal))) ;) (expression_statement "puVar11[4] = local_e0 >> 0x18 | (local_e0 & 0xff0000) >> 8 | (local_e0 & 0xff00) << 8 |\n               local_e0 << 0x18;" (assignment_expression "puVar11[4] = local_e0 >> 0x18 | (local_e0 & 0xff0000) >> 8 | (local_e0 & 0xff00) << 8 |\n               local_e0 << 0x18" (subscript_expression "puVar11[4]" identifier [ number_literal ]) = (binary_expression "local_e0 >> 0x18 | (local_e0 & 0xff0000) >> 8 | (local_e0 & 0xff00) << 8 |\n               local_e0 << 0x18" (binary_expression "local_e0 >> 0x18 | (local_e0 & 0xff0000) >> 8 | (local_e0 & 0xff00) << 8" (binary_expression "local_e0 >> 0x18 | (local_e0 & 0xff0000) >> 8" (binary_expression "local_e0 >> 0x18" identifier >> number_literal) | (binary_expression "(local_e0 & 0xff0000) >> 8" (parenthesized_expression "(local_e0 & 0xff0000)" ( (binary_expression "local_e0 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(local_e0 & 0xff00) << 8" (parenthesized_expression "(local_e0 & 0xff00)" ( (binary_expression "local_e0 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "local_e0 << 0x18" identifier << number_literal))) ;) (expression_statement "puVar11[5] = local_dc >> 0x18 | (local_dc & 0xff0000) >> 8 | (local_dc & 0xff00) << 8 |\n               local_dc << 0x18;" (assignment_expression "puVar11[5] = local_dc >> 0x18 | (local_dc & 0xff0000) >> 8 | (local_dc & 0xff00) << 8 |\n               local_dc << 0x18" (subscript_expression "puVar11[5]" 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 "puVar11[6] = local_d8 >> 0x18 | (local_d8 & 0xff0000) >> 8 | (local_d8 & 0xff00) << 8 |\n               local_d8 << 0x18;" (assignment_expression "puVar11[6] = local_d8 >> 0x18 | (local_d8 & 0xff0000) >> 8 | (local_d8 & 0xff00) << 8 |\n               local_d8 << 0x18" (subscript_expression "puVar11[6]" 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 "puVar11[7] = local_d4 >> 0x18 | (local_d4 & 0xff0000) >> 8 | (local_d4 & 0xff00) << 8 |\n               local_d4 << 0x18;" (assignment_expression "puVar11[7] = local_d4 >> 0x18 | (local_d4 & 0xff0000) >> 8 | (local_d4 & 0xff00) << 8 |\n               local_d4 << 0x18" (subscript_expression "puVar11[7]" 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))) ;) (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_000c60b0();" (call_expression "FUN_000c60b0()" 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 sha256_generate(void *handle,uchar *blk,int len,ulong seq)\n\n{\n  uint *puVar1;\n  uint uVar2;\n  int iVar3;\n  undefined **ppuVar4;\n  uint uVar5;\n  uint uVar6;\n  int iVar7;\n  undefined4 *puVar8;\n  SHA256_State *pSVar9;\n  uint32 *puVar10;\n  undefined4 *puVar11;\n  SHA256_State *pSVar12;\n  int in_GS_OFFSET;\n  byte bVar13;\n  SHA256_State s;\n  uchar seqbuf [4];\n  uchar intermediate [32];\n  uchar c [64];\n  \n  bVar13 = 0;\n  ppuVar4 = &_GLOBAL_OFFSET_TABLE_;\n  iVar3 = *(int *)(in_GS_OFFSET + 0x14);\n  puVar1 = (uint *)(blk + len);\n  seqbuf = (uchar  [4])(seq >> 0x18 | (seq & 0xff0000) >> 8 | (seq & 0xff00) << 8 | seq << 0x18);\n  puVar8 = (undefined4 *)handle;\n  puVar11 = (undefined4 *)((int)handle + 0xd8);\n  for (iVar7 = 0x1b; iVar7 != 0; iVar7 = iVar7 + -1) {\n    *puVar11 = *puVar8;\n    puVar8 = puVar8 + 1;\n    puVar11 = puVar11 + 1;\n  }\n  pSVar9 = (SHA256_State *)((int)handle + 0xd8);\n  SHA256_Bytes(pSVar9,seqbuf,4);\n  SHA256_Bytes(pSVar9,blk,len);\n  pSVar12 = &s;\n  for (iVar7 = 0x1b; iVar7 != 0; iVar7 = iVar7 + -1) {\n    pSVar12->h[0] = pSVar9->h[0];\n    pSVar9 = (SHA256_State *)((int)pSVar9 + (uint)bVar13 * -8 + 4);\n    pSVar12 = (SHA256_State *)((int)pSVar12 + (uint)bVar13 * -8 + 4);\n  }\n  SHA256_Final(&s,intermediate);\n  puVar10 = (uint32 *)((int)handle + 0x6c);\n  pSVar9 = &s;\n  for (iVar7 = 0x1b; iVar7 != 0; iVar7 = iVar7 + -1) {\n    pSVar9->h[0] = *puVar10;\n    puVar10 = puVar10 + (uint)bVar13 * -2 + 1;\n    pSVar9 = (SHA256_State *)((int)pSVar9 + (uint)bVar13 * -8 + 4);\n  }\n  SHA256_Bytes(&s,intermediate,0x20);\n  if (s.blkused < 0x38) {\n    iVar7 = 0x38 - s.blkused;\n  }\n  else {\n    iVar7 = 0x78 - s.blkused;\n  }\n  uVar5 = s.lenlo >> 0x1d;\n  uVar2 = s.lenhi * 8;\n  __memset_chk(c,0,iVar7,0x40,ppuVar4,s.lenlo);\n  c[0] = 0x80;\n  SHA256_Bytes(&s,c,iVar7);\n  uVar6 = s.lenlo << 3;\n  c._4_4_ = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | s.lenlo << 0x1b;\n  c._0_4_ = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 |\n            (uVar2 | uVar5) << 0x18;\n  SHA256_Bytes(&s,c,8);\n  *puVar1 = s.h[0] >> 0x18 | (s.h[0] & 0xff0000) >> 8 | (s.h[0] & 0xff00) << 8 | s.h[0] << 0x18;\n  puVar1[1] = s.h[1] >> 0x18 | (s.h[1] & 0xff0000) >> 8 | (s.h[1] & 0xff00) << 8 | s.h[1] << 0x18;\n  puVar1[2] = s.h[2] >> 0x18 | (s.h[2] & 0xff0000) >> 8 | (s.h[2] & 0xff00) << 8 | s.h[2] << 0x18;\n  puVar1[3] = s.h[3] >> 0x18 | (s.h[3] & 0xff0000) >> 8 | (s.h[3] & 0xff00) << 8 | s.h[3] << 0x18;\n  puVar1[4] = s.h[4] >> 0x18 | (s.h[4] & 0xff0000) >> 8 | (s.h[4] & 0xff00) << 8 | s.h[4] << 0x18;\n  puVar1[5] = s.h[5] >> 0x18 | (s.h[5] & 0xff0000) >> 8 | (s.h[5] & 0xff00) << 8 | s.h[5] << 0x18;\n  puVar1[6] = s.h[6] >> 0x18 | (s.h[6] & 0xff0000) >> 8 | (s.h[6] & 0xff00) << 8 | s.h[6] << 0x18;\n  puVar1[7] = s.h[7] >> 0x18 | (s.h[7] & 0xff0000) >> 8 | (s.h[7] & 0xff00) << 8 | s.h[7] << 0x18;\n  if (iVar3 == *(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 sha256_generate(void *handle,uchar *blk,int len,ulong seq)\n\n{\n  uint *puVar1;\n  uint uVar2;\n  int iVar3;\n  undefined **ppuVar4;\n  uint uVar5;\n  uint uVar6;\n  int iVar7;\n  undefined4 *puVar8;\n  SHA256_State *pSVar9;\n  uint32 *puVar10;\n  undefined4 *puVar11;\n  SHA256_State *pSVar12;\n  int in_GS_OFFSET;\n  byte bVar13;\n  SHA256_State s;\n  uchar seqbuf [4];\n  uchar intermediate [32];\n  uchar c [64];\n  \n  bVar13 = 0;\n  ppuVar4 = &_GLOBAL_OFFSET_TABLE_;\n  iVar3 = *(int *)(in_GS_OFFSET + 0x14);\n  puVar1 = (uint *)(blk + len);\n  seqbuf = (uchar  [4])(seq >> 0x18 | (seq & 0xff0000) >> 8 | (seq & 0xff00) << 8 | seq << 0x18);\n  puVar8 = (undefined4 *)handle;\n  puVar11 = (undefined4 *)((int)handle + 0xd8);\n  for (iVar7 = 0x1b; iVar7 != 0; iVar7 = iVar7 + -1) {\n    *puVar11 = *puVar8;\n    puVar8 = puVar8 + 1;\n    puVar11 = puVar11 + 1;\n  }\n  pSVar9 = (SHA256_State *)((int)handle + 0xd8);\n  SHA256_Bytes(pSVar9,seqbuf,4);\n  SHA256_Bytes(pSVar9,blk,len);\n  pSVar12 = &s;\n  for (iVar7 = 0x1b; iVar7 != 0; iVar7 = iVar7 + -1) {\n    pSVar12->h[0] = pSVar9->h[0];\n    pSVar9 = (SHA256_State *)((int)pSVar9 + (uint)bVar13 * -8 + 4);\n    pSVar12 = (SHA256_State *)((int)pSVar12 + (uint)bVar13 * -8 + 4);\n  }\n  SHA256_Final(&s,intermediate);\n  puVar10 = (uint32 *)((int)handle + 0x6c);\n  pSVar9 = &s;\n  for (iVar7 = 0x1b; iVar7 != 0; iVar7 = iVar7 + -1) {\n    pSVar9->h[0] = *puVar10;\n    puVar10 = puVar10 + (uint)bVar13 * -2 + 1;\n    pSVar9 = (SHA256_State *)((int)pSVar9 + (uint)bVar13 * -8 + 4);\n  }\n  SHA256_Bytes(&s,intermediate,0x20);\n  if (s.blkused < 0x38) {\n    iVar7 = 0x38 - s.blkused;\n  }\n  else {\n    iVar7 = 0x78 - s.blkused;\n  }\n  uVar5 = s.lenlo >> 0x1d;\n  uVar2 = s.lenhi * 8;\n  __memset_chk(c,0,iVar7,0x40,ppuVar4,s.lenlo);\n  c[0] = 0x80;\n  SHA256_Bytes(&s,c,iVar7);\n  uVar6 = s.lenlo << 3;\n  c._4_4_ = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | s.lenlo << 0x1b;\n  c._0_4_ = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 |\n            (uVar2 | uVar5) << 0x18;\n  SHA256_Bytes(&s,c,8);\n  *puVar1 = s.h[0] >> 0x18 | (s.h[0] & 0xff0000) >> 8 | (s.h[0] & 0xff00) << 8 | s.h[0] << 0x18;\n  puVar1[1] = s.h[1] >> 0x18 | (s.h[1] & 0xff0000) >> 8 | (s.h[1] & 0xff00) << 8 | s.h[1] << 0x18;\n  puVar1[2] = s.h[2] >> 0x18 | (s.h[2] & 0xff0000) >> 8 | (s.h[2] & 0xff00) << 8 | s.h[2] << 0x18;\n  puVar1[3] = s.h[3] >> 0x18 | (s.h[3] & 0xff0000) >> 8 | (s.h[3] & 0xff00) << 8 | s.h[3] << 0x18;\n  puVar1[4] = s.h[4] >> 0x18 | (s.h[4] & 0xff0000) >> 8 | (s.h[4] & 0xff00) << 8 | s.h[4] << 0x18;\n  puVar1[5] = s.h[5] >> 0x18 | (s.h[5] & 0xff0000) >> 8 | (s.h[5] & 0xff00) << 8 | s.h[5] << 0x18;\n  puVar1[6] = s.h[6] >> 0x18 | (s.h[6] & 0xff0000) >> 8 | (s.h[6] & 0xff00) << 8 | s.h[6] << 0x18;\n  puVar1[7] = s.h[7] >> 0x18 | (s.h[7] & 0xff0000) >> 8 | (s.h[7] & 0xff00) << 8 | s.h[7] << 0x18;\n  if (iVar3 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail_local();\n}" primitive_type (function_declarator "sha256_generate(void *handle,uchar *blk,int len,ulong seq)" identifier (parameter_list "(void *handle,uchar *blk,int len,ulong seq)" ( (parameter_declaration "void *handle" primitive_type (pointer_declarator "*handle" * identifier)) , (parameter_declaration "uchar *blk" type_identifier (pointer_declarator "*blk" * identifier)) , (parameter_declaration "int len" primitive_type identifier) , (parameter_declaration "ulong seq" type_identifier identifier) ))) (compound_statement "{\n  uint *puVar1;\n  uint uVar2;\n  int iVar3;\n  undefined **ppuVar4;\n  uint uVar5;\n  uint uVar6;\n  int iVar7;\n  undefined4 *puVar8;\n  SHA256_State *pSVar9;\n  uint32 *puVar10;\n  undefined4 *puVar11;\n  SHA256_State *pSVar12;\n  int in_GS_OFFSET;\n  byte bVar13;\n  SHA256_State s;\n  uchar seqbuf [4];\n  uchar intermediate [32];\n  uchar c [64];\n  \n  bVar13 = 0;\n  ppuVar4 = &_GLOBAL_OFFSET_TABLE_;\n  iVar3 = *(int *)(in_GS_OFFSET + 0x14);\n  puVar1 = (uint *)(blk + len);\n  seqbuf = (uchar  [4])(seq >> 0x18 | (seq & 0xff0000) >> 8 | (seq & 0xff00) << 8 | seq << 0x18);\n  puVar8 = (undefined4 *)handle;\n  puVar11 = (undefined4 *)((int)handle + 0xd8);\n  for (iVar7 = 0x1b; iVar7 != 0; iVar7 = iVar7 + -1) {\n    *puVar11 = *puVar8;\n    puVar8 = puVar8 + 1;\n    puVar11 = puVar11 + 1;\n  }\n  pSVar9 = (SHA256_State *)((int)handle + 0xd8);\n  SHA256_Bytes(pSVar9,seqbuf,4);\n  SHA256_Bytes(pSVar9,blk,len);\n  pSVar12 = &s;\n  for (iVar7 = 0x1b; iVar7 != 0; iVar7 = iVar7 + -1) {\n    pSVar12->h[0] = pSVar9->h[0];\n    pSVar9 = (SHA256_State *)((int)pSVar9 + (uint)bVar13 * -8 + 4);\n    pSVar12 = (SHA256_State *)((int)pSVar12 + (uint)bVar13 * -8 + 4);\n  }\n  SHA256_Final(&s,intermediate);\n  puVar10 = (uint32 *)((int)handle + 0x6c);\n  pSVar9 = &s;\n  for (iVar7 = 0x1b; iVar7 != 0; iVar7 = iVar7 + -1) {\n    pSVar9->h[0] = *puVar10;\n    puVar10 = puVar10 + (uint)bVar13 * -2 + 1;\n    pSVar9 = (SHA256_State *)((int)pSVar9 + (uint)bVar13 * -8 + 4);\n  }\n  SHA256_Bytes(&s,intermediate,0x20);\n  if (s.blkused < 0x38) {\n    iVar7 = 0x38 - s.blkused;\n  }\n  else {\n    iVar7 = 0x78 - s.blkused;\n  }\n  uVar5 = s.lenlo >> 0x1d;\n  uVar2 = s.lenhi * 8;\n  __memset_chk(c,0,iVar7,0x40,ppuVar4,s.lenlo);\n  c[0] = 0x80;\n  SHA256_Bytes(&s,c,iVar7);\n  uVar6 = s.lenlo << 3;\n  c._4_4_ = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | s.lenlo << 0x1b;\n  c._0_4_ = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 |\n            (uVar2 | uVar5) << 0x18;\n  SHA256_Bytes(&s,c,8);\n  *puVar1 = s.h[0] >> 0x18 | (s.h[0] & 0xff0000) >> 8 | (s.h[0] & 0xff00) << 8 | s.h[0] << 0x18;\n  puVar1[1] = s.h[1] >> 0x18 | (s.h[1] & 0xff0000) >> 8 | (s.h[1] & 0xff00) << 8 | s.h[1] << 0x18;\n  puVar1[2] = s.h[2] >> 0x18 | (s.h[2] & 0xff0000) >> 8 | (s.h[2] & 0xff00) << 8 | s.h[2] << 0x18;\n  puVar1[3] = s.h[3] >> 0x18 | (s.h[3] & 0xff0000) >> 8 | (s.h[3] & 0xff00) << 8 | s.h[3] << 0x18;\n  puVar1[4] = s.h[4] >> 0x18 | (s.h[4] & 0xff0000) >> 8 | (s.h[4] & 0xff00) << 8 | s.h[4] << 0x18;\n  puVar1[5] = s.h[5] >> 0x18 | (s.h[5] & 0xff0000) >> 8 | (s.h[5] & 0xff00) << 8 | s.h[5] << 0x18;\n  puVar1[6] = s.h[6] >> 0x18 | (s.h[6] & 0xff0000) >> 8 | (s.h[6] & 0xff00) << 8 | s.h[6] << 0x18;\n  puVar1[7] = s.h[7] >> 0x18 | (s.h[7] & 0xff0000) >> 8 | (s.h[7] & 0xff00) << 8 | s.h[7] << 0x18;\n  if (iVar3 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail_local();\n}" { (declaration "uint *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "undefined **ppuVar4;" type_identifier (pointer_declarator "**ppuVar4" * (pointer_declarator "*ppuVar4" * identifier)) ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "undefined4 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "SHA256_State *pSVar9;" type_identifier (pointer_declarator "*pSVar9" * identifier) ;) (declaration "uint32 *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "undefined4 *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "SHA256_State *pSVar12;" type_identifier (pointer_declarator "*pSVar12" * identifier) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "byte bVar13;" type_identifier identifier ;) (declaration "SHA256_State s;" type_identifier identifier ;) (declaration "uchar seqbuf [4];" type_identifier (array_declarator "seqbuf [4]" identifier [ number_literal ]) ;) (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 "bVar13 = 0;" (assignment_expression "bVar13 = 0" identifier = number_literal) ;) (expression_statement "ppuVar4 = &_GLOBAL_OFFSET_TABLE_;" (assignment_expression "ppuVar4 = &_GLOBAL_OFFSET_TABLE_" identifier = (pointer_expression "&_GLOBAL_OFFSET_TABLE_" & identifier)) ;) (expression_statement "iVar3 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "iVar3 = *(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 "puVar1 = (uint *)(blk + len);" (assignment_expression "puVar1 = (uint *)(blk + len)" identifier = (cast_expression "(uint *)(blk + len)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(blk + len)" ( (binary_expression "blk + len" identifier + identifier) )))) ;) (expression_statement "seqbuf = (uchar  [4])(seq >> 0x18 | (seq & 0xff0000) >> 8 | (seq & 0xff00) << 8 | seq << 0x18);" (assignment_expression "seqbuf = (uchar  [4])(seq >> 0x18 | (seq & 0xff0000) >> 8 | (seq & 0xff00) << 8 | seq << 0x18)" identifier = (call_expression "(uchar  [4])(seq >> 0x18 | (seq & 0xff0000) >> 8 | (seq & 0xff00) << 8 | seq << 0x18)" (parenthesized_expression "(uchar  [4])" ( (subscript_expression "uchar  [4]" identifier [ number_literal ]) )) (argument_list "(seq >> 0x18 | (seq & 0xff0000) >> 8 | (seq & 0xff00) << 8 | seq << 0x18)" ( (binary_expression "seq >> 0x18 | (seq & 0xff0000) >> 8 | (seq & 0xff00) << 8 | seq << 0x18" (binary_expression "seq >> 0x18 | (seq & 0xff0000) >> 8 | (seq & 0xff00) << 8" (binary_expression "seq >> 0x18 | (seq & 0xff0000) >> 8" (binary_expression "seq >> 0x18" identifier >> number_literal) | (binary_expression "(seq & 0xff0000) >> 8" (parenthesized_expression "(seq & 0xff0000)" ( (binary_expression "seq & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(seq & 0xff00) << 8" (parenthesized_expression "(seq & 0xff00)" ( (binary_expression "seq & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "seq << 0x18" identifier << number_literal)) )))) ;) (expression_statement "puVar8 = (undefined4 *)handle;" (assignment_expression "puVar8 = (undefined4 *)handle" identifier = (cast_expression "(undefined4 *)handle" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "puVar11 = (undefined4 *)((int)handle + 0xd8);" (assignment_expression "puVar11 = (undefined4 *)((int)handle + 0xd8)" identifier = (cast_expression "(undefined4 *)((int)handle + 0xd8)" ( (type_descriptor "undefined4 *" 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) )))) ;) (for_statement "for (iVar7 = 0x1b; iVar7 != 0; iVar7 = iVar7 + -1) {\n    *puVar11 = *puVar8;\n    puVar8 = puVar8 + 1;\n    puVar11 = puVar11 + 1;\n  }" for ( (assignment_expression "iVar7 = 0x1b" identifier = number_literal) ; (binary_expression "iVar7 != 0" identifier != number_literal) ; (assignment_expression "iVar7 = iVar7 + -1" identifier = (binary_expression "iVar7 + -1" identifier + number_literal)) ) (compound_statement "{\n    *puVar11 = *puVar8;\n    puVar8 = puVar8 + 1;\n    puVar11 = puVar11 + 1;\n  }" { (expression_statement "*puVar11 = *puVar8;" (assignment_expression "*puVar11 = *puVar8" (pointer_expression "*puVar11" * identifier) = (pointer_expression "*puVar8" * identifier)) ;) (expression_statement "puVar8 = puVar8 + 1;" (assignment_expression "puVar8 = puVar8 + 1" identifier = (binary_expression "puVar8 + 1" identifier + number_literal)) ;) (expression_statement "puVar11 = puVar11 + 1;" (assignment_expression "puVar11 = puVar11 + 1" identifier = (binary_expression "puVar11 + 1" identifier + number_literal)) ;) })) (expression_statement "pSVar9 = (SHA256_State *)((int)handle + 0xd8);" (assignment_expression "pSVar9 = (SHA256_State *)((int)handle + 0xd8)" identifier = (cast_expression "(SHA256_State *)((int)handle + 0xd8)" ( (type_descriptor "SHA256_State *" 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 "SHA256_Bytes(pSVar9,seqbuf,4);" (call_expression "SHA256_Bytes(pSVar9,seqbuf,4)" identifier (argument_list "(pSVar9,seqbuf,4)" ( identifier , identifier , number_literal ))) ;) (expression_statement "SHA256_Bytes(pSVar9,blk,len);" (call_expression "SHA256_Bytes(pSVar9,blk,len)" identifier (argument_list "(pSVar9,blk,len)" ( identifier , identifier , identifier ))) ;) (expression_statement "pSVar12 = &s;" (assignment_expression "pSVar12 = &s" identifier = (pointer_expression "&s" & identifier)) ;) (for_statement "for (iVar7 = 0x1b; iVar7 != 0; iVar7 = iVar7 + -1) {\n    pSVar12->h[0] = pSVar9->h[0];\n    pSVar9 = (SHA256_State *)((int)pSVar9 + (uint)bVar13 * -8 + 4);\n    pSVar12 = (SHA256_State *)((int)pSVar12 + (uint)bVar13 * -8 + 4);\n  }" for ( (assignment_expression "iVar7 = 0x1b" identifier = number_literal) ; (binary_expression "iVar7 != 0" identifier != number_literal) ; (assignment_expression "iVar7 = iVar7 + -1" identifier = (binary_expression "iVar7 + -1" identifier + number_literal)) ) (compound_statement "{\n    pSVar12->h[0] = pSVar9->h[0];\n    pSVar9 = (SHA256_State *)((int)pSVar9 + (uint)bVar13 * -8 + 4);\n    pSVar12 = (SHA256_State *)((int)pSVar12 + (uint)bVar13 * -8 + 4);\n  }" { (expression_statement "pSVar12->h[0] = pSVar9->h[0];" (assignment_expression "pSVar12->h[0] = pSVar9->h[0]" (subscript_expression "pSVar12->h[0]" (field_expression "pSVar12->h" identifier -> field_identifier) [ number_literal ]) = (subscript_expression "pSVar9->h[0]" (field_expression "pSVar9->h" identifier -> field_identifier) [ number_literal ])) ;) (expression_statement "pSVar9 = (SHA256_State *)((int)pSVar9 + (uint)bVar13 * -8 + 4);" (assignment_expression "pSVar9 = (SHA256_State *)((int)pSVar9 + (uint)bVar13 * -8 + 4)" identifier = (cast_expression "(SHA256_State *)((int)pSVar9 + (uint)bVar13 * -8 + 4)" ( (type_descriptor "SHA256_State *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pSVar9 + (uint)bVar13 * -8 + 4)" ( (binary_expression "(int)pSVar9 + (uint)bVar13 * -8 + 4" (binary_expression "(int)pSVar9 + (uint)bVar13 * -8" (cast_expression "(int)pSVar9" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "(uint)bVar13 * -8" (cast_expression "(uint)bVar13" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal) )))) ;) (expression_statement "pSVar12 = (SHA256_State *)((int)pSVar12 + (uint)bVar13 * -8 + 4);" (assignment_expression "pSVar12 = (SHA256_State *)((int)pSVar12 + (uint)bVar13 * -8 + 4)" identifier = (cast_expression "(SHA256_State *)((int)pSVar12 + (uint)bVar13 * -8 + 4)" ( (type_descriptor "SHA256_State *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pSVar12 + (uint)bVar13 * -8 + 4)" ( (binary_expression "(int)pSVar12 + (uint)bVar13 * -8 + 4" (binary_expression "(int)pSVar12 + (uint)bVar13 * -8" (cast_expression "(int)pSVar12" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "(uint)bVar13 * -8" (cast_expression "(uint)bVar13" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + 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 "puVar10 = (uint32 *)((int)handle + 0x6c);" (assignment_expression "puVar10 = (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 "pSVar9 = &s;" (assignment_expression "pSVar9 = &s" identifier = (pointer_expression "&s" & identifier)) ;) (for_statement "for (iVar7 = 0x1b; iVar7 != 0; iVar7 = iVar7 + -1) {\n    pSVar9->h[0] = *puVar10;\n    puVar10 = puVar10 + (uint)bVar13 * -2 + 1;\n    pSVar9 = (SHA256_State *)((int)pSVar9 + (uint)bVar13 * -8 + 4);\n  }" for ( (assignment_expression "iVar7 = 0x1b" identifier = number_literal) ; (binary_expression "iVar7 != 0" identifier != number_literal) ; (assignment_expression "iVar7 = iVar7 + -1" identifier = (binary_expression "iVar7 + -1" identifier + number_literal)) ) (compound_statement "{\n    pSVar9->h[0] = *puVar10;\n    puVar10 = puVar10 + (uint)bVar13 * -2 + 1;\n    pSVar9 = (SHA256_State *)((int)pSVar9 + (uint)bVar13 * -8 + 4);\n  }" { (expression_statement "pSVar9->h[0] = *puVar10;" (assignment_expression "pSVar9->h[0] = *puVar10" (subscript_expression "pSVar9->h[0]" (field_expression "pSVar9->h" identifier -> field_identifier) [ number_literal ]) = (pointer_expression "*puVar10" * identifier)) ;) (expression_statement "puVar10 = puVar10 + (uint)bVar13 * -2 + 1;" (assignment_expression "puVar10 = puVar10 + (uint)bVar13 * -2 + 1" identifier = (binary_expression "puVar10 + (uint)bVar13 * -2 + 1" (binary_expression "puVar10 + (uint)bVar13 * -2" identifier + (binary_expression "(uint)bVar13 * -2" (cast_expression "(uint)bVar13" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pSVar9 = (SHA256_State *)((int)pSVar9 + (uint)bVar13 * -8 + 4);" (assignment_expression "pSVar9 = (SHA256_State *)((int)pSVar9 + (uint)bVar13 * -8 + 4)" identifier = (cast_expression "(SHA256_State *)((int)pSVar9 + (uint)bVar13 * -8 + 4)" ( (type_descriptor "SHA256_State *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pSVar9 + (uint)bVar13 * -8 + 4)" ( (binary_expression "(int)pSVar9 + (uint)bVar13 * -8 + 4" (binary_expression "(int)pSVar9 + (uint)bVar13 * -8" (cast_expression "(int)pSVar9" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "(uint)bVar13 * -8" (cast_expression "(uint)bVar13" ( (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    iVar7 = 0x38 - s.blkused;\n  }\n  else {\n    iVar7 = 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    iVar7 = 0x38 - s.blkused;\n  }" { (expression_statement "iVar7 = 0x38 - s.blkused;" (assignment_expression "iVar7 = 0x38 - s.blkused" identifier = (binary_expression "0x38 - s.blkused" number_literal - (field_expression "s.blkused" identifier . field_identifier))) ;) }) (else_clause "else {\n    iVar7 = 0x78 - s.blkused;\n  }" else (compound_statement "{\n    iVar7 = 0x78 - s.blkused;\n  }" { (expression_statement "iVar7 = 0x78 - s.blkused;" (assignment_expression "iVar7 = 0x78 - s.blkused" identifier = (binary_expression "0x78 - s.blkused" number_literal - (field_expression "s.blkused" identifier . field_identifier))) ;) }))) (expression_statement "uVar5 = s.lenlo >> 0x1d;" (assignment_expression "uVar5 = s.lenlo >> 0x1d" identifier = (binary_expression "s.lenlo >> 0x1d" (field_expression "s.lenlo" identifier . field_identifier) >> number_literal)) ;) (expression_statement "uVar2 = s.lenhi * 8;" (assignment_expression "uVar2 = s.lenhi * 8" identifier = (binary_expression "s.lenhi * 8" (field_expression "s.lenhi" identifier . field_identifier) * number_literal)) ;) (expression_statement "__memset_chk(c,0,iVar7,0x40,ppuVar4,s.lenlo);" (call_expression "__memset_chk(c,0,iVar7,0x40,ppuVar4,s.lenlo)" identifier (argument_list "(c,0,iVar7,0x40,ppuVar4,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,iVar7);" (call_expression "SHA256_Bytes(&s,c,iVar7)" identifier (argument_list "(&s,c,iVar7)" ( (pointer_expression "&s" & identifier) , identifier , identifier ))) ;) (expression_statement "uVar6 = s.lenlo << 3;" (assignment_expression "uVar6 = s.lenlo << 3" identifier = (binary_expression "s.lenlo << 3" (field_expression "s.lenlo" identifier . field_identifier) << number_literal)) ;) (expression_statement "c._4_4_ = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | s.lenlo << 0x1b;" (assignment_expression "c._4_4_ = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | s.lenlo << 0x1b" (field_expression "c._4_4_" identifier . field_identifier) = (binary_expression "uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | s.lenlo << 0x1b" (binary_expression "uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8" (binary_expression "uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8" (binary_expression "uVar6 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar6 & 0xff0000) >> 8" (parenthesized_expression "(uVar6 & 0xff0000)" ( (binary_expression "uVar6 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar6 & 0xff00) << 8" (parenthesized_expression "(uVar6 & 0xff00)" ( (binary_expression "uVar6 & 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_ = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 |\n            (uVar2 | uVar5) << 0x18;" (assignment_expression "c._0_4_ = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 |\n            (uVar2 | uVar5) << 0x18" (field_expression "c._0_4_" identifier . field_identifier) = (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 |\n            (uVar2 | uVar5) << 0x18" (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8" (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8" (binary_expression "uVar2 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar2 & 0xff0000) >> 8" (parenthesized_expression "(uVar2 & 0xff0000)" ( (binary_expression "uVar2 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar2 & 0xff00) << 8" (parenthesized_expression "(uVar2 & 0xff00)" ( (binary_expression "uVar2 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "(uVar2 | uVar5) << 0x18" (parenthesized_expression "(uVar2 | uVar5)" ( (binary_expression "uVar2 | uVar5" 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 "*puVar1 = s.h[0] >> 0x18 | (s.h[0] & 0xff0000) >> 8 | (s.h[0] & 0xff00) << 8 | s.h[0] << 0x18;" (assignment_expression "*puVar1 = s.h[0] >> 0x18 | (s.h[0] & 0xff0000) >> 8 | (s.h[0] & 0xff00) << 8 | s.h[0] << 0x18" (pointer_expression "*puVar1" * 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 "puVar1[1] = s.h[1] >> 0x18 | (s.h[1] & 0xff0000) >> 8 | (s.h[1] & 0xff00) << 8 | s.h[1] << 0x18;" (assignment_expression "puVar1[1] = s.h[1] >> 0x18 | (s.h[1] & 0xff0000) >> 8 | (s.h[1] & 0xff00) << 8 | s.h[1] << 0x18" (subscript_expression "puVar1[1]" 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 "puVar1[2] = s.h[2] >> 0x18 | (s.h[2] & 0xff0000) >> 8 | (s.h[2] & 0xff00) << 8 | s.h[2] << 0x18;" (assignment_expression "puVar1[2] = s.h[2] >> 0x18 | (s.h[2] & 0xff0000) >> 8 | (s.h[2] & 0xff00) << 8 | s.h[2] << 0x18" (subscript_expression "puVar1[2]" 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 "puVar1[3] = s.h[3] >> 0x18 | (s.h[3] & 0xff0000) >> 8 | (s.h[3] & 0xff00) << 8 | s.h[3] << 0x18;" (assignment_expression "puVar1[3] = s.h[3] >> 0x18 | (s.h[3] & 0xff0000) >> 8 | (s.h[3] & 0xff00) << 8 | s.h[3] << 0x18" (subscript_expression "puVar1[3]" 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 "puVar1[4] = s.h[4] >> 0x18 | (s.h[4] & 0xff0000) >> 8 | (s.h[4] & 0xff00) << 8 | s.h[4] << 0x18;" (assignment_expression "puVar1[4] = s.h[4] >> 0x18 | (s.h[4] & 0xff0000) >> 8 | (s.h[4] & 0xff00) << 8 | s.h[4] << 0x18" (subscript_expression "puVar1[4]" 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 "puVar1[5] = s.h[5] >> 0x18 | (s.h[5] & 0xff0000) >> 8 | (s.h[5] & 0xff00) << 8 | s.h[5] << 0x18;" (assignment_expression "puVar1[5] = s.h[5] >> 0x18 | (s.h[5] & 0xff0000) >> 8 | (s.h[5] & 0xff00) << 8 | s.h[5] << 0x18" (subscript_expression "puVar1[5]" 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 "puVar1[6] = s.h[6] >> 0x18 | (s.h[6] & 0xff0000) >> 8 | (s.h[6] & 0xff00) << 8 | s.h[6] << 0x18;" (assignment_expression "puVar1[6] = s.h[6] >> 0x18 | (s.h[6] & 0xff0000) >> 8 | (s.h[6] & 0xff00) << 8 | s.h[6] << 0x18" (subscript_expression "puVar1[6]" 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 "puVar1[7] = s.h[7] >> 0x18 | (s.h[7] & 0xff0000) >> 8 | (s.h[7] & 0xff00) << 8 | s.h[7] << 0x18;" (assignment_expression "puVar1[7] = s.h[7] >> 0x18 | (s.h[7] & 0xff0000) >> 8 | (s.h[7] & 0xff00) << 8 | s.h[7] << 0x18" (subscript_expression "puVar1[7]" 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 (iVar3 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }" if (parenthesized_expression "(iVar3 == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "iVar3 == *(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_0007d190(undefined4 *param_1,int param_2,int param_3,uint param_4)\n\n{\n  uint uVar1;\n  undefined **ppuVar2;\n  uint uVar3;\n  uint uVar4;\n  int iVar5;\n  undefined4 *puVar6;\n  uint *puVar7;\n  undefined4 *puVar8;\n  uint *puVar9;\n  int in_GS_OFFSET;\n  byte bVar10;\n  uint *puVar11;\n  uint local_f0;\n  uint local_ec;\n  uint local_e8;\n  uint local_e4;\n  uint local_e0;\n  uint local_dc;\n  uint local_d8;\n  uint local_d4;\n  int local_90;\n  int local_8c;\n  uint 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  bVar10 = 0;\n  ppuVar2 = &__DT_PLTGOT;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  puVar11 = (uint *)(param_2 + param_3);\n  local_84 = param_4 >> 0x18 | (param_4 & 0xff0000) >> 8 | (param_4 & 0xff00) << 8 | param_4 << 0x18\n  ;\n  puVar6 = param_1;\n  puVar8 = param_1 + 0x36;\n  for (iVar5 = 0x1b; iVar5 != 0; iVar5 = iVar5 + -1) {\n    *puVar8 = *puVar6;\n    puVar6 = puVar6 + 1;\n    puVar8 = puVar8 + 1;\n  }\n  puVar7 = param_1 + 0x36;\n  FUN_0007c880(puVar7,&local_84,4);\n  FUN_0007c880(puVar7,param_2,param_3);\n  puVar9 = &local_f0;\n  for (iVar5 = 0x1b; iVar5 != 0; iVar5 = iVar5 + -1) {\n    *puVar9 = *puVar7;\n    puVar7 = puVar7 + (uint)bVar10 * -2 + 1;\n    puVar9 = puVar9 + (uint)bVar10 * -2 + 1;\n  }\n  FUN_0007ce00(&local_f0,local_80);\n  puVar7 = param_1 + 0x1b;\n  puVar9 = &local_f0;\n  for (iVar5 = 0x1b; iVar5 != 0; iVar5 = iVar5 + -1) {\n    *puVar9 = *puVar7;\n    puVar7 = puVar7 + (uint)bVar10 * -2 + 1;\n    puVar9 = puVar9 + (uint)bVar10 * -2 + 1;\n  }\n  FUN_0007c880(&local_f0,local_80,0x20);\n  if (local_90 < 0x38) {\n    iVar5 = 0x38 - local_90;\n  }\n  else {\n    iVar5 = 0x78 - local_90;\n  }\n  uVar3 = local_88 >> 0x1d;\n  uVar1 = local_8c * 8;\n  __memset_chk(&local_60,0,iVar5,0x40,ppuVar2,local_88,iVar5);\n  local_60 = CONCAT31(local_60._1_3_,0x80);\n  FUN_0007c880(&local_f0,&local_60,iVar5);\n  uVar4 = local_88 << 3;\n  local_5c = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | local_88 << 0x1b;\n  local_60 = uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n             (uVar1 | uVar3) << 0x18;\n  FUN_0007c880(&local_f0,&local_60,8);\n  *puVar11 = local_f0 >> 0x18 | (local_f0 & 0xff0000) >> 8 | (local_f0 & 0xff00) << 8 |\n             local_f0 << 0x18;\n  puVar11[1] = local_ec >> 0x18 | (local_ec & 0xff0000) >> 8 | (local_ec & 0xff00) << 8 |\n               local_ec << 0x18;\n  puVar11[2] = local_e8 >> 0x18 | (local_e8 & 0xff0000) >> 8 | (local_e8 & 0xff00) << 8 |\n               local_e8 << 0x18;\n  puVar11[3] = local_e4 >> 0x18 | (local_e4 & 0xff0000) >> 8 | (local_e4 & 0xff00) << 8 |\n               local_e4 << 0x18;\n  puVar11[4] = local_e0 >> 0x18 | (local_e0 & 0xff0000) >> 8 | (local_e0 & 0xff00) << 8 |\n               local_e0 << 0x18;\n  puVar11[5] = local_dc >> 0x18 | (local_dc & 0xff0000) >> 8 | (local_dc & 0xff00) << 8 |\n               local_dc << 0x18;\n  puVar11[6] = local_d8 >> 0x18 | (local_d8 & 0xff0000) >> 8 | (local_d8 & 0xff00) << 8 |\n               local_d8 << 0x18;\n  puVar11[7] = local_d4 >> 0x18 | (local_d4 & 0xff0000) >> 8 | (local_d4 & 0xff00) << 8 |\n               local_d4 << 0x18;\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    \n  FUN_000c60b0();\n}\n\n" (function_definition "void FUN_0007d190(undefined4 *param_1,int param_2,int param_3,uint param_4)\n\n{\n  uint uVar1;\n  undefined **ppuVar2;\n  uint uVar3;\n  uint uVar4;\n  int iVar5;\n  undefined4 *puVar6;\n  uint *puVar7;\n  undefined4 *puVar8;\n  uint *puVar9;\n  int in_GS_OFFSET;\n  byte bVar10;\n  uint *puVar11;\n  uint local_f0;\n  uint local_ec;\n  uint local_e8;\n  uint local_e4;\n  uint local_e0;\n  uint local_dc;\n  uint local_d8;\n  uint local_d4;\n  int local_90;\n  int local_8c;\n  uint 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  bVar10 = 0;\n  ppuVar2 = &__DT_PLTGOT;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  puVar11 = (uint *)(param_2 + param_3);\n  local_84 = param_4 >> 0x18 | (param_4 & 0xff0000) >> 8 | (param_4 & 0xff00) << 8 | param_4 << 0x18\n  ;\n  puVar6 = param_1;\n  puVar8 = param_1 + 0x36;\n  for (iVar5 = 0x1b; iVar5 != 0; iVar5 = iVar5 + -1) {\n    *puVar8 = *puVar6;\n    puVar6 = puVar6 + 1;\n    puVar8 = puVar8 + 1;\n  }\n  puVar7 = param_1 + 0x36;\n  FUN_0007c880(puVar7,&local_84,4);\n  FUN_0007c880(puVar7,param_2,param_3);\n  puVar9 = &local_f0;\n  for (iVar5 = 0x1b; iVar5 != 0; iVar5 = iVar5 + -1) {\n    *puVar9 = *puVar7;\n    puVar7 = puVar7 + (uint)bVar10 * -2 + 1;\n    puVar9 = puVar9 + (uint)bVar10 * -2 + 1;\n  }\n  FUN_0007ce00(&local_f0,local_80);\n  puVar7 = param_1 + 0x1b;\n  puVar9 = &local_f0;\n  for (iVar5 = 0x1b; iVar5 != 0; iVar5 = iVar5 + -1) {\n    *puVar9 = *puVar7;\n    puVar7 = puVar7 + (uint)bVar10 * -2 + 1;\n    puVar9 = puVar9 + (uint)bVar10 * -2 + 1;\n  }\n  FUN_0007c880(&local_f0,local_80,0x20);\n  if (local_90 < 0x38) {\n    iVar5 = 0x38 - local_90;\n  }\n  else {\n    iVar5 = 0x78 - local_90;\n  }\n  uVar3 = local_88 >> 0x1d;\n  uVar1 = local_8c * 8;\n  __memset_chk(&local_60,0,iVar5,0x40,ppuVar2,local_88,iVar5);\n  local_60 = CONCAT31(local_60._1_3_,0x80);\n  FUN_0007c880(&local_f0,&local_60,iVar5);\n  uVar4 = local_88 << 3;\n  local_5c = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | local_88 << 0x1b;\n  local_60 = uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n             (uVar1 | uVar3) << 0x18;\n  FUN_0007c880(&local_f0,&local_60,8);\n  *puVar11 = local_f0 >> 0x18 | (local_f0 & 0xff0000) >> 8 | (local_f0 & 0xff00) << 8 |\n             local_f0 << 0x18;\n  puVar11[1] = local_ec >> 0x18 | (local_ec & 0xff0000) >> 8 | (local_ec & 0xff00) << 8 |\n               local_ec << 0x18;\n  puVar11[2] = local_e8 >> 0x18 | (local_e8 & 0xff0000) >> 8 | (local_e8 & 0xff00) << 8 |\n               local_e8 << 0x18;\n  puVar11[3] = local_e4 >> 0x18 | (local_e4 & 0xff0000) >> 8 | (local_e4 & 0xff00) << 8 |\n               local_e4 << 0x18;\n  puVar11[4] = local_e0 >> 0x18 | (local_e0 & 0xff0000) >> 8 | (local_e0 & 0xff00) << 8 |\n               local_e0 << 0x18;\n  puVar11[5] = local_dc >> 0x18 | (local_dc & 0xff0000) >> 8 | (local_dc & 0xff00) << 8 |\n               local_dc << 0x18;\n  puVar11[6] = local_d8 >> 0x18 | (local_d8 & 0xff0000) >> 8 | (local_d8 & 0xff00) << 8 |\n               local_d8 << 0x18;\n  puVar11[7] = local_d4 >> 0x18 | (local_d4 & 0xff0000) >> 8 | (local_d4 & 0xff00) << 8 |\n               local_d4 << 0x18;\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    \n  FUN_000c60b0();\n}" primitive_type (function_declarator "FUN_0007d190(undefined4 *param_1,int param_2,int param_3,uint param_4)" identifier (parameter_list "(undefined4 *param_1,int param_2,int param_3,uint param_4)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "uint param_4" type_identifier identifier) ))) (compound_statement "{\n  uint uVar1;\n  undefined **ppuVar2;\n  uint uVar3;\n  uint uVar4;\n  int iVar5;\n  undefined4 *puVar6;\n  uint *puVar7;\n  undefined4 *puVar8;\n  uint *puVar9;\n  int in_GS_OFFSET;\n  byte bVar10;\n  uint *puVar11;\n  uint local_f0;\n  uint local_ec;\n  uint local_e8;\n  uint local_e4;\n  uint local_e0;\n  uint local_dc;\n  uint local_d8;\n  uint local_d4;\n  int local_90;\n  int local_8c;\n  uint 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  bVar10 = 0;\n  ppuVar2 = &__DT_PLTGOT;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  puVar11 = (uint *)(param_2 + param_3);\n  local_84 = param_4 >> 0x18 | (param_4 & 0xff0000) >> 8 | (param_4 & 0xff00) << 8 | param_4 << 0x18\n  ;\n  puVar6 = param_1;\n  puVar8 = param_1 + 0x36;\n  for (iVar5 = 0x1b; iVar5 != 0; iVar5 = iVar5 + -1) {\n    *puVar8 = *puVar6;\n    puVar6 = puVar6 + 1;\n    puVar8 = puVar8 + 1;\n  }\n  puVar7 = param_1 + 0x36;\n  FUN_0007c880(puVar7,&local_84,4);\n  FUN_0007c880(puVar7,param_2,param_3);\n  puVar9 = &local_f0;\n  for (iVar5 = 0x1b; iVar5 != 0; iVar5 = iVar5 + -1) {\n    *puVar9 = *puVar7;\n    puVar7 = puVar7 + (uint)bVar10 * -2 + 1;\n    puVar9 = puVar9 + (uint)bVar10 * -2 + 1;\n  }\n  FUN_0007ce00(&local_f0,local_80);\n  puVar7 = param_1 + 0x1b;\n  puVar9 = &local_f0;\n  for (iVar5 = 0x1b; iVar5 != 0; iVar5 = iVar5 + -1) {\n    *puVar9 = *puVar7;\n    puVar7 = puVar7 + (uint)bVar10 * -2 + 1;\n    puVar9 = puVar9 + (uint)bVar10 * -2 + 1;\n  }\n  FUN_0007c880(&local_f0,local_80,0x20);\n  if (local_90 < 0x38) {\n    iVar5 = 0x38 - local_90;\n  }\n  else {\n    iVar5 = 0x78 - local_90;\n  }\n  uVar3 = local_88 >> 0x1d;\n  uVar1 = local_8c * 8;\n  __memset_chk(&local_60,0,iVar5,0x40,ppuVar2,local_88,iVar5);\n  local_60 = CONCAT31(local_60._1_3_,0x80);\n  FUN_0007c880(&local_f0,&local_60,iVar5);\n  uVar4 = local_88 << 3;\n  local_5c = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | local_88 << 0x1b;\n  local_60 = uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n             (uVar1 | uVar3) << 0x18;\n  FUN_0007c880(&local_f0,&local_60,8);\n  *puVar11 = local_f0 >> 0x18 | (local_f0 & 0xff0000) >> 8 | (local_f0 & 0xff00) << 8 |\n             local_f0 << 0x18;\n  puVar11[1] = local_ec >> 0x18 | (local_ec & 0xff0000) >> 8 | (local_ec & 0xff00) << 8 |\n               local_ec << 0x18;\n  puVar11[2] = local_e8 >> 0x18 | (local_e8 & 0xff0000) >> 8 | (local_e8 & 0xff00) << 8 |\n               local_e8 << 0x18;\n  puVar11[3] = local_e4 >> 0x18 | (local_e4 & 0xff0000) >> 8 | (local_e4 & 0xff00) << 8 |\n               local_e4 << 0x18;\n  puVar11[4] = local_e0 >> 0x18 | (local_e0 & 0xff0000) >> 8 | (local_e0 & 0xff00) << 8 |\n               local_e0 << 0x18;\n  puVar11[5] = local_dc >> 0x18 | (local_dc & 0xff0000) >> 8 | (local_dc & 0xff00) << 8 |\n               local_dc << 0x18;\n  puVar11[6] = local_d8 >> 0x18 | (local_d8 & 0xff0000) >> 8 | (local_d8 & 0xff00) << 8 |\n               local_d8 << 0x18;\n  puVar11[7] = local_d4 >> 0x18 | (local_d4 & 0xff0000) >> 8 | (local_d4 & 0xff00) << 8 |\n               local_d4 << 0x18;\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    \n  FUN_000c60b0();\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 "undefined4 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "uint *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "undefined4 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "uint *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "byte bVar10;" type_identifier identifier ;) (declaration "uint *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "uint local_f0;" type_identifier identifier ;) (declaration "uint local_ec;" type_identifier identifier ;) (declaration "uint local_e8;" type_identifier identifier ;) (declaration "uint local_e4;" type_identifier identifier ;) (declaration "uint local_e0;" type_identifier identifier ;) (declaration "uint local_dc;" type_identifier identifier ;) (declaration "uint local_d8;" type_identifier identifier ;) (declaration "uint local_d4;" type_identifier identifier ;) (declaration "int local_90;" primitive_type identifier ;) (declaration "int local_8c;" primitive_type identifier ;) (declaration "uint local_88;" type_identifier 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 "bVar10 = 0;" (assignment_expression "bVar10 = 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 "puVar11 = (uint *)(param_2 + param_3);" (assignment_expression "puVar11 = (uint *)(param_2 + param_3)" identifier = (cast_expression "(uint *)(param_2 + param_3)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + param_3)" ( (binary_expression "param_2 + param_3" identifier + identifier) )))) ;) (expression_statement "local_84 = param_4 >> 0x18 | (param_4 & 0xff0000) >> 8 | (param_4 & 0xff00) << 8 | param_4 << 0x18\n  ;" (assignment_expression "local_84 = param_4 >> 0x18 | (param_4 & 0xff0000) >> 8 | (param_4 & 0xff00) << 8 | param_4 << 0x18" identifier = (binary_expression "param_4 >> 0x18 | (param_4 & 0xff0000) >> 8 | (param_4 & 0xff00) << 8 | param_4 << 0x18" (binary_expression "param_4 >> 0x18 | (param_4 & 0xff0000) >> 8 | (param_4 & 0xff00) << 8" (binary_expression "param_4 >> 0x18 | (param_4 & 0xff0000) >> 8" (binary_expression "param_4 >> 0x18" identifier >> number_literal) | (binary_expression "(param_4 & 0xff0000) >> 8" (parenthesized_expression "(param_4 & 0xff0000)" ( (binary_expression "param_4 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(param_4 & 0xff00) << 8" (parenthesized_expression "(param_4 & 0xff00)" ( (binary_expression "param_4 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "param_4 << 0x18" identifier << number_literal))) ;) (expression_statement "puVar6 = param_1;" (assignment_expression "puVar6 = param_1" identifier = identifier) ;) (expression_statement "puVar8 = param_1 + 0x36;" (assignment_expression "puVar8 = param_1 + 0x36" identifier = (binary_expression "param_1 + 0x36" identifier + number_literal)) ;) (for_statement "for (iVar5 = 0x1b; iVar5 != 0; iVar5 = iVar5 + -1) {\n    *puVar8 = *puVar6;\n    puVar6 = puVar6 + 1;\n    puVar8 = puVar8 + 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    *puVar8 = *puVar6;\n    puVar6 = puVar6 + 1;\n    puVar8 = puVar8 + 1;\n  }" { (expression_statement "*puVar8 = *puVar6;" (assignment_expression "*puVar8 = *puVar6" (pointer_expression "*puVar8" * 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 "puVar8 = puVar8 + 1;" (assignment_expression "puVar8 = puVar8 + 1" identifier = (binary_expression "puVar8 + 1" identifier + number_literal)) ;) })) (expression_statement "puVar7 = param_1 + 0x36;" (assignment_expression "puVar7 = param_1 + 0x36" identifier = (binary_expression "param_1 + 0x36" identifier + number_literal)) ;) (expression_statement "FUN_0007c880(puVar7,&local_84,4);" (call_expression "FUN_0007c880(puVar7,&local_84,4)" identifier (argument_list "(puVar7,&local_84,4)" ( identifier , (pointer_expression "&local_84" & identifier) , number_literal ))) ;) (expression_statement "FUN_0007c880(puVar7,param_2,param_3);" (call_expression "FUN_0007c880(puVar7,param_2,param_3)" identifier (argument_list "(puVar7,param_2,param_3)" ( identifier , identifier , identifier ))) ;) (expression_statement "puVar9 = &local_f0;" (assignment_expression "puVar9 = &local_f0" identifier = (pointer_expression "&local_f0" & identifier)) ;) (for_statement "for (iVar5 = 0x1b; iVar5 != 0; iVar5 = iVar5 + -1) {\n    *puVar9 = *puVar7;\n    puVar7 = puVar7 + (uint)bVar10 * -2 + 1;\n    puVar9 = puVar9 + (uint)bVar10 * -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    *puVar9 = *puVar7;\n    puVar7 = puVar7 + (uint)bVar10 * -2 + 1;\n    puVar9 = puVar9 + (uint)bVar10 * -2 + 1;\n  }" { (expression_statement "*puVar9 = *puVar7;" (assignment_expression "*puVar9 = *puVar7" (pointer_expression "*puVar9" * identifier) = (pointer_expression "*puVar7" * identifier)) ;) (expression_statement "puVar7 = puVar7 + (uint)bVar10 * -2 + 1;" (assignment_expression "puVar7 = puVar7 + (uint)bVar10 * -2 + 1" identifier = (binary_expression "puVar7 + (uint)bVar10 * -2 + 1" (binary_expression "puVar7 + (uint)bVar10 * -2" identifier + (binary_expression "(uint)bVar10 * -2" (cast_expression "(uint)bVar10" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "puVar9 = puVar9 + (uint)bVar10 * -2 + 1;" (assignment_expression "puVar9 = puVar9 + (uint)bVar10 * -2 + 1" identifier = (binary_expression "puVar9 + (uint)bVar10 * -2 + 1" (binary_expression "puVar9 + (uint)bVar10 * -2" identifier + (binary_expression "(uint)bVar10 * -2" (cast_expression "(uint)bVar10" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (expression_statement "FUN_0007ce00(&local_f0,local_80);" (call_expression "FUN_0007ce00(&local_f0,local_80)" identifier (argument_list "(&local_f0,local_80)" ( (pointer_expression "&local_f0" & identifier) , identifier ))) ;) (expression_statement "puVar7 = param_1 + 0x1b;" (assignment_expression "puVar7 = param_1 + 0x1b" identifier = (binary_expression "param_1 + 0x1b" identifier + number_literal)) ;) (expression_statement "puVar9 = &local_f0;" (assignment_expression "puVar9 = &local_f0" identifier = (pointer_expression "&local_f0" & identifier)) ;) (for_statement "for (iVar5 = 0x1b; iVar5 != 0; iVar5 = iVar5 + -1) {\n    *puVar9 = *puVar7;\n    puVar7 = puVar7 + (uint)bVar10 * -2 + 1;\n    puVar9 = puVar9 + (uint)bVar10 * -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    *puVar9 = *puVar7;\n    puVar7 = puVar7 + (uint)bVar10 * -2 + 1;\n    puVar9 = puVar9 + (uint)bVar10 * -2 + 1;\n  }" { (expression_statement "*puVar9 = *puVar7;" (assignment_expression "*puVar9 = *puVar7" (pointer_expression "*puVar9" * identifier) = (pointer_expression "*puVar7" * identifier)) ;) (expression_statement "puVar7 = puVar7 + (uint)bVar10 * -2 + 1;" (assignment_expression "puVar7 = puVar7 + (uint)bVar10 * -2 + 1" identifier = (binary_expression "puVar7 + (uint)bVar10 * -2 + 1" (binary_expression "puVar7 + (uint)bVar10 * -2" identifier + (binary_expression "(uint)bVar10 * -2" (cast_expression "(uint)bVar10" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "puVar9 = puVar9 + (uint)bVar10 * -2 + 1;" (assignment_expression "puVar9 = puVar9 + (uint)bVar10 * -2 + 1" identifier = (binary_expression "puVar9 + (uint)bVar10 * -2 + 1" (binary_expression "puVar9 + (uint)bVar10 * -2" identifier + (binary_expression "(uint)bVar10 * -2" (cast_expression "(uint)bVar10" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (expression_statement "FUN_0007c880(&local_f0,local_80,0x20);" (call_expression "FUN_0007c880(&local_f0,local_80,0x20)" identifier (argument_list "(&local_f0,local_80,0x20)" ( (pointer_expression "&local_f0" & identifier) , identifier , number_literal ))) ;) (if_statement "if (local_90 < 0x38) {\n    iVar5 = 0x38 - local_90;\n  }\n  else {\n    iVar5 = 0x78 - local_90;\n  }" if (parenthesized_expression "(local_90 < 0x38)" ( (binary_expression "local_90 < 0x38" identifier < number_literal) )) (compound_statement "{\n    iVar5 = 0x38 - local_90;\n  }" { (expression_statement "iVar5 = 0x38 - local_90;" (assignment_expression "iVar5 = 0x38 - local_90" identifier = (binary_expression "0x38 - local_90" number_literal - identifier)) ;) }) (else_clause "else {\n    iVar5 = 0x78 - local_90;\n  }" else (compound_statement "{\n    iVar5 = 0x78 - local_90;\n  }" { (expression_statement "iVar5 = 0x78 - local_90;" (assignment_expression "iVar5 = 0x78 - local_90" identifier = (binary_expression "0x78 - local_90" number_literal - identifier)) ;) }))) (expression_statement "uVar3 = local_88 >> 0x1d;" (assignment_expression "uVar3 = local_88 >> 0x1d" identifier = (binary_expression "local_88 >> 0x1d" identifier >> number_literal)) ;) (expression_statement "uVar1 = local_8c * 8;" (assignment_expression "uVar1 = local_8c * 8" identifier = (binary_expression "local_8c * 8" identifier * number_literal)) ;) (expression_statement "__memset_chk(&local_60,0,iVar5,0x40,ppuVar2,local_88,iVar5);" (call_expression "__memset_chk(&local_60,0,iVar5,0x40,ppuVar2,local_88,iVar5)" identifier (argument_list "(&local_60,0,iVar5,0x40,ppuVar2,local_88,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_0007c880(&local_f0,&local_60,iVar5);" (call_expression "FUN_0007c880(&local_f0,&local_60,iVar5)" identifier (argument_list "(&local_f0,&local_60,iVar5)" ( (pointer_expression "&local_f0" & identifier) , (pointer_expression "&local_60" & identifier) , identifier ))) ;) (expression_statement "uVar4 = local_88 << 3;" (assignment_expression "uVar4 = local_88 << 3" identifier = (binary_expression "local_88 << 3" identifier << number_literal)) ;) (expression_statement "local_5c = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | local_88 << 0x1b;" (assignment_expression "local_5c = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | local_88 << 0x1b" identifier = (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | local_88 << 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_88 << 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_0007c880(&local_f0,&local_60,8);" (call_expression "FUN_0007c880(&local_f0,&local_60,8)" identifier (argument_list "(&local_f0,&local_60,8)" ( (pointer_expression "&local_f0" & identifier) , (pointer_expression "&local_60" & identifier) , number_literal ))) ;) (expression_statement "*puVar11 = local_f0 >> 0x18 | (local_f0 & 0xff0000) >> 8 | (local_f0 & 0xff00) << 8 |\n             local_f0 << 0x18;" (assignment_expression "*puVar11 = local_f0 >> 0x18 | (local_f0 & 0xff0000) >> 8 | (local_f0 & 0xff00) << 8 |\n             local_f0 << 0x18" (pointer_expression "*puVar11" * identifier) = (binary_expression "local_f0 >> 0x18 | (local_f0 & 0xff0000) >> 8 | (local_f0 & 0xff00) << 8 |\n             local_f0 << 0x18" (binary_expression "local_f0 >> 0x18 | (local_f0 & 0xff0000) >> 8 | (local_f0 & 0xff00) << 8" (binary_expression "local_f0 >> 0x18 | (local_f0 & 0xff0000) >> 8" (binary_expression "local_f0 >> 0x18" identifier >> number_literal) | (binary_expression "(local_f0 & 0xff0000) >> 8" (parenthesized_expression "(local_f0 & 0xff0000)" ( (binary_expression "local_f0 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(local_f0 & 0xff00) << 8" (parenthesized_expression "(local_f0 & 0xff00)" ( (binary_expression "local_f0 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "local_f0 << 0x18" identifier << number_literal))) ;) (expression_statement "puVar11[1] = local_ec >> 0x18 | (local_ec & 0xff0000) >> 8 | (local_ec & 0xff00) << 8 |\n               local_ec << 0x18;" (assignment_expression "puVar11[1] = local_ec >> 0x18 | (local_ec & 0xff0000) >> 8 | (local_ec & 0xff00) << 8 |\n               local_ec << 0x18" (subscript_expression "puVar11[1]" identifier [ number_literal ]) = (binary_expression "local_ec >> 0x18 | (local_ec & 0xff0000) >> 8 | (local_ec & 0xff00) << 8 |\n               local_ec << 0x18" (binary_expression "local_ec >> 0x18 | (local_ec & 0xff0000) >> 8 | (local_ec & 0xff00) << 8" (binary_expression "local_ec >> 0x18 | (local_ec & 0xff0000) >> 8" (binary_expression "local_ec >> 0x18" identifier >> number_literal) | (binary_expression "(local_ec & 0xff0000) >> 8" (parenthesized_expression "(local_ec & 0xff0000)" ( (binary_expression "local_ec & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(local_ec & 0xff00) << 8" (parenthesized_expression "(local_ec & 0xff00)" ( (binary_expression "local_ec & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "local_ec << 0x18" identifier << number_literal))) ;) (expression_statement "puVar11[2] = local_e8 >> 0x18 | (local_e8 & 0xff0000) >> 8 | (local_e8 & 0xff00) << 8 |\n               local_e8 << 0x18;" (assignment_expression "puVar11[2] = local_e8 >> 0x18 | (local_e8 & 0xff0000) >> 8 | (local_e8 & 0xff00) << 8 |\n               local_e8 << 0x18" (subscript_expression "puVar11[2]" identifier [ number_literal ]) = (binary_expression "local_e8 >> 0x18 | (local_e8 & 0xff0000) >> 8 | (local_e8 & 0xff00) << 8 |\n               local_e8 << 0x18" (binary_expression "local_e8 >> 0x18 | (local_e8 & 0xff0000) >> 8 | (local_e8 & 0xff00) << 8" (binary_expression "local_e8 >> 0x18 | (local_e8 & 0xff0000) >> 8" (binary_expression "local_e8 >> 0x18" identifier >> number_literal) | (binary_expression "(local_e8 & 0xff0000) >> 8" (parenthesized_expression "(local_e8 & 0xff0000)" ( (binary_expression "local_e8 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(local_e8 & 0xff00) << 8" (parenthesized_expression "(local_e8 & 0xff00)" ( (binary_expression "local_e8 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "local_e8 << 0x18" identifier << number_literal))) ;) (expression_statement "puVar11[3] = local_e4 >> 0x18 | (local_e4 & 0xff0000) >> 8 | (local_e4 & 0xff00) << 8 |\n               local_e4 << 0x18;" (assignment_expression "puVar11[3] = local_e4 >> 0x18 | (local_e4 & 0xff0000) >> 8 | (local_e4 & 0xff00) << 8 |\n               local_e4 << 0x18" (subscript_expression "puVar11[3]" identifier [ number_literal ]) = (binary_expression "local_e4 >> 0x18 | (local_e4 & 0xff0000) >> 8 | (local_e4 & 0xff00) << 8 |\n               local_e4 << 0x18" (binary_expression "local_e4 >> 0x18 | (local_e4 & 0xff0000) >> 8 | (local_e4 & 0xff00) << 8" (binary_expression "local_e4 >> 0x18 | (local_e4 & 0xff0000) >> 8" (binary_expression "local_e4 >> 0x18" identifier >> number_literal) | (binary_expression "(local_e4 & 0xff0000) >> 8" (parenthesized_expression "(local_e4 & 0xff0000)" ( (binary_expression "local_e4 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(local_e4 & 0xff00) << 8" (parenthesized_expression "(local_e4 & 0xff00)" ( (binary_expression "local_e4 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "local_e4 << 0x18" identifier << number_literal))) ;) (expression_statement "puVar11[4] = local_e0 >> 0x18 | (local_e0 & 0xff0000) >> 8 | (local_e0 & 0xff00) << 8 |\n               local_e0 << 0x18;" (assignment_expression "puVar11[4] = local_e0 >> 0x18 | (local_e0 & 0xff0000) >> 8 | (local_e0 & 0xff00) << 8 |\n               local_e0 << 0x18" (subscript_expression "puVar11[4]" identifier [ number_literal ]) = (binary_expression "local_e0 >> 0x18 | (local_e0 & 0xff0000) >> 8 | (local_e0 & 0xff00) << 8 |\n               local_e0 << 0x18" (binary_expression "local_e0 >> 0x18 | (local_e0 & 0xff0000) >> 8 | (local_e0 & 0xff00) << 8" (binary_expression "local_e0 >> 0x18 | (local_e0 & 0xff0000) >> 8" (binary_expression "local_e0 >> 0x18" identifier >> number_literal) | (binary_expression "(local_e0 & 0xff0000) >> 8" (parenthesized_expression "(local_e0 & 0xff0000)" ( (binary_expression "local_e0 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(local_e0 & 0xff00) << 8" (parenthesized_expression "(local_e0 & 0xff00)" ( (binary_expression "local_e0 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "local_e0 << 0x18" identifier << number_literal))) ;) (expression_statement "puVar11[5] = local_dc >> 0x18 | (local_dc & 0xff0000) >> 8 | (local_dc & 0xff00) << 8 |\n               local_dc << 0x18;" (assignment_expression "puVar11[5] = local_dc >> 0x18 | (local_dc & 0xff0000) >> 8 | (local_dc & 0xff00) << 8 |\n               local_dc << 0x18" (subscript_expression "puVar11[5]" 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 "puVar11[6] = local_d8 >> 0x18 | (local_d8 & 0xff0000) >> 8 | (local_d8 & 0xff00) << 8 |\n               local_d8 << 0x18;" (assignment_expression "puVar11[6] = local_d8 >> 0x18 | (local_d8 & 0xff0000) >> 8 | (local_d8 & 0xff00) << 8 |\n               local_d8 << 0x18" (subscript_expression "puVar11[6]" 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 "puVar11[7] = local_d4 >> 0x18 | (local_d4 & 0xff0000) >> 8 | (local_d4 & 0xff00) << 8 |\n               local_d4 << 0x18;" (assignment_expression "puVar11[7] = local_d4 >> 0x18 | (local_d4 & 0xff0000) >> 8 | (local_d4 & 0xff00) << 8 |\n               local_d4 << 0x18" (subscript_expression "puVar11[7]" 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))) ;) (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_000c60b0();" (call_expression "FUN_000c60b0()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE 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 (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE 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 + IDENT) )))) ;) (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 = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (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 (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) , LIT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & 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 ( (pointer_expression & IDENT) , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & 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 ( (pointer_expression & 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 ( (pointer_expression & 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 ( (pointer_expression & IDENT) , (pointer_expression & IDENT) , LIT ))) ;) (expression_statement (assignment_expression (pointer_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 (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))) ;) (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_0007d190(undefined4 *param_1,int param_2,int param_3,uint param_4)\n\n{\n  uint uVar1;\n  undefined **ppuVar2;\n  uint uVar3;\n  uint uVar4;\n  int iVar5;\n  undefined4 *puVar6;\n  uint *puVar7;\n  undefined4 *puVar8;\n  uint *puVar9;\n  int in_GS_OFFSET;\n  byte bVar10;\n  uint *puVar11;\n  uint local_f0;\n  uint local_ec;\n  uint local_e8;\n  uint local_e4;\n  uint local_e0;\n  uint local_dc;\n  uint local_d8;\n  uint local_d4;\n  int local_90;\n  int local_8c;\n  uint 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  bVar10 = 0;\n  ppuVar2 = &__DT_PLTGOT;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  puVar11 = (uint *)(param_2 + param_3);\n  local_84 = param_4 >> 0x18 | (param_4 & 0xff0000) >> 8 | (param_4 & 0xff00) << 8 | param_4 << 0x18\n  ;\n  puVar6 = param_1;\n  puVar8 = param_1 + 0x36;\n  for (iVar5 = 0x1b; iVar5 != 0; iVar5 = iVar5 + -1) {\n    *puVar8 = *puVar6;\n    puVar6 = puVar6 + 1;\n    puVar8 = puVar8 + 1;\n  }\n  puVar7 = param_1 + 0x36;\n  FUN_0007c880(puVar7,&local_84,4);\n  FUN_0007c880(puVar7,param_2,param_3);\n  puVar9 = &local_f0;\n  for (iVar5 = 0x1b; iVar5 != 0; iVar5 = iVar5 + -1) {\n    *puVar9 = *puVar7;\n    puVar7 = puVar7 + (uint)bVar10 * -2 + 1;\n    puVar9 = puVar9 + (uint)bVar10 * -2 + 1;\n  }\n  FUN_0007ce00(&local_f0,local_80);\n  puVar7 = param_1 + 0x1b;\n  puVar9 = &local_f0;\n  for (iVar5 = 0x1b; iVar5 != 0; iVar5 = iVar5 + -1) {\n    *puVar9 = *puVar7;\n    puVar7 = puVar7 + (uint)bVar10 * -2 + 1;\n    puVar9 = puVar9 + (uint)bVar10 * -2 + 1;\n  }\n  FUN_0007c880(&local_f0,local_80,0x20);\n  if (local_90 < 0x38) {\n    iVar5 = 0x38 - local_90;\n  }\n  else {\n    iVar5 = 0x78 - local_90;\n  }\n  uVar3 = local_88 >> 0x1d;\n  uVar1 = local_8c * 8;\n  __memset_chk(&local_60,0,iVar5,0x40,ppuVar2,local_88,iVar5);\n  local_60 = CONCAT31(local_60._1_3_,0x80);\n  FUN_0007c880(&local_f0,&local_60,iVar5);\n  uVar4 = local_88 << 3;\n  local_5c = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | local_88 << 0x1b;\n  local_60 = uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n             (uVar1 | uVar3) << 0x18;\n  FUN_0007c880(&local_f0,&local_60,8);\n  *puVar11 = local_f0 >> 0x18 | (local_f0 & 0xff0000) >> 8 | (local_f0 & 0xff00) << 8 |\n             local_f0 << 0x18;\n  puVar11[1] = local_ec >> 0x18 | (local_ec & 0xff0000) >> 8 | (local_ec & 0xff00) << 8 |\n               local_ec << 0x18;\n  puVar11[2] = local_e8 >> 0x18 | (local_e8 & 0xff0000) >> 8 | (local_e8 & 0xff00) << 8 |\n               local_e8 << 0x18;\n  puVar11[3] = local_e4 >> 0x18 | (local_e4 & 0xff0000) >> 8 | (local_e4 & 0xff00) << 8 |\n               local_e4 << 0x18;\n  puVar11[4] = local_e0 >> 0x18 | (local_e0 & 0xff0000) >> 8 | (local_e0 & 0xff00) << 8 |\n               local_e0 << 0x18;\n  puVar11[5] = local_dc >> 0x18 | (local_dc & 0xff0000) >> 8 | (local_dc & 0xff00) << 8 |\n               local_dc << 0x18;\n  puVar11[6] = local_d8 >> 0x18 | (local_d8 & 0xff0000) >> 8 | (local_d8 & 0xff00) << 8 |\n               local_d8 << 0x18;\n  puVar11[7] = local_d4 >> 0x18 | (local_d4 & 0xff0000) >> 8 | (local_d4 & 0xff00) << 8 |\n               local_d4 << 0x18;\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    \n  FUN_000c60b0();\n}" (primitive_type "void") (function_declarator "FUN_0007d190(undefined4 *param_1,int param_2,int param_3,uint param_4)" (identifier "FUN_0007d190") (parameter_list "(undefined4 *param_1,int param_2,int param_3,uint param_4)" (( "(") (parameter_declaration "undefined4 *param_1" (type_identifier "undefined4") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) (, ",") (parameter_declaration "uint param_4" (type_identifier "uint") (identifier "param_4")) () ")"))) (compound_statement "{\n  uint uVar1;\n  undefined **ppuVar2;\n  uint uVar3;\n  uint uVar4;\n  int iVar5;\n  undefined4 *puVar6;\n  uint *puVar7;\n  undefined4 *puVar8;\n  uint *puVar9;\n  int in_GS_OFFSET;\n  byte bVar10;\n  uint *puVar11;\n  uint local_f0;\n  uint local_ec;\n  uint local_e8;\n  uint local_e4;\n  uint local_e0;\n  uint local_dc;\n  uint local_d8;\n  uint local_d4;\n  int local_90;\n  int local_8c;\n  uint 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  bVar10 = 0;\n  ppuVar2 = &__DT_PLTGOT;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  puVar11 = (uint *)(param_2 + param_3);\n  local_84 = param_4 >> 0x18 | (param_4 & 0xff0000) >> 8 | (param_4 & 0xff00) << 8 | param_4 << 0x18\n  ;\n  puVar6 = param_1;\n  puVar8 = param_1 + 0x36;\n  for (iVar5 = 0x1b; iVar5 != 0; iVar5 = iVar5 + -1) {\n    *puVar8 = *puVar6;\n    puVar6 = puVar6 + 1;\n    puVar8 = puVar8 + 1;\n  }\n  puVar7 = param_1 + 0x36;\n  FUN_0007c880(puVar7,&local_84,4);\n  FUN_0007c880(puVar7,param_2,param_3);\n  puVar9 = &local_f0;\n  for (iVar5 = 0x1b; iVar5 != 0; iVar5 = iVar5 + -1) {\n    *puVar9 = *puVar7;\n    puVar7 = puVar7 + (uint)bVar10 * -2 + 1;\n    puVar9 = puVar9 + (uint)bVar10 * -2 + 1;\n  }\n  FUN_0007ce00(&local_f0,local_80);\n  puVar7 = param_1 + 0x1b;\n  puVar9 = &local_f0;\n  for (iVar5 = 0x1b; iVar5 != 0; iVar5 = iVar5 + -1) {\n    *puVar9 = *puVar7;\n    puVar7 = puVar7 + (uint)bVar10 * -2 + 1;\n    puVar9 = puVar9 + (uint)bVar10 * -2 + 1;\n  }\n  FUN_0007c880(&local_f0,local_80,0x20);\n  if (local_90 < 0x38) {\n    iVar5 = 0x38 - local_90;\n  }\n  else {\n    iVar5 = 0x78 - local_90;\n  }\n  uVar3 = local_88 >> 0x1d;\n  uVar1 = local_8c * 8;\n  __memset_chk(&local_60,0,iVar5,0x40,ppuVar2,local_88,iVar5);\n  local_60 = CONCAT31(local_60._1_3_,0x80);\n  FUN_0007c880(&local_f0,&local_60,iVar5);\n  uVar4 = local_88 << 3;\n  local_5c = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | local_88 << 0x1b;\n  local_60 = uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |\n             (uVar1 | uVar3) << 0x18;\n  FUN_0007c880(&local_f0,&local_60,8);\n  *puVar11 = local_f0 >> 0x18 | (local_f0 & 0xff0000) >> 8 | (local_f0 & 0xff00) << 8 |\n             local_f0 << 0x18;\n  puVar11[1] = local_ec >> 0x18 | (local_ec & 0xff0000) >> 8 | (local_ec & 0xff00) << 8 |\n               local_ec << 0x18;\n  puVar11[2] = local_e8 >> 0x18 | (local_e8 & 0xff0000) >> 8 | (local_e8 & 0xff00) << 8 |\n               local_e8 << 0x18;\n  puVar11[3] = local_e4 >> 0x18 | (local_e4 & 0xff0000) >> 8 | (local_e4 & 0xff00) << 8 |\n               local_e4 << 0x18;\n  puVar11[4] = local_e0 >> 0x18 | (local_e0 & 0xff0000) >> 8 | (local_e0 & 0xff00) << 8 |\n               local_e0 << 0x18;\n  puVar11[5] = local_dc >> 0x18 | (local_dc & 0xff0000) >> 8 | (local_dc & 0xff00) << 8 |\n               local_dc << 0x18;\n  puVar11[6] = local_d8 >> 0x18 | (local_d8 & 0xff0000) >> 8 | (local_d8 & 0xff00) << 8 |\n               local_d8 << 0x18;\n  puVar11[7] = local_d4 >> 0x18 | (local_d4 & 0xff0000) >> 8 | (local_d4 & 0xff00) << 8 |\n               local_d4 << 0x18;\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    \n  FUN_000c60b0();\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 "undefined4 *puVar6;" (type_identifier "undefined4") (pointer_declarator "*puVar6" (* "*") (identifier "puVar6")) (; ";")) (declaration "uint *puVar7;" (type_identifier "uint") (pointer_declarator "*puVar7" (* "*") (identifier "puVar7")) (; ";")) (declaration "undefined4 *puVar8;" (type_identifier "undefined4") (pointer_declarator "*puVar8" (* "*") (identifier "puVar8")) (; ";")) (declaration "uint *puVar9;" (type_identifier "uint") (pointer_declarator "*puVar9" (* "*") (identifier "puVar9")) (; ";")) (declaration "int in_GS_OFFSET;" (primitive_type "int") (identifier "in_GS_OFFSET") (; ";")) (declaration "byte bVar10;" (type_identifier "byte") (identifier "bVar10") (; ";")) (declaration "uint *puVar11;" (type_identifier "uint") (pointer_declarator "*puVar11" (* "*") (identifier "puVar11")) (; ";")) (declaration "uint local_f0;" (type_identifier "uint") (identifier "local_f0") (; ";")) (declaration "uint local_ec;" (type_identifier "uint") (identifier "local_ec") (; ";")) (declaration "uint local_e8;" (type_identifier "uint") (identifier "local_e8") (; ";")) (declaration "uint local_e4;" (type_identifier "uint") (identifier "local_e4") (; ";")) (declaration "uint local_e0;" (type_identifier "uint") (identifier "local_e0") (; ";")) (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 "int local_90;" (primitive_type "int") (identifier "local_90") (; ";")) (declaration "int local_8c;" (primitive_type "int") (identifier "local_8c") (; ";")) (declaration "uint local_88;" (type_identifier "uint") (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 "bVar10 = 0;" (assignment_expression "bVar10 = 0" (identifier "bVar10") (= "=") (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 "puVar11 = (uint *)(param_2 + param_3);" (assignment_expression "puVar11 = (uint *)(param_2 + param_3)" (identifier "puVar11") (= "=") (cast_expression "(uint *)(param_2 + param_3)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + param_3)" (( "(") (binary_expression "param_2 + param_3" (identifier "param_2") (+ "+") (identifier "param_3")) () ")")))) (; ";")) (expression_statement "local_84 = param_4 >> 0x18 | (param_4 & 0xff0000) >> 8 | (param_4 & 0xff00) << 8 | param_4 << 0x18\n  ;" (assignment_expression "local_84 = param_4 >> 0x18 | (param_4 & 0xff0000) >> 8 | (param_4 & 0xff00) << 8 | param_4 << 0x18" (identifier "local_84") (= "=") (binary_expression "param_4 >> 0x18 | (param_4 & 0xff0000) >> 8 | (param_4 & 0xff00) << 8 | param_4 << 0x18" (binary_expression "param_4 >> 0x18 | (param_4 & 0xff0000) >> 8 | (param_4 & 0xff00) << 8" (binary_expression "param_4 >> 0x18 | (param_4 & 0xff0000) >> 8" (binary_expression "param_4 >> 0x18" (identifier "param_4") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(param_4 & 0xff0000) >> 8" (parenthesized_expression "(param_4 & 0xff0000)" (( "(") (binary_expression "param_4 & 0xff0000" (identifier "param_4") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(param_4 & 0xff00) << 8" (parenthesized_expression "(param_4 & 0xff00)" (( "(") (binary_expression "param_4 & 0xff00" (identifier "param_4") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "param_4 << 0x18" (identifier "param_4") (<< "<<") (number_literal "0x18")))) (; ";")) (expression_statement "puVar6 = param_1;" (assignment_expression "puVar6 = param_1" (identifier "puVar6") (= "=") (identifier "param_1")) (; ";")) (expression_statement "puVar8 = param_1 + 0x36;" (assignment_expression "puVar8 = param_1 + 0x36" (identifier "puVar8") (= "=") (binary_expression "param_1 + 0x36" (identifier "param_1") (+ "+") (number_literal "0x36"))) (; ";")) (for_statement "for (iVar5 = 0x1b; iVar5 != 0; iVar5 = iVar5 + -1) {\n    *puVar8 = *puVar6;\n    puVar6 = puVar6 + 1;\n    puVar8 = puVar8 + 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    *puVar8 = *puVar6;\n    puVar6 = puVar6 + 1;\n    puVar8 = puVar8 + 1;\n  }" ({ "{") (expression_statement "*puVar8 = *puVar6;" (assignment_expression "*puVar8 = *puVar6" (pointer_expression "*puVar8" (* "*") (identifier "puVar8")) (= "=") (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 "puVar8 = puVar8 + 1;" (assignment_expression "puVar8 = puVar8 + 1" (identifier "puVar8") (= "=") (binary_expression "puVar8 + 1" (identifier "puVar8") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "puVar7 = param_1 + 0x36;" (assignment_expression "puVar7 = param_1 + 0x36" (identifier "puVar7") (= "=") (binary_expression "param_1 + 0x36" (identifier "param_1") (+ "+") (number_literal "0x36"))) (; ";")) (expression_statement "FUN_0007c880(puVar7,&local_84,4);" (call_expression "FUN_0007c880(puVar7,&local_84,4)" (identifier "FUN_0007c880") (argument_list "(puVar7,&local_84,4)" (( "(") (identifier "puVar7") (, ",") (pointer_expression "&local_84" (& "&") (identifier "local_84")) (, ",") (number_literal "4") () ")"))) (; ";")) (expression_statement "FUN_0007c880(puVar7,param_2,param_3);" (call_expression "FUN_0007c880(puVar7,param_2,param_3)" (identifier "FUN_0007c880") (argument_list "(puVar7,param_2,param_3)" (( "(") (identifier "puVar7") (, ",") (identifier "param_2") (, ",") (identifier "param_3") () ")"))) (; ";")) (expression_statement "puVar9 = &local_f0;" (assignment_expression "puVar9 = &local_f0" (identifier "puVar9") (= "=") (pointer_expression "&local_f0" (& "&") (identifier "local_f0"))) (; ";")) (for_statement "for (iVar5 = 0x1b; iVar5 != 0; iVar5 = iVar5 + -1) {\n    *puVar9 = *puVar7;\n    puVar7 = puVar7 + (uint)bVar10 * -2 + 1;\n    puVar9 = puVar9 + (uint)bVar10 * -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    *puVar9 = *puVar7;\n    puVar7 = puVar7 + (uint)bVar10 * -2 + 1;\n    puVar9 = puVar9 + (uint)bVar10 * -2 + 1;\n  }" ({ "{") (expression_statement "*puVar9 = *puVar7;" (assignment_expression "*puVar9 = *puVar7" (pointer_expression "*puVar9" (* "*") (identifier "puVar9")) (= "=") (pointer_expression "*puVar7" (* "*") (identifier "puVar7"))) (; ";")) (expression_statement "puVar7 = puVar7 + (uint)bVar10 * -2 + 1;" (assignment_expression "puVar7 = puVar7 + (uint)bVar10 * -2 + 1" (identifier "puVar7") (= "=") (binary_expression "puVar7 + (uint)bVar10 * -2 + 1" (binary_expression "puVar7 + (uint)bVar10 * -2" (identifier "puVar7") (+ "+") (binary_expression "(uint)bVar10 * -2" (cast_expression "(uint)bVar10" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar10")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar9 = puVar9 + (uint)bVar10 * -2 + 1;" (assignment_expression "puVar9 = puVar9 + (uint)bVar10 * -2 + 1" (identifier "puVar9") (= "=") (binary_expression "puVar9 + (uint)bVar10 * -2 + 1" (binary_expression "puVar9 + (uint)bVar10 * -2" (identifier "puVar9") (+ "+") (binary_expression "(uint)bVar10 * -2" (cast_expression "(uint)bVar10" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar10")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "FUN_0007ce00(&local_f0,local_80);" (call_expression "FUN_0007ce00(&local_f0,local_80)" (identifier "FUN_0007ce00") (argument_list "(&local_f0,local_80)" (( "(") (pointer_expression "&local_f0" (& "&") (identifier "local_f0")) (, ",") (identifier "local_80") () ")"))) (; ";")) (expression_statement "puVar7 = param_1 + 0x1b;" (assignment_expression "puVar7 = param_1 + 0x1b" (identifier "puVar7") (= "=") (binary_expression "param_1 + 0x1b" (identifier "param_1") (+ "+") (number_literal "0x1b"))) (; ";")) (expression_statement "puVar9 = &local_f0;" (assignment_expression "puVar9 = &local_f0" (identifier "puVar9") (= "=") (pointer_expression "&local_f0" (& "&") (identifier "local_f0"))) (; ";")) (for_statement "for (iVar5 = 0x1b; iVar5 != 0; iVar5 = iVar5 + -1) {\n    *puVar9 = *puVar7;\n    puVar7 = puVar7 + (uint)bVar10 * -2 + 1;\n    puVar9 = puVar9 + (uint)bVar10 * -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    *puVar9 = *puVar7;\n    puVar7 = puVar7 + (uint)bVar10 * -2 + 1;\n    puVar9 = puVar9 + (uint)bVar10 * -2 + 1;\n  }" ({ "{") (expression_statement "*puVar9 = *puVar7;" (assignment_expression "*puVar9 = *puVar7" (pointer_expression "*puVar9" (* "*") (identifier "puVar9")) (= "=") (pointer_expression "*puVar7" (* "*") (identifier "puVar7"))) (; ";")) (expression_statement "puVar7 = puVar7 + (uint)bVar10 * -2 + 1;" (assignment_expression "puVar7 = puVar7 + (uint)bVar10 * -2 + 1" (identifier "puVar7") (= "=") (binary_expression "puVar7 + (uint)bVar10 * -2 + 1" (binary_expression "puVar7 + (uint)bVar10 * -2" (identifier "puVar7") (+ "+") (binary_expression "(uint)bVar10 * -2" (cast_expression "(uint)bVar10" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar10")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar9 = puVar9 + (uint)bVar10 * -2 + 1;" (assignment_expression "puVar9 = puVar9 + (uint)bVar10 * -2 + 1" (identifier "puVar9") (= "=") (binary_expression "puVar9 + (uint)bVar10 * -2 + 1" (binary_expression "puVar9 + (uint)bVar10 * -2" (identifier "puVar9") (+ "+") (binary_expression "(uint)bVar10 * -2" (cast_expression "(uint)bVar10" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar10")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "FUN_0007c880(&local_f0,local_80,0x20);" (call_expression "FUN_0007c880(&local_f0,local_80,0x20)" (identifier "FUN_0007c880") (argument_list "(&local_f0,local_80,0x20)" (( "(") (pointer_expression "&local_f0" (& "&") (identifier "local_f0")) (, ",") (identifier "local_80") (, ",") (number_literal "0x20") () ")"))) (; ";")) (if_statement "if (local_90 < 0x38) {\n    iVar5 = 0x38 - local_90;\n  }\n  else {\n    iVar5 = 0x78 - local_90;\n  }" (if "if") (parenthesized_expression "(local_90 < 0x38)" (( "(") (binary_expression "local_90 < 0x38" (identifier "local_90") (< "<") (number_literal "0x38")) () ")")) (compound_statement "{\n    iVar5 = 0x38 - local_90;\n  }" ({ "{") (expression_statement "iVar5 = 0x38 - local_90;" (assignment_expression "iVar5 = 0x38 - local_90" (identifier "iVar5") (= "=") (binary_expression "0x38 - local_90" (number_literal "0x38") (- "-") (identifier "local_90"))) (; ";")) (} "}")) (else_clause "else {\n    iVar5 = 0x78 - local_90;\n  }" (else "else") (compound_statement "{\n    iVar5 = 0x78 - local_90;\n  }" ({ "{") (expression_statement "iVar5 = 0x78 - local_90;" (assignment_expression "iVar5 = 0x78 - local_90" (identifier "iVar5") (= "=") (binary_expression "0x78 - local_90" (number_literal "0x78") (- "-") (identifier "local_90"))) (; ";")) (} "}")))) (expression_statement "uVar3 = local_88 >> 0x1d;" (assignment_expression "uVar3 = local_88 >> 0x1d" (identifier "uVar3") (= "=") (binary_expression "local_88 >> 0x1d" (identifier "local_88") (>> ">>") (number_literal "0x1d"))) (; ";")) (expression_statement "uVar1 = local_8c * 8;" (assignment_expression "uVar1 = local_8c * 8" (identifier "uVar1") (= "=") (binary_expression "local_8c * 8" (identifier "local_8c") (* "*") (number_literal "8"))) (; ";")) (expression_statement "__memset_chk(&local_60,0,iVar5,0x40,ppuVar2,local_88,iVar5);" (call_expression "__memset_chk(&local_60,0,iVar5,0x40,ppuVar2,local_88,iVar5)" (identifier "__memset_chk") (argument_list "(&local_60,0,iVar5,0x40,ppuVar2,local_88,iVar5)" (( "(") (pointer_expression "&local_60" (& "&") (identifier "local_60")) (, ",") (number_literal "0") (, ",") (identifier "iVar5") (, ",") (number_literal "0x40") (, ",") (identifier "ppuVar2") (, ",") (identifier "local_88") (, ",") (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_0007c880(&local_f0,&local_60,iVar5);" (call_expression "FUN_0007c880(&local_f0,&local_60,iVar5)" (identifier "FUN_0007c880") (argument_list "(&local_f0,&local_60,iVar5)" (( "(") (pointer_expression "&local_f0" (& "&") (identifier "local_f0")) (, ",") (pointer_expression "&local_60" (& "&") (identifier "local_60")) (, ",") (identifier "iVar5") () ")"))) (; ";")) (expression_statement "uVar4 = local_88 << 3;" (assignment_expression "uVar4 = local_88 << 3" (identifier "uVar4") (= "=") (binary_expression "local_88 << 3" (identifier "local_88") (<< "<<") (number_literal "3"))) (; ";")) (expression_statement "local_5c = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | local_88 << 0x1b;" (assignment_expression "local_5c = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | local_88 << 0x1b" (identifier "local_5c") (= "=") (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | local_88 << 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_88 << 0x1b" (identifier "local_88") (<< "<<") (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_0007c880(&local_f0,&local_60,8);" (call_expression "FUN_0007c880(&local_f0,&local_60,8)" (identifier "FUN_0007c880") (argument_list "(&local_f0,&local_60,8)" (( "(") (pointer_expression "&local_f0" (& "&") (identifier "local_f0")) (, ",") (pointer_expression "&local_60" (& "&") (identifier "local_60")) (, ",") (number_literal "8") () ")"))) (; ";")) (expression_statement "*puVar11 = local_f0 >> 0x18 | (local_f0 & 0xff0000) >> 8 | (local_f0 & 0xff00) << 8 |\n             local_f0 << 0x18;" (assignment_expression "*puVar11 = local_f0 >> 0x18 | (local_f0 & 0xff0000) >> 8 | (local_f0 & 0xff00) << 8 |\n             local_f0 << 0x18" (pointer_expression "*puVar11" (* "*") (identifier "puVar11")) (= "=") (binary_expression "local_f0 >> 0x18 | (local_f0 & 0xff0000) >> 8 | (local_f0 & 0xff00) << 8 |\n             local_f0 << 0x18" (binary_expression "local_f0 >> 0x18 | (local_f0 & 0xff0000) >> 8 | (local_f0 & 0xff00) << 8" (binary_expression "local_f0 >> 0x18 | (local_f0 & 0xff0000) >> 8" (binary_expression "local_f0 >> 0x18" (identifier "local_f0") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(local_f0 & 0xff0000) >> 8" (parenthesized_expression "(local_f0 & 0xff0000)" (( "(") (binary_expression "local_f0 & 0xff0000" (identifier "local_f0") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(local_f0 & 0xff00) << 8" (parenthesized_expression "(local_f0 & 0xff00)" (( "(") (binary_expression "local_f0 & 0xff00" (identifier "local_f0") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "local_f0 << 0x18" (identifier "local_f0") (<< "<<") (number_literal "0x18")))) (; ";")) (expression_statement "puVar11[1] = local_ec >> 0x18 | (local_ec & 0xff0000) >> 8 | (local_ec & 0xff00) << 8 |\n               local_ec << 0x18;" (assignment_expression "puVar11[1] = local_ec >> 0x18 | (local_ec & 0xff0000) >> 8 | (local_ec & 0xff00) << 8 |\n               local_ec << 0x18" (subscript_expression "puVar11[1]" (identifier "puVar11") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "local_ec >> 0x18 | (local_ec & 0xff0000) >> 8 | (local_ec & 0xff00) << 8 |\n               local_ec << 0x18" (binary_expression "local_ec >> 0x18 | (local_ec & 0xff0000) >> 8 | (local_ec & 0xff00) << 8" (binary_expression "local_ec >> 0x18 | (local_ec & 0xff0000) >> 8" (binary_expression "local_ec >> 0x18" (identifier "local_ec") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(local_ec & 0xff0000) >> 8" (parenthesized_expression "(local_ec & 0xff0000)" (( "(") (binary_expression "local_ec & 0xff0000" (identifier "local_ec") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(local_ec & 0xff00) << 8" (parenthesized_expression "(local_ec & 0xff00)" (( "(") (binary_expression "local_ec & 0xff00" (identifier "local_ec") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "local_ec << 0x18" (identifier "local_ec") (<< "<<") (number_literal "0x18")))) (; ";")) (expression_statement "puVar11[2] = local_e8 >> 0x18 | (local_e8 & 0xff0000) >> 8 | (local_e8 & 0xff00) << 8 |\n               local_e8 << 0x18;" (assignment_expression "puVar11[2] = local_e8 >> 0x18 | (local_e8 & 0xff0000) >> 8 | (local_e8 & 0xff00) << 8 |\n               local_e8 << 0x18" (subscript_expression "puVar11[2]" (identifier "puVar11") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "local_e8 >> 0x18 | (local_e8 & 0xff0000) >> 8 | (local_e8 & 0xff00) << 8 |\n               local_e8 << 0x18" (binary_expression "local_e8 >> 0x18 | (local_e8 & 0xff0000) >> 8 | (local_e8 & 0xff00) << 8" (binary_expression "local_e8 >> 0x18 | (local_e8 & 0xff0000) >> 8" (binary_expression "local_e8 >> 0x18" (identifier "local_e8") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(local_e8 & 0xff0000) >> 8" (parenthesized_expression "(local_e8 & 0xff0000)" (( "(") (binary_expression "local_e8 & 0xff0000" (identifier "local_e8") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(local_e8 & 0xff00) << 8" (parenthesized_expression "(local_e8 & 0xff00)" (( "(") (binary_expression "local_e8 & 0xff00" (identifier "local_e8") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "local_e8 << 0x18" (identifier "local_e8") (<< "<<") (number_literal "0x18")))) (; ";")) (expression_statement "puVar11[3] = local_e4 >> 0x18 | (local_e4 & 0xff0000) >> 8 | (local_e4 & 0xff00) << 8 |\n               local_e4 << 0x18;" (assignment_expression "puVar11[3] = local_e4 >> 0x18 | (local_e4 & 0xff0000) >> 8 | (local_e4 & 0xff00) << 8 |\n               local_e4 << 0x18" (subscript_expression "puVar11[3]" (identifier "puVar11") ([ "[") (number_literal "3") (] "]")) (= "=") (binary_expression "local_e4 >> 0x18 | (local_e4 & 0xff0000) >> 8 | (local_e4 & 0xff00) << 8 |\n               local_e4 << 0x18" (binary_expression "local_e4 >> 0x18 | (local_e4 & 0xff0000) >> 8 | (local_e4 & 0xff00) << 8" (binary_expression "local_e4 >> 0x18 | (local_e4 & 0xff0000) >> 8" (binary_expression "local_e4 >> 0x18" (identifier "local_e4") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(local_e4 & 0xff0000) >> 8" (parenthesized_expression "(local_e4 & 0xff0000)" (( "(") (binary_expression "local_e4 & 0xff0000" (identifier "local_e4") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(local_e4 & 0xff00) << 8" (parenthesized_expression "(local_e4 & 0xff00)" (( "(") (binary_expression "local_e4 & 0xff00" (identifier "local_e4") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "local_e4 << 0x18" (identifier "local_e4") (<< "<<") (number_literal "0x18")))) (; ";")) (expression_statement "puVar11[4] = local_e0 >> 0x18 | (local_e0 & 0xff0000) >> 8 | (local_e0 & 0xff00) << 8 |\n               local_e0 << 0x18;" (assignment_expression "puVar11[4] = local_e0 >> 0x18 | (local_e0 & 0xff0000) >> 8 | (local_e0 & 0xff00) << 8 |\n               local_e0 << 0x18" (subscript_expression "puVar11[4]" (identifier "puVar11") ([ "[") (number_literal "4") (] "]")) (= "=") (binary_expression "local_e0 >> 0x18 | (local_e0 & 0xff0000) >> 8 | (local_e0 & 0xff00) << 8 |\n               local_e0 << 0x18" (binary_expression "local_e0 >> 0x18 | (local_e0 & 0xff0000) >> 8 | (local_e0 & 0xff00) << 8" (binary_expression "local_e0 >> 0x18 | (local_e0 & 0xff0000) >> 8" (binary_expression "local_e0 >> 0x18" (identifier "local_e0") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(local_e0 & 0xff0000) >> 8" (parenthesized_expression "(local_e0 & 0xff0000)" (( "(") (binary_expression "local_e0 & 0xff0000" (identifier "local_e0") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(local_e0 & 0xff00) << 8" (parenthesized_expression "(local_e0 & 0xff00)" (( "(") (binary_expression "local_e0 & 0xff00" (identifier "local_e0") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "local_e0 << 0x18" (identifier "local_e0") (<< "<<") (number_literal "0x18")))) (; ";")) (expression_statement "puVar11[5] = local_dc >> 0x18 | (local_dc & 0xff0000) >> 8 | (local_dc & 0xff00) << 8 |\n               local_dc << 0x18;" (assignment_expression "puVar11[5] = local_dc >> 0x18 | (local_dc & 0xff0000) >> 8 | (local_dc & 0xff00) << 8 |\n               local_dc << 0x18" (subscript_expression "puVar11[5]" (identifier "puVar11") ([ "[") (number_literal "5") (] "]")) (= "=") (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 "puVar11[6] = local_d8 >> 0x18 | (local_d8 & 0xff0000) >> 8 | (local_d8 & 0xff00) << 8 |\n               local_d8 << 0x18;" (assignment_expression "puVar11[6] = local_d8 >> 0x18 | (local_d8 & 0xff0000) >> 8 | (local_d8 & 0xff00) << 8 |\n               local_d8 << 0x18" (subscript_expression "puVar11[6]" (identifier "puVar11") ([ "[") (number_literal "6") (] "]")) (= "=") (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 "puVar11[7] = local_d4 >> 0x18 | (local_d4 & 0xff0000) >> 8 | (local_d4 & 0xff00) << 8 |\n               local_d4 << 0x18;" (assignment_expression "puVar11[7] = local_d4 >> 0x18 | (local_d4 & 0xff0000) >> 8 | (local_d4 & 0xff00) << 8 |\n               local_d4 << 0x18" (subscript_expression "puVar11[7]" (identifier "puVar11") ([ "[") (number_literal "7") (] "]")) (= "=") (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")))) (; ";")) (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_000c60b0();" (call_expression "FUN_000c60b0()" (identifier "FUN_000c60b0") (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_2,int var_3,type_2 var_4)

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


(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (type_identifier) 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: (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: (pointer_declarator declarator: (identifier))) (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: (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: (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: (identifier)))))) (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: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (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 (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (pointer_expression argument: (identifier)) (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (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 (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: (pointer_expression argument: (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 (pointer_expression argument: (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 (pointer_expression argument: (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 (pointer_expression argument: (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: (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))))) (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(undefined4 *param_1,int param_2,int param_3,uint param_4)

{
  uint uVar1;
  undefined **ppuVar2;
  uint uVar3;
  uint uVar4;
  int iVar5;
  undefined4 *puVar6;
  uint *puVar7;
  undefined4 *puVar8;
  uint *puVar9;
  int in_GS_OFFSET;
  byte bVar10;
  uint *puVar11;
  uint local_f0;
  uint local_ec;
  uint local_e8;
  uint local_e4;
  uint local_e0;
  uint local_dc;
  uint local_d8;
  uint local_d4;
  int local_90;
  int local_8c;
  uint local_88;
  uint local_84;
  undefined1 local_80 [32];
  uint local_60;
  uint local_5c;
  int local_20;
  
  bVar10 = 0;
  ppuVar2 = &__DT_PLTGOT;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  puVar11 = (uint *)(param_2 + param_3);
  local_84 = param_4 >> 0x18 | (param_4 & 0xff0000) >> 8 | (param_4 & 0xff00) << 8 | param_4 << 0x18
  ;
  puVar6 = param_1;
  puVar8 = param_1 + 0x36;
  for (iVar5 = 0x1b; iVar5 != 0; iVar5 = iVar5 + -1) {
    *puVar8 = *puVar6;
    puVar6 = puVar6 + 1;
    puVar8 = puVar8 + 1;
  }
  puVar7 = param_1 + 0x36;
  FUN_0007c880(puVar7,&local_84,4);
  FUN_0007c880(puVar7,param_2,param_3);
  puVar9 = &local_f0;
  for (iVar5 = 0x1b; iVar5 != 0; iVar5 = iVar5 + -1) {
    *puVar9 = *puVar7;
    puVar7 = puVar7 + (uint)bVar10 * -2 + 1;
    puVar9 = puVar9 + (uint)bVar10 * -2 + 1;
  }
  FUN_0007ce00(&local_f0,local_80);
  puVar7 = param_1 + 0x1b;
  puVar9 = &local_f0;
  for (iVar5 = 0x1b; iVar5 != 0; iVar5 = iVar5 + -1) {
    *puVar9 = *puVar7;
    puVar7 = puVar7 + (uint)bVar10 * -2 + 1;
    puVar9 = puVar9 + (uint)bVar10 * -2 + 1;
  }
  FUN_0007c880(&local_f0,local_80,0x20);
  if (local_90 < 0x38) {
    iVar5 = 0x38 - local_90;
  }
  else {
    iVar5 = 0x78 - local_90;
  }
  uVar3 = local_88 >> 0x1d;
  uVar1 = local_8c * 8;
  __memset_chk(&local_60,0,iVar5,0x40,ppuVar2,local_88,iVar5);
  local_60 = CONCAT31(local_60._1_3_,0x80);
  FUN_0007c880(&local_f0,&local_60,iVar5);
  uVar4 = local_88 << 3;
  local_5c = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | local_88 << 0x1b;
  local_60 = uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 |
             (uVar1 | uVar3) << 0x18;
  FUN_0007c880(&local_f0,&local_60,8);
  *puVar11 = local_f0 >> 0x18 | (local_f0 & 0xff0000) >> 8 | (local_f0 & 0xff00) << 8 |
             local_f0 << 0x18;
  puVar11[1] = local_ec >> 0x18 | (local_ec & 0xff0000) >> 8 | (local_ec & 0xff00) << 8 |
               local_ec << 0x18;
  puVar11[2] = local_e8 >> 0x18 | (local_e8 & 0xff0000) >> 8 | (local_e8 & 0xff00) << 8 |
               local_e8 << 0x18;
  puVar11[3] = local_e4 >> 0x18 | (local_e4 & 0xff0000) >> 8 | (local_e4 & 0xff00) << 8 |
               local_e4 << 0x18;
  puVar11[4] = local_e0 >> 0x18 | (local_e0 & 0xff0000) >> 8 | (local_e0 & 0xff00) << 8 |
               local_e0 << 0x18;
  puVar11[5] = local_dc >> 0x18 | (local_dc & 0xff0000) >> 8 | (local_dc & 0xff00) << 8 |
               local_dc << 0x18;
  puVar11[6] = local_d8 >> 0x18 | (local_d8 & 0xff0000) >> 8 | (local_d8 & 0xff00) << 8 |
               local_d8 << 0x18;
  puVar11[7] = local_d4 >> 0x18 | (local_d4 & 0xff0000) >> 8 | (local_d4 & 0xff00) << 8 |
               local_d4 << 0x18;
  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {
    return;
  }
                    /* WARNING: Subroutine does not return */
  FUN_000c60b0();
}

