
int __regparm3 putVarint64(uchar *p,u64 v)

{
  int iVar1;
  ushort uVar2;
  int iVar3;
  uint in_ECX;
  byte bVar4;
  uint in_EDX;
  int iVar5;
  int iVar6;
  uint uVar7;
  int in_GS_OFFSET;
  undefined4 uStack_30;
  uchar auStack_2c [2];
  u8 buf [10];
  
  iVar1 = *(int *)(in_GS_OFFSET + 0x14);
  bVar4 = (byte)in_EDX;
  if ((in_ECX & 0xff000000) != 0) {
    p[8] = bVar4;
    p[7] = (byte)(in_EDX >> 8) | 0x80;
    p[6] = (byte)(in_EDX >> 0xf) | 0x80;
    p[5] = (byte)(in_EDX >> 0x16) | 0x80;
    p[4] = (byte)(in_EDX >> 0x1d) | (byte)(in_ECX << 3) | 0x80;
    p[3] = (byte)(in_ECX >> 4) | 0x80;
    p[2] = (byte)(in_ECX >> 0xb) | 0x80;
    p[1] = (byte)(in_ECX >> 0x12) | 0x80;
    *p = (byte)(in_ECX >> 0x19) | 0x80;
    iVar3 = 9;
    goto LAB_0003b337;
  }
  if (in_ECX >> 7 == 0 && (in_EDX >> 7 == 0 && (in_ECX & 0x7f) == 0)) {
    buf[0] = bVar4 & 0x7f;
    *p = buf[0];
    iVar3 = 1;
    goto LAB_0003b337;
  }
  buf[1] = (byte)(in_EDX >> 7) | 0x80;
  if (in_ECX >> 0xe == 0 && (in_EDX >> 0xe == 0 && (in_ECX & 0x3fff) == 0)) {
    iVar3 = 2;
    iVar6 = 1;
LAB_0003b3d0:
    buf[0] = bVar4 & 0x7f;
    *p = buf[iVar6];
    iVar5 = iVar6 + -2;
    p[1] = auStack_2c[iVar6 + 1];
    if (iVar5 == -1) goto LAB_0003b337;
  }
  else {
    buf[2] = (byte)(in_EDX >> 0xe) | 0x80;
    if (in_ECX >> 0x15 == 0 && (in_EDX >> 0x15 == 0 && (in_ECX & 0x1fffff) == 0)) {
      iVar3 = 3;
      iVar6 = 2;
      goto LAB_0003b3d0;
    }
    uVar7 = in_EDX >> 0x1c | in_ECX << 4;
    buf[3] = (byte)(in_EDX >> 0x15) | 0x80;
    if (in_ECX >> 0x1c == 0 && uVar7 == 0) {
      iVar3 = 4;
      iVar6 = 3;
      goto LAB_0003b3d0;
    }
    buf[4] = (byte)uVar7 | 0x80;
    if (in_ECX >> 3 == 0) {
      iVar3 = 5;
      iVar6 = 4;
      goto LAB_0003b3d0;
    }
    buf[5] = (byte)(in_ECX >> 3) | 0x80;
    if (in_ECX >> 10 == 0) {
      iVar3 = 6;
      iVar6 = 5;
      goto LAB_0003b3d0;
    }
    buf._6_2_ = CONCAT11(buf[7],(char)(in_ECX >> 10)) | 0x80;
    if (in_ECX >> 0x11 == 0) {
      iVar3 = 7;
      iVar6 = 6;
      goto LAB_0003b3d0;
    }
    buf[0] = bVar4 & 0x7f;
    iVar5 = 5;
    uVar2 = CONCAT11((char)(in_ECX >> 0x11),buf[6]);
    buf._6_2_ = uVar2 | 0x8000;
    *(ushort *)p = uVar2 << 8 | (ushort)buf._6_2_ >> 8;
    iVar3 = 8;
  }
  p[2] = buf[iVar5];
  if ((((iVar5 != 0) && (p[3] = auStack_2c[iVar5 + 1], iVar5 != 1)) &&
      (p[4] = auStack_2c[iVar5], iVar5 != 2)) &&
     ((p[5] = auStack_2c[iVar5 + -1], iVar5 != 3 && (p[6] = auStack_2c[iVar5 + -2], iVar5 != 4)))) {
    p[7] = buf[0];
  }
LAB_0003b337:
  if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    uStack_30 = &UNK_0003b454;
    __stack_chk_fail_local();
  }
  return iVar3;
}



undefined4 __regparm3 FUN_0003b1f0(ushort *param_1,uint param_2,uint param_3)

{
  ushort uVar1;
  undefined4 uVar2;
  byte bVar3;
  int iVar4;
  int iVar5;
  uint uVar6;
  int in_GS_OFFSET;
  undefined4 uStack_30;
  byte abStack_2c [8];
  undefined2 local_24;
  int local_20;
  
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  bVar3 = (byte)param_2;
  if ((param_3 & 0xff000000) != 0) {
    *(byte *)(param_1 + 4) = bVar3;
    *(byte *)((int)param_1 + 7) = (byte)(param_2 >> 8) | 0x80;
    *(byte *)(param_1 + 3) = (byte)(param_2 >> 0xf) | 0x80;
    *(byte *)((int)param_1 + 5) = (byte)(param_2 >> 0x16) | 0x80;
    *(byte *)(param_1 + 2) = (byte)(param_2 >> 0x1d) | (byte)(param_3 << 3) | 0x80;
    *(byte *)((int)param_1 + 3) = (byte)(param_3 >> 4) | 0x80;
    *(byte *)(param_1 + 1) = (byte)(param_3 >> 0xb) | 0x80;
    *(byte *)((int)param_1 + 1) = (byte)(param_3 >> 0x12) | 0x80;
    *(byte *)param_1 = (byte)(param_3 >> 0x19) | 0x80;
    uVar2 = 9;
    goto LAB_0003b337;
  }
  if (param_3 >> 7 == 0 && (param_2 >> 7 == 0 && (param_3 & 0x7f) == 0)) {
    abStack_2c[2] = bVar3 & 0x7f;
    *(byte *)param_1 = abStack_2c[2];
    uVar2 = 1;
    goto LAB_0003b337;
  }
  abStack_2c[3] = (byte)(param_2 >> 7) | 0x80;
  if (param_3 >> 0xe == 0 && (param_2 >> 0xe == 0 && (param_3 & 0x3fff) == 0)) {
    uVar2 = 2;
    iVar5 = 1;
LAB_0003b3d0:
    abStack_2c[2] = bVar3 & 0x7f;
    *(byte *)param_1 = abStack_2c[iVar5 + 2];
    iVar4 = iVar5 + -2;
    *(byte *)((int)param_1 + 1) = abStack_2c[iVar5 + 1];
    if (iVar4 == -1) goto LAB_0003b337;
  }
  else {
    abStack_2c[4] = (byte)(param_2 >> 0xe) | 0x80;
    if (param_3 >> 0x15 == 0 && (param_2 >> 0x15 == 0 && (param_3 & 0x1fffff) == 0)) {
      uVar2 = 3;
      iVar5 = 2;
      goto LAB_0003b3d0;
    }
    uVar6 = param_2 >> 0x1c | param_3 << 4;
    abStack_2c[5] = (byte)(param_2 >> 0x15) | 0x80;
    if (param_3 >> 0x1c == 0 && uVar6 == 0) {
      uVar2 = 4;
      iVar5 = 3;
      goto LAB_0003b3d0;
    }
    abStack_2c[6] = (byte)uVar6 | 0x80;
    if (param_3 >> 3 == 0) {
      uVar2 = 5;
      iVar5 = 4;
      goto LAB_0003b3d0;
    }
    abStack_2c[7] = (byte)(param_3 >> 3) | 0x80;
    if (param_3 >> 10 == 0) {
      uVar2 = 6;
      iVar5 = 5;
      goto LAB_0003b3d0;
    }
    local_24 = CONCAT11(local_24._1_1_,(char)(param_3 >> 10)) | 0x80;
    if (param_3 >> 0x11 == 0) {
      uVar2 = 7;
      iVar5 = 6;
      goto LAB_0003b3d0;
    }
    abStack_2c[2] = bVar3 & 0x7f;
    iVar4 = 5;
    uVar1 = CONCAT11((char)(param_3 >> 0x11),(undefined1)local_24);
    local_24 = uVar1 | 0x8000;
    *param_1 = uVar1 << 8 | local_24 >> 8;
    uVar2 = 8;
  }
  *(byte *)(param_1 + 1) = abStack_2c[iVar4 + 2];
  if ((((iVar4 != 0) && (*(byte *)((int)param_1 + 3) = abStack_2c[iVar4 + 1], iVar4 != 1)) &&
      (*(byte *)(param_1 + 2) = abStack_2c[iVar4], iVar4 != 2)) &&
     ((*(byte *)((int)param_1 + 5) = abStack_2c[iVar4 + -1], iVar4 != 3 &&
      (*(byte *)(param_1 + 3) = abStack_2c[iVar4 + -2], iVar4 != 4)))) {
    *(byte *)((int)param_1 + 7) = abStack_2c[2];
  }
LAB_0003b337:
  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    uStack_30 = &UNK_0003b454;
    FUN_00153870();
  }
  return uVar2;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
MOV EBX,EAX
SUB ESP,0x1c
MOV EAX,GS:[0x14]
MOV dword ptr [ESP + 0xc],EAX
XOR EAX,EAX
MOV EAX,EDX
TEST ECX,0xff000000
JNZ 0x0003b350
MOV EDI,ECX
MOV ESI,EDX
OR EAX,0xffffff80
SHR EDI,0x7
SHRD ESI,ECX,0x7
MOV byte ptr [ESP + 0x2],AL
MOV EBP,EDI
OR EBP,ESI
JZ 0x0003b3f8
OR ESI,0xffffff80
MOV EDI,ECX
MOV EAX,ESI
SHR EDI,0xe
MOV ESI,EDX
SHRD ESI,ECX,0xe
MOV EBP,EDI
MOV byte ptr [ESP + 0x3],AL
OR EBP,ESI
JZ 0x0003b410
OR ESI,0xffffff80
MOV EDI,ECX
MOV EAX,ESI
SHR EDI,0x15
MOV ESI,EDX
SHRD ESI,ECX,0x15
MOV EBP,EDI
MOV byte ptr [ESP + 0x4],AL
OR EBP,ESI
MOV EAX,ESI
JZ 0x0003b41c
MOV EDI,ECX
MOV ESI,EDX
OR EAX,0xffffff80
SHR EDI,0x1c
SHRD ESI,ECX,0x1c
MOV byte ptr [ESP + 0x5],AL
MOV EBP,EDI
OR EBP,ESI
JZ 0x0003b3c0
OR ESI,0xffffff80
MOV EAX,ESI
MOV byte ptr [ESP + 0x6],AL
MOV EAX,ECX
SHR EAX,0x3
JZ 0x0003b428
OR EAX,0xffffff80
MOV byte ptr [ESP + 0x7],AL
MOV EAX,ECX
SHR EAX,0xa
JZ 0x0003b434
OR EAX,0xffffff80
MOV byte ptr [ESP + 0x8],AL
MOV EAX,ECX
SHR EAX,0x11
JZ 0x0003b440
OR EAX,0xffffff80
AND byte ptr [ESP + 0x2],0x7f
MOV EDX,0x5
MOV byte ptr [ESP + 0x9],AL
MOVZX EAX,word ptr [ESP + 0x8]
ROL AX,0x8
MOV word ptr [EBX],AX
MOV EAX,0x8
MOVZX ECX,byte ptr [ESP + EDX*0x1 + 0x2]
MOV byte ptr [EBX + 0x2],CL
LEA ECX,[EDX + -0x1]
CMP ECX,-0x1
JZ 0x0003b337
MOVZX ECX,byte ptr [ESP + EDX*0x1 + 0x1]
MOV byte ptr [EBX + 0x3],CL
LEA ECX,[EDX + -0x2]
CMP ECX,-0x1
JZ 0x0003b337
MOVZX ECX,byte ptr [ESP + EDX*0x1]
MOV byte ptr [EBX + 0x4],CL
LEA ECX,[EDX + -0x3]
CMP ECX,-0x1
JZ 0x0003b337
MOVZX ECX,byte ptr [ESP + EDX*0x1 + -0x1]
MOV byte ptr [EBX + 0x5],CL
LEA ECX,[EDX + -0x4]
CMP ECX,-0x1
JZ 0x0003b337
MOVZX ECX,byte ptr [ESP + EDX*0x1 + -0x2]
MOV byte ptr [EBX + 0x6],CL
CMP EDX,0x4
JZ 0x0003b337
MOVZX EDX,byte ptr [ESP + 0x2]
MOV byte ptr [EBX + 0x7],DL
MOV ECX,dword ptr [ESP + 0xc]
XOR ECX,dword ptr GS:[0x14]
JNZ 0x0003b44f
ADD ESP,0x1c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV ESI,EDX
MOV EDI,EDX
MOV byte ptr [EBX + 0x8],DL
SHRD ESI,ECX,0x8
OR ESI,0xffffff80
MOV EAX,ESI
MOV ESI,EDX
SHRD ESI,ECX,0xf
MOV byte ptr [EBX + 0x7],AL
OR ESI,0xffffff80
MOV EAX,ESI
MOV ESI,EDX
SHRD ESI,ECX,0x16
MOV byte ptr [EBX + 0x6],AL
OR ESI,0xffffff80
MOV EAX,ESI
MOV byte ptr [EBX + 0x5],AL
MOV EAX,EDI
SHRD EAX,ECX,0x1d
OR EAX,0xffffff80
MOV byte ptr [EBX + 0x4],AL
MOV EAX,ECX
SHR EAX,0x4
OR EAX,0xffffff80
MOV byte ptr [EBX + 0x3],AL
MOV EAX,ECX
SHR EAX,0xb
OR EAX,0xffffff80
MOV byte ptr [EBX + 0x2],AL
MOV EAX,ECX
SHR EAX,0x12
OR EAX,0xffffff80
MOV byte ptr [EBX + 0x1],AL
MOV EAX,ECX
SHR EAX,0x19
OR EAX,0xffffff80
MOV byte ptr [EBX],AL
MOV EAX,0x9
JMP 0x0003b337
MOV EAX,0x4
MOV EDX,0x3
LEA ESI,[ESI]
AND byte ptr [ESP + 0x2],0x7f
MOVZX ECX,byte ptr [ESP + EDX*0x1 + 0x2]
MOV byte ptr [EBX],CL
MOVZX ECX,byte ptr [ESP + EDX*0x1 + 0x1]
SUB EDX,0x2
MOV byte ptr [EBX + 0x1],CL
CMP EDX,-0x1
JNZ 0x0003b2e3
JMP 0x0003b337
AND byte ptr [ESP + 0x2],0x7f
MOVZX EAX,byte ptr [ESP + 0x2]
MOV byte ptr [EBX],AL
MOV EAX,0x1
JMP 0x0003b337
MOV EAX,0x2
MOV EDX,0x1
JMP 0x0003b3d0
MOV EAX,0x3
MOV EDX,0x2
JMP 0x0003b3d0
MOV EAX,0x5
MOV EDX,0x4
JMP 0x0003b3d0
MOV EAX,0x6
MOV EDX,0x5
JMP 0x0003b3d0
MOV EAX,0x7
MOV EDX,0x6
JMP 0x0003b3d0
CALL 0x00153870
(translation_unit "undefined4 __regparm3 FUN_0003b1f0(ushort *param_1,uint param_2,uint param_3)\n\n{\n  ushort uVar1;\n  undefined4 uVar2;\n  byte bVar3;\n  int iVar4;\n  int iVar5;\n  uint uVar6;\n  int in_GS_OFFSET;\n  undefined4 uStack_30;\n  byte abStack_2c [8];\n  undefined2 local_24;\n  int local_20;\n  \n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  bVar3 = (byte)param_2;\n  if ((param_3 & 0xff000000) != 0) {\n    *(byte *)(param_1 + 4) = bVar3;\n    *(byte *)((int)param_1 + 7) = (byte)(param_2 >> 8) | 0x80;\n    *(byte *)(param_1 + 3) = (byte)(param_2 >> 0xf) | 0x80;\n    *(byte *)((int)param_1 + 5) = (byte)(param_2 >> 0x16) | 0x80;\n    *(byte *)(param_1 + 2) = (byte)(param_2 >> 0x1d) | (byte)(param_3 << 3) | 0x80;\n    *(byte *)((int)param_1 + 3) = (byte)(param_3 >> 4) | 0x80;\n    *(byte *)(param_1 + 1) = (byte)(param_3 >> 0xb) | 0x80;\n    *(byte *)((int)param_1 + 1) = (byte)(param_3 >> 0x12) | 0x80;\n    *(byte *)param_1 = (byte)(param_3 >> 0x19) | 0x80;\n    uVar2 = 9;\n    goto LAB_0003b337;\n  }\n  if (param_3 >> 7 == 0 && (param_2 >> 7 == 0 && (param_3 & 0x7f) == 0)) {\n    abStack_2c[2] = bVar3 & 0x7f;\n    *(byte *)param_1 = abStack_2c[2];\n    uVar2 = 1;\n    goto LAB_0003b337;\n  }\n  abStack_2c[3] = (byte)(param_2 >> 7) | 0x80;\n  if (param_3 >> 0xe == 0 && (param_2 >> 0xe == 0 && (param_3 & 0x3fff) == 0)) {\n    uVar2 = 2;\n    iVar5 = 1;\nLAB_0003b3d0:\n    abStack_2c[2] = bVar3 & 0x7f;\n    *(byte *)param_1 = abStack_2c[iVar5 + 2];\n    iVar4 = iVar5 + -2;\n    *(byte *)((int)param_1 + 1) = abStack_2c[iVar5 + 1];\n    if (iVar4 == -1) goto LAB_0003b337;\n  }\n  else {\n    abStack_2c[4] = (byte)(param_2 >> 0xe) | 0x80;\n    if (param_3 >> 0x15 == 0 && (param_2 >> 0x15 == 0 && (param_3 & 0x1fffff) == 0)) {\n      uVar2 = 3;\n      iVar5 = 2;\n      goto LAB_0003b3d0;\n    }\n    uVar6 = param_2 >> 0x1c | param_3 << 4;\n    abStack_2c[5] = (byte)(param_2 >> 0x15) | 0x80;\n    if (param_3 >> 0x1c == 0 && uVar6 == 0) {\n      uVar2 = 4;\n      iVar5 = 3;\n      goto LAB_0003b3d0;\n    }\n    abStack_2c[6] = (byte)uVar6 | 0x80;\n    if (param_3 >> 3 == 0) {\n      uVar2 = 5;\n      iVar5 = 4;\n      goto LAB_0003b3d0;\n    }\n    abStack_2c[7] = (byte)(param_3 >> 3) | 0x80;\n    if (param_3 >> 10 == 0) {\n      uVar2 = 6;\n      iVar5 = 5;\n      goto LAB_0003b3d0;\n    }\n    local_24 = CONCAT11(local_24._1_1_,(char)(param_3 >> 10)) | 0x80;\n    if (param_3 >> 0x11 == 0) {\n      uVar2 = 7;\n      iVar5 = 6;\n      goto LAB_0003b3d0;\n    }\n    abStack_2c[2] = bVar3 & 0x7f;\n    iVar4 = 5;\n    uVar1 = CONCAT11((char)(param_3 >> 0x11),(undefined1)local_24);\n    local_24 = uVar1 | 0x8000;\n    *param_1 = uVar1 << 8 | local_24 >> 8;\n    uVar2 = 8;\n  }\n  *(byte *)(param_1 + 1) = abStack_2c[iVar4 + 2];\n  if ((((iVar4 != 0) && (*(byte *)((int)param_1 + 3) = abStack_2c[iVar4 + 1], iVar4 != 1)) &&\n      (*(byte *)(param_1 + 2) = abStack_2c[iVar4], iVar4 != 2)) &&\n     ((*(byte *)((int)param_1 + 5) = abStack_2c[iVar4 + -1], iVar4 != 3 &&\n      (*(byte *)(param_1 + 3) = abStack_2c[iVar4 + -2], iVar4 != 4)))) {\n    *(byte *)((int)param_1 + 7) = abStack_2c[2];\n  }\nLAB_0003b337:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    uStack_30 = &UNK_0003b454;\n    FUN_00153870();\n  }\n  return uVar2;\n}\n\n" (function_definition "undefined4 __regparm3 FUN_0003b1f0(ushort *param_1,uint param_2,uint param_3)\n\n{\n  ushort uVar1;\n  undefined4 uVar2;\n  byte bVar3;\n  int iVar4;\n  int iVar5;\n  uint uVar6;\n  int in_GS_OFFSET;\n  undefined4 uStack_30;\n  byte abStack_2c [8];\n  undefined2 local_24;\n  int local_20;\n  \n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  bVar3 = (byte)param_2;\n  if ((param_3 & 0xff000000) != 0) {\n    *(byte *)(param_1 + 4) = bVar3;\n    *(byte *)((int)param_1 + 7) = (byte)(param_2 >> 8) | 0x80;\n    *(byte *)(param_1 + 3) = (byte)(param_2 >> 0xf) | 0x80;\n    *(byte *)((int)param_1 + 5) = (byte)(param_2 >> 0x16) | 0x80;\n    *(byte *)(param_1 + 2) = (byte)(param_2 >> 0x1d) | (byte)(param_3 << 3) | 0x80;\n    *(byte *)((int)param_1 + 3) = (byte)(param_3 >> 4) | 0x80;\n    *(byte *)(param_1 + 1) = (byte)(param_3 >> 0xb) | 0x80;\n    *(byte *)((int)param_1 + 1) = (byte)(param_3 >> 0x12) | 0x80;\n    *(byte *)param_1 = (byte)(param_3 >> 0x19) | 0x80;\n    uVar2 = 9;\n    goto LAB_0003b337;\n  }\n  if (param_3 >> 7 == 0 && (param_2 >> 7 == 0 && (param_3 & 0x7f) == 0)) {\n    abStack_2c[2] = bVar3 & 0x7f;\n    *(byte *)param_1 = abStack_2c[2];\n    uVar2 = 1;\n    goto LAB_0003b337;\n  }\n  abStack_2c[3] = (byte)(param_2 >> 7) | 0x80;\n  if (param_3 >> 0xe == 0 && (param_2 >> 0xe == 0 && (param_3 & 0x3fff) == 0)) {\n    uVar2 = 2;\n    iVar5 = 1;\nLAB_0003b3d0:\n    abStack_2c[2] = bVar3 & 0x7f;\n    *(byte *)param_1 = abStack_2c[iVar5 + 2];\n    iVar4 = iVar5 + -2;\n    *(byte *)((int)param_1 + 1) = abStack_2c[iVar5 + 1];\n    if (iVar4 == -1) goto LAB_0003b337;\n  }\n  else {\n    abStack_2c[4] = (byte)(param_2 >> 0xe) | 0x80;\n    if (param_3 >> 0x15 == 0 && (param_2 >> 0x15 == 0 && (param_3 & 0x1fffff) == 0)) {\n      uVar2 = 3;\n      iVar5 = 2;\n      goto LAB_0003b3d0;\n    }\n    uVar6 = param_2 >> 0x1c | param_3 << 4;\n    abStack_2c[5] = (byte)(param_2 >> 0x15) | 0x80;\n    if (param_3 >> 0x1c == 0 && uVar6 == 0) {\n      uVar2 = 4;\n      iVar5 = 3;\n      goto LAB_0003b3d0;\n    }\n    abStack_2c[6] = (byte)uVar6 | 0x80;\n    if (param_3 >> 3 == 0) {\n      uVar2 = 5;\n      iVar5 = 4;\n      goto LAB_0003b3d0;\n    }\n    abStack_2c[7] = (byte)(param_3 >> 3) | 0x80;\n    if (param_3 >> 10 == 0) {\n      uVar2 = 6;\n      iVar5 = 5;\n      goto LAB_0003b3d0;\n    }\n    local_24 = CONCAT11(local_24._1_1_,(char)(param_3 >> 10)) | 0x80;\n    if (param_3 >> 0x11 == 0) {\n      uVar2 = 7;\n      iVar5 = 6;\n      goto LAB_0003b3d0;\n    }\n    abStack_2c[2] = bVar3 & 0x7f;\n    iVar4 = 5;\n    uVar1 = CONCAT11((char)(param_3 >> 0x11),(undefined1)local_24);\n    local_24 = uVar1 | 0x8000;\n    *param_1 = uVar1 << 8 | local_24 >> 8;\n    uVar2 = 8;\n  }\n  *(byte *)(param_1 + 1) = abStack_2c[iVar4 + 2];\n  if ((((iVar4 != 0) && (*(byte *)((int)param_1 + 3) = abStack_2c[iVar4 + 1], iVar4 != 1)) &&\n      (*(byte *)(param_1 + 2) = abStack_2c[iVar4], iVar4 != 2)) &&\n     ((*(byte *)((int)param_1 + 5) = abStack_2c[iVar4 + -1], iVar4 != 3 &&\n      (*(byte *)(param_1 + 3) = abStack_2c[iVar4 + -2], iVar4 != 4)))) {\n    *(byte *)((int)param_1 + 7) = abStack_2c[2];\n  }\nLAB_0003b337:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    uStack_30 = &UNK_0003b454;\n    FUN_00153870();\n  }\n  return uVar2;\n}" type_identifier (ERROR "__regparm3" identifier) (function_declarator "FUN_0003b1f0(ushort *param_1,uint param_2,uint param_3)" identifier (parameter_list "(ushort *param_1,uint param_2,uint param_3)" ( (parameter_declaration "ushort *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "uint param_2" type_identifier identifier) , (parameter_declaration "uint param_3" type_identifier identifier) ))) (compound_statement "{\n  ushort uVar1;\n  undefined4 uVar2;\n  byte bVar3;\n  int iVar4;\n  int iVar5;\n  uint uVar6;\n  int in_GS_OFFSET;\n  undefined4 uStack_30;\n  byte abStack_2c [8];\n  undefined2 local_24;\n  int local_20;\n  \n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  bVar3 = (byte)param_2;\n  if ((param_3 & 0xff000000) != 0) {\n    *(byte *)(param_1 + 4) = bVar3;\n    *(byte *)((int)param_1 + 7) = (byte)(param_2 >> 8) | 0x80;\n    *(byte *)(param_1 + 3) = (byte)(param_2 >> 0xf) | 0x80;\n    *(byte *)((int)param_1 + 5) = (byte)(param_2 >> 0x16) | 0x80;\n    *(byte *)(param_1 + 2) = (byte)(param_2 >> 0x1d) | (byte)(param_3 << 3) | 0x80;\n    *(byte *)((int)param_1 + 3) = (byte)(param_3 >> 4) | 0x80;\n    *(byte *)(param_1 + 1) = (byte)(param_3 >> 0xb) | 0x80;\n    *(byte *)((int)param_1 + 1) = (byte)(param_3 >> 0x12) | 0x80;\n    *(byte *)param_1 = (byte)(param_3 >> 0x19) | 0x80;\n    uVar2 = 9;\n    goto LAB_0003b337;\n  }\n  if (param_3 >> 7 == 0 && (param_2 >> 7 == 0 && (param_3 & 0x7f) == 0)) {\n    abStack_2c[2] = bVar3 & 0x7f;\n    *(byte *)param_1 = abStack_2c[2];\n    uVar2 = 1;\n    goto LAB_0003b337;\n  }\n  abStack_2c[3] = (byte)(param_2 >> 7) | 0x80;\n  if (param_3 >> 0xe == 0 && (param_2 >> 0xe == 0 && (param_3 & 0x3fff) == 0)) {\n    uVar2 = 2;\n    iVar5 = 1;\nLAB_0003b3d0:\n    abStack_2c[2] = bVar3 & 0x7f;\n    *(byte *)param_1 = abStack_2c[iVar5 + 2];\n    iVar4 = iVar5 + -2;\n    *(byte *)((int)param_1 + 1) = abStack_2c[iVar5 + 1];\n    if (iVar4 == -1) goto LAB_0003b337;\n  }\n  else {\n    abStack_2c[4] = (byte)(param_2 >> 0xe) | 0x80;\n    if (param_3 >> 0x15 == 0 && (param_2 >> 0x15 == 0 && (param_3 & 0x1fffff) == 0)) {\n      uVar2 = 3;\n      iVar5 = 2;\n      goto LAB_0003b3d0;\n    }\n    uVar6 = param_2 >> 0x1c | param_3 << 4;\n    abStack_2c[5] = (byte)(param_2 >> 0x15) | 0x80;\n    if (param_3 >> 0x1c == 0 && uVar6 == 0) {\n      uVar2 = 4;\n      iVar5 = 3;\n      goto LAB_0003b3d0;\n    }\n    abStack_2c[6] = (byte)uVar6 | 0x80;\n    if (param_3 >> 3 == 0) {\n      uVar2 = 5;\n      iVar5 = 4;\n      goto LAB_0003b3d0;\n    }\n    abStack_2c[7] = (byte)(param_3 >> 3) | 0x80;\n    if (param_3 >> 10 == 0) {\n      uVar2 = 6;\n      iVar5 = 5;\n      goto LAB_0003b3d0;\n    }\n    local_24 = CONCAT11(local_24._1_1_,(char)(param_3 >> 10)) | 0x80;\n    if (param_3 >> 0x11 == 0) {\n      uVar2 = 7;\n      iVar5 = 6;\n      goto LAB_0003b3d0;\n    }\n    abStack_2c[2] = bVar3 & 0x7f;\n    iVar4 = 5;\n    uVar1 = CONCAT11((char)(param_3 >> 0x11),(undefined1)local_24);\n    local_24 = uVar1 | 0x8000;\n    *param_1 = uVar1 << 8 | local_24 >> 8;\n    uVar2 = 8;\n  }\n  *(byte *)(param_1 + 1) = abStack_2c[iVar4 + 2];\n  if ((((iVar4 != 0) && (*(byte *)((int)param_1 + 3) = abStack_2c[iVar4 + 1], iVar4 != 1)) &&\n      (*(byte *)(param_1 + 2) = abStack_2c[iVar4], iVar4 != 2)) &&\n     ((*(byte *)((int)param_1 + 5) = abStack_2c[iVar4 + -1], iVar4 != 3 &&\n      (*(byte *)(param_1 + 3) = abStack_2c[iVar4 + -2], iVar4 != 4)))) {\n    *(byte *)((int)param_1 + 7) = abStack_2c[2];\n  }\nLAB_0003b337:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    uStack_30 = &UNK_0003b454;\n    FUN_00153870();\n  }\n  return uVar2;\n}" { (declaration "ushort uVar1;" type_identifier identifier ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "byte bVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "undefined4 uStack_30;" type_identifier identifier ;) (declaration "byte abStack_2c [8];" type_identifier (array_declarator "abStack_2c [8]" identifier [ number_literal ]) ;) (declaration "undefined2 local_24;" type_identifier identifier ;) (declaration "int local_20;" primitive_type 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 "bVar3 = (byte)param_2;" (assignment_expression "bVar3 = (byte)param_2" identifier = (cast_expression "(byte)param_2" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (if_statement "if ((param_3 & 0xff000000) != 0) {\n    *(byte *)(param_1 + 4) = bVar3;\n    *(byte *)((int)param_1 + 7) = (byte)(param_2 >> 8) | 0x80;\n    *(byte *)(param_1 + 3) = (byte)(param_2 >> 0xf) | 0x80;\n    *(byte *)((int)param_1 + 5) = (byte)(param_2 >> 0x16) | 0x80;\n    *(byte *)(param_1 + 2) = (byte)(param_2 >> 0x1d) | (byte)(param_3 << 3) | 0x80;\n    *(byte *)((int)param_1 + 3) = (byte)(param_3 >> 4) | 0x80;\n    *(byte *)(param_1 + 1) = (byte)(param_3 >> 0xb) | 0x80;\n    *(byte *)((int)param_1 + 1) = (byte)(param_3 >> 0x12) | 0x80;\n    *(byte *)param_1 = (byte)(param_3 >> 0x19) | 0x80;\n    uVar2 = 9;\n    goto LAB_0003b337;\n  }" if (parenthesized_expression "((param_3 & 0xff000000) != 0)" ( (binary_expression "(param_3 & 0xff000000) != 0" (parenthesized_expression "(param_3 & 0xff000000)" ( (binary_expression "param_3 & 0xff000000" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    *(byte *)(param_1 + 4) = bVar3;\n    *(byte *)((int)param_1 + 7) = (byte)(param_2 >> 8) | 0x80;\n    *(byte *)(param_1 + 3) = (byte)(param_2 >> 0xf) | 0x80;\n    *(byte *)((int)param_1 + 5) = (byte)(param_2 >> 0x16) | 0x80;\n    *(byte *)(param_1 + 2) = (byte)(param_2 >> 0x1d) | (byte)(param_3 << 3) | 0x80;\n    *(byte *)((int)param_1 + 3) = (byte)(param_3 >> 4) | 0x80;\n    *(byte *)(param_1 + 1) = (byte)(param_3 >> 0xb) | 0x80;\n    *(byte *)((int)param_1 + 1) = (byte)(param_3 >> 0x12) | 0x80;\n    *(byte *)param_1 = (byte)(param_3 >> 0x19) | 0x80;\n    uVar2 = 9;\n    goto LAB_0003b337;\n  }" { (expression_statement "*(byte *)(param_1 + 4) = bVar3;" (assignment_expression "*(byte *)(param_1 + 4) = bVar3" (pointer_expression "*(byte *)(param_1 + 4)" * (cast_expression "(byte *)(param_1 + 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte *)((int)param_1 + 7) = (byte)(param_2 >> 8) | 0x80;" (assignment_expression "*(byte *)((int)param_1 + 7) = (byte)(param_2 >> 8) | 0x80" (pointer_expression "*(byte *)((int)param_1 + 7)" * (cast_expression "(byte *)((int)param_1 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 7)" ( (binary_expression "(int)param_1 + 7" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "(byte)(param_2 >> 8) | 0x80" (call_expression "(byte)(param_2 >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(param_2 >> 8)" ( (binary_expression "param_2 >> 8" identifier >> number_literal) ))) | number_literal)) ;) (expression_statement "*(byte *)(param_1 + 3) = (byte)(param_2 >> 0xf) | 0x80;" (assignment_expression "*(byte *)(param_1 + 3) = (byte)(param_2 >> 0xf) | 0x80" (pointer_expression "*(byte *)(param_1 + 3)" * (cast_expression "(byte *)(param_1 + 3)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 3)" ( (binary_expression "param_1 + 3" identifier + number_literal) )))) = (binary_expression "(byte)(param_2 >> 0xf) | 0x80" (call_expression "(byte)(param_2 >> 0xf)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(param_2 >> 0xf)" ( (binary_expression "param_2 >> 0xf" identifier >> number_literal) ))) | number_literal)) ;) (expression_statement "*(byte *)((int)param_1 + 5) = (byte)(param_2 >> 0x16) | 0x80;" (assignment_expression "*(byte *)((int)param_1 + 5) = (byte)(param_2 >> 0x16) | 0x80" (pointer_expression "*(byte *)((int)param_1 + 5)" * (cast_expression "(byte *)((int)param_1 + 5)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 5)" ( (binary_expression "(int)param_1 + 5" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "(byte)(param_2 >> 0x16) | 0x80" (call_expression "(byte)(param_2 >> 0x16)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(param_2 >> 0x16)" ( (binary_expression "param_2 >> 0x16" identifier >> number_literal) ))) | number_literal)) ;) (expression_statement "*(byte *)(param_1 + 2) = (byte)(param_2 >> 0x1d) | (byte)(param_3 << 3) | 0x80;" (assignment_expression "*(byte *)(param_1 + 2) = (byte)(param_2 >> 0x1d) | (byte)(param_3 << 3) | 0x80" (pointer_expression "*(byte *)(param_1 + 2)" * (cast_expression "(byte *)(param_1 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) )))) = (binary_expression "(byte)(param_2 >> 0x1d) | (byte)(param_3 << 3) | 0x80" (binary_expression "(byte)(param_2 >> 0x1d) | (byte)(param_3 << 3)" (call_expression "(byte)(param_2 >> 0x1d)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(param_2 >> 0x1d)" ( (binary_expression "param_2 >> 0x1d" identifier >> number_literal) ))) | (call_expression "(byte)(param_3 << 3)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(param_3 << 3)" ( (binary_expression "param_3 << 3" identifier << number_literal) )))) | number_literal)) ;) (expression_statement "*(byte *)((int)param_1 + 3) = (byte)(param_3 >> 4) | 0x80;" (assignment_expression "*(byte *)((int)param_1 + 3) = (byte)(param_3 >> 4) | 0x80" (pointer_expression "*(byte *)((int)param_1 + 3)" * (cast_expression "(byte *)((int)param_1 + 3)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 3)" ( (binary_expression "(int)param_1 + 3" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "(byte)(param_3 >> 4) | 0x80" (call_expression "(byte)(param_3 >> 4)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(param_3 >> 4)" ( (binary_expression "param_3 >> 4" identifier >> number_literal) ))) | number_literal)) ;) (expression_statement "*(byte *)(param_1 + 1) = (byte)(param_3 >> 0xb) | 0x80;" (assignment_expression "*(byte *)(param_1 + 1) = (byte)(param_3 >> 0xb) | 0x80" (pointer_expression "*(byte *)(param_1 + 1)" * (cast_expression "(byte *)(param_1 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 1)" ( (binary_expression "param_1 + 1" identifier + number_literal) )))) = (binary_expression "(byte)(param_3 >> 0xb) | 0x80" (call_expression "(byte)(param_3 >> 0xb)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(param_3 >> 0xb)" ( (binary_expression "param_3 >> 0xb" identifier >> number_literal) ))) | number_literal)) ;) (expression_statement "*(byte *)((int)param_1 + 1) = (byte)(param_3 >> 0x12) | 0x80;" (assignment_expression "*(byte *)((int)param_1 + 1) = (byte)(param_3 >> 0x12) | 0x80" (pointer_expression "*(byte *)((int)param_1 + 1)" * (cast_expression "(byte *)((int)param_1 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 1)" ( (binary_expression "(int)param_1 + 1" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "(byte)(param_3 >> 0x12) | 0x80" (call_expression "(byte)(param_3 >> 0x12)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(param_3 >> 0x12)" ( (binary_expression "param_3 >> 0x12" identifier >> number_literal) ))) | number_literal)) ;) (expression_statement "*(byte *)param_1 = (byte)(param_3 >> 0x19) | 0x80;" (assignment_expression "*(byte *)param_1 = (byte)(param_3 >> 0x19) | 0x80" (pointer_expression "*(byte *)param_1" * (cast_expression "(byte *)param_1" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (binary_expression "(byte)(param_3 >> 0x19) | 0x80" (call_expression "(byte)(param_3 >> 0x19)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(param_3 >> 0x19)" ( (binary_expression "param_3 >> 0x19" identifier >> number_literal) ))) | number_literal)) ;) (expression_statement "uVar2 = 9;" (assignment_expression "uVar2 = 9" identifier = number_literal) ;) (goto_statement "goto LAB_0003b337;" goto statement_identifier ;) })) (if_statement "if (param_3 >> 7 == 0 && (param_2 >> 7 == 0 && (param_3 & 0x7f) == 0)) {\n    abStack_2c[2] = bVar3 & 0x7f;\n    *(byte *)param_1 = abStack_2c[2];\n    uVar2 = 1;\n    goto LAB_0003b337;\n  }" if (parenthesized_expression "(param_3 >> 7 == 0 && (param_2 >> 7 == 0 && (param_3 & 0x7f) == 0))" ( (binary_expression "param_3 >> 7 == 0 && (param_2 >> 7 == 0 && (param_3 & 0x7f) == 0)" (binary_expression "param_3 >> 7 == 0" (binary_expression "param_3 >> 7" identifier >> number_literal) == number_literal) && (parenthesized_expression "(param_2 >> 7 == 0 && (param_3 & 0x7f) == 0)" ( (binary_expression "param_2 >> 7 == 0 && (param_3 & 0x7f) == 0" (binary_expression "param_2 >> 7 == 0" (binary_expression "param_2 >> 7" identifier >> number_literal) == number_literal) && (binary_expression "(param_3 & 0x7f) == 0" (parenthesized_expression "(param_3 & 0x7f)" ( (binary_expression "param_3 & 0x7f" identifier & number_literal) )) == number_literal)) ))) )) (compound_statement "{\n    abStack_2c[2] = bVar3 & 0x7f;\n    *(byte *)param_1 = abStack_2c[2];\n    uVar2 = 1;\n    goto LAB_0003b337;\n  }" { (expression_statement "abStack_2c[2] = bVar3 & 0x7f;" (assignment_expression "abStack_2c[2] = bVar3 & 0x7f" (subscript_expression "abStack_2c[2]" identifier [ number_literal ]) = (binary_expression "bVar3 & 0x7f" identifier & number_literal)) ;) (expression_statement "*(byte *)param_1 = abStack_2c[2];" (assignment_expression "*(byte *)param_1 = abStack_2c[2]" (pointer_expression "*(byte *)param_1" * (cast_expression "(byte *)param_1" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (subscript_expression "abStack_2c[2]" identifier [ number_literal ])) ;) (expression_statement "uVar2 = 1;" (assignment_expression "uVar2 = 1" identifier = number_literal) ;) (goto_statement "goto LAB_0003b337;" goto statement_identifier ;) })) (expression_statement "abStack_2c[3] = (byte)(param_2 >> 7) | 0x80;" (assignment_expression "abStack_2c[3] = (byte)(param_2 >> 7) | 0x80" (subscript_expression "abStack_2c[3]" identifier [ number_literal ]) = (binary_expression "(byte)(param_2 >> 7) | 0x80" (call_expression "(byte)(param_2 >> 7)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(param_2 >> 7)" ( (binary_expression "param_2 >> 7" identifier >> number_literal) ))) | number_literal)) ;) (if_statement "if (param_3 >> 0xe == 0 && (param_2 >> 0xe == 0 && (param_3 & 0x3fff) == 0)) {\n    uVar2 = 2;\n    iVar5 = 1;\nLAB_0003b3d0:\n    abStack_2c[2] = bVar3 & 0x7f;\n    *(byte *)param_1 = abStack_2c[iVar5 + 2];\n    iVar4 = iVar5 + -2;\n    *(byte *)((int)param_1 + 1) = abStack_2c[iVar5 + 1];\n    if (iVar4 == -1) goto LAB_0003b337;\n  }\n  else {\n    abStack_2c[4] = (byte)(param_2 >> 0xe) | 0x80;\n    if (param_3 >> 0x15 == 0 && (param_2 >> 0x15 == 0 && (param_3 & 0x1fffff) == 0)) {\n      uVar2 = 3;\n      iVar5 = 2;\n      goto LAB_0003b3d0;\n    }\n    uVar6 = param_2 >> 0x1c | param_3 << 4;\n    abStack_2c[5] = (byte)(param_2 >> 0x15) | 0x80;\n    if (param_3 >> 0x1c == 0 && uVar6 == 0) {\n      uVar2 = 4;\n      iVar5 = 3;\n      goto LAB_0003b3d0;\n    }\n    abStack_2c[6] = (byte)uVar6 | 0x80;\n    if (param_3 >> 3 == 0) {\n      uVar2 = 5;\n      iVar5 = 4;\n      goto LAB_0003b3d0;\n    }\n    abStack_2c[7] = (byte)(param_3 >> 3) | 0x80;\n    if (param_3 >> 10 == 0) {\n      uVar2 = 6;\n      iVar5 = 5;\n      goto LAB_0003b3d0;\n    }\n    local_24 = CONCAT11(local_24._1_1_,(char)(param_3 >> 10)) | 0x80;\n    if (param_3 >> 0x11 == 0) {\n      uVar2 = 7;\n      iVar5 = 6;\n      goto LAB_0003b3d0;\n    }\n    abStack_2c[2] = bVar3 & 0x7f;\n    iVar4 = 5;\n    uVar1 = CONCAT11((char)(param_3 >> 0x11),(undefined1)local_24);\n    local_24 = uVar1 | 0x8000;\n    *param_1 = uVar1 << 8 | local_24 >> 8;\n    uVar2 = 8;\n  }" if (parenthesized_expression "(param_3 >> 0xe == 0 && (param_2 >> 0xe == 0 && (param_3 & 0x3fff) == 0))" ( (binary_expression "param_3 >> 0xe == 0 && (param_2 >> 0xe == 0 && (param_3 & 0x3fff) == 0)" (binary_expression "param_3 >> 0xe == 0" (binary_expression "param_3 >> 0xe" identifier >> number_literal) == number_literal) && (parenthesized_expression "(param_2 >> 0xe == 0 && (param_3 & 0x3fff) == 0)" ( (binary_expression "param_2 >> 0xe == 0 && (param_3 & 0x3fff) == 0" (binary_expression "param_2 >> 0xe == 0" (binary_expression "param_2 >> 0xe" identifier >> number_literal) == number_literal) && (binary_expression "(param_3 & 0x3fff) == 0" (parenthesized_expression "(param_3 & 0x3fff)" ( (binary_expression "param_3 & 0x3fff" identifier & number_literal) )) == number_literal)) ))) )) (compound_statement "{\n    uVar2 = 2;\n    iVar5 = 1;\nLAB_0003b3d0:\n    abStack_2c[2] = bVar3 & 0x7f;\n    *(byte *)param_1 = abStack_2c[iVar5 + 2];\n    iVar4 = iVar5 + -2;\n    *(byte *)((int)param_1 + 1) = abStack_2c[iVar5 + 1];\n    if (iVar4 == -1) goto LAB_0003b337;\n  }" { (expression_statement "uVar2 = 2;" (assignment_expression "uVar2 = 2" identifier = number_literal) ;) (expression_statement "iVar5 = 1;" (assignment_expression "iVar5 = 1" identifier = number_literal) ;) (labeled_statement "LAB_0003b3d0:\n    abStack_2c[2] = bVar3 & 0x7f;" statement_identifier : (expression_statement "abStack_2c[2] = bVar3 & 0x7f;" (assignment_expression "abStack_2c[2] = bVar3 & 0x7f" (subscript_expression "abStack_2c[2]" identifier [ number_literal ]) = (binary_expression "bVar3 & 0x7f" identifier & number_literal)) ;)) (expression_statement "*(byte *)param_1 = abStack_2c[iVar5 + 2];" (assignment_expression "*(byte *)param_1 = abStack_2c[iVar5 + 2]" (pointer_expression "*(byte *)param_1" * (cast_expression "(byte *)param_1" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (subscript_expression "abStack_2c[iVar5 + 2]" identifier [ (binary_expression "iVar5 + 2" identifier + number_literal) ])) ;) (expression_statement "iVar4 = iVar5 + -2;" (assignment_expression "iVar4 = iVar5 + -2" identifier = (binary_expression "iVar5 + -2" identifier + number_literal)) ;) (expression_statement "*(byte *)((int)param_1 + 1) = abStack_2c[iVar5 + 1];" (assignment_expression "*(byte *)((int)param_1 + 1) = abStack_2c[iVar5 + 1]" (pointer_expression "*(byte *)((int)param_1 + 1)" * (cast_expression "(byte *)((int)param_1 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 1)" ( (binary_expression "(int)param_1 + 1" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (subscript_expression "abStack_2c[iVar5 + 1]" identifier [ (binary_expression "iVar5 + 1" identifier + number_literal) ])) ;) (if_statement "if (iVar4 == -1) goto LAB_0003b337;" if (parenthesized_expression "(iVar4 == -1)" ( (binary_expression "iVar4 == -1" identifier == number_literal) )) (goto_statement "goto LAB_0003b337;" goto statement_identifier ;)) }) (else_clause "else {\n    abStack_2c[4] = (byte)(param_2 >> 0xe) | 0x80;\n    if (param_3 >> 0x15 == 0 && (param_2 >> 0x15 == 0 && (param_3 & 0x1fffff) == 0)) {\n      uVar2 = 3;\n      iVar5 = 2;\n      goto LAB_0003b3d0;\n    }\n    uVar6 = param_2 >> 0x1c | param_3 << 4;\n    abStack_2c[5] = (byte)(param_2 >> 0x15) | 0x80;\n    if (param_3 >> 0x1c == 0 && uVar6 == 0) {\n      uVar2 = 4;\n      iVar5 = 3;\n      goto LAB_0003b3d0;\n    }\n    abStack_2c[6] = (byte)uVar6 | 0x80;\n    if (param_3 >> 3 == 0) {\n      uVar2 = 5;\n      iVar5 = 4;\n      goto LAB_0003b3d0;\n    }\n    abStack_2c[7] = (byte)(param_3 >> 3) | 0x80;\n    if (param_3 >> 10 == 0) {\n      uVar2 = 6;\n      iVar5 = 5;\n      goto LAB_0003b3d0;\n    }\n    local_24 = CONCAT11(local_24._1_1_,(char)(param_3 >> 10)) | 0x80;\n    if (param_3 >> 0x11 == 0) {\n      uVar2 = 7;\n      iVar5 = 6;\n      goto LAB_0003b3d0;\n    }\n    abStack_2c[2] = bVar3 & 0x7f;\n    iVar4 = 5;\n    uVar1 = CONCAT11((char)(param_3 >> 0x11),(undefined1)local_24);\n    local_24 = uVar1 | 0x8000;\n    *param_1 = uVar1 << 8 | local_24 >> 8;\n    uVar2 = 8;\n  }" else (compound_statement "{\n    abStack_2c[4] = (byte)(param_2 >> 0xe) | 0x80;\n    if (param_3 >> 0x15 == 0 && (param_2 >> 0x15 == 0 && (param_3 & 0x1fffff) == 0)) {\n      uVar2 = 3;\n      iVar5 = 2;\n      goto LAB_0003b3d0;\n    }\n    uVar6 = param_2 >> 0x1c | param_3 << 4;\n    abStack_2c[5] = (byte)(param_2 >> 0x15) | 0x80;\n    if (param_3 >> 0x1c == 0 && uVar6 == 0) {\n      uVar2 = 4;\n      iVar5 = 3;\n      goto LAB_0003b3d0;\n    }\n    abStack_2c[6] = (byte)uVar6 | 0x80;\n    if (param_3 >> 3 == 0) {\n      uVar2 = 5;\n      iVar5 = 4;\n      goto LAB_0003b3d0;\n    }\n    abStack_2c[7] = (byte)(param_3 >> 3) | 0x80;\n    if (param_3 >> 10 == 0) {\n      uVar2 = 6;\n      iVar5 = 5;\n      goto LAB_0003b3d0;\n    }\n    local_24 = CONCAT11(local_24._1_1_,(char)(param_3 >> 10)) | 0x80;\n    if (param_3 >> 0x11 == 0) {\n      uVar2 = 7;\n      iVar5 = 6;\n      goto LAB_0003b3d0;\n    }\n    abStack_2c[2] = bVar3 & 0x7f;\n    iVar4 = 5;\n    uVar1 = CONCAT11((char)(param_3 >> 0x11),(undefined1)local_24);\n    local_24 = uVar1 | 0x8000;\n    *param_1 = uVar1 << 8 | local_24 >> 8;\n    uVar2 = 8;\n  }" { (expression_statement "abStack_2c[4] = (byte)(param_2 >> 0xe) | 0x80;" (assignment_expression "abStack_2c[4] = (byte)(param_2 >> 0xe) | 0x80" (subscript_expression "abStack_2c[4]" identifier [ number_literal ]) = (binary_expression "(byte)(param_2 >> 0xe) | 0x80" (call_expression "(byte)(param_2 >> 0xe)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(param_2 >> 0xe)" ( (binary_expression "param_2 >> 0xe" identifier >> number_literal) ))) | number_literal)) ;) (if_statement "if (param_3 >> 0x15 == 0 && (param_2 >> 0x15 == 0 && (param_3 & 0x1fffff) == 0)) {\n      uVar2 = 3;\n      iVar5 = 2;\n      goto LAB_0003b3d0;\n    }" if (parenthesized_expression "(param_3 >> 0x15 == 0 && (param_2 >> 0x15 == 0 && (param_3 & 0x1fffff) == 0))" ( (binary_expression "param_3 >> 0x15 == 0 && (param_2 >> 0x15 == 0 && (param_3 & 0x1fffff) == 0)" (binary_expression "param_3 >> 0x15 == 0" (binary_expression "param_3 >> 0x15" identifier >> number_literal) == number_literal) && (parenthesized_expression "(param_2 >> 0x15 == 0 && (param_3 & 0x1fffff) == 0)" ( (binary_expression "param_2 >> 0x15 == 0 && (param_3 & 0x1fffff) == 0" (binary_expression "param_2 >> 0x15 == 0" (binary_expression "param_2 >> 0x15" identifier >> number_literal) == number_literal) && (binary_expression "(param_3 & 0x1fffff) == 0" (parenthesized_expression "(param_3 & 0x1fffff)" ( (binary_expression "param_3 & 0x1fffff" identifier & number_literal) )) == number_literal)) ))) )) (compound_statement "{\n      uVar2 = 3;\n      iVar5 = 2;\n      goto LAB_0003b3d0;\n    }" { (expression_statement "uVar2 = 3;" (assignment_expression "uVar2 = 3" identifier = number_literal) ;) (expression_statement "iVar5 = 2;" (assignment_expression "iVar5 = 2" identifier = number_literal) ;) (goto_statement "goto LAB_0003b3d0;" goto statement_identifier ;) })) (expression_statement "uVar6 = param_2 >> 0x1c | param_3 << 4;" (assignment_expression "uVar6 = param_2 >> 0x1c | param_3 << 4" identifier = (binary_expression "param_2 >> 0x1c | param_3 << 4" (binary_expression "param_2 >> 0x1c" identifier >> number_literal) | (binary_expression "param_3 << 4" identifier << number_literal))) ;) (expression_statement "abStack_2c[5] = (byte)(param_2 >> 0x15) | 0x80;" (assignment_expression "abStack_2c[5] = (byte)(param_2 >> 0x15) | 0x80" (subscript_expression "abStack_2c[5]" identifier [ number_literal ]) = (binary_expression "(byte)(param_2 >> 0x15) | 0x80" (call_expression "(byte)(param_2 >> 0x15)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(param_2 >> 0x15)" ( (binary_expression "param_2 >> 0x15" identifier >> number_literal) ))) | number_literal)) ;) (if_statement "if (param_3 >> 0x1c == 0 && uVar6 == 0) {\n      uVar2 = 4;\n      iVar5 = 3;\n      goto LAB_0003b3d0;\n    }" if (parenthesized_expression "(param_3 >> 0x1c == 0 && uVar6 == 0)" ( (binary_expression "param_3 >> 0x1c == 0 && uVar6 == 0" (binary_expression "param_3 >> 0x1c == 0" (binary_expression "param_3 >> 0x1c" identifier >> number_literal) == number_literal) && (binary_expression "uVar6 == 0" identifier == number_literal)) )) (compound_statement "{\n      uVar2 = 4;\n      iVar5 = 3;\n      goto LAB_0003b3d0;\n    }" { (expression_statement "uVar2 = 4;" (assignment_expression "uVar2 = 4" identifier = number_literal) ;) (expression_statement "iVar5 = 3;" (assignment_expression "iVar5 = 3" identifier = number_literal) ;) (goto_statement "goto LAB_0003b3d0;" goto statement_identifier ;) })) (expression_statement "abStack_2c[6] = (byte)uVar6 | 0x80;" (assignment_expression "abStack_2c[6] = (byte)uVar6 | 0x80" (subscript_expression "abStack_2c[6]" identifier [ number_literal ]) = (binary_expression "(byte)uVar6 | 0x80" (cast_expression "(byte)uVar6" ( (type_descriptor "byte" type_identifier) ) identifier) | number_literal)) ;) (if_statement "if (param_3 >> 3 == 0) {\n      uVar2 = 5;\n      iVar5 = 4;\n      goto LAB_0003b3d0;\n    }" if (parenthesized_expression "(param_3 >> 3 == 0)" ( (binary_expression "param_3 >> 3 == 0" (binary_expression "param_3 >> 3" identifier >> number_literal) == number_literal) )) (compound_statement "{\n      uVar2 = 5;\n      iVar5 = 4;\n      goto LAB_0003b3d0;\n    }" { (expression_statement "uVar2 = 5;" (assignment_expression "uVar2 = 5" identifier = number_literal) ;) (expression_statement "iVar5 = 4;" (assignment_expression "iVar5 = 4" identifier = number_literal) ;) (goto_statement "goto LAB_0003b3d0;" goto statement_identifier ;) })) (expression_statement "abStack_2c[7] = (byte)(param_3 >> 3) | 0x80;" (assignment_expression "abStack_2c[7] = (byte)(param_3 >> 3) | 0x80" (subscript_expression "abStack_2c[7]" identifier [ number_literal ]) = (binary_expression "(byte)(param_3 >> 3) | 0x80" (call_expression "(byte)(param_3 >> 3)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(param_3 >> 3)" ( (binary_expression "param_3 >> 3" identifier >> number_literal) ))) | number_literal)) ;) (if_statement "if (param_3 >> 10 == 0) {\n      uVar2 = 6;\n      iVar5 = 5;\n      goto LAB_0003b3d0;\n    }" if (parenthesized_expression "(param_3 >> 10 == 0)" ( (binary_expression "param_3 >> 10 == 0" (binary_expression "param_3 >> 10" identifier >> number_literal) == number_literal) )) (compound_statement "{\n      uVar2 = 6;\n      iVar5 = 5;\n      goto LAB_0003b3d0;\n    }" { (expression_statement "uVar2 = 6;" (assignment_expression "uVar2 = 6" identifier = number_literal) ;) (expression_statement "iVar5 = 5;" (assignment_expression "iVar5 = 5" identifier = number_literal) ;) (goto_statement "goto LAB_0003b3d0;" goto statement_identifier ;) })) (expression_statement "local_24 = CONCAT11(local_24._1_1_,(char)(param_3 >> 10)) | 0x80;" (assignment_expression "local_24 = CONCAT11(local_24._1_1_,(char)(param_3 >> 10)) | 0x80" identifier = (binary_expression "CONCAT11(local_24._1_1_,(char)(param_3 >> 10)) | 0x80" (call_expression "CONCAT11(local_24._1_1_,(char)(param_3 >> 10))" identifier (argument_list "(local_24._1_1_,(char)(param_3 >> 10))" ( (field_expression "local_24._1_1_" identifier . field_identifier) , (cast_expression "(char)(param_3 >> 10)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(param_3 >> 10)" ( (binary_expression "param_3 >> 10" identifier >> number_literal) ))) ))) | number_literal)) ;) (if_statement "if (param_3 >> 0x11 == 0) {\n      uVar2 = 7;\n      iVar5 = 6;\n      goto LAB_0003b3d0;\n    }" if (parenthesized_expression "(param_3 >> 0x11 == 0)" ( (binary_expression "param_3 >> 0x11 == 0" (binary_expression "param_3 >> 0x11" identifier >> number_literal) == number_literal) )) (compound_statement "{\n      uVar2 = 7;\n      iVar5 = 6;\n      goto LAB_0003b3d0;\n    }" { (expression_statement "uVar2 = 7;" (assignment_expression "uVar2 = 7" identifier = number_literal) ;) (expression_statement "iVar5 = 6;" (assignment_expression "iVar5 = 6" identifier = number_literal) ;) (goto_statement "goto LAB_0003b3d0;" goto statement_identifier ;) })) (expression_statement "abStack_2c[2] = bVar3 & 0x7f;" (assignment_expression "abStack_2c[2] = bVar3 & 0x7f" (subscript_expression "abStack_2c[2]" identifier [ number_literal ]) = (binary_expression "bVar3 & 0x7f" identifier & number_literal)) ;) (expression_statement "iVar4 = 5;" (assignment_expression "iVar4 = 5" identifier = number_literal) ;) (expression_statement "uVar1 = CONCAT11((char)(param_3 >> 0x11),(undefined1)local_24);" (assignment_expression "uVar1 = CONCAT11((char)(param_3 >> 0x11),(undefined1)local_24)" identifier = (call_expression "CONCAT11((char)(param_3 >> 0x11),(undefined1)local_24)" identifier (argument_list "((char)(param_3 >> 0x11),(undefined1)local_24)" ( (cast_expression "(char)(param_3 >> 0x11)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(param_3 >> 0x11)" ( (binary_expression "param_3 >> 0x11" identifier >> number_literal) ))) , (cast_expression "(undefined1)local_24" ( (type_descriptor "undefined1" type_identifier) ) identifier) )))) ;) (expression_statement "local_24 = uVar1 | 0x8000;" (assignment_expression "local_24 = uVar1 | 0x8000" identifier = (binary_expression "uVar1 | 0x8000" identifier | number_literal)) ;) (expression_statement "*param_1 = uVar1 << 8 | local_24 >> 8;" (assignment_expression "*param_1 = uVar1 << 8 | local_24 >> 8" (pointer_expression "*param_1" * identifier) = (binary_expression "uVar1 << 8 | local_24 >> 8" (binary_expression "uVar1 << 8" identifier << number_literal) | (binary_expression "local_24 >> 8" identifier >> number_literal))) ;) (expression_statement "uVar2 = 8;" (assignment_expression "uVar2 = 8" identifier = number_literal) ;) }))) (expression_statement "*(byte *)(param_1 + 1) = abStack_2c[iVar4 + 2];" (assignment_expression "*(byte *)(param_1 + 1) = abStack_2c[iVar4 + 2]" (pointer_expression "*(byte *)(param_1 + 1)" * (cast_expression "(byte *)(param_1 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 1)" ( (binary_expression "param_1 + 1" identifier + number_literal) )))) = (subscript_expression "abStack_2c[iVar4 + 2]" identifier [ (binary_expression "iVar4 + 2" identifier + number_literal) ])) ;) (if_statement "if ((((iVar4 != 0) && (*(byte *)((int)param_1 + 3) = abStack_2c[iVar4 + 1], iVar4 != 1)) &&\n      (*(byte *)(param_1 + 2) = abStack_2c[iVar4], iVar4 != 2)) &&\n     ((*(byte *)((int)param_1 + 5) = abStack_2c[iVar4 + -1], iVar4 != 3 &&\n      (*(byte *)(param_1 + 3) = abStack_2c[iVar4 + -2], iVar4 != 4)))) {\n    *(byte *)((int)param_1 + 7) = abStack_2c[2];\n  }" if (parenthesized_expression "((((iVar4 != 0) && (*(byte *)((int)param_1 + 3) = abStack_2c[iVar4 + 1], iVar4 != 1)) &&\n      (*(byte *)(param_1 + 2) = abStack_2c[iVar4], iVar4 != 2)) &&\n     ((*(byte *)((int)param_1 + 5) = abStack_2c[iVar4 + -1], iVar4 != 3 &&\n      (*(byte *)(param_1 + 3) = abStack_2c[iVar4 + -2], iVar4 != 4))))" ( (binary_expression "(((iVar4 != 0) && (*(byte *)((int)param_1 + 3) = abStack_2c[iVar4 + 1], iVar4 != 1)) &&\n      (*(byte *)(param_1 + 2) = abStack_2c[iVar4], iVar4 != 2)) &&\n     ((*(byte *)((int)param_1 + 5) = abStack_2c[iVar4 + -1], iVar4 != 3 &&\n      (*(byte *)(param_1 + 3) = abStack_2c[iVar4 + -2], iVar4 != 4)))" (parenthesized_expression "(((iVar4 != 0) && (*(byte *)((int)param_1 + 3) = abStack_2c[iVar4 + 1], iVar4 != 1)) &&\n      (*(byte *)(param_1 + 2) = abStack_2c[iVar4], iVar4 != 2))" ( (binary_expression "((iVar4 != 0) && (*(byte *)((int)param_1 + 3) = abStack_2c[iVar4 + 1], iVar4 != 1)) &&\n      (*(byte *)(param_1 + 2) = abStack_2c[iVar4], iVar4 != 2)" (parenthesized_expression "((iVar4 != 0) && (*(byte *)((int)param_1 + 3) = abStack_2c[iVar4 + 1], iVar4 != 1))" ( (binary_expression "(iVar4 != 0) && (*(byte *)((int)param_1 + 3) = abStack_2c[iVar4 + 1], iVar4 != 1)" (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) && (parenthesized_expression "(*(byte *)((int)param_1 + 3) = abStack_2c[iVar4 + 1], iVar4 != 1)" ( (comma_expression "*(byte *)((int)param_1 + 3) = abStack_2c[iVar4 + 1], iVar4 != 1" (assignment_expression "*(byte *)((int)param_1 + 3) = abStack_2c[iVar4 + 1]" (pointer_expression "*(byte *)((int)param_1 + 3)" * (cast_expression "(byte *)((int)param_1 + 3)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 3)" ( (binary_expression "(int)param_1 + 3" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (subscript_expression "abStack_2c[iVar4 + 1]" identifier [ (binary_expression "iVar4 + 1" identifier + number_literal) ])) , (binary_expression "iVar4 != 1" identifier != number_literal)) ))) )) && (parenthesized_expression "(*(byte *)(param_1 + 2) = abStack_2c[iVar4], iVar4 != 2)" ( (comma_expression "*(byte *)(param_1 + 2) = abStack_2c[iVar4], iVar4 != 2" (assignment_expression "*(byte *)(param_1 + 2) = abStack_2c[iVar4]" (pointer_expression "*(byte *)(param_1 + 2)" * (cast_expression "(byte *)(param_1 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) )))) = (subscript_expression "abStack_2c[iVar4]" identifier [ identifier ])) , (binary_expression "iVar4 != 2" identifier != number_literal)) ))) )) && (parenthesized_expression "((*(byte *)((int)param_1 + 5) = abStack_2c[iVar4 + -1], iVar4 != 3 &&\n      (*(byte *)(param_1 + 3) = abStack_2c[iVar4 + -2], iVar4 != 4)))" ( (parenthesized_expression "(*(byte *)((int)param_1 + 5) = abStack_2c[iVar4 + -1], iVar4 != 3 &&\n      (*(byte *)(param_1 + 3) = abStack_2c[iVar4 + -2], iVar4 != 4))" ( (comma_expression "*(byte *)((int)param_1 + 5) = abStack_2c[iVar4 + -1], iVar4 != 3 &&\n      (*(byte *)(param_1 + 3) = abStack_2c[iVar4 + -2], iVar4 != 4)" (assignment_expression "*(byte *)((int)param_1 + 5) = abStack_2c[iVar4 + -1]" (pointer_expression "*(byte *)((int)param_1 + 5)" * (cast_expression "(byte *)((int)param_1 + 5)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 5)" ( (binary_expression "(int)param_1 + 5" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (subscript_expression "abStack_2c[iVar4 + -1]" identifier [ (binary_expression "iVar4 + -1" identifier + number_literal) ])) , (binary_expression "iVar4 != 3 &&\n      (*(byte *)(param_1 + 3) = abStack_2c[iVar4 + -2], iVar4 != 4)" (binary_expression "iVar4 != 3" identifier != number_literal) && (parenthesized_expression "(*(byte *)(param_1 + 3) = abStack_2c[iVar4 + -2], iVar4 != 4)" ( (comma_expression "*(byte *)(param_1 + 3) = abStack_2c[iVar4 + -2], iVar4 != 4" (assignment_expression "*(byte *)(param_1 + 3) = abStack_2c[iVar4 + -2]" (pointer_expression "*(byte *)(param_1 + 3)" * (cast_expression "(byte *)(param_1 + 3)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 3)" ( (binary_expression "param_1 + 3" identifier + number_literal) )))) = (subscript_expression "abStack_2c[iVar4 + -2]" identifier [ (binary_expression "iVar4 + -2" identifier + number_literal) ])) , (binary_expression "iVar4 != 4" identifier != number_literal)) )))) )) ))) )) (compound_statement "{\n    *(byte *)((int)param_1 + 7) = abStack_2c[2];\n  }" { (expression_statement "*(byte *)((int)param_1 + 7) = abStack_2c[2];" (assignment_expression "*(byte *)((int)param_1 + 7) = abStack_2c[2]" (pointer_expression "*(byte *)((int)param_1 + 7)" * (cast_expression "(byte *)((int)param_1 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 7)" ( (binary_expression "(int)param_1 + 7" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (subscript_expression "abStack_2c[2]" identifier [ number_literal ])) ;) })) (labeled_statement "LAB_0003b337:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    uStack_30 = &UNK_0003b454;\n    FUN_00153870();\n  }" statement_identifier : (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    uStack_30 = &UNK_0003b454;\n    FUN_00153870();\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                    /* WARNING: Subroutine does not return */\n    uStack_30 = &UNK_0003b454;\n    FUN_00153870();\n  }" { comment (expression_statement "uStack_30 = &UNK_0003b454;" (assignment_expression "uStack_30 = &UNK_0003b454" identifier = (pointer_expression "&UNK_0003b454" & identifier)) ;) (expression_statement "FUN_00153870();" (call_expression "FUN_00153870()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return uVar2;" return identifier ;) })))
(translation_unit "int __regparm3 putVarint64(uchar *p,u64 v)\n\n{\n  int iVar1;\n  ushort uVar2;\n  int iVar3;\n  uint in_ECX;\n  byte bVar4;\n  uint in_EDX;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  int in_GS_OFFSET;\n  undefined4 uStack_30;\n  uchar auStack_2c [2];\n  u8 buf [10];\n  \n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  bVar4 = (byte)in_EDX;\n  if ((in_ECX & 0xff000000) != 0) {\n    p[8] = bVar4;\n    p[7] = (byte)(in_EDX >> 8) | 0x80;\n    p[6] = (byte)(in_EDX >> 0xf) | 0x80;\n    p[5] = (byte)(in_EDX >> 0x16) | 0x80;\n    p[4] = (byte)(in_EDX >> 0x1d) | (byte)(in_ECX << 3) | 0x80;\n    p[3] = (byte)(in_ECX >> 4) | 0x80;\n    p[2] = (byte)(in_ECX >> 0xb) | 0x80;\n    p[1] = (byte)(in_ECX >> 0x12) | 0x80;\n    *p = (byte)(in_ECX >> 0x19) | 0x80;\n    iVar3 = 9;\n    goto LAB_0003b337;\n  }\n  if (in_ECX >> 7 == 0 && (in_EDX >> 7 == 0 && (in_ECX & 0x7f) == 0)) {\n    buf[0] = bVar4 & 0x7f;\n    *p = buf[0];\n    iVar3 = 1;\n    goto LAB_0003b337;\n  }\n  buf[1] = (byte)(in_EDX >> 7) | 0x80;\n  if (in_ECX >> 0xe == 0 && (in_EDX >> 0xe == 0 && (in_ECX & 0x3fff) == 0)) {\n    iVar3 = 2;\n    iVar6 = 1;\nLAB_0003b3d0:\n    buf[0] = bVar4 & 0x7f;\n    *p = buf[iVar6];\n    iVar5 = iVar6 + -2;\n    p[1] = auStack_2c[iVar6 + 1];\n    if (iVar5 == -1) goto LAB_0003b337;\n  }\n  else {\n    buf[2] = (byte)(in_EDX >> 0xe) | 0x80;\n    if (in_ECX >> 0x15 == 0 && (in_EDX >> 0x15 == 0 && (in_ECX & 0x1fffff) == 0)) {\n      iVar3 = 3;\n      iVar6 = 2;\n      goto LAB_0003b3d0;\n    }\n    uVar7 = in_EDX >> 0x1c | in_ECX << 4;\n    buf[3] = (byte)(in_EDX >> 0x15) | 0x80;\n    if (in_ECX >> 0x1c == 0 && uVar7 == 0) {\n      iVar3 = 4;\n      iVar6 = 3;\n      goto LAB_0003b3d0;\n    }\n    buf[4] = (byte)uVar7 | 0x80;\n    if (in_ECX >> 3 == 0) {\n      iVar3 = 5;\n      iVar6 = 4;\n      goto LAB_0003b3d0;\n    }\n    buf[5] = (byte)(in_ECX >> 3) | 0x80;\n    if (in_ECX >> 10 == 0) {\n      iVar3 = 6;\n      iVar6 = 5;\n      goto LAB_0003b3d0;\n    }\n    buf._6_2_ = CONCAT11(buf[7],(char)(in_ECX >> 10)) | 0x80;\n    if (in_ECX >> 0x11 == 0) {\n      iVar3 = 7;\n      iVar6 = 6;\n      goto LAB_0003b3d0;\n    }\n    buf[0] = bVar4 & 0x7f;\n    iVar5 = 5;\n    uVar2 = CONCAT11((char)(in_ECX >> 0x11),buf[6]);\n    buf._6_2_ = uVar2 | 0x8000;\n    *(ushort *)p = uVar2 << 8 | (ushort)buf._6_2_ >> 8;\n    iVar3 = 8;\n  }\n  p[2] = buf[iVar5];\n  if ((((iVar5 != 0) && (p[3] = auStack_2c[iVar5 + 1], iVar5 != 1)) &&\n      (p[4] = auStack_2c[iVar5], iVar5 != 2)) &&\n     ((p[5] = auStack_2c[iVar5 + -1], iVar5 != 3 && (p[6] = auStack_2c[iVar5 + -2], iVar5 != 4)))) {\n    p[7] = buf[0];\n  }\nLAB_0003b337:\n  if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    uStack_30 = &UNK_0003b454;\n    __stack_chk_fail_local();\n  }\n  return iVar3;\n}\n\n" (function_definition "int __regparm3 putVarint64(uchar *p,u64 v)\n\n{\n  int iVar1;\n  ushort uVar2;\n  int iVar3;\n  uint in_ECX;\n  byte bVar4;\n  uint in_EDX;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  int in_GS_OFFSET;\n  undefined4 uStack_30;\n  uchar auStack_2c [2];\n  u8 buf [10];\n  \n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  bVar4 = (byte)in_EDX;\n  if ((in_ECX & 0xff000000) != 0) {\n    p[8] = bVar4;\n    p[7] = (byte)(in_EDX >> 8) | 0x80;\n    p[6] = (byte)(in_EDX >> 0xf) | 0x80;\n    p[5] = (byte)(in_EDX >> 0x16) | 0x80;\n    p[4] = (byte)(in_EDX >> 0x1d) | (byte)(in_ECX << 3) | 0x80;\n    p[3] = (byte)(in_ECX >> 4) | 0x80;\n    p[2] = (byte)(in_ECX >> 0xb) | 0x80;\n    p[1] = (byte)(in_ECX >> 0x12) | 0x80;\n    *p = (byte)(in_ECX >> 0x19) | 0x80;\n    iVar3 = 9;\n    goto LAB_0003b337;\n  }\n  if (in_ECX >> 7 == 0 && (in_EDX >> 7 == 0 && (in_ECX & 0x7f) == 0)) {\n    buf[0] = bVar4 & 0x7f;\n    *p = buf[0];\n    iVar3 = 1;\n    goto LAB_0003b337;\n  }\n  buf[1] = (byte)(in_EDX >> 7) | 0x80;\n  if (in_ECX >> 0xe == 0 && (in_EDX >> 0xe == 0 && (in_ECX & 0x3fff) == 0)) {\n    iVar3 = 2;\n    iVar6 = 1;\nLAB_0003b3d0:\n    buf[0] = bVar4 & 0x7f;\n    *p = buf[iVar6];\n    iVar5 = iVar6 + -2;\n    p[1] = auStack_2c[iVar6 + 1];\n    if (iVar5 == -1) goto LAB_0003b337;\n  }\n  else {\n    buf[2] = (byte)(in_EDX >> 0xe) | 0x80;\n    if (in_ECX >> 0x15 == 0 && (in_EDX >> 0x15 == 0 && (in_ECX & 0x1fffff) == 0)) {\n      iVar3 = 3;\n      iVar6 = 2;\n      goto LAB_0003b3d0;\n    }\n    uVar7 = in_EDX >> 0x1c | in_ECX << 4;\n    buf[3] = (byte)(in_EDX >> 0x15) | 0x80;\n    if (in_ECX >> 0x1c == 0 && uVar7 == 0) {\n      iVar3 = 4;\n      iVar6 = 3;\n      goto LAB_0003b3d0;\n    }\n    buf[4] = (byte)uVar7 | 0x80;\n    if (in_ECX >> 3 == 0) {\n      iVar3 = 5;\n      iVar6 = 4;\n      goto LAB_0003b3d0;\n    }\n    buf[5] = (byte)(in_ECX >> 3) | 0x80;\n    if (in_ECX >> 10 == 0) {\n      iVar3 = 6;\n      iVar6 = 5;\n      goto LAB_0003b3d0;\n    }\n    buf._6_2_ = CONCAT11(buf[7],(char)(in_ECX >> 10)) | 0x80;\n    if (in_ECX >> 0x11 == 0) {\n      iVar3 = 7;\n      iVar6 = 6;\n      goto LAB_0003b3d0;\n    }\n    buf[0] = bVar4 & 0x7f;\n    iVar5 = 5;\n    uVar2 = CONCAT11((char)(in_ECX >> 0x11),buf[6]);\n    buf._6_2_ = uVar2 | 0x8000;\n    *(ushort *)p = uVar2 << 8 | (ushort)buf._6_2_ >> 8;\n    iVar3 = 8;\n  }\n  p[2] = buf[iVar5];\n  if ((((iVar5 != 0) && (p[3] = auStack_2c[iVar5 + 1], iVar5 != 1)) &&\n      (p[4] = auStack_2c[iVar5], iVar5 != 2)) &&\n     ((p[5] = auStack_2c[iVar5 + -1], iVar5 != 3 && (p[6] = auStack_2c[iVar5 + -2], iVar5 != 4)))) {\n    p[7] = buf[0];\n  }\nLAB_0003b337:\n  if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    uStack_30 = &UNK_0003b454;\n    __stack_chk_fail_local();\n  }\n  return iVar3;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "putVarint64(uchar *p,u64 v)" identifier (parameter_list "(uchar *p,u64 v)" ( (parameter_declaration "uchar *p" type_identifier (pointer_declarator "*p" * identifier)) , (parameter_declaration "u64 v" type_identifier identifier) ))) (compound_statement "{\n  int iVar1;\n  ushort uVar2;\n  int iVar3;\n  uint in_ECX;\n  byte bVar4;\n  uint in_EDX;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  int in_GS_OFFSET;\n  undefined4 uStack_30;\n  uchar auStack_2c [2];\n  u8 buf [10];\n  \n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  bVar4 = (byte)in_EDX;\n  if ((in_ECX & 0xff000000) != 0) {\n    p[8] = bVar4;\n    p[7] = (byte)(in_EDX >> 8) | 0x80;\n    p[6] = (byte)(in_EDX >> 0xf) | 0x80;\n    p[5] = (byte)(in_EDX >> 0x16) | 0x80;\n    p[4] = (byte)(in_EDX >> 0x1d) | (byte)(in_ECX << 3) | 0x80;\n    p[3] = (byte)(in_ECX >> 4) | 0x80;\n    p[2] = (byte)(in_ECX >> 0xb) | 0x80;\n    p[1] = (byte)(in_ECX >> 0x12) | 0x80;\n    *p = (byte)(in_ECX >> 0x19) | 0x80;\n    iVar3 = 9;\n    goto LAB_0003b337;\n  }\n  if (in_ECX >> 7 == 0 && (in_EDX >> 7 == 0 && (in_ECX & 0x7f) == 0)) {\n    buf[0] = bVar4 & 0x7f;\n    *p = buf[0];\n    iVar3 = 1;\n    goto LAB_0003b337;\n  }\n  buf[1] = (byte)(in_EDX >> 7) | 0x80;\n  if (in_ECX >> 0xe == 0 && (in_EDX >> 0xe == 0 && (in_ECX & 0x3fff) == 0)) {\n    iVar3 = 2;\n    iVar6 = 1;\nLAB_0003b3d0:\n    buf[0] = bVar4 & 0x7f;\n    *p = buf[iVar6];\n    iVar5 = iVar6 + -2;\n    p[1] = auStack_2c[iVar6 + 1];\n    if (iVar5 == -1) goto LAB_0003b337;\n  }\n  else {\n    buf[2] = (byte)(in_EDX >> 0xe) | 0x80;\n    if (in_ECX >> 0x15 == 0 && (in_EDX >> 0x15 == 0 && (in_ECX & 0x1fffff) == 0)) {\n      iVar3 = 3;\n      iVar6 = 2;\n      goto LAB_0003b3d0;\n    }\n    uVar7 = in_EDX >> 0x1c | in_ECX << 4;\n    buf[3] = (byte)(in_EDX >> 0x15) | 0x80;\n    if (in_ECX >> 0x1c == 0 && uVar7 == 0) {\n      iVar3 = 4;\n      iVar6 = 3;\n      goto LAB_0003b3d0;\n    }\n    buf[4] = (byte)uVar7 | 0x80;\n    if (in_ECX >> 3 == 0) {\n      iVar3 = 5;\n      iVar6 = 4;\n      goto LAB_0003b3d0;\n    }\n    buf[5] = (byte)(in_ECX >> 3) | 0x80;\n    if (in_ECX >> 10 == 0) {\n      iVar3 = 6;\n      iVar6 = 5;\n      goto LAB_0003b3d0;\n    }\n    buf._6_2_ = CONCAT11(buf[7],(char)(in_ECX >> 10)) | 0x80;\n    if (in_ECX >> 0x11 == 0) {\n      iVar3 = 7;\n      iVar6 = 6;\n      goto LAB_0003b3d0;\n    }\n    buf[0] = bVar4 & 0x7f;\n    iVar5 = 5;\n    uVar2 = CONCAT11((char)(in_ECX >> 0x11),buf[6]);\n    buf._6_2_ = uVar2 | 0x8000;\n    *(ushort *)p = uVar2 << 8 | (ushort)buf._6_2_ >> 8;\n    iVar3 = 8;\n  }\n  p[2] = buf[iVar5];\n  if ((((iVar5 != 0) && (p[3] = auStack_2c[iVar5 + 1], iVar5 != 1)) &&\n      (p[4] = auStack_2c[iVar5], iVar5 != 2)) &&\n     ((p[5] = auStack_2c[iVar5 + -1], iVar5 != 3 && (p[6] = auStack_2c[iVar5 + -2], iVar5 != 4)))) {\n    p[7] = buf[0];\n  }\nLAB_0003b337:\n  if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    uStack_30 = &UNK_0003b454;\n    __stack_chk_fail_local();\n  }\n  return iVar3;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "ushort uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "uint in_ECX;" type_identifier identifier ;) (declaration "byte bVar4;" type_identifier identifier ;) (declaration "uint in_EDX;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "undefined4 uStack_30;" type_identifier identifier ;) (declaration "uchar auStack_2c [2];" type_identifier (array_declarator "auStack_2c [2]" identifier [ number_literal ]) ;) (declaration "u8 buf [10];" type_identifier (array_declarator "buf [10]" identifier [ number_literal ]) ;) (expression_statement "iVar1 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "iVar1 = *(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 "bVar4 = (byte)in_EDX;" (assignment_expression "bVar4 = (byte)in_EDX" identifier = (cast_expression "(byte)in_EDX" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (if_statement "if ((in_ECX & 0xff000000) != 0) {\n    p[8] = bVar4;\n    p[7] = (byte)(in_EDX >> 8) | 0x80;\n    p[6] = (byte)(in_EDX >> 0xf) | 0x80;\n    p[5] = (byte)(in_EDX >> 0x16) | 0x80;\n    p[4] = (byte)(in_EDX >> 0x1d) | (byte)(in_ECX << 3) | 0x80;\n    p[3] = (byte)(in_ECX >> 4) | 0x80;\n    p[2] = (byte)(in_ECX >> 0xb) | 0x80;\n    p[1] = (byte)(in_ECX >> 0x12) | 0x80;\n    *p = (byte)(in_ECX >> 0x19) | 0x80;\n    iVar3 = 9;\n    goto LAB_0003b337;\n  }" if (parenthesized_expression "((in_ECX & 0xff000000) != 0)" ( (binary_expression "(in_ECX & 0xff000000) != 0" (parenthesized_expression "(in_ECX & 0xff000000)" ( (binary_expression "in_ECX & 0xff000000" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    p[8] = bVar4;\n    p[7] = (byte)(in_EDX >> 8) | 0x80;\n    p[6] = (byte)(in_EDX >> 0xf) | 0x80;\n    p[5] = (byte)(in_EDX >> 0x16) | 0x80;\n    p[4] = (byte)(in_EDX >> 0x1d) | (byte)(in_ECX << 3) | 0x80;\n    p[3] = (byte)(in_ECX >> 4) | 0x80;\n    p[2] = (byte)(in_ECX >> 0xb) | 0x80;\n    p[1] = (byte)(in_ECX >> 0x12) | 0x80;\n    *p = (byte)(in_ECX >> 0x19) | 0x80;\n    iVar3 = 9;\n    goto LAB_0003b337;\n  }" { (expression_statement "p[8] = bVar4;" (assignment_expression "p[8] = bVar4" (subscript_expression "p[8]" identifier [ number_literal ]) = identifier) ;) (expression_statement "p[7] = (byte)(in_EDX >> 8) | 0x80;" (assignment_expression "p[7] = (byte)(in_EDX >> 8) | 0x80" (subscript_expression "p[7]" identifier [ number_literal ]) = (binary_expression "(byte)(in_EDX >> 8) | 0x80" (call_expression "(byte)(in_EDX >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(in_EDX >> 8)" ( (binary_expression "in_EDX >> 8" identifier >> number_literal) ))) | number_literal)) ;) (expression_statement "p[6] = (byte)(in_EDX >> 0xf) | 0x80;" (assignment_expression "p[6] = (byte)(in_EDX >> 0xf) | 0x80" (subscript_expression "p[6]" identifier [ number_literal ]) = (binary_expression "(byte)(in_EDX >> 0xf) | 0x80" (call_expression "(byte)(in_EDX >> 0xf)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(in_EDX >> 0xf)" ( (binary_expression "in_EDX >> 0xf" identifier >> number_literal) ))) | number_literal)) ;) (expression_statement "p[5] = (byte)(in_EDX >> 0x16) | 0x80;" (assignment_expression "p[5] = (byte)(in_EDX >> 0x16) | 0x80" (subscript_expression "p[5]" identifier [ number_literal ]) = (binary_expression "(byte)(in_EDX >> 0x16) | 0x80" (call_expression "(byte)(in_EDX >> 0x16)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(in_EDX >> 0x16)" ( (binary_expression "in_EDX >> 0x16" identifier >> number_literal) ))) | number_literal)) ;) (expression_statement "p[4] = (byte)(in_EDX >> 0x1d) | (byte)(in_ECX << 3) | 0x80;" (assignment_expression "p[4] = (byte)(in_EDX >> 0x1d) | (byte)(in_ECX << 3) | 0x80" (subscript_expression "p[4]" identifier [ number_literal ]) = (binary_expression "(byte)(in_EDX >> 0x1d) | (byte)(in_ECX << 3) | 0x80" (binary_expression "(byte)(in_EDX >> 0x1d) | (byte)(in_ECX << 3)" (call_expression "(byte)(in_EDX >> 0x1d)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(in_EDX >> 0x1d)" ( (binary_expression "in_EDX >> 0x1d" identifier >> number_literal) ))) | (call_expression "(byte)(in_ECX << 3)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(in_ECX << 3)" ( (binary_expression "in_ECX << 3" identifier << number_literal) )))) | number_literal)) ;) (expression_statement "p[3] = (byte)(in_ECX >> 4) | 0x80;" (assignment_expression "p[3] = (byte)(in_ECX >> 4) | 0x80" (subscript_expression "p[3]" identifier [ number_literal ]) = (binary_expression "(byte)(in_ECX >> 4) | 0x80" (call_expression "(byte)(in_ECX >> 4)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(in_ECX >> 4)" ( (binary_expression "in_ECX >> 4" identifier >> number_literal) ))) | number_literal)) ;) (expression_statement "p[2] = (byte)(in_ECX >> 0xb) | 0x80;" (assignment_expression "p[2] = (byte)(in_ECX >> 0xb) | 0x80" (subscript_expression "p[2]" identifier [ number_literal ]) = (binary_expression "(byte)(in_ECX >> 0xb) | 0x80" (call_expression "(byte)(in_ECX >> 0xb)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(in_ECX >> 0xb)" ( (binary_expression "in_ECX >> 0xb" identifier >> number_literal) ))) | number_literal)) ;) (expression_statement "p[1] = (byte)(in_ECX >> 0x12) | 0x80;" (assignment_expression "p[1] = (byte)(in_ECX >> 0x12) | 0x80" (subscript_expression "p[1]" identifier [ number_literal ]) = (binary_expression "(byte)(in_ECX >> 0x12) | 0x80" (call_expression "(byte)(in_ECX >> 0x12)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(in_ECX >> 0x12)" ( (binary_expression "in_ECX >> 0x12" identifier >> number_literal) ))) | number_literal)) ;) (expression_statement "*p = (byte)(in_ECX >> 0x19) | 0x80;" (assignment_expression "*p = (byte)(in_ECX >> 0x19) | 0x80" (pointer_expression "*p" * identifier) = (binary_expression "(byte)(in_ECX >> 0x19) | 0x80" (call_expression "(byte)(in_ECX >> 0x19)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(in_ECX >> 0x19)" ( (binary_expression "in_ECX >> 0x19" identifier >> number_literal) ))) | number_literal)) ;) (expression_statement "iVar3 = 9;" (assignment_expression "iVar3 = 9" identifier = number_literal) ;) (goto_statement "goto LAB_0003b337;" goto statement_identifier ;) })) (if_statement "if (in_ECX >> 7 == 0 && (in_EDX >> 7 == 0 && (in_ECX & 0x7f) == 0)) {\n    buf[0] = bVar4 & 0x7f;\n    *p = buf[0];\n    iVar3 = 1;\n    goto LAB_0003b337;\n  }" if (parenthesized_expression "(in_ECX >> 7 == 0 && (in_EDX >> 7 == 0 && (in_ECX & 0x7f) == 0))" ( (binary_expression "in_ECX >> 7 == 0 && (in_EDX >> 7 == 0 && (in_ECX & 0x7f) == 0)" (binary_expression "in_ECX >> 7 == 0" (binary_expression "in_ECX >> 7" identifier >> number_literal) == number_literal) && (parenthesized_expression "(in_EDX >> 7 == 0 && (in_ECX & 0x7f) == 0)" ( (binary_expression "in_EDX >> 7 == 0 && (in_ECX & 0x7f) == 0" (binary_expression "in_EDX >> 7 == 0" (binary_expression "in_EDX >> 7" identifier >> number_literal) == number_literal) && (binary_expression "(in_ECX & 0x7f) == 0" (parenthesized_expression "(in_ECX & 0x7f)" ( (binary_expression "in_ECX & 0x7f" identifier & number_literal) )) == number_literal)) ))) )) (compound_statement "{\n    buf[0] = bVar4 & 0x7f;\n    *p = buf[0];\n    iVar3 = 1;\n    goto LAB_0003b337;\n  }" { (expression_statement "buf[0] = bVar4 & 0x7f;" (assignment_expression "buf[0] = bVar4 & 0x7f" (subscript_expression "buf[0]" identifier [ number_literal ]) = (binary_expression "bVar4 & 0x7f" identifier & number_literal)) ;) (expression_statement "*p = buf[0];" (assignment_expression "*p = buf[0]" (pointer_expression "*p" * identifier) = (subscript_expression "buf[0]" identifier [ number_literal ])) ;) (expression_statement "iVar3 = 1;" (assignment_expression "iVar3 = 1" identifier = number_literal) ;) (goto_statement "goto LAB_0003b337;" goto statement_identifier ;) })) (expression_statement "buf[1] = (byte)(in_EDX >> 7) | 0x80;" (assignment_expression "buf[1] = (byte)(in_EDX >> 7) | 0x80" (subscript_expression "buf[1]" identifier [ number_literal ]) = (binary_expression "(byte)(in_EDX >> 7) | 0x80" (call_expression "(byte)(in_EDX >> 7)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(in_EDX >> 7)" ( (binary_expression "in_EDX >> 7" identifier >> number_literal) ))) | number_literal)) ;) (if_statement "if (in_ECX >> 0xe == 0 && (in_EDX >> 0xe == 0 && (in_ECX & 0x3fff) == 0)) {\n    iVar3 = 2;\n    iVar6 = 1;\nLAB_0003b3d0:\n    buf[0] = bVar4 & 0x7f;\n    *p = buf[iVar6];\n    iVar5 = iVar6 + -2;\n    p[1] = auStack_2c[iVar6 + 1];\n    if (iVar5 == -1) goto LAB_0003b337;\n  }\n  else {\n    buf[2] = (byte)(in_EDX >> 0xe) | 0x80;\n    if (in_ECX >> 0x15 == 0 && (in_EDX >> 0x15 == 0 && (in_ECX & 0x1fffff) == 0)) {\n      iVar3 = 3;\n      iVar6 = 2;\n      goto LAB_0003b3d0;\n    }\n    uVar7 = in_EDX >> 0x1c | in_ECX << 4;\n    buf[3] = (byte)(in_EDX >> 0x15) | 0x80;\n    if (in_ECX >> 0x1c == 0 && uVar7 == 0) {\n      iVar3 = 4;\n      iVar6 = 3;\n      goto LAB_0003b3d0;\n    }\n    buf[4] = (byte)uVar7 | 0x80;\n    if (in_ECX >> 3 == 0) {\n      iVar3 = 5;\n      iVar6 = 4;\n      goto LAB_0003b3d0;\n    }\n    buf[5] = (byte)(in_ECX >> 3) | 0x80;\n    if (in_ECX >> 10 == 0) {\n      iVar3 = 6;\n      iVar6 = 5;\n      goto LAB_0003b3d0;\n    }\n    buf._6_2_ = CONCAT11(buf[7],(char)(in_ECX >> 10)) | 0x80;\n    if (in_ECX >> 0x11 == 0) {\n      iVar3 = 7;\n      iVar6 = 6;\n      goto LAB_0003b3d0;\n    }\n    buf[0] = bVar4 & 0x7f;\n    iVar5 = 5;\n    uVar2 = CONCAT11((char)(in_ECX >> 0x11),buf[6]);\n    buf._6_2_ = uVar2 | 0x8000;\n    *(ushort *)p = uVar2 << 8 | (ushort)buf._6_2_ >> 8;\n    iVar3 = 8;\n  }" if (parenthesized_expression "(in_ECX >> 0xe == 0 && (in_EDX >> 0xe == 0 && (in_ECX & 0x3fff) == 0))" ( (binary_expression "in_ECX >> 0xe == 0 && (in_EDX >> 0xe == 0 && (in_ECX & 0x3fff) == 0)" (binary_expression "in_ECX >> 0xe == 0" (binary_expression "in_ECX >> 0xe" identifier >> number_literal) == number_literal) && (parenthesized_expression "(in_EDX >> 0xe == 0 && (in_ECX & 0x3fff) == 0)" ( (binary_expression "in_EDX >> 0xe == 0 && (in_ECX & 0x3fff) == 0" (binary_expression "in_EDX >> 0xe == 0" (binary_expression "in_EDX >> 0xe" identifier >> number_literal) == number_literal) && (binary_expression "(in_ECX & 0x3fff) == 0" (parenthesized_expression "(in_ECX & 0x3fff)" ( (binary_expression "in_ECX & 0x3fff" identifier & number_literal) )) == number_literal)) ))) )) (compound_statement "{\n    iVar3 = 2;\n    iVar6 = 1;\nLAB_0003b3d0:\n    buf[0] = bVar4 & 0x7f;\n    *p = buf[iVar6];\n    iVar5 = iVar6 + -2;\n    p[1] = auStack_2c[iVar6 + 1];\n    if (iVar5 == -1) goto LAB_0003b337;\n  }" { (expression_statement "iVar3 = 2;" (assignment_expression "iVar3 = 2" identifier = number_literal) ;) (expression_statement "iVar6 = 1;" (assignment_expression "iVar6 = 1" identifier = number_literal) ;) (labeled_statement "LAB_0003b3d0:\n    buf[0] = bVar4 & 0x7f;" statement_identifier : (expression_statement "buf[0] = bVar4 & 0x7f;" (assignment_expression "buf[0] = bVar4 & 0x7f" (subscript_expression "buf[0]" identifier [ number_literal ]) = (binary_expression "bVar4 & 0x7f" identifier & number_literal)) ;)) (expression_statement "*p = buf[iVar6];" (assignment_expression "*p = buf[iVar6]" (pointer_expression "*p" * identifier) = (subscript_expression "buf[iVar6]" identifier [ identifier ])) ;) (expression_statement "iVar5 = iVar6 + -2;" (assignment_expression "iVar5 = iVar6 + -2" identifier = (binary_expression "iVar6 + -2" identifier + number_literal)) ;) (expression_statement "p[1] = auStack_2c[iVar6 + 1];" (assignment_expression "p[1] = auStack_2c[iVar6 + 1]" (subscript_expression "p[1]" identifier [ number_literal ]) = (subscript_expression "auStack_2c[iVar6 + 1]" identifier [ (binary_expression "iVar6 + 1" identifier + number_literal) ])) ;) (if_statement "if (iVar5 == -1) goto LAB_0003b337;" if (parenthesized_expression "(iVar5 == -1)" ( (binary_expression "iVar5 == -1" identifier == number_literal) )) (goto_statement "goto LAB_0003b337;" goto statement_identifier ;)) }) (else_clause "else {\n    buf[2] = (byte)(in_EDX >> 0xe) | 0x80;\n    if (in_ECX >> 0x15 == 0 && (in_EDX >> 0x15 == 0 && (in_ECX & 0x1fffff) == 0)) {\n      iVar3 = 3;\n      iVar6 = 2;\n      goto LAB_0003b3d0;\n    }\n    uVar7 = in_EDX >> 0x1c | in_ECX << 4;\n    buf[3] = (byte)(in_EDX >> 0x15) | 0x80;\n    if (in_ECX >> 0x1c == 0 && uVar7 == 0) {\n      iVar3 = 4;\n      iVar6 = 3;\n      goto LAB_0003b3d0;\n    }\n    buf[4] = (byte)uVar7 | 0x80;\n    if (in_ECX >> 3 == 0) {\n      iVar3 = 5;\n      iVar6 = 4;\n      goto LAB_0003b3d0;\n    }\n    buf[5] = (byte)(in_ECX >> 3) | 0x80;\n    if (in_ECX >> 10 == 0) {\n      iVar3 = 6;\n      iVar6 = 5;\n      goto LAB_0003b3d0;\n    }\n    buf._6_2_ = CONCAT11(buf[7],(char)(in_ECX >> 10)) | 0x80;\n    if (in_ECX >> 0x11 == 0) {\n      iVar3 = 7;\n      iVar6 = 6;\n      goto LAB_0003b3d0;\n    }\n    buf[0] = bVar4 & 0x7f;\n    iVar5 = 5;\n    uVar2 = CONCAT11((char)(in_ECX >> 0x11),buf[6]);\n    buf._6_2_ = uVar2 | 0x8000;\n    *(ushort *)p = uVar2 << 8 | (ushort)buf._6_2_ >> 8;\n    iVar3 = 8;\n  }" else (compound_statement "{\n    buf[2] = (byte)(in_EDX >> 0xe) | 0x80;\n    if (in_ECX >> 0x15 == 0 && (in_EDX >> 0x15 == 0 && (in_ECX & 0x1fffff) == 0)) {\n      iVar3 = 3;\n      iVar6 = 2;\n      goto LAB_0003b3d0;\n    }\n    uVar7 = in_EDX >> 0x1c | in_ECX << 4;\n    buf[3] = (byte)(in_EDX >> 0x15) | 0x80;\n    if (in_ECX >> 0x1c == 0 && uVar7 == 0) {\n      iVar3 = 4;\n      iVar6 = 3;\n      goto LAB_0003b3d0;\n    }\n    buf[4] = (byte)uVar7 | 0x80;\n    if (in_ECX >> 3 == 0) {\n      iVar3 = 5;\n      iVar6 = 4;\n      goto LAB_0003b3d0;\n    }\n    buf[5] = (byte)(in_ECX >> 3) | 0x80;\n    if (in_ECX >> 10 == 0) {\n      iVar3 = 6;\n      iVar6 = 5;\n      goto LAB_0003b3d0;\n    }\n    buf._6_2_ = CONCAT11(buf[7],(char)(in_ECX >> 10)) | 0x80;\n    if (in_ECX >> 0x11 == 0) {\n      iVar3 = 7;\n      iVar6 = 6;\n      goto LAB_0003b3d0;\n    }\n    buf[0] = bVar4 & 0x7f;\n    iVar5 = 5;\n    uVar2 = CONCAT11((char)(in_ECX >> 0x11),buf[6]);\n    buf._6_2_ = uVar2 | 0x8000;\n    *(ushort *)p = uVar2 << 8 | (ushort)buf._6_2_ >> 8;\n    iVar3 = 8;\n  }" { (expression_statement "buf[2] = (byte)(in_EDX >> 0xe) | 0x80;" (assignment_expression "buf[2] = (byte)(in_EDX >> 0xe) | 0x80" (subscript_expression "buf[2]" identifier [ number_literal ]) = (binary_expression "(byte)(in_EDX >> 0xe) | 0x80" (call_expression "(byte)(in_EDX >> 0xe)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(in_EDX >> 0xe)" ( (binary_expression "in_EDX >> 0xe" identifier >> number_literal) ))) | number_literal)) ;) (if_statement "if (in_ECX >> 0x15 == 0 && (in_EDX >> 0x15 == 0 && (in_ECX & 0x1fffff) == 0)) {\n      iVar3 = 3;\n      iVar6 = 2;\n      goto LAB_0003b3d0;\n    }" if (parenthesized_expression "(in_ECX >> 0x15 == 0 && (in_EDX >> 0x15 == 0 && (in_ECX & 0x1fffff) == 0))" ( (binary_expression "in_ECX >> 0x15 == 0 && (in_EDX >> 0x15 == 0 && (in_ECX & 0x1fffff) == 0)" (binary_expression "in_ECX >> 0x15 == 0" (binary_expression "in_ECX >> 0x15" identifier >> number_literal) == number_literal) && (parenthesized_expression "(in_EDX >> 0x15 == 0 && (in_ECX & 0x1fffff) == 0)" ( (binary_expression "in_EDX >> 0x15 == 0 && (in_ECX & 0x1fffff) == 0" (binary_expression "in_EDX >> 0x15 == 0" (binary_expression "in_EDX >> 0x15" identifier >> number_literal) == number_literal) && (binary_expression "(in_ECX & 0x1fffff) == 0" (parenthesized_expression "(in_ECX & 0x1fffff)" ( (binary_expression "in_ECX & 0x1fffff" identifier & number_literal) )) == number_literal)) ))) )) (compound_statement "{\n      iVar3 = 3;\n      iVar6 = 2;\n      goto LAB_0003b3d0;\n    }" { (expression_statement "iVar3 = 3;" (assignment_expression "iVar3 = 3" identifier = number_literal) ;) (expression_statement "iVar6 = 2;" (assignment_expression "iVar6 = 2" identifier = number_literal) ;) (goto_statement "goto LAB_0003b3d0;" goto statement_identifier ;) })) (expression_statement "uVar7 = in_EDX >> 0x1c | in_ECX << 4;" (assignment_expression "uVar7 = in_EDX >> 0x1c | in_ECX << 4" identifier = (binary_expression "in_EDX >> 0x1c | in_ECX << 4" (binary_expression "in_EDX >> 0x1c" identifier >> number_literal) | (binary_expression "in_ECX << 4" identifier << number_literal))) ;) (expression_statement "buf[3] = (byte)(in_EDX >> 0x15) | 0x80;" (assignment_expression "buf[3] = (byte)(in_EDX >> 0x15) | 0x80" (subscript_expression "buf[3]" identifier [ number_literal ]) = (binary_expression "(byte)(in_EDX >> 0x15) | 0x80" (call_expression "(byte)(in_EDX >> 0x15)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(in_EDX >> 0x15)" ( (binary_expression "in_EDX >> 0x15" identifier >> number_literal) ))) | number_literal)) ;) (if_statement "if (in_ECX >> 0x1c == 0 && uVar7 == 0) {\n      iVar3 = 4;\n      iVar6 = 3;\n      goto LAB_0003b3d0;\n    }" if (parenthesized_expression "(in_ECX >> 0x1c == 0 && uVar7 == 0)" ( (binary_expression "in_ECX >> 0x1c == 0 && uVar7 == 0" (binary_expression "in_ECX >> 0x1c == 0" (binary_expression "in_ECX >> 0x1c" identifier >> number_literal) == number_literal) && (binary_expression "uVar7 == 0" identifier == number_literal)) )) (compound_statement "{\n      iVar3 = 4;\n      iVar6 = 3;\n      goto LAB_0003b3d0;\n    }" { (expression_statement "iVar3 = 4;" (assignment_expression "iVar3 = 4" identifier = number_literal) ;) (expression_statement "iVar6 = 3;" (assignment_expression "iVar6 = 3" identifier = number_literal) ;) (goto_statement "goto LAB_0003b3d0;" goto statement_identifier ;) })) (expression_statement "buf[4] = (byte)uVar7 | 0x80;" (assignment_expression "buf[4] = (byte)uVar7 | 0x80" (subscript_expression "buf[4]" identifier [ number_literal ]) = (binary_expression "(byte)uVar7 | 0x80" (cast_expression "(byte)uVar7" ( (type_descriptor "byte" type_identifier) ) identifier) | number_literal)) ;) (if_statement "if (in_ECX >> 3 == 0) {\n      iVar3 = 5;\n      iVar6 = 4;\n      goto LAB_0003b3d0;\n    }" if (parenthesized_expression "(in_ECX >> 3 == 0)" ( (binary_expression "in_ECX >> 3 == 0" (binary_expression "in_ECX >> 3" identifier >> number_literal) == number_literal) )) (compound_statement "{\n      iVar3 = 5;\n      iVar6 = 4;\n      goto LAB_0003b3d0;\n    }" { (expression_statement "iVar3 = 5;" (assignment_expression "iVar3 = 5" identifier = number_literal) ;) (expression_statement "iVar6 = 4;" (assignment_expression "iVar6 = 4" identifier = number_literal) ;) (goto_statement "goto LAB_0003b3d0;" goto statement_identifier ;) })) (expression_statement "buf[5] = (byte)(in_ECX >> 3) | 0x80;" (assignment_expression "buf[5] = (byte)(in_ECX >> 3) | 0x80" (subscript_expression "buf[5]" identifier [ number_literal ]) = (binary_expression "(byte)(in_ECX >> 3) | 0x80" (call_expression "(byte)(in_ECX >> 3)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(in_ECX >> 3)" ( (binary_expression "in_ECX >> 3" identifier >> number_literal) ))) | number_literal)) ;) (if_statement "if (in_ECX >> 10 == 0) {\n      iVar3 = 6;\n      iVar6 = 5;\n      goto LAB_0003b3d0;\n    }" if (parenthesized_expression "(in_ECX >> 10 == 0)" ( (binary_expression "in_ECX >> 10 == 0" (binary_expression "in_ECX >> 10" identifier >> number_literal) == number_literal) )) (compound_statement "{\n      iVar3 = 6;\n      iVar6 = 5;\n      goto LAB_0003b3d0;\n    }" { (expression_statement "iVar3 = 6;" (assignment_expression "iVar3 = 6" identifier = number_literal) ;) (expression_statement "iVar6 = 5;" (assignment_expression "iVar6 = 5" identifier = number_literal) ;) (goto_statement "goto LAB_0003b3d0;" goto statement_identifier ;) })) (expression_statement "buf._6_2_ = CONCAT11(buf[7],(char)(in_ECX >> 10)) | 0x80;" (assignment_expression "buf._6_2_ = CONCAT11(buf[7],(char)(in_ECX >> 10)) | 0x80" (field_expression "buf._6_2_" identifier . field_identifier) = (binary_expression "CONCAT11(buf[7],(char)(in_ECX >> 10)) | 0x80" (call_expression "CONCAT11(buf[7],(char)(in_ECX >> 10))" identifier (argument_list "(buf[7],(char)(in_ECX >> 10))" ( (subscript_expression "buf[7]" identifier [ number_literal ]) , (cast_expression "(char)(in_ECX >> 10)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(in_ECX >> 10)" ( (binary_expression "in_ECX >> 10" identifier >> number_literal) ))) ))) | number_literal)) ;) (if_statement "if (in_ECX >> 0x11 == 0) {\n      iVar3 = 7;\n      iVar6 = 6;\n      goto LAB_0003b3d0;\n    }" if (parenthesized_expression "(in_ECX >> 0x11 == 0)" ( (binary_expression "in_ECX >> 0x11 == 0" (binary_expression "in_ECX >> 0x11" identifier >> number_literal) == number_literal) )) (compound_statement "{\n      iVar3 = 7;\n      iVar6 = 6;\n      goto LAB_0003b3d0;\n    }" { (expression_statement "iVar3 = 7;" (assignment_expression "iVar3 = 7" identifier = number_literal) ;) (expression_statement "iVar6 = 6;" (assignment_expression "iVar6 = 6" identifier = number_literal) ;) (goto_statement "goto LAB_0003b3d0;" goto statement_identifier ;) })) (expression_statement "buf[0] = bVar4 & 0x7f;" (assignment_expression "buf[0] = bVar4 & 0x7f" (subscript_expression "buf[0]" identifier [ number_literal ]) = (binary_expression "bVar4 & 0x7f" identifier & number_literal)) ;) (expression_statement "iVar5 = 5;" (assignment_expression "iVar5 = 5" identifier = number_literal) ;) (expression_statement "uVar2 = CONCAT11((char)(in_ECX >> 0x11),buf[6]);" (assignment_expression "uVar2 = CONCAT11((char)(in_ECX >> 0x11),buf[6])" identifier = (call_expression "CONCAT11((char)(in_ECX >> 0x11),buf[6])" identifier (argument_list "((char)(in_ECX >> 0x11),buf[6])" ( (cast_expression "(char)(in_ECX >> 0x11)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(in_ECX >> 0x11)" ( (binary_expression "in_ECX >> 0x11" identifier >> number_literal) ))) , (subscript_expression "buf[6]" identifier [ number_literal ]) )))) ;) (expression_statement "buf._6_2_ = uVar2 | 0x8000;" (assignment_expression "buf._6_2_ = uVar2 | 0x8000" (field_expression "buf._6_2_" identifier . field_identifier) = (binary_expression "uVar2 | 0x8000" identifier | number_literal)) ;) (expression_statement "*(ushort *)p = uVar2 << 8 | (ushort)buf._6_2_ >> 8;" (assignment_expression "*(ushort *)p = uVar2 << 8 | (ushort)buf._6_2_ >> 8" (pointer_expression "*(ushort *)p" * (cast_expression "(ushort *)p" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (binary_expression "uVar2 << 8 | (ushort)buf._6_2_ >> 8" (binary_expression "uVar2 << 8" identifier << number_literal) | (binary_expression "(ushort)buf._6_2_ >> 8" (cast_expression "(ushort)buf._6_2_" ( (type_descriptor "ushort" type_identifier) ) (field_expression "buf._6_2_" identifier . field_identifier)) >> number_literal))) ;) (expression_statement "iVar3 = 8;" (assignment_expression "iVar3 = 8" identifier = number_literal) ;) }))) (expression_statement "p[2] = buf[iVar5];" (assignment_expression "p[2] = buf[iVar5]" (subscript_expression "p[2]" identifier [ number_literal ]) = (subscript_expression "buf[iVar5]" identifier [ identifier ])) ;) (if_statement "if ((((iVar5 != 0) && (p[3] = auStack_2c[iVar5 + 1], iVar5 != 1)) &&\n      (p[4] = auStack_2c[iVar5], iVar5 != 2)) &&\n     ((p[5] = auStack_2c[iVar5 + -1], iVar5 != 3 && (p[6] = auStack_2c[iVar5 + -2], iVar5 != 4)))) {\n    p[7] = buf[0];\n  }" if (parenthesized_expression "((((iVar5 != 0) && (p[3] = auStack_2c[iVar5 + 1], iVar5 != 1)) &&\n      (p[4] = auStack_2c[iVar5], iVar5 != 2)) &&\n     ((p[5] = auStack_2c[iVar5 + -1], iVar5 != 3 && (p[6] = auStack_2c[iVar5 + -2], iVar5 != 4))))" ( (binary_expression "(((iVar5 != 0) && (p[3] = auStack_2c[iVar5 + 1], iVar5 != 1)) &&\n      (p[4] = auStack_2c[iVar5], iVar5 != 2)) &&\n     ((p[5] = auStack_2c[iVar5 + -1], iVar5 != 3 && (p[6] = auStack_2c[iVar5 + -2], iVar5 != 4)))" (parenthesized_expression "(((iVar5 != 0) && (p[3] = auStack_2c[iVar5 + 1], iVar5 != 1)) &&\n      (p[4] = auStack_2c[iVar5], iVar5 != 2))" ( (binary_expression "((iVar5 != 0) && (p[3] = auStack_2c[iVar5 + 1], iVar5 != 1)) &&\n      (p[4] = auStack_2c[iVar5], iVar5 != 2)" (parenthesized_expression "((iVar5 != 0) && (p[3] = auStack_2c[iVar5 + 1], iVar5 != 1))" ( (binary_expression "(iVar5 != 0) && (p[3] = auStack_2c[iVar5 + 1], iVar5 != 1)" (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) && (parenthesized_expression "(p[3] = auStack_2c[iVar5 + 1], iVar5 != 1)" ( (comma_expression "p[3] = auStack_2c[iVar5 + 1], iVar5 != 1" (assignment_expression "p[3] = auStack_2c[iVar5 + 1]" (subscript_expression "p[3]" identifier [ number_literal ]) = (subscript_expression "auStack_2c[iVar5 + 1]" identifier [ (binary_expression "iVar5 + 1" identifier + number_literal) ])) , (binary_expression "iVar5 != 1" identifier != number_literal)) ))) )) && (parenthesized_expression "(p[4] = auStack_2c[iVar5], iVar5 != 2)" ( (comma_expression "p[4] = auStack_2c[iVar5], iVar5 != 2" (assignment_expression "p[4] = auStack_2c[iVar5]" (subscript_expression "p[4]" identifier [ number_literal ]) = (subscript_expression "auStack_2c[iVar5]" identifier [ identifier ])) , (binary_expression "iVar5 != 2" identifier != number_literal)) ))) )) && (parenthesized_expression "((p[5] = auStack_2c[iVar5 + -1], iVar5 != 3 && (p[6] = auStack_2c[iVar5 + -2], iVar5 != 4)))" ( (parenthesized_expression "(p[5] = auStack_2c[iVar5 + -1], iVar5 != 3 && (p[6] = auStack_2c[iVar5 + -2], iVar5 != 4))" ( (comma_expression "p[5] = auStack_2c[iVar5 + -1], iVar5 != 3 && (p[6] = auStack_2c[iVar5 + -2], iVar5 != 4)" (assignment_expression "p[5] = auStack_2c[iVar5 + -1]" (subscript_expression "p[5]" identifier [ number_literal ]) = (subscript_expression "auStack_2c[iVar5 + -1]" identifier [ (binary_expression "iVar5 + -1" identifier + number_literal) ])) , (binary_expression "iVar5 != 3 && (p[6] = auStack_2c[iVar5 + -2], iVar5 != 4)" (binary_expression "iVar5 != 3" identifier != number_literal) && (parenthesized_expression "(p[6] = auStack_2c[iVar5 + -2], iVar5 != 4)" ( (comma_expression "p[6] = auStack_2c[iVar5 + -2], iVar5 != 4" (assignment_expression "p[6] = auStack_2c[iVar5 + -2]" (subscript_expression "p[6]" identifier [ number_literal ]) = (subscript_expression "auStack_2c[iVar5 + -2]" identifier [ (binary_expression "iVar5 + -2" identifier + number_literal) ])) , (binary_expression "iVar5 != 4" identifier != number_literal)) )))) )) ))) )) (compound_statement "{\n    p[7] = buf[0];\n  }" { (expression_statement "p[7] = buf[0];" (assignment_expression "p[7] = buf[0]" (subscript_expression "p[7]" identifier [ number_literal ]) = (subscript_expression "buf[0]" identifier [ number_literal ])) ;) })) (labeled_statement "LAB_0003b337:\n  if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    uStack_30 = &UNK_0003b454;\n    __stack_chk_fail_local();\n  }" statement_identifier : (if_statement "if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    uStack_30 = &UNK_0003b454;\n    __stack_chk_fail_local();\n  }" if (parenthesized_expression "(iVar1 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "iVar1 != *(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                    /* WARNING: Subroutine does not return */\n    uStack_30 = &UNK_0003b454;\n    __stack_chk_fail_local();\n  }" { comment (expression_statement "uStack_30 = &UNK_0003b454;" (assignment_expression "uStack_30 = &UNK_0003b454" identifier = (pointer_expression "&UNK_0003b454" & identifier)) ;) (expression_statement "__stack_chk_fail_local();" (call_expression "__stack_chk_fail_local()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return iVar3;" return identifier ;) })))
(translation_unit "undefined4 __regparm3 FUN_0003b1f0(ushort *param_1,uint param_2,uint param_3)\n\n{\n  ushort uVar1;\n  undefined4 uVar2;\n  byte bVar3;\n  int iVar4;\n  int iVar5;\n  uint uVar6;\n  int in_GS_OFFSET;\n  undefined4 uStack_30;\n  byte abStack_2c [8];\n  undefined2 local_24;\n  int local_20;\n  \n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  bVar3 = (byte)param_2;\n  if ((param_3 & 0xff000000) != 0) {\n    *(byte *)(param_1 + 4) = bVar3;\n    *(byte *)((int)param_1 + 7) = (byte)(param_2 >> 8) | 0x80;\n    *(byte *)(param_1 + 3) = (byte)(param_2 >> 0xf) | 0x80;\n    *(byte *)((int)param_1 + 5) = (byte)(param_2 >> 0x16) | 0x80;\n    *(byte *)(param_1 + 2) = (byte)(param_2 >> 0x1d) | (byte)(param_3 << 3) | 0x80;\n    *(byte *)((int)param_1 + 3) = (byte)(param_3 >> 4) | 0x80;\n    *(byte *)(param_1 + 1) = (byte)(param_3 >> 0xb) | 0x80;\n    *(byte *)((int)param_1 + 1) = (byte)(param_3 >> 0x12) | 0x80;\n    *(byte *)param_1 = (byte)(param_3 >> 0x19) | 0x80;\n    uVar2 = 9;\n    goto LAB_0003b337;\n  }\n  if (param_3 >> 7 == 0 && (param_2 >> 7 == 0 && (param_3 & 0x7f) == 0)) {\n    abStack_2c[2] = bVar3 & 0x7f;\n    *(byte *)param_1 = abStack_2c[2];\n    uVar2 = 1;\n    goto LAB_0003b337;\n  }\n  abStack_2c[3] = (byte)(param_2 >> 7) | 0x80;\n  if (param_3 >> 0xe == 0 && (param_2 >> 0xe == 0 && (param_3 & 0x3fff) == 0)) {\n    uVar2 = 2;\n    iVar5 = 1;\nLAB_0003b3d0:\n    abStack_2c[2] = bVar3 & 0x7f;\n    *(byte *)param_1 = abStack_2c[iVar5 + 2];\n    iVar4 = iVar5 + -2;\n    *(byte *)((int)param_1 + 1) = abStack_2c[iVar5 + 1];\n    if (iVar4 == -1) goto LAB_0003b337;\n  }\n  else {\n    abStack_2c[4] = (byte)(param_2 >> 0xe) | 0x80;\n    if (param_3 >> 0x15 == 0 && (param_2 >> 0x15 == 0 && (param_3 & 0x1fffff) == 0)) {\n      uVar2 = 3;\n      iVar5 = 2;\n      goto LAB_0003b3d0;\n    }\n    uVar6 = param_2 >> 0x1c | param_3 << 4;\n    abStack_2c[5] = (byte)(param_2 >> 0x15) | 0x80;\n    if (param_3 >> 0x1c == 0 && uVar6 == 0) {\n      uVar2 = 4;\n      iVar5 = 3;\n      goto LAB_0003b3d0;\n    }\n    abStack_2c[6] = (byte)uVar6 | 0x80;\n    if (param_3 >> 3 == 0) {\n      uVar2 = 5;\n      iVar5 = 4;\n      goto LAB_0003b3d0;\n    }\n    abStack_2c[7] = (byte)(param_3 >> 3) | 0x80;\n    if (param_3 >> 10 == 0) {\n      uVar2 = 6;\n      iVar5 = 5;\n      goto LAB_0003b3d0;\n    }\n    local_24 = CONCAT11(local_24._1_1_,(char)(param_3 >> 10)) | 0x80;\n    if (param_3 >> 0x11 == 0) {\n      uVar2 = 7;\n      iVar5 = 6;\n      goto LAB_0003b3d0;\n    }\n    abStack_2c[2] = bVar3 & 0x7f;\n    iVar4 = 5;\n    uVar1 = CONCAT11((char)(param_3 >> 0x11),(undefined1)local_24);\n    local_24 = uVar1 | 0x8000;\n    *param_1 = uVar1 << 8 | local_24 >> 8;\n    uVar2 = 8;\n  }\n  *(byte *)(param_1 + 1) = abStack_2c[iVar4 + 2];\n  if ((((iVar4 != 0) && (*(byte *)((int)param_1 + 3) = abStack_2c[iVar4 + 1], iVar4 != 1)) &&\n      (*(byte *)(param_1 + 2) = abStack_2c[iVar4], iVar4 != 2)) &&\n     ((*(byte *)((int)param_1 + 5) = abStack_2c[iVar4 + -1], iVar4 != 3 &&\n      (*(byte *)(param_1 + 3) = abStack_2c[iVar4 + -2], iVar4 != 4)))) {\n    *(byte *)((int)param_1 + 7) = abStack_2c[2];\n  }\nLAB_0003b337:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    uStack_30 = &UNK_0003b454;\n    FUN_00153870();\n  }\n  return uVar2;\n}\n\n" (function_definition "undefined4 __regparm3 FUN_0003b1f0(ushort *param_1,uint param_2,uint param_3)\n\n{\n  ushort uVar1;\n  undefined4 uVar2;\n  byte bVar3;\n  int iVar4;\n  int iVar5;\n  uint uVar6;\n  int in_GS_OFFSET;\n  undefined4 uStack_30;\n  byte abStack_2c [8];\n  undefined2 local_24;\n  int local_20;\n  \n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  bVar3 = (byte)param_2;\n  if ((param_3 & 0xff000000) != 0) {\n    *(byte *)(param_1 + 4) = bVar3;\n    *(byte *)((int)param_1 + 7) = (byte)(param_2 >> 8) | 0x80;\n    *(byte *)(param_1 + 3) = (byte)(param_2 >> 0xf) | 0x80;\n    *(byte *)((int)param_1 + 5) = (byte)(param_2 >> 0x16) | 0x80;\n    *(byte *)(param_1 + 2) = (byte)(param_2 >> 0x1d) | (byte)(param_3 << 3) | 0x80;\n    *(byte *)((int)param_1 + 3) = (byte)(param_3 >> 4) | 0x80;\n    *(byte *)(param_1 + 1) = (byte)(param_3 >> 0xb) | 0x80;\n    *(byte *)((int)param_1 + 1) = (byte)(param_3 >> 0x12) | 0x80;\n    *(byte *)param_1 = (byte)(param_3 >> 0x19) | 0x80;\n    uVar2 = 9;\n    goto LAB_0003b337;\n  }\n  if (param_3 >> 7 == 0 && (param_2 >> 7 == 0 && (param_3 & 0x7f) == 0)) {\n    abStack_2c[2] = bVar3 & 0x7f;\n    *(byte *)param_1 = abStack_2c[2];\n    uVar2 = 1;\n    goto LAB_0003b337;\n  }\n  abStack_2c[3] = (byte)(param_2 >> 7) | 0x80;\n  if (param_3 >> 0xe == 0 && (param_2 >> 0xe == 0 && (param_3 & 0x3fff) == 0)) {\n    uVar2 = 2;\n    iVar5 = 1;\nLAB_0003b3d0:\n    abStack_2c[2] = bVar3 & 0x7f;\n    *(byte *)param_1 = abStack_2c[iVar5 + 2];\n    iVar4 = iVar5 + -2;\n    *(byte *)((int)param_1 + 1) = abStack_2c[iVar5 + 1];\n    if (iVar4 == -1) goto LAB_0003b337;\n  }\n  else {\n    abStack_2c[4] = (byte)(param_2 >> 0xe) | 0x80;\n    if (param_3 >> 0x15 == 0 && (param_2 >> 0x15 == 0 && (param_3 & 0x1fffff) == 0)) {\n      uVar2 = 3;\n      iVar5 = 2;\n      goto LAB_0003b3d0;\n    }\n    uVar6 = param_2 >> 0x1c | param_3 << 4;\n    abStack_2c[5] = (byte)(param_2 >> 0x15) | 0x80;\n    if (param_3 >> 0x1c == 0 && uVar6 == 0) {\n      uVar2 = 4;\n      iVar5 = 3;\n      goto LAB_0003b3d0;\n    }\n    abStack_2c[6] = (byte)uVar6 | 0x80;\n    if (param_3 >> 3 == 0) {\n      uVar2 = 5;\n      iVar5 = 4;\n      goto LAB_0003b3d0;\n    }\n    abStack_2c[7] = (byte)(param_3 >> 3) | 0x80;\n    if (param_3 >> 10 == 0) {\n      uVar2 = 6;\n      iVar5 = 5;\n      goto LAB_0003b3d0;\n    }\n    local_24 = CONCAT11(local_24._1_1_,(char)(param_3 >> 10)) | 0x80;\n    if (param_3 >> 0x11 == 0) {\n      uVar2 = 7;\n      iVar5 = 6;\n      goto LAB_0003b3d0;\n    }\n    abStack_2c[2] = bVar3 & 0x7f;\n    iVar4 = 5;\n    uVar1 = CONCAT11((char)(param_3 >> 0x11),(undefined1)local_24);\n    local_24 = uVar1 | 0x8000;\n    *param_1 = uVar1 << 8 | local_24 >> 8;\n    uVar2 = 8;\n  }\n  *(byte *)(param_1 + 1) = abStack_2c[iVar4 + 2];\n  if ((((iVar4 != 0) && (*(byte *)((int)param_1 + 3) = abStack_2c[iVar4 + 1], iVar4 != 1)) &&\n      (*(byte *)(param_1 + 2) = abStack_2c[iVar4], iVar4 != 2)) &&\n     ((*(byte *)((int)param_1 + 5) = abStack_2c[iVar4 + -1], iVar4 != 3 &&\n      (*(byte *)(param_1 + 3) = abStack_2c[iVar4 + -2], iVar4 != 4)))) {\n    *(byte *)((int)param_1 + 7) = abStack_2c[2];\n  }\nLAB_0003b337:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    uStack_30 = &UNK_0003b454;\n    FUN_00153870();\n  }\n  return uVar2;\n}" type_identifier (ERROR "__regparm3" identifier) (function_declarator "FUN_0003b1f0(ushort *param_1,uint param_2,uint param_3)" identifier (parameter_list "(ushort *param_1,uint param_2,uint param_3)" ( (parameter_declaration "ushort *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "uint param_2" type_identifier identifier) , (parameter_declaration "uint param_3" type_identifier identifier) ))) (compound_statement "{\n  ushort uVar1;\n  undefined4 uVar2;\n  byte bVar3;\n  int iVar4;\n  int iVar5;\n  uint uVar6;\n  int in_GS_OFFSET;\n  undefined4 uStack_30;\n  byte abStack_2c [8];\n  undefined2 local_24;\n  int local_20;\n  \n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  bVar3 = (byte)param_2;\n  if ((param_3 & 0xff000000) != 0) {\n    *(byte *)(param_1 + 4) = bVar3;\n    *(byte *)((int)param_1 + 7) = (byte)(param_2 >> 8) | 0x80;\n    *(byte *)(param_1 + 3) = (byte)(param_2 >> 0xf) | 0x80;\n    *(byte *)((int)param_1 + 5) = (byte)(param_2 >> 0x16) | 0x80;\n    *(byte *)(param_1 + 2) = (byte)(param_2 >> 0x1d) | (byte)(param_3 << 3) | 0x80;\n    *(byte *)((int)param_1 + 3) = (byte)(param_3 >> 4) | 0x80;\n    *(byte *)(param_1 + 1) = (byte)(param_3 >> 0xb) | 0x80;\n    *(byte *)((int)param_1 + 1) = (byte)(param_3 >> 0x12) | 0x80;\n    *(byte *)param_1 = (byte)(param_3 >> 0x19) | 0x80;\n    uVar2 = 9;\n    goto LAB_0003b337;\n  }\n  if (param_3 >> 7 == 0 && (param_2 >> 7 == 0 && (param_3 & 0x7f) == 0)) {\n    abStack_2c[2] = bVar3 & 0x7f;\n    *(byte *)param_1 = abStack_2c[2];\n    uVar2 = 1;\n    goto LAB_0003b337;\n  }\n  abStack_2c[3] = (byte)(param_2 >> 7) | 0x80;\n  if (param_3 >> 0xe == 0 && (param_2 >> 0xe == 0 && (param_3 & 0x3fff) == 0)) {\n    uVar2 = 2;\n    iVar5 = 1;\nLAB_0003b3d0:\n    abStack_2c[2] = bVar3 & 0x7f;\n    *(byte *)param_1 = abStack_2c[iVar5 + 2];\n    iVar4 = iVar5 + -2;\n    *(byte *)((int)param_1 + 1) = abStack_2c[iVar5 + 1];\n    if (iVar4 == -1) goto LAB_0003b337;\n  }\n  else {\n    abStack_2c[4] = (byte)(param_2 >> 0xe) | 0x80;\n    if (param_3 >> 0x15 == 0 && (param_2 >> 0x15 == 0 && (param_3 & 0x1fffff) == 0)) {\n      uVar2 = 3;\n      iVar5 = 2;\n      goto LAB_0003b3d0;\n    }\n    uVar6 = param_2 >> 0x1c | param_3 << 4;\n    abStack_2c[5] = (byte)(param_2 >> 0x15) | 0x80;\n    if (param_3 >> 0x1c == 0 && uVar6 == 0) {\n      uVar2 = 4;\n      iVar5 = 3;\n      goto LAB_0003b3d0;\n    }\n    abStack_2c[6] = (byte)uVar6 | 0x80;\n    if (param_3 >> 3 == 0) {\n      uVar2 = 5;\n      iVar5 = 4;\n      goto LAB_0003b3d0;\n    }\n    abStack_2c[7] = (byte)(param_3 >> 3) | 0x80;\n    if (param_3 >> 10 == 0) {\n      uVar2 = 6;\n      iVar5 = 5;\n      goto LAB_0003b3d0;\n    }\n    local_24 = CONCAT11(local_24._1_1_,(char)(param_3 >> 10)) | 0x80;\n    if (param_3 >> 0x11 == 0) {\n      uVar2 = 7;\n      iVar5 = 6;\n      goto LAB_0003b3d0;\n    }\n    abStack_2c[2] = bVar3 & 0x7f;\n    iVar4 = 5;\n    uVar1 = CONCAT11((char)(param_3 >> 0x11),(undefined1)local_24);\n    local_24 = uVar1 | 0x8000;\n    *param_1 = uVar1 << 8 | local_24 >> 8;\n    uVar2 = 8;\n  }\n  *(byte *)(param_1 + 1) = abStack_2c[iVar4 + 2];\n  if ((((iVar4 != 0) && (*(byte *)((int)param_1 + 3) = abStack_2c[iVar4 + 1], iVar4 != 1)) &&\n      (*(byte *)(param_1 + 2) = abStack_2c[iVar4], iVar4 != 2)) &&\n     ((*(byte *)((int)param_1 + 5) = abStack_2c[iVar4 + -1], iVar4 != 3 &&\n      (*(byte *)(param_1 + 3) = abStack_2c[iVar4 + -2], iVar4 != 4)))) {\n    *(byte *)((int)param_1 + 7) = abStack_2c[2];\n  }\nLAB_0003b337:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    uStack_30 = &UNK_0003b454;\n    FUN_00153870();\n  }\n  return uVar2;\n}" { (declaration "ushort uVar1;" type_identifier identifier ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "byte bVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "undefined4 uStack_30;" type_identifier identifier ;) (declaration "byte abStack_2c [8];" type_identifier (array_declarator "abStack_2c [8]" identifier [ number_literal ]) ;) (declaration "undefined2 local_24;" type_identifier identifier ;) (declaration "int local_20;" primitive_type 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 "bVar3 = (byte)param_2;" (assignment_expression "bVar3 = (byte)param_2" identifier = (cast_expression "(byte)param_2" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (if_statement "if ((param_3 & 0xff000000) != 0) {\n    *(byte *)(param_1 + 4) = bVar3;\n    *(byte *)((int)param_1 + 7) = (byte)(param_2 >> 8) | 0x80;\n    *(byte *)(param_1 + 3) = (byte)(param_2 >> 0xf) | 0x80;\n    *(byte *)((int)param_1 + 5) = (byte)(param_2 >> 0x16) | 0x80;\n    *(byte *)(param_1 + 2) = (byte)(param_2 >> 0x1d) | (byte)(param_3 << 3) | 0x80;\n    *(byte *)((int)param_1 + 3) = (byte)(param_3 >> 4) | 0x80;\n    *(byte *)(param_1 + 1) = (byte)(param_3 >> 0xb) | 0x80;\n    *(byte *)((int)param_1 + 1) = (byte)(param_3 >> 0x12) | 0x80;\n    *(byte *)param_1 = (byte)(param_3 >> 0x19) | 0x80;\n    uVar2 = 9;\n    goto LAB_0003b337;\n  }" if (parenthesized_expression "((param_3 & 0xff000000) != 0)" ( (binary_expression "(param_3 & 0xff000000) != 0" (parenthesized_expression "(param_3 & 0xff000000)" ( (binary_expression "param_3 & 0xff000000" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    *(byte *)(param_1 + 4) = bVar3;\n    *(byte *)((int)param_1 + 7) = (byte)(param_2 >> 8) | 0x80;\n    *(byte *)(param_1 + 3) = (byte)(param_2 >> 0xf) | 0x80;\n    *(byte *)((int)param_1 + 5) = (byte)(param_2 >> 0x16) | 0x80;\n    *(byte *)(param_1 + 2) = (byte)(param_2 >> 0x1d) | (byte)(param_3 << 3) | 0x80;\n    *(byte *)((int)param_1 + 3) = (byte)(param_3 >> 4) | 0x80;\n    *(byte *)(param_1 + 1) = (byte)(param_3 >> 0xb) | 0x80;\n    *(byte *)((int)param_1 + 1) = (byte)(param_3 >> 0x12) | 0x80;\n    *(byte *)param_1 = (byte)(param_3 >> 0x19) | 0x80;\n    uVar2 = 9;\n    goto LAB_0003b337;\n  }" { (expression_statement "*(byte *)(param_1 + 4) = bVar3;" (assignment_expression "*(byte *)(param_1 + 4) = bVar3" (pointer_expression "*(byte *)(param_1 + 4)" * (cast_expression "(byte *)(param_1 + 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte *)((int)param_1 + 7) = (byte)(param_2 >> 8) | 0x80;" (assignment_expression "*(byte *)((int)param_1 + 7) = (byte)(param_2 >> 8) | 0x80" (pointer_expression "*(byte *)((int)param_1 + 7)" * (cast_expression "(byte *)((int)param_1 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 7)" ( (binary_expression "(int)param_1 + 7" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "(byte)(param_2 >> 8) | 0x80" (call_expression "(byte)(param_2 >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(param_2 >> 8)" ( (binary_expression "param_2 >> 8" identifier >> number_literal) ))) | number_literal)) ;) (expression_statement "*(byte *)(param_1 + 3) = (byte)(param_2 >> 0xf) | 0x80;" (assignment_expression "*(byte *)(param_1 + 3) = (byte)(param_2 >> 0xf) | 0x80" (pointer_expression "*(byte *)(param_1 + 3)" * (cast_expression "(byte *)(param_1 + 3)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 3)" ( (binary_expression "param_1 + 3" identifier + number_literal) )))) = (binary_expression "(byte)(param_2 >> 0xf) | 0x80" (call_expression "(byte)(param_2 >> 0xf)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(param_2 >> 0xf)" ( (binary_expression "param_2 >> 0xf" identifier >> number_literal) ))) | number_literal)) ;) (expression_statement "*(byte *)((int)param_1 + 5) = (byte)(param_2 >> 0x16) | 0x80;" (assignment_expression "*(byte *)((int)param_1 + 5) = (byte)(param_2 >> 0x16) | 0x80" (pointer_expression "*(byte *)((int)param_1 + 5)" * (cast_expression "(byte *)((int)param_1 + 5)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 5)" ( (binary_expression "(int)param_1 + 5" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "(byte)(param_2 >> 0x16) | 0x80" (call_expression "(byte)(param_2 >> 0x16)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(param_2 >> 0x16)" ( (binary_expression "param_2 >> 0x16" identifier >> number_literal) ))) | number_literal)) ;) (expression_statement "*(byte *)(param_1 + 2) = (byte)(param_2 >> 0x1d) | (byte)(param_3 << 3) | 0x80;" (assignment_expression "*(byte *)(param_1 + 2) = (byte)(param_2 >> 0x1d) | (byte)(param_3 << 3) | 0x80" (pointer_expression "*(byte *)(param_1 + 2)" * (cast_expression "(byte *)(param_1 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) )))) = (binary_expression "(byte)(param_2 >> 0x1d) | (byte)(param_3 << 3) | 0x80" (binary_expression "(byte)(param_2 >> 0x1d) | (byte)(param_3 << 3)" (call_expression "(byte)(param_2 >> 0x1d)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(param_2 >> 0x1d)" ( (binary_expression "param_2 >> 0x1d" identifier >> number_literal) ))) | (call_expression "(byte)(param_3 << 3)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(param_3 << 3)" ( (binary_expression "param_3 << 3" identifier << number_literal) )))) | number_literal)) ;) (expression_statement "*(byte *)((int)param_1 + 3) = (byte)(param_3 >> 4) | 0x80;" (assignment_expression "*(byte *)((int)param_1 + 3) = (byte)(param_3 >> 4) | 0x80" (pointer_expression "*(byte *)((int)param_1 + 3)" * (cast_expression "(byte *)((int)param_1 + 3)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 3)" ( (binary_expression "(int)param_1 + 3" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "(byte)(param_3 >> 4) | 0x80" (call_expression "(byte)(param_3 >> 4)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(param_3 >> 4)" ( (binary_expression "param_3 >> 4" identifier >> number_literal) ))) | number_literal)) ;) (expression_statement "*(byte *)(param_1 + 1) = (byte)(param_3 >> 0xb) | 0x80;" (assignment_expression "*(byte *)(param_1 + 1) = (byte)(param_3 >> 0xb) | 0x80" (pointer_expression "*(byte *)(param_1 + 1)" * (cast_expression "(byte *)(param_1 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 1)" ( (binary_expression "param_1 + 1" identifier + number_literal) )))) = (binary_expression "(byte)(param_3 >> 0xb) | 0x80" (call_expression "(byte)(param_3 >> 0xb)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(param_3 >> 0xb)" ( (binary_expression "param_3 >> 0xb" identifier >> number_literal) ))) | number_literal)) ;) (expression_statement "*(byte *)((int)param_1 + 1) = (byte)(param_3 >> 0x12) | 0x80;" (assignment_expression "*(byte *)((int)param_1 + 1) = (byte)(param_3 >> 0x12) | 0x80" (pointer_expression "*(byte *)((int)param_1 + 1)" * (cast_expression "(byte *)((int)param_1 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 1)" ( (binary_expression "(int)param_1 + 1" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "(byte)(param_3 >> 0x12) | 0x80" (call_expression "(byte)(param_3 >> 0x12)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(param_3 >> 0x12)" ( (binary_expression "param_3 >> 0x12" identifier >> number_literal) ))) | number_literal)) ;) (expression_statement "*(byte *)param_1 = (byte)(param_3 >> 0x19) | 0x80;" (assignment_expression "*(byte *)param_1 = (byte)(param_3 >> 0x19) | 0x80" (pointer_expression "*(byte *)param_1" * (cast_expression "(byte *)param_1" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (binary_expression "(byte)(param_3 >> 0x19) | 0x80" (call_expression "(byte)(param_3 >> 0x19)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(param_3 >> 0x19)" ( (binary_expression "param_3 >> 0x19" identifier >> number_literal) ))) | number_literal)) ;) (expression_statement "uVar2 = 9;" (assignment_expression "uVar2 = 9" identifier = number_literal) ;) (goto_statement "goto LAB_0003b337;" goto statement_identifier ;) })) (if_statement "if (param_3 >> 7 == 0 && (param_2 >> 7 == 0 && (param_3 & 0x7f) == 0)) {\n    abStack_2c[2] = bVar3 & 0x7f;\n    *(byte *)param_1 = abStack_2c[2];\n    uVar2 = 1;\n    goto LAB_0003b337;\n  }" if (parenthesized_expression "(param_3 >> 7 == 0 && (param_2 >> 7 == 0 && (param_3 & 0x7f) == 0))" ( (binary_expression "param_3 >> 7 == 0 && (param_2 >> 7 == 0 && (param_3 & 0x7f) == 0)" (binary_expression "param_3 >> 7 == 0" (binary_expression "param_3 >> 7" identifier >> number_literal) == number_literal) && (parenthesized_expression "(param_2 >> 7 == 0 && (param_3 & 0x7f) == 0)" ( (binary_expression "param_2 >> 7 == 0 && (param_3 & 0x7f) == 0" (binary_expression "param_2 >> 7 == 0" (binary_expression "param_2 >> 7" identifier >> number_literal) == number_literal) && (binary_expression "(param_3 & 0x7f) == 0" (parenthesized_expression "(param_3 & 0x7f)" ( (binary_expression "param_3 & 0x7f" identifier & number_literal) )) == number_literal)) ))) )) (compound_statement "{\n    abStack_2c[2] = bVar3 & 0x7f;\n    *(byte *)param_1 = abStack_2c[2];\n    uVar2 = 1;\n    goto LAB_0003b337;\n  }" { (expression_statement "abStack_2c[2] = bVar3 & 0x7f;" (assignment_expression "abStack_2c[2] = bVar3 & 0x7f" (subscript_expression "abStack_2c[2]" identifier [ number_literal ]) = (binary_expression "bVar3 & 0x7f" identifier & number_literal)) ;) (expression_statement "*(byte *)param_1 = abStack_2c[2];" (assignment_expression "*(byte *)param_1 = abStack_2c[2]" (pointer_expression "*(byte *)param_1" * (cast_expression "(byte *)param_1" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (subscript_expression "abStack_2c[2]" identifier [ number_literal ])) ;) (expression_statement "uVar2 = 1;" (assignment_expression "uVar2 = 1" identifier = number_literal) ;) (goto_statement "goto LAB_0003b337;" goto statement_identifier ;) })) (expression_statement "abStack_2c[3] = (byte)(param_2 >> 7) | 0x80;" (assignment_expression "abStack_2c[3] = (byte)(param_2 >> 7) | 0x80" (subscript_expression "abStack_2c[3]" identifier [ number_literal ]) = (binary_expression "(byte)(param_2 >> 7) | 0x80" (call_expression "(byte)(param_2 >> 7)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(param_2 >> 7)" ( (binary_expression "param_2 >> 7" identifier >> number_literal) ))) | number_literal)) ;) (if_statement "if (param_3 >> 0xe == 0 && (param_2 >> 0xe == 0 && (param_3 & 0x3fff) == 0)) {\n    uVar2 = 2;\n    iVar5 = 1;\nLAB_0003b3d0:\n    abStack_2c[2] = bVar3 & 0x7f;\n    *(byte *)param_1 = abStack_2c[iVar5 + 2];\n    iVar4 = iVar5 + -2;\n    *(byte *)((int)param_1 + 1) = abStack_2c[iVar5 + 1];\n    if (iVar4 == -1) goto LAB_0003b337;\n  }\n  else {\n    abStack_2c[4] = (byte)(param_2 >> 0xe) | 0x80;\n    if (param_3 >> 0x15 == 0 && (param_2 >> 0x15 == 0 && (param_3 & 0x1fffff) == 0)) {\n      uVar2 = 3;\n      iVar5 = 2;\n      goto LAB_0003b3d0;\n    }\n    uVar6 = param_2 >> 0x1c | param_3 << 4;\n    abStack_2c[5] = (byte)(param_2 >> 0x15) | 0x80;\n    if (param_3 >> 0x1c == 0 && uVar6 == 0) {\n      uVar2 = 4;\n      iVar5 = 3;\n      goto LAB_0003b3d0;\n    }\n    abStack_2c[6] = (byte)uVar6 | 0x80;\n    if (param_3 >> 3 == 0) {\n      uVar2 = 5;\n      iVar5 = 4;\n      goto LAB_0003b3d0;\n    }\n    abStack_2c[7] = (byte)(param_3 >> 3) | 0x80;\n    if (param_3 >> 10 == 0) {\n      uVar2 = 6;\n      iVar5 = 5;\n      goto LAB_0003b3d0;\n    }\n    local_24 = CONCAT11(local_24._1_1_,(char)(param_3 >> 10)) | 0x80;\n    if (param_3 >> 0x11 == 0) {\n      uVar2 = 7;\n      iVar5 = 6;\n      goto LAB_0003b3d0;\n    }\n    abStack_2c[2] = bVar3 & 0x7f;\n    iVar4 = 5;\n    uVar1 = CONCAT11((char)(param_3 >> 0x11),(undefined1)local_24);\n    local_24 = uVar1 | 0x8000;\n    *param_1 = uVar1 << 8 | local_24 >> 8;\n    uVar2 = 8;\n  }" if (parenthesized_expression "(param_3 >> 0xe == 0 && (param_2 >> 0xe == 0 && (param_3 & 0x3fff) == 0))" ( (binary_expression "param_3 >> 0xe == 0 && (param_2 >> 0xe == 0 && (param_3 & 0x3fff) == 0)" (binary_expression "param_3 >> 0xe == 0" (binary_expression "param_3 >> 0xe" identifier >> number_literal) == number_literal) && (parenthesized_expression "(param_2 >> 0xe == 0 && (param_3 & 0x3fff) == 0)" ( (binary_expression "param_2 >> 0xe == 0 && (param_3 & 0x3fff) == 0" (binary_expression "param_2 >> 0xe == 0" (binary_expression "param_2 >> 0xe" identifier >> number_literal) == number_literal) && (binary_expression "(param_3 & 0x3fff) == 0" (parenthesized_expression "(param_3 & 0x3fff)" ( (binary_expression "param_3 & 0x3fff" identifier & number_literal) )) == number_literal)) ))) )) (compound_statement "{\n    uVar2 = 2;\n    iVar5 = 1;\nLAB_0003b3d0:\n    abStack_2c[2] = bVar3 & 0x7f;\n    *(byte *)param_1 = abStack_2c[iVar5 + 2];\n    iVar4 = iVar5 + -2;\n    *(byte *)((int)param_1 + 1) = abStack_2c[iVar5 + 1];\n    if (iVar4 == -1) goto LAB_0003b337;\n  }" { (expression_statement "uVar2 = 2;" (assignment_expression "uVar2 = 2" identifier = number_literal) ;) (expression_statement "iVar5 = 1;" (assignment_expression "iVar5 = 1" identifier = number_literal) ;) (labeled_statement "LAB_0003b3d0:\n    abStack_2c[2] = bVar3 & 0x7f;" statement_identifier : (expression_statement "abStack_2c[2] = bVar3 & 0x7f;" (assignment_expression "abStack_2c[2] = bVar3 & 0x7f" (subscript_expression "abStack_2c[2]" identifier [ number_literal ]) = (binary_expression "bVar3 & 0x7f" identifier & number_literal)) ;)) (expression_statement "*(byte *)param_1 = abStack_2c[iVar5 + 2];" (assignment_expression "*(byte *)param_1 = abStack_2c[iVar5 + 2]" (pointer_expression "*(byte *)param_1" * (cast_expression "(byte *)param_1" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (subscript_expression "abStack_2c[iVar5 + 2]" identifier [ (binary_expression "iVar5 + 2" identifier + number_literal) ])) ;) (expression_statement "iVar4 = iVar5 + -2;" (assignment_expression "iVar4 = iVar5 + -2" identifier = (binary_expression "iVar5 + -2" identifier + number_literal)) ;) (expression_statement "*(byte *)((int)param_1 + 1) = abStack_2c[iVar5 + 1];" (assignment_expression "*(byte *)((int)param_1 + 1) = abStack_2c[iVar5 + 1]" (pointer_expression "*(byte *)((int)param_1 + 1)" * (cast_expression "(byte *)((int)param_1 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 1)" ( (binary_expression "(int)param_1 + 1" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (subscript_expression "abStack_2c[iVar5 + 1]" identifier [ (binary_expression "iVar5 + 1" identifier + number_literal) ])) ;) (if_statement "if (iVar4 == -1) goto LAB_0003b337;" if (parenthesized_expression "(iVar4 == -1)" ( (binary_expression "iVar4 == -1" identifier == number_literal) )) (goto_statement "goto LAB_0003b337;" goto statement_identifier ;)) }) (else_clause "else {\n    abStack_2c[4] = (byte)(param_2 >> 0xe) | 0x80;\n    if (param_3 >> 0x15 == 0 && (param_2 >> 0x15 == 0 && (param_3 & 0x1fffff) == 0)) {\n      uVar2 = 3;\n      iVar5 = 2;\n      goto LAB_0003b3d0;\n    }\n    uVar6 = param_2 >> 0x1c | param_3 << 4;\n    abStack_2c[5] = (byte)(param_2 >> 0x15) | 0x80;\n    if (param_3 >> 0x1c == 0 && uVar6 == 0) {\n      uVar2 = 4;\n      iVar5 = 3;\n      goto LAB_0003b3d0;\n    }\n    abStack_2c[6] = (byte)uVar6 | 0x80;\n    if (param_3 >> 3 == 0) {\n      uVar2 = 5;\n      iVar5 = 4;\n      goto LAB_0003b3d0;\n    }\n    abStack_2c[7] = (byte)(param_3 >> 3) | 0x80;\n    if (param_3 >> 10 == 0) {\n      uVar2 = 6;\n      iVar5 = 5;\n      goto LAB_0003b3d0;\n    }\n    local_24 = CONCAT11(local_24._1_1_,(char)(param_3 >> 10)) | 0x80;\n    if (param_3 >> 0x11 == 0) {\n      uVar2 = 7;\n      iVar5 = 6;\n      goto LAB_0003b3d0;\n    }\n    abStack_2c[2] = bVar3 & 0x7f;\n    iVar4 = 5;\n    uVar1 = CONCAT11((char)(param_3 >> 0x11),(undefined1)local_24);\n    local_24 = uVar1 | 0x8000;\n    *param_1 = uVar1 << 8 | local_24 >> 8;\n    uVar2 = 8;\n  }" else (compound_statement "{\n    abStack_2c[4] = (byte)(param_2 >> 0xe) | 0x80;\n    if (param_3 >> 0x15 == 0 && (param_2 >> 0x15 == 0 && (param_3 & 0x1fffff) == 0)) {\n      uVar2 = 3;\n      iVar5 = 2;\n      goto LAB_0003b3d0;\n    }\n    uVar6 = param_2 >> 0x1c | param_3 << 4;\n    abStack_2c[5] = (byte)(param_2 >> 0x15) | 0x80;\n    if (param_3 >> 0x1c == 0 && uVar6 == 0) {\n      uVar2 = 4;\n      iVar5 = 3;\n      goto LAB_0003b3d0;\n    }\n    abStack_2c[6] = (byte)uVar6 | 0x80;\n    if (param_3 >> 3 == 0) {\n      uVar2 = 5;\n      iVar5 = 4;\n      goto LAB_0003b3d0;\n    }\n    abStack_2c[7] = (byte)(param_3 >> 3) | 0x80;\n    if (param_3 >> 10 == 0) {\n      uVar2 = 6;\n      iVar5 = 5;\n      goto LAB_0003b3d0;\n    }\n    local_24 = CONCAT11(local_24._1_1_,(char)(param_3 >> 10)) | 0x80;\n    if (param_3 >> 0x11 == 0) {\n      uVar2 = 7;\n      iVar5 = 6;\n      goto LAB_0003b3d0;\n    }\n    abStack_2c[2] = bVar3 & 0x7f;\n    iVar4 = 5;\n    uVar1 = CONCAT11((char)(param_3 >> 0x11),(undefined1)local_24);\n    local_24 = uVar1 | 0x8000;\n    *param_1 = uVar1 << 8 | local_24 >> 8;\n    uVar2 = 8;\n  }" { (expression_statement "abStack_2c[4] = (byte)(param_2 >> 0xe) | 0x80;" (assignment_expression "abStack_2c[4] = (byte)(param_2 >> 0xe) | 0x80" (subscript_expression "abStack_2c[4]" identifier [ number_literal ]) = (binary_expression "(byte)(param_2 >> 0xe) | 0x80" (call_expression "(byte)(param_2 >> 0xe)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(param_2 >> 0xe)" ( (binary_expression "param_2 >> 0xe" identifier >> number_literal) ))) | number_literal)) ;) (if_statement "if (param_3 >> 0x15 == 0 && (param_2 >> 0x15 == 0 && (param_3 & 0x1fffff) == 0)) {\n      uVar2 = 3;\n      iVar5 = 2;\n      goto LAB_0003b3d0;\n    }" if (parenthesized_expression "(param_3 >> 0x15 == 0 && (param_2 >> 0x15 == 0 && (param_3 & 0x1fffff) == 0))" ( (binary_expression "param_3 >> 0x15 == 0 && (param_2 >> 0x15 == 0 && (param_3 & 0x1fffff) == 0)" (binary_expression "param_3 >> 0x15 == 0" (binary_expression "param_3 >> 0x15" identifier >> number_literal) == number_literal) && (parenthesized_expression "(param_2 >> 0x15 == 0 && (param_3 & 0x1fffff) == 0)" ( (binary_expression "param_2 >> 0x15 == 0 && (param_3 & 0x1fffff) == 0" (binary_expression "param_2 >> 0x15 == 0" (binary_expression "param_2 >> 0x15" identifier >> number_literal) == number_literal) && (binary_expression "(param_3 & 0x1fffff) == 0" (parenthesized_expression "(param_3 & 0x1fffff)" ( (binary_expression "param_3 & 0x1fffff" identifier & number_literal) )) == number_literal)) ))) )) (compound_statement "{\n      uVar2 = 3;\n      iVar5 = 2;\n      goto LAB_0003b3d0;\n    }" { (expression_statement "uVar2 = 3;" (assignment_expression "uVar2 = 3" identifier = number_literal) ;) (expression_statement "iVar5 = 2;" (assignment_expression "iVar5 = 2" identifier = number_literal) ;) (goto_statement "goto LAB_0003b3d0;" goto statement_identifier ;) })) (expression_statement "uVar6 = param_2 >> 0x1c | param_3 << 4;" (assignment_expression "uVar6 = param_2 >> 0x1c | param_3 << 4" identifier = (binary_expression "param_2 >> 0x1c | param_3 << 4" (binary_expression "param_2 >> 0x1c" identifier >> number_literal) | (binary_expression "param_3 << 4" identifier << number_literal))) ;) (expression_statement "abStack_2c[5] = (byte)(param_2 >> 0x15) | 0x80;" (assignment_expression "abStack_2c[5] = (byte)(param_2 >> 0x15) | 0x80" (subscript_expression "abStack_2c[5]" identifier [ number_literal ]) = (binary_expression "(byte)(param_2 >> 0x15) | 0x80" (call_expression "(byte)(param_2 >> 0x15)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(param_2 >> 0x15)" ( (binary_expression "param_2 >> 0x15" identifier >> number_literal) ))) | number_literal)) ;) (if_statement "if (param_3 >> 0x1c == 0 && uVar6 == 0) {\n      uVar2 = 4;\n      iVar5 = 3;\n      goto LAB_0003b3d0;\n    }" if (parenthesized_expression "(param_3 >> 0x1c == 0 && uVar6 == 0)" ( (binary_expression "param_3 >> 0x1c == 0 && uVar6 == 0" (binary_expression "param_3 >> 0x1c == 0" (binary_expression "param_3 >> 0x1c" identifier >> number_literal) == number_literal) && (binary_expression "uVar6 == 0" identifier == number_literal)) )) (compound_statement "{\n      uVar2 = 4;\n      iVar5 = 3;\n      goto LAB_0003b3d0;\n    }" { (expression_statement "uVar2 = 4;" (assignment_expression "uVar2 = 4" identifier = number_literal) ;) (expression_statement "iVar5 = 3;" (assignment_expression "iVar5 = 3" identifier = number_literal) ;) (goto_statement "goto LAB_0003b3d0;" goto statement_identifier ;) })) (expression_statement "abStack_2c[6] = (byte)uVar6 | 0x80;" (assignment_expression "abStack_2c[6] = (byte)uVar6 | 0x80" (subscript_expression "abStack_2c[6]" identifier [ number_literal ]) = (binary_expression "(byte)uVar6 | 0x80" (cast_expression "(byte)uVar6" ( (type_descriptor "byte" type_identifier) ) identifier) | number_literal)) ;) (if_statement "if (param_3 >> 3 == 0) {\n      uVar2 = 5;\n      iVar5 = 4;\n      goto LAB_0003b3d0;\n    }" if (parenthesized_expression "(param_3 >> 3 == 0)" ( (binary_expression "param_3 >> 3 == 0" (binary_expression "param_3 >> 3" identifier >> number_literal) == number_literal) )) (compound_statement "{\n      uVar2 = 5;\n      iVar5 = 4;\n      goto LAB_0003b3d0;\n    }" { (expression_statement "uVar2 = 5;" (assignment_expression "uVar2 = 5" identifier = number_literal) ;) (expression_statement "iVar5 = 4;" (assignment_expression "iVar5 = 4" identifier = number_literal) ;) (goto_statement "goto LAB_0003b3d0;" goto statement_identifier ;) })) (expression_statement "abStack_2c[7] = (byte)(param_3 >> 3) | 0x80;" (assignment_expression "abStack_2c[7] = (byte)(param_3 >> 3) | 0x80" (subscript_expression "abStack_2c[7]" identifier [ number_literal ]) = (binary_expression "(byte)(param_3 >> 3) | 0x80" (call_expression "(byte)(param_3 >> 3)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(param_3 >> 3)" ( (binary_expression "param_3 >> 3" identifier >> number_literal) ))) | number_literal)) ;) (if_statement "if (param_3 >> 10 == 0) {\n      uVar2 = 6;\n      iVar5 = 5;\n      goto LAB_0003b3d0;\n    }" if (parenthesized_expression "(param_3 >> 10 == 0)" ( (binary_expression "param_3 >> 10 == 0" (binary_expression "param_3 >> 10" identifier >> number_literal) == number_literal) )) (compound_statement "{\n      uVar2 = 6;\n      iVar5 = 5;\n      goto LAB_0003b3d0;\n    }" { (expression_statement "uVar2 = 6;" (assignment_expression "uVar2 = 6" identifier = number_literal) ;) (expression_statement "iVar5 = 5;" (assignment_expression "iVar5 = 5" identifier = number_literal) ;) (goto_statement "goto LAB_0003b3d0;" goto statement_identifier ;) })) (expression_statement "local_24 = CONCAT11(local_24._1_1_,(char)(param_3 >> 10)) | 0x80;" (assignment_expression "local_24 = CONCAT11(local_24._1_1_,(char)(param_3 >> 10)) | 0x80" identifier = (binary_expression "CONCAT11(local_24._1_1_,(char)(param_3 >> 10)) | 0x80" (call_expression "CONCAT11(local_24._1_1_,(char)(param_3 >> 10))" identifier (argument_list "(local_24._1_1_,(char)(param_3 >> 10))" ( (field_expression "local_24._1_1_" identifier . field_identifier) , (cast_expression "(char)(param_3 >> 10)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(param_3 >> 10)" ( (binary_expression "param_3 >> 10" identifier >> number_literal) ))) ))) | number_literal)) ;) (if_statement "if (param_3 >> 0x11 == 0) {\n      uVar2 = 7;\n      iVar5 = 6;\n      goto LAB_0003b3d0;\n    }" if (parenthesized_expression "(param_3 >> 0x11 == 0)" ( (binary_expression "param_3 >> 0x11 == 0" (binary_expression "param_3 >> 0x11" identifier >> number_literal) == number_literal) )) (compound_statement "{\n      uVar2 = 7;\n      iVar5 = 6;\n      goto LAB_0003b3d0;\n    }" { (expression_statement "uVar2 = 7;" (assignment_expression "uVar2 = 7" identifier = number_literal) ;) (expression_statement "iVar5 = 6;" (assignment_expression "iVar5 = 6" identifier = number_literal) ;) (goto_statement "goto LAB_0003b3d0;" goto statement_identifier ;) })) (expression_statement "abStack_2c[2] = bVar3 & 0x7f;" (assignment_expression "abStack_2c[2] = bVar3 & 0x7f" (subscript_expression "abStack_2c[2]" identifier [ number_literal ]) = (binary_expression "bVar3 & 0x7f" identifier & number_literal)) ;) (expression_statement "iVar4 = 5;" (assignment_expression "iVar4 = 5" identifier = number_literal) ;) (expression_statement "uVar1 = CONCAT11((char)(param_3 >> 0x11),(undefined1)local_24);" (assignment_expression "uVar1 = CONCAT11((char)(param_3 >> 0x11),(undefined1)local_24)" identifier = (call_expression "CONCAT11((char)(param_3 >> 0x11),(undefined1)local_24)" identifier (argument_list "((char)(param_3 >> 0x11),(undefined1)local_24)" ( (cast_expression "(char)(param_3 >> 0x11)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(param_3 >> 0x11)" ( (binary_expression "param_3 >> 0x11" identifier >> number_literal) ))) , (cast_expression "(undefined1)local_24" ( (type_descriptor "undefined1" type_identifier) ) identifier) )))) ;) (expression_statement "local_24 = uVar1 | 0x8000;" (assignment_expression "local_24 = uVar1 | 0x8000" identifier = (binary_expression "uVar1 | 0x8000" identifier | number_literal)) ;) (expression_statement "*param_1 = uVar1 << 8 | local_24 >> 8;" (assignment_expression "*param_1 = uVar1 << 8 | local_24 >> 8" (pointer_expression "*param_1" * identifier) = (binary_expression "uVar1 << 8 | local_24 >> 8" (binary_expression "uVar1 << 8" identifier << number_literal) | (binary_expression "local_24 >> 8" identifier >> number_literal))) ;) (expression_statement "uVar2 = 8;" (assignment_expression "uVar2 = 8" identifier = number_literal) ;) }))) (expression_statement "*(byte *)(param_1 + 1) = abStack_2c[iVar4 + 2];" (assignment_expression "*(byte *)(param_1 + 1) = abStack_2c[iVar4 + 2]" (pointer_expression "*(byte *)(param_1 + 1)" * (cast_expression "(byte *)(param_1 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 1)" ( (binary_expression "param_1 + 1" identifier + number_literal) )))) = (subscript_expression "abStack_2c[iVar4 + 2]" identifier [ (binary_expression "iVar4 + 2" identifier + number_literal) ])) ;) (if_statement "if ((((iVar4 != 0) && (*(byte *)((int)param_1 + 3) = abStack_2c[iVar4 + 1], iVar4 != 1)) &&\n      (*(byte *)(param_1 + 2) = abStack_2c[iVar4], iVar4 != 2)) &&\n     ((*(byte *)((int)param_1 + 5) = abStack_2c[iVar4 + -1], iVar4 != 3 &&\n      (*(byte *)(param_1 + 3) = abStack_2c[iVar4 + -2], iVar4 != 4)))) {\n    *(byte *)((int)param_1 + 7) = abStack_2c[2];\n  }" if (parenthesized_expression "((((iVar4 != 0) && (*(byte *)((int)param_1 + 3) = abStack_2c[iVar4 + 1], iVar4 != 1)) &&\n      (*(byte *)(param_1 + 2) = abStack_2c[iVar4], iVar4 != 2)) &&\n     ((*(byte *)((int)param_1 + 5) = abStack_2c[iVar4 + -1], iVar4 != 3 &&\n      (*(byte *)(param_1 + 3) = abStack_2c[iVar4 + -2], iVar4 != 4))))" ( (binary_expression "(((iVar4 != 0) && (*(byte *)((int)param_1 + 3) = abStack_2c[iVar4 + 1], iVar4 != 1)) &&\n      (*(byte *)(param_1 + 2) = abStack_2c[iVar4], iVar4 != 2)) &&\n     ((*(byte *)((int)param_1 + 5) = abStack_2c[iVar4 + -1], iVar4 != 3 &&\n      (*(byte *)(param_1 + 3) = abStack_2c[iVar4 + -2], iVar4 != 4)))" (parenthesized_expression "(((iVar4 != 0) && (*(byte *)((int)param_1 + 3) = abStack_2c[iVar4 + 1], iVar4 != 1)) &&\n      (*(byte *)(param_1 + 2) = abStack_2c[iVar4], iVar4 != 2))" ( (binary_expression "((iVar4 != 0) && (*(byte *)((int)param_1 + 3) = abStack_2c[iVar4 + 1], iVar4 != 1)) &&\n      (*(byte *)(param_1 + 2) = abStack_2c[iVar4], iVar4 != 2)" (parenthesized_expression "((iVar4 != 0) && (*(byte *)((int)param_1 + 3) = abStack_2c[iVar4 + 1], iVar4 != 1))" ( (binary_expression "(iVar4 != 0) && (*(byte *)((int)param_1 + 3) = abStack_2c[iVar4 + 1], iVar4 != 1)" (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) && (parenthesized_expression "(*(byte *)((int)param_1 + 3) = abStack_2c[iVar4 + 1], iVar4 != 1)" ( (comma_expression "*(byte *)((int)param_1 + 3) = abStack_2c[iVar4 + 1], iVar4 != 1" (assignment_expression "*(byte *)((int)param_1 + 3) = abStack_2c[iVar4 + 1]" (pointer_expression "*(byte *)((int)param_1 + 3)" * (cast_expression "(byte *)((int)param_1 + 3)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 3)" ( (binary_expression "(int)param_1 + 3" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (subscript_expression "abStack_2c[iVar4 + 1]" identifier [ (binary_expression "iVar4 + 1" identifier + number_literal) ])) , (binary_expression "iVar4 != 1" identifier != number_literal)) ))) )) && (parenthesized_expression "(*(byte *)(param_1 + 2) = abStack_2c[iVar4], iVar4 != 2)" ( (comma_expression "*(byte *)(param_1 + 2) = abStack_2c[iVar4], iVar4 != 2" (assignment_expression "*(byte *)(param_1 + 2) = abStack_2c[iVar4]" (pointer_expression "*(byte *)(param_1 + 2)" * (cast_expression "(byte *)(param_1 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) )))) = (subscript_expression "abStack_2c[iVar4]" identifier [ identifier ])) , (binary_expression "iVar4 != 2" identifier != number_literal)) ))) )) && (parenthesized_expression "((*(byte *)((int)param_1 + 5) = abStack_2c[iVar4 + -1], iVar4 != 3 &&\n      (*(byte *)(param_1 + 3) = abStack_2c[iVar4 + -2], iVar4 != 4)))" ( (parenthesized_expression "(*(byte *)((int)param_1 + 5) = abStack_2c[iVar4 + -1], iVar4 != 3 &&\n      (*(byte *)(param_1 + 3) = abStack_2c[iVar4 + -2], iVar4 != 4))" ( (comma_expression "*(byte *)((int)param_1 + 5) = abStack_2c[iVar4 + -1], iVar4 != 3 &&\n      (*(byte *)(param_1 + 3) = abStack_2c[iVar4 + -2], iVar4 != 4)" (assignment_expression "*(byte *)((int)param_1 + 5) = abStack_2c[iVar4 + -1]" (pointer_expression "*(byte *)((int)param_1 + 5)" * (cast_expression "(byte *)((int)param_1 + 5)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 5)" ( (binary_expression "(int)param_1 + 5" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (subscript_expression "abStack_2c[iVar4 + -1]" identifier [ (binary_expression "iVar4 + -1" identifier + number_literal) ])) , (binary_expression "iVar4 != 3 &&\n      (*(byte *)(param_1 + 3) = abStack_2c[iVar4 + -2], iVar4 != 4)" (binary_expression "iVar4 != 3" identifier != number_literal) && (parenthesized_expression "(*(byte *)(param_1 + 3) = abStack_2c[iVar4 + -2], iVar4 != 4)" ( (comma_expression "*(byte *)(param_1 + 3) = abStack_2c[iVar4 + -2], iVar4 != 4" (assignment_expression "*(byte *)(param_1 + 3) = abStack_2c[iVar4 + -2]" (pointer_expression "*(byte *)(param_1 + 3)" * (cast_expression "(byte *)(param_1 + 3)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 3)" ( (binary_expression "param_1 + 3" identifier + number_literal) )))) = (subscript_expression "abStack_2c[iVar4 + -2]" identifier [ (binary_expression "iVar4 + -2" identifier + number_literal) ])) , (binary_expression "iVar4 != 4" identifier != number_literal)) )))) )) ))) )) (compound_statement "{\n    *(byte *)((int)param_1 + 7) = abStack_2c[2];\n  }" { (expression_statement "*(byte *)((int)param_1 + 7) = abStack_2c[2];" (assignment_expression "*(byte *)((int)param_1 + 7) = abStack_2c[2]" (pointer_expression "*(byte *)((int)param_1 + 7)" * (cast_expression "(byte *)((int)param_1 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 7)" ( (binary_expression "(int)param_1 + 7" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (subscript_expression "abStack_2c[2]" identifier [ number_literal ])) ;) })) (labeled_statement "LAB_0003b337:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    uStack_30 = &UNK_0003b454;\n    FUN_00153870();\n  }" statement_identifier : (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    uStack_30 = &UNK_0003b454;\n    FUN_00153870();\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                    \n    uStack_30 = &UNK_0003b454;\n    FUN_00153870();\n  }" { (expression_statement "uStack_30 = &UNK_0003b454;" (assignment_expression "uStack_30 = &UNK_0003b454" identifier = (pointer_expression "&UNK_0003b454" & identifier)) ;) (expression_statement "FUN_00153870();" (call_expression "FUN_00153870()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return uVar2;" return identifier ;) })))
(translation_unit (function_definition TYPE (ERROR IDENT) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (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 ;) (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) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) ))) | LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) ))) | LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) ))) | LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) ))) | (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT << LIT) )))) | LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) ))) | LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) ))) | LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) ))) | LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) ))) | LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (binary_expression IDENT >> LIT) == LIT) && (parenthesized_expression ( (binary_expression (binary_expression (binary_expression IDENT >> LIT) == LIT) && (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT & LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) ))) | LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (binary_expression IDENT >> LIT) == LIT) && (parenthesized_expression ( (binary_expression (binary_expression (binary_expression IDENT >> LIT) == LIT) && (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT & LIT)) ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) = (subscript_expression IDENT [ (binary_expression IDENT + LIT) ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (subscript_expression IDENT [ (binary_expression IDENT + LIT) ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) ))) | LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (binary_expression IDENT >> LIT) == LIT) && (parenthesized_expression ( (binary_expression (binary_expression (binary_expression IDENT >> LIT) == LIT) && (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT >> LIT) | (binary_expression IDENT << LIT))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) ))) | LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (binary_expression IDENT >> LIT) == LIT) && (binary_expression IDENT == LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) | LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT >> LIT) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) ))) | LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT >> LIT) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (call_expression IDENT (argument_list ( (field_expression IDENT . field_identifier) , (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT >> LIT) ))) ))) | LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT >> LIT) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT & LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT >> LIT) ))) , (cast_expression ( (type_descriptor TYPE) ) IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (binary_expression IDENT << LIT) | (binary_expression IDENT >> LIT))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (subscript_expression IDENT [ (binary_expression IDENT + LIT) ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (subscript_expression IDENT [ (binary_expression IDENT + LIT) ])) , (binary_expression IDENT != LIT)) ))) )) && (parenthesized_expression ( (comma_expression (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (subscript_expression IDENT [ IDENT ])) , (binary_expression IDENT != LIT)) ))) )) && (parenthesized_expression ( (parenthesized_expression ( (comma_expression (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (subscript_expression IDENT [ (binary_expression IDENT + LIT) ])) , (binary_expression (binary_expression IDENT != LIT) && (parenthesized_expression ( (comma_expression (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (subscript_expression IDENT [ (binary_expression IDENT + LIT) ])) , (binary_expression IDENT != LIT)) )))) )) ))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (subscript_expression IDENT [ LIT ])) ;) })) (labeled_statement statement_identifier : (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 { (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) }))) (return_statement return IDENT ;) })))
(function_definition "undefined4 __regparm3 FUN_0003b1f0(ushort *param_1,uint param_2,uint param_3)\n\n{\n  ushort uVar1;\n  undefined4 uVar2;\n  byte bVar3;\n  int iVar4;\n  int iVar5;\n  uint uVar6;\n  int in_GS_OFFSET;\n  undefined4 uStack_30;\n  byte abStack_2c [8];\n  undefined2 local_24;\n  int local_20;\n  \n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  bVar3 = (byte)param_2;\n  if ((param_3 & 0xff000000) != 0) {\n    *(byte *)(param_1 + 4) = bVar3;\n    *(byte *)((int)param_1 + 7) = (byte)(param_2 >> 8) | 0x80;\n    *(byte *)(param_1 + 3) = (byte)(param_2 >> 0xf) | 0x80;\n    *(byte *)((int)param_1 + 5) = (byte)(param_2 >> 0x16) | 0x80;\n    *(byte *)(param_1 + 2) = (byte)(param_2 >> 0x1d) | (byte)(param_3 << 3) | 0x80;\n    *(byte *)((int)param_1 + 3) = (byte)(param_3 >> 4) | 0x80;\n    *(byte *)(param_1 + 1) = (byte)(param_3 >> 0xb) | 0x80;\n    *(byte *)((int)param_1 + 1) = (byte)(param_3 >> 0x12) | 0x80;\n    *(byte *)param_1 = (byte)(param_3 >> 0x19) | 0x80;\n    uVar2 = 9;\n    goto LAB_0003b337;\n  }\n  if (param_3 >> 7 == 0 && (param_2 >> 7 == 0 && (param_3 & 0x7f) == 0)) {\n    abStack_2c[2] = bVar3 & 0x7f;\n    *(byte *)param_1 = abStack_2c[2];\n    uVar2 = 1;\n    goto LAB_0003b337;\n  }\n  abStack_2c[3] = (byte)(param_2 >> 7) | 0x80;\n  if (param_3 >> 0xe == 0 && (param_2 >> 0xe == 0 && (param_3 & 0x3fff) == 0)) {\n    uVar2 = 2;\n    iVar5 = 1;\nLAB_0003b3d0:\n    abStack_2c[2] = bVar3 & 0x7f;\n    *(byte *)param_1 = abStack_2c[iVar5 + 2];\n    iVar4 = iVar5 + -2;\n    *(byte *)((int)param_1 + 1) = abStack_2c[iVar5 + 1];\n    if (iVar4 == -1) goto LAB_0003b337;\n  }\n  else {\n    abStack_2c[4] = (byte)(param_2 >> 0xe) | 0x80;\n    if (param_3 >> 0x15 == 0 && (param_2 >> 0x15 == 0 && (param_3 & 0x1fffff) == 0)) {\n      uVar2 = 3;\n      iVar5 = 2;\n      goto LAB_0003b3d0;\n    }\n    uVar6 = param_2 >> 0x1c | param_3 << 4;\n    abStack_2c[5] = (byte)(param_2 >> 0x15) | 0x80;\n    if (param_3 >> 0x1c == 0 && uVar6 == 0) {\n      uVar2 = 4;\n      iVar5 = 3;\n      goto LAB_0003b3d0;\n    }\n    abStack_2c[6] = (byte)uVar6 | 0x80;\n    if (param_3 >> 3 == 0) {\n      uVar2 = 5;\n      iVar5 = 4;\n      goto LAB_0003b3d0;\n    }\n    abStack_2c[7] = (byte)(param_3 >> 3) | 0x80;\n    if (param_3 >> 10 == 0) {\n      uVar2 = 6;\n      iVar5 = 5;\n      goto LAB_0003b3d0;\n    }\n    local_24 = CONCAT11(local_24._1_1_,(char)(param_3 >> 10)) | 0x80;\n    if (param_3 >> 0x11 == 0) {\n      uVar2 = 7;\n      iVar5 = 6;\n      goto LAB_0003b3d0;\n    }\n    abStack_2c[2] = bVar3 & 0x7f;\n    iVar4 = 5;\n    uVar1 = CONCAT11((char)(param_3 >> 0x11),(undefined1)local_24);\n    local_24 = uVar1 | 0x8000;\n    *param_1 = uVar1 << 8 | local_24 >> 8;\n    uVar2 = 8;\n  }\n  *(byte *)(param_1 + 1) = abStack_2c[iVar4 + 2];\n  if ((((iVar4 != 0) && (*(byte *)((int)param_1 + 3) = abStack_2c[iVar4 + 1], iVar4 != 1)) &&\n      (*(byte *)(param_1 + 2) = abStack_2c[iVar4], iVar4 != 2)) &&\n     ((*(byte *)((int)param_1 + 5) = abStack_2c[iVar4 + -1], iVar4 != 3 &&\n      (*(byte *)(param_1 + 3) = abStack_2c[iVar4 + -2], iVar4 != 4)))) {\n    *(byte *)((int)param_1 + 7) = abStack_2c[2];\n  }\nLAB_0003b337:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    uStack_30 = &UNK_0003b454;\n    FUN_00153870();\n  }\n  return uVar2;\n}" (type_identifier "undefined4") (ERROR "__regparm3" (identifier "__regparm3")) (function_declarator "FUN_0003b1f0(ushort *param_1,uint param_2,uint param_3)" (identifier "FUN_0003b1f0") (parameter_list "(ushort *param_1,uint param_2,uint param_3)" (( "(") (parameter_declaration "ushort *param_1" (type_identifier "ushort") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "uint param_2" (type_identifier "uint") (identifier "param_2")) (, ",") (parameter_declaration "uint param_3" (type_identifier "uint") (identifier "param_3")) () ")"))) (compound_statement "{\n  ushort uVar1;\n  undefined4 uVar2;\n  byte bVar3;\n  int iVar4;\n  int iVar5;\n  uint uVar6;\n  int in_GS_OFFSET;\n  undefined4 uStack_30;\n  byte abStack_2c [8];\n  undefined2 local_24;\n  int local_20;\n  \n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  bVar3 = (byte)param_2;\n  if ((param_3 & 0xff000000) != 0) {\n    *(byte *)(param_1 + 4) = bVar3;\n    *(byte *)((int)param_1 + 7) = (byte)(param_2 >> 8) | 0x80;\n    *(byte *)(param_1 + 3) = (byte)(param_2 >> 0xf) | 0x80;\n    *(byte *)((int)param_1 + 5) = (byte)(param_2 >> 0x16) | 0x80;\n    *(byte *)(param_1 + 2) = (byte)(param_2 >> 0x1d) | (byte)(param_3 << 3) | 0x80;\n    *(byte *)((int)param_1 + 3) = (byte)(param_3 >> 4) | 0x80;\n    *(byte *)(param_1 + 1) = (byte)(param_3 >> 0xb) | 0x80;\n    *(byte *)((int)param_1 + 1) = (byte)(param_3 >> 0x12) | 0x80;\n    *(byte *)param_1 = (byte)(param_3 >> 0x19) | 0x80;\n    uVar2 = 9;\n    goto LAB_0003b337;\n  }\n  if (param_3 >> 7 == 0 && (param_2 >> 7 == 0 && (param_3 & 0x7f) == 0)) {\n    abStack_2c[2] = bVar3 & 0x7f;\n    *(byte *)param_1 = abStack_2c[2];\n    uVar2 = 1;\n    goto LAB_0003b337;\n  }\n  abStack_2c[3] = (byte)(param_2 >> 7) | 0x80;\n  if (param_3 >> 0xe == 0 && (param_2 >> 0xe == 0 && (param_3 & 0x3fff) == 0)) {\n    uVar2 = 2;\n    iVar5 = 1;\nLAB_0003b3d0:\n    abStack_2c[2] = bVar3 & 0x7f;\n    *(byte *)param_1 = abStack_2c[iVar5 + 2];\n    iVar4 = iVar5 + -2;\n    *(byte *)((int)param_1 + 1) = abStack_2c[iVar5 + 1];\n    if (iVar4 == -1) goto LAB_0003b337;\n  }\n  else {\n    abStack_2c[4] = (byte)(param_2 >> 0xe) | 0x80;\n    if (param_3 >> 0x15 == 0 && (param_2 >> 0x15 == 0 && (param_3 & 0x1fffff) == 0)) {\n      uVar2 = 3;\n      iVar5 = 2;\n      goto LAB_0003b3d0;\n    }\n    uVar6 = param_2 >> 0x1c | param_3 << 4;\n    abStack_2c[5] = (byte)(param_2 >> 0x15) | 0x80;\n    if (param_3 >> 0x1c == 0 && uVar6 == 0) {\n      uVar2 = 4;\n      iVar5 = 3;\n      goto LAB_0003b3d0;\n    }\n    abStack_2c[6] = (byte)uVar6 | 0x80;\n    if (param_3 >> 3 == 0) {\n      uVar2 = 5;\n      iVar5 = 4;\n      goto LAB_0003b3d0;\n    }\n    abStack_2c[7] = (byte)(param_3 >> 3) | 0x80;\n    if (param_3 >> 10 == 0) {\n      uVar2 = 6;\n      iVar5 = 5;\n      goto LAB_0003b3d0;\n    }\n    local_24 = CONCAT11(local_24._1_1_,(char)(param_3 >> 10)) | 0x80;\n    if (param_3 >> 0x11 == 0) {\n      uVar2 = 7;\n      iVar5 = 6;\n      goto LAB_0003b3d0;\n    }\n    abStack_2c[2] = bVar3 & 0x7f;\n    iVar4 = 5;\n    uVar1 = CONCAT11((char)(param_3 >> 0x11),(undefined1)local_24);\n    local_24 = uVar1 | 0x8000;\n    *param_1 = uVar1 << 8 | local_24 >> 8;\n    uVar2 = 8;\n  }\n  *(byte *)(param_1 + 1) = abStack_2c[iVar4 + 2];\n  if ((((iVar4 != 0) && (*(byte *)((int)param_1 + 3) = abStack_2c[iVar4 + 1], iVar4 != 1)) &&\n      (*(byte *)(param_1 + 2) = abStack_2c[iVar4], iVar4 != 2)) &&\n     ((*(byte *)((int)param_1 + 5) = abStack_2c[iVar4 + -1], iVar4 != 3 &&\n      (*(byte *)(param_1 + 3) = abStack_2c[iVar4 + -2], iVar4 != 4)))) {\n    *(byte *)((int)param_1 + 7) = abStack_2c[2];\n  }\nLAB_0003b337:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    uStack_30 = &UNK_0003b454;\n    FUN_00153870();\n  }\n  return uVar2;\n}" ({ "{") (declaration "ushort uVar1;" (type_identifier "ushort") (identifier "uVar1") (; ";")) (declaration "undefined4 uVar2;" (type_identifier "undefined4") (identifier "uVar2") (; ";")) (declaration "byte bVar3;" (type_identifier "byte") (identifier "bVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "uint uVar6;" (type_identifier "uint") (identifier "uVar6") (; ";")) (declaration "int in_GS_OFFSET;" (primitive_type "int") (identifier "in_GS_OFFSET") (; ";")) (declaration "undefined4 uStack_30;" (type_identifier "undefined4") (identifier "uStack_30") (; ";")) (declaration "byte abStack_2c [8];" (type_identifier "byte") (array_declarator "abStack_2c [8]" (identifier "abStack_2c") ([ "[") (number_literal "8") (] "]")) (; ";")) (declaration "undefined2 local_24;" (type_identifier "undefined2") (identifier "local_24") (; ";")) (declaration "int local_20;" (primitive_type "int") (identifier "local_20") (; ";")) (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 "bVar3 = (byte)param_2;" (assignment_expression "bVar3 = (byte)param_2" (identifier "bVar3") (= "=") (cast_expression "(byte)param_2" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "param_2"))) (; ";")) (if_statement "if ((param_3 & 0xff000000) != 0) {\n    *(byte *)(param_1 + 4) = bVar3;\n    *(byte *)((int)param_1 + 7) = (byte)(param_2 >> 8) | 0x80;\n    *(byte *)(param_1 + 3) = (byte)(param_2 >> 0xf) | 0x80;\n    *(byte *)((int)param_1 + 5) = (byte)(param_2 >> 0x16) | 0x80;\n    *(byte *)(param_1 + 2) = (byte)(param_2 >> 0x1d) | (byte)(param_3 << 3) | 0x80;\n    *(byte *)((int)param_1 + 3) = (byte)(param_3 >> 4) | 0x80;\n    *(byte *)(param_1 + 1) = (byte)(param_3 >> 0xb) | 0x80;\n    *(byte *)((int)param_1 + 1) = (byte)(param_3 >> 0x12) | 0x80;\n    *(byte *)param_1 = (byte)(param_3 >> 0x19) | 0x80;\n    uVar2 = 9;\n    goto LAB_0003b337;\n  }" (if "if") (parenthesized_expression "((param_3 & 0xff000000) != 0)" (( "(") (binary_expression "(param_3 & 0xff000000) != 0" (parenthesized_expression "(param_3 & 0xff000000)" (( "(") (binary_expression "param_3 & 0xff000000" (identifier "param_3") (& "&") (number_literal "0xff000000")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    *(byte *)(param_1 + 4) = bVar3;\n    *(byte *)((int)param_1 + 7) = (byte)(param_2 >> 8) | 0x80;\n    *(byte *)(param_1 + 3) = (byte)(param_2 >> 0xf) | 0x80;\n    *(byte *)((int)param_1 + 5) = (byte)(param_2 >> 0x16) | 0x80;\n    *(byte *)(param_1 + 2) = (byte)(param_2 >> 0x1d) | (byte)(param_3 << 3) | 0x80;\n    *(byte *)((int)param_1 + 3) = (byte)(param_3 >> 4) | 0x80;\n    *(byte *)(param_1 + 1) = (byte)(param_3 >> 0xb) | 0x80;\n    *(byte *)((int)param_1 + 1) = (byte)(param_3 >> 0x12) | 0x80;\n    *(byte *)param_1 = (byte)(param_3 >> 0x19) | 0x80;\n    uVar2 = 9;\n    goto LAB_0003b337;\n  }" ({ "{") (expression_statement "*(byte *)(param_1 + 4) = bVar3;" (assignment_expression "*(byte *)(param_1 + 4) = bVar3" (pointer_expression "*(byte *)(param_1 + 4)" (* "*") (cast_expression "(byte *)(param_1 + 4)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (= "=") (identifier "bVar3")) (; ";")) (expression_statement "*(byte *)((int)param_1 + 7) = (byte)(param_2 >> 8) | 0x80;" (assignment_expression "*(byte *)((int)param_1 + 7) = (byte)(param_2 >> 8) | 0x80" (pointer_expression "*(byte *)((int)param_1 + 7)" (* "*") (cast_expression "(byte *)((int)param_1 + 7)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + 7)" (( "(") (binary_expression "(int)param_1 + 7" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "7")) () ")")))) (= "=") (binary_expression "(byte)(param_2 >> 8) | 0x80" (call_expression "(byte)(param_2 >> 8)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(param_2 >> 8)" (( "(") (binary_expression "param_2 >> 8" (identifier "param_2") (>> ">>") (number_literal "8")) () ")"))) (| "|") (number_literal "0x80"))) (; ";")) (expression_statement "*(byte *)(param_1 + 3) = (byte)(param_2 >> 0xf) | 0x80;" (assignment_expression "*(byte *)(param_1 + 3) = (byte)(param_2 >> 0xf) | 0x80" (pointer_expression "*(byte *)(param_1 + 3)" (* "*") (cast_expression "(byte *)(param_1 + 3)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 3)" (( "(") (binary_expression "param_1 + 3" (identifier "param_1") (+ "+") (number_literal "3")) () ")")))) (= "=") (binary_expression "(byte)(param_2 >> 0xf) | 0x80" (call_expression "(byte)(param_2 >> 0xf)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(param_2 >> 0xf)" (( "(") (binary_expression "param_2 >> 0xf" (identifier "param_2") (>> ">>") (number_literal "0xf")) () ")"))) (| "|") (number_literal "0x80"))) (; ";")) (expression_statement "*(byte *)((int)param_1 + 5) = (byte)(param_2 >> 0x16) | 0x80;" (assignment_expression "*(byte *)((int)param_1 + 5) = (byte)(param_2 >> 0x16) | 0x80" (pointer_expression "*(byte *)((int)param_1 + 5)" (* "*") (cast_expression "(byte *)((int)param_1 + 5)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + 5)" (( "(") (binary_expression "(int)param_1 + 5" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "5")) () ")")))) (= "=") (binary_expression "(byte)(param_2 >> 0x16) | 0x80" (call_expression "(byte)(param_2 >> 0x16)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(param_2 >> 0x16)" (( "(") (binary_expression "param_2 >> 0x16" (identifier "param_2") (>> ">>") (number_literal "0x16")) () ")"))) (| "|") (number_literal "0x80"))) (; ";")) (expression_statement "*(byte *)(param_1 + 2) = (byte)(param_2 >> 0x1d) | (byte)(param_3 << 3) | 0x80;" (assignment_expression "*(byte *)(param_1 + 2) = (byte)(param_2 >> 0x1d) | (byte)(param_3 << 3) | 0x80" (pointer_expression "*(byte *)(param_1 + 2)" (* "*") (cast_expression "(byte *)(param_1 + 2)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 2)" (( "(") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2")) () ")")))) (= "=") (binary_expression "(byte)(param_2 >> 0x1d) | (byte)(param_3 << 3) | 0x80" (binary_expression "(byte)(param_2 >> 0x1d) | (byte)(param_3 << 3)" (call_expression "(byte)(param_2 >> 0x1d)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(param_2 >> 0x1d)" (( "(") (binary_expression "param_2 >> 0x1d" (identifier "param_2") (>> ">>") (number_literal "0x1d")) () ")"))) (| "|") (call_expression "(byte)(param_3 << 3)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(param_3 << 3)" (( "(") (binary_expression "param_3 << 3" (identifier "param_3") (<< "<<") (number_literal "3")) () ")")))) (| "|") (number_literal "0x80"))) (; ";")) (expression_statement "*(byte *)((int)param_1 + 3) = (byte)(param_3 >> 4) | 0x80;" (assignment_expression "*(byte *)((int)param_1 + 3) = (byte)(param_3 >> 4) | 0x80" (pointer_expression "*(byte *)((int)param_1 + 3)" (* "*") (cast_expression "(byte *)((int)param_1 + 3)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + 3)" (( "(") (binary_expression "(int)param_1 + 3" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "3")) () ")")))) (= "=") (binary_expression "(byte)(param_3 >> 4) | 0x80" (call_expression "(byte)(param_3 >> 4)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(param_3 >> 4)" (( "(") (binary_expression "param_3 >> 4" (identifier "param_3") (>> ">>") (number_literal "4")) () ")"))) (| "|") (number_literal "0x80"))) (; ";")) (expression_statement "*(byte *)(param_1 + 1) = (byte)(param_3 >> 0xb) | 0x80;" (assignment_expression "*(byte *)(param_1 + 1) = (byte)(param_3 >> 0xb) | 0x80" (pointer_expression "*(byte *)(param_1 + 1)" (* "*") (cast_expression "(byte *)(param_1 + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 1)" (( "(") (binary_expression "param_1 + 1" (identifier "param_1") (+ "+") (number_literal "1")) () ")")))) (= "=") (binary_expression "(byte)(param_3 >> 0xb) | 0x80" (call_expression "(byte)(param_3 >> 0xb)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(param_3 >> 0xb)" (( "(") (binary_expression "param_3 >> 0xb" (identifier "param_3") (>> ">>") (number_literal "0xb")) () ")"))) (| "|") (number_literal "0x80"))) (; ";")) (expression_statement "*(byte *)((int)param_1 + 1) = (byte)(param_3 >> 0x12) | 0x80;" (assignment_expression "*(byte *)((int)param_1 + 1) = (byte)(param_3 >> 0x12) | 0x80" (pointer_expression "*(byte *)((int)param_1 + 1)" (* "*") (cast_expression "(byte *)((int)param_1 + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + 1)" (( "(") (binary_expression "(int)param_1 + 1" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "1")) () ")")))) (= "=") (binary_expression "(byte)(param_3 >> 0x12) | 0x80" (call_expression "(byte)(param_3 >> 0x12)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(param_3 >> 0x12)" (( "(") (binary_expression "param_3 >> 0x12" (identifier "param_3") (>> ">>") (number_literal "0x12")) () ")"))) (| "|") (number_literal "0x80"))) (; ";")) (expression_statement "*(byte *)param_1 = (byte)(param_3 >> 0x19) | 0x80;" (assignment_expression "*(byte *)param_1 = (byte)(param_3 >> 0x19) | 0x80" (pointer_expression "*(byte *)param_1" (* "*") (cast_expression "(byte *)param_1" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_1"))) (= "=") (binary_expression "(byte)(param_3 >> 0x19) | 0x80" (call_expression "(byte)(param_3 >> 0x19)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(param_3 >> 0x19)" (( "(") (binary_expression "param_3 >> 0x19" (identifier "param_3") (>> ">>") (number_literal "0x19")) () ")"))) (| "|") (number_literal "0x80"))) (; ";")) (expression_statement "uVar2 = 9;" (assignment_expression "uVar2 = 9" (identifier "uVar2") (= "=") (number_literal "9")) (; ";")) (goto_statement "goto LAB_0003b337;" (goto "goto") (statement_identifier "LAB_0003b337") (; ";")) (} "}"))) (if_statement "if (param_3 >> 7 == 0 && (param_2 >> 7 == 0 && (param_3 & 0x7f) == 0)) {\n    abStack_2c[2] = bVar3 & 0x7f;\n    *(byte *)param_1 = abStack_2c[2];\n    uVar2 = 1;\n    goto LAB_0003b337;\n  }" (if "if") (parenthesized_expression "(param_3 >> 7 == 0 && (param_2 >> 7 == 0 && (param_3 & 0x7f) == 0))" (( "(") (binary_expression "param_3 >> 7 == 0 && (param_2 >> 7 == 0 && (param_3 & 0x7f) == 0)" (binary_expression "param_3 >> 7 == 0" (binary_expression "param_3 >> 7" (identifier "param_3") (>> ">>") (number_literal "7")) (== "==") (number_literal "0")) (&& "&&") (parenthesized_expression "(param_2 >> 7 == 0 && (param_3 & 0x7f) == 0)" (( "(") (binary_expression "param_2 >> 7 == 0 && (param_3 & 0x7f) == 0" (binary_expression "param_2 >> 7 == 0" (binary_expression "param_2 >> 7" (identifier "param_2") (>> ">>") (number_literal "7")) (== "==") (number_literal "0")) (&& "&&") (binary_expression "(param_3 & 0x7f) == 0" (parenthesized_expression "(param_3 & 0x7f)" (( "(") (binary_expression "param_3 & 0x7f" (identifier "param_3") (& "&") (number_literal "0x7f")) () ")")) (== "==") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n    abStack_2c[2] = bVar3 & 0x7f;\n    *(byte *)param_1 = abStack_2c[2];\n    uVar2 = 1;\n    goto LAB_0003b337;\n  }" ({ "{") (expression_statement "abStack_2c[2] = bVar3 & 0x7f;" (assignment_expression "abStack_2c[2] = bVar3 & 0x7f" (subscript_expression "abStack_2c[2]" (identifier "abStack_2c") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "bVar3 & 0x7f" (identifier "bVar3") (& "&") (number_literal "0x7f"))) (; ";")) (expression_statement "*(byte *)param_1 = abStack_2c[2];" (assignment_expression "*(byte *)param_1 = abStack_2c[2]" (pointer_expression "*(byte *)param_1" (* "*") (cast_expression "(byte *)param_1" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_1"))) (= "=") (subscript_expression "abStack_2c[2]" (identifier "abStack_2c") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "uVar2 = 1;" (assignment_expression "uVar2 = 1" (identifier "uVar2") (= "=") (number_literal "1")) (; ";")) (goto_statement "goto LAB_0003b337;" (goto "goto") (statement_identifier "LAB_0003b337") (; ";")) (} "}"))) (expression_statement "abStack_2c[3] = (byte)(param_2 >> 7) | 0x80;" (assignment_expression "abStack_2c[3] = (byte)(param_2 >> 7) | 0x80" (subscript_expression "abStack_2c[3]" (identifier "abStack_2c") ([ "[") (number_literal "3") (] "]")) (= "=") (binary_expression "(byte)(param_2 >> 7) | 0x80" (call_expression "(byte)(param_2 >> 7)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(param_2 >> 7)" (( "(") (binary_expression "param_2 >> 7" (identifier "param_2") (>> ">>") (number_literal "7")) () ")"))) (| "|") (number_literal "0x80"))) (; ";")) (if_statement "if (param_3 >> 0xe == 0 && (param_2 >> 0xe == 0 && (param_3 & 0x3fff) == 0)) {\n    uVar2 = 2;\n    iVar5 = 1;\nLAB_0003b3d0:\n    abStack_2c[2] = bVar3 & 0x7f;\n    *(byte *)param_1 = abStack_2c[iVar5 + 2];\n    iVar4 = iVar5 + -2;\n    *(byte *)((int)param_1 + 1) = abStack_2c[iVar5 + 1];\n    if (iVar4 == -1) goto LAB_0003b337;\n  }\n  else {\n    abStack_2c[4] = (byte)(param_2 >> 0xe) | 0x80;\n    if (param_3 >> 0x15 == 0 && (param_2 >> 0x15 == 0 && (param_3 & 0x1fffff) == 0)) {\n      uVar2 = 3;\n      iVar5 = 2;\n      goto LAB_0003b3d0;\n    }\n    uVar6 = param_2 >> 0x1c | param_3 << 4;\n    abStack_2c[5] = (byte)(param_2 >> 0x15) | 0x80;\n    if (param_3 >> 0x1c == 0 && uVar6 == 0) {\n      uVar2 = 4;\n      iVar5 = 3;\n      goto LAB_0003b3d0;\n    }\n    abStack_2c[6] = (byte)uVar6 | 0x80;\n    if (param_3 >> 3 == 0) {\n      uVar2 = 5;\n      iVar5 = 4;\n      goto LAB_0003b3d0;\n    }\n    abStack_2c[7] = (byte)(param_3 >> 3) | 0x80;\n    if (param_3 >> 10 == 0) {\n      uVar2 = 6;\n      iVar5 = 5;\n      goto LAB_0003b3d0;\n    }\n    local_24 = CONCAT11(local_24._1_1_,(char)(param_3 >> 10)) | 0x80;\n    if (param_3 >> 0x11 == 0) {\n      uVar2 = 7;\n      iVar5 = 6;\n      goto LAB_0003b3d0;\n    }\n    abStack_2c[2] = bVar3 & 0x7f;\n    iVar4 = 5;\n    uVar1 = CONCAT11((char)(param_3 >> 0x11),(undefined1)local_24);\n    local_24 = uVar1 | 0x8000;\n    *param_1 = uVar1 << 8 | local_24 >> 8;\n    uVar2 = 8;\n  }" (if "if") (parenthesized_expression "(param_3 >> 0xe == 0 && (param_2 >> 0xe == 0 && (param_3 & 0x3fff) == 0))" (( "(") (binary_expression "param_3 >> 0xe == 0 && (param_2 >> 0xe == 0 && (param_3 & 0x3fff) == 0)" (binary_expression "param_3 >> 0xe == 0" (binary_expression "param_3 >> 0xe" (identifier "param_3") (>> ">>") (number_literal "0xe")) (== "==") (number_literal "0")) (&& "&&") (parenthesized_expression "(param_2 >> 0xe == 0 && (param_3 & 0x3fff) == 0)" (( "(") (binary_expression "param_2 >> 0xe == 0 && (param_3 & 0x3fff) == 0" (binary_expression "param_2 >> 0xe == 0" (binary_expression "param_2 >> 0xe" (identifier "param_2") (>> ">>") (number_literal "0xe")) (== "==") (number_literal "0")) (&& "&&") (binary_expression "(param_3 & 0x3fff) == 0" (parenthesized_expression "(param_3 & 0x3fff)" (( "(") (binary_expression "param_3 & 0x3fff" (identifier "param_3") (& "&") (number_literal "0x3fff")) () ")")) (== "==") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n    uVar2 = 2;\n    iVar5 = 1;\nLAB_0003b3d0:\n    abStack_2c[2] = bVar3 & 0x7f;\n    *(byte *)param_1 = abStack_2c[iVar5 + 2];\n    iVar4 = iVar5 + -2;\n    *(byte *)((int)param_1 + 1) = abStack_2c[iVar5 + 1];\n    if (iVar4 == -1) goto LAB_0003b337;\n  }" ({ "{") (expression_statement "uVar2 = 2;" (assignment_expression "uVar2 = 2" (identifier "uVar2") (= "=") (number_literal "2")) (; ";")) (expression_statement "iVar5 = 1;" (assignment_expression "iVar5 = 1" (identifier "iVar5") (= "=") (number_literal "1")) (; ";")) (labeled_statement "LAB_0003b3d0:\n    abStack_2c[2] = bVar3 & 0x7f;" (statement_identifier "LAB_0003b3d0") (: ":") (expression_statement "abStack_2c[2] = bVar3 & 0x7f;" (assignment_expression "abStack_2c[2] = bVar3 & 0x7f" (subscript_expression "abStack_2c[2]" (identifier "abStack_2c") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "bVar3 & 0x7f" (identifier "bVar3") (& "&") (number_literal "0x7f"))) (; ";"))) (expression_statement "*(byte *)param_1 = abStack_2c[iVar5 + 2];" (assignment_expression "*(byte *)param_1 = abStack_2c[iVar5 + 2]" (pointer_expression "*(byte *)param_1" (* "*") (cast_expression "(byte *)param_1" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_1"))) (= "=") (subscript_expression "abStack_2c[iVar5 + 2]" (identifier "abStack_2c") ([ "[") (binary_expression "iVar5 + 2" (identifier "iVar5") (+ "+") (number_literal "2")) (] "]"))) (; ";")) (expression_statement "iVar4 = iVar5 + -2;" (assignment_expression "iVar4 = iVar5 + -2" (identifier "iVar4") (= "=") (binary_expression "iVar5 + -2" (identifier "iVar5") (+ "+") (number_literal "-2"))) (; ";")) (expression_statement "*(byte *)((int)param_1 + 1) = abStack_2c[iVar5 + 1];" (assignment_expression "*(byte *)((int)param_1 + 1) = abStack_2c[iVar5 + 1]" (pointer_expression "*(byte *)((int)param_1 + 1)" (* "*") (cast_expression "(byte *)((int)param_1 + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + 1)" (( "(") (binary_expression "(int)param_1 + 1" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "1")) () ")")))) (= "=") (subscript_expression "abStack_2c[iVar5 + 1]" (identifier "abStack_2c") ([ "[") (binary_expression "iVar5 + 1" (identifier "iVar5") (+ "+") (number_literal "1")) (] "]"))) (; ";")) (if_statement "if (iVar4 == -1) goto LAB_0003b337;" (if "if") (parenthesized_expression "(iVar4 == -1)" (( "(") (binary_expression "iVar4 == -1" (identifier "iVar4") (== "==") (number_literal "-1")) () ")")) (goto_statement "goto LAB_0003b337;" (goto "goto") (statement_identifier "LAB_0003b337") (; ";"))) (} "}")) (else_clause "else {\n    abStack_2c[4] = (byte)(param_2 >> 0xe) | 0x80;\n    if (param_3 >> 0x15 == 0 && (param_2 >> 0x15 == 0 && (param_3 & 0x1fffff) == 0)) {\n      uVar2 = 3;\n      iVar5 = 2;\n      goto LAB_0003b3d0;\n    }\n    uVar6 = param_2 >> 0x1c | param_3 << 4;\n    abStack_2c[5] = (byte)(param_2 >> 0x15) | 0x80;\n    if (param_3 >> 0x1c == 0 && uVar6 == 0) {\n      uVar2 = 4;\n      iVar5 = 3;\n      goto LAB_0003b3d0;\n    }\n    abStack_2c[6] = (byte)uVar6 | 0x80;\n    if (param_3 >> 3 == 0) {\n      uVar2 = 5;\n      iVar5 = 4;\n      goto LAB_0003b3d0;\n    }\n    abStack_2c[7] = (byte)(param_3 >> 3) | 0x80;\n    if (param_3 >> 10 == 0) {\n      uVar2 = 6;\n      iVar5 = 5;\n      goto LAB_0003b3d0;\n    }\n    local_24 = CONCAT11(local_24._1_1_,(char)(param_3 >> 10)) | 0x80;\n    if (param_3 >> 0x11 == 0) {\n      uVar2 = 7;\n      iVar5 = 6;\n      goto LAB_0003b3d0;\n    }\n    abStack_2c[2] = bVar3 & 0x7f;\n    iVar4 = 5;\n    uVar1 = CONCAT11((char)(param_3 >> 0x11),(undefined1)local_24);\n    local_24 = uVar1 | 0x8000;\n    *param_1 = uVar1 << 8 | local_24 >> 8;\n    uVar2 = 8;\n  }" (else "else") (compound_statement "{\n    abStack_2c[4] = (byte)(param_2 >> 0xe) | 0x80;\n    if (param_3 >> 0x15 == 0 && (param_2 >> 0x15 == 0 && (param_3 & 0x1fffff) == 0)) {\n      uVar2 = 3;\n      iVar5 = 2;\n      goto LAB_0003b3d0;\n    }\n    uVar6 = param_2 >> 0x1c | param_3 << 4;\n    abStack_2c[5] = (byte)(param_2 >> 0x15) | 0x80;\n    if (param_3 >> 0x1c == 0 && uVar6 == 0) {\n      uVar2 = 4;\n      iVar5 = 3;\n      goto LAB_0003b3d0;\n    }\n    abStack_2c[6] = (byte)uVar6 | 0x80;\n    if (param_3 >> 3 == 0) {\n      uVar2 = 5;\n      iVar5 = 4;\n      goto LAB_0003b3d0;\n    }\n    abStack_2c[7] = (byte)(param_3 >> 3) | 0x80;\n    if (param_3 >> 10 == 0) {\n      uVar2 = 6;\n      iVar5 = 5;\n      goto LAB_0003b3d0;\n    }\n    local_24 = CONCAT11(local_24._1_1_,(char)(param_3 >> 10)) | 0x80;\n    if (param_3 >> 0x11 == 0) {\n      uVar2 = 7;\n      iVar5 = 6;\n      goto LAB_0003b3d0;\n    }\n    abStack_2c[2] = bVar3 & 0x7f;\n    iVar4 = 5;\n    uVar1 = CONCAT11((char)(param_3 >> 0x11),(undefined1)local_24);\n    local_24 = uVar1 | 0x8000;\n    *param_1 = uVar1 << 8 | local_24 >> 8;\n    uVar2 = 8;\n  }" ({ "{") (expression_statement "abStack_2c[4] = (byte)(param_2 >> 0xe) | 0x80;" (assignment_expression "abStack_2c[4] = (byte)(param_2 >> 0xe) | 0x80" (subscript_expression "abStack_2c[4]" (identifier "abStack_2c") ([ "[") (number_literal "4") (] "]")) (= "=") (binary_expression "(byte)(param_2 >> 0xe) | 0x80" (call_expression "(byte)(param_2 >> 0xe)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(param_2 >> 0xe)" (( "(") (binary_expression "param_2 >> 0xe" (identifier "param_2") (>> ">>") (number_literal "0xe")) () ")"))) (| "|") (number_literal "0x80"))) (; ";")) (if_statement "if (param_3 >> 0x15 == 0 && (param_2 >> 0x15 == 0 && (param_3 & 0x1fffff) == 0)) {\n      uVar2 = 3;\n      iVar5 = 2;\n      goto LAB_0003b3d0;\n    }" (if "if") (parenthesized_expression "(param_3 >> 0x15 == 0 && (param_2 >> 0x15 == 0 && (param_3 & 0x1fffff) == 0))" (( "(") (binary_expression "param_3 >> 0x15 == 0 && (param_2 >> 0x15 == 0 && (param_3 & 0x1fffff) == 0)" (binary_expression "param_3 >> 0x15 == 0" (binary_expression "param_3 >> 0x15" (identifier "param_3") (>> ">>") (number_literal "0x15")) (== "==") (number_literal "0")) (&& "&&") (parenthesized_expression "(param_2 >> 0x15 == 0 && (param_3 & 0x1fffff) == 0)" (( "(") (binary_expression "param_2 >> 0x15 == 0 && (param_3 & 0x1fffff) == 0" (binary_expression "param_2 >> 0x15 == 0" (binary_expression "param_2 >> 0x15" (identifier "param_2") (>> ">>") (number_literal "0x15")) (== "==") (number_literal "0")) (&& "&&") (binary_expression "(param_3 & 0x1fffff) == 0" (parenthesized_expression "(param_3 & 0x1fffff)" (( "(") (binary_expression "param_3 & 0x1fffff" (identifier "param_3") (& "&") (number_literal "0x1fffff")) () ")")) (== "==") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n      uVar2 = 3;\n      iVar5 = 2;\n      goto LAB_0003b3d0;\n    }" ({ "{") (expression_statement "uVar2 = 3;" (assignment_expression "uVar2 = 3" (identifier "uVar2") (= "=") (number_literal "3")) (; ";")) (expression_statement "iVar5 = 2;" (assignment_expression "iVar5 = 2" (identifier "iVar5") (= "=") (number_literal "2")) (; ";")) (goto_statement "goto LAB_0003b3d0;" (goto "goto") (statement_identifier "LAB_0003b3d0") (; ";")) (} "}"))) (expression_statement "uVar6 = param_2 >> 0x1c | param_3 << 4;" (assignment_expression "uVar6 = param_2 >> 0x1c | param_3 << 4" (identifier "uVar6") (= "=") (binary_expression "param_2 >> 0x1c | param_3 << 4" (binary_expression "param_2 >> 0x1c" (identifier "param_2") (>> ">>") (number_literal "0x1c")) (| "|") (binary_expression "param_3 << 4" (identifier "param_3") (<< "<<") (number_literal "4")))) (; ";")) (expression_statement "abStack_2c[5] = (byte)(param_2 >> 0x15) | 0x80;" (assignment_expression "abStack_2c[5] = (byte)(param_2 >> 0x15) | 0x80" (subscript_expression "abStack_2c[5]" (identifier "abStack_2c") ([ "[") (number_literal "5") (] "]")) (= "=") (binary_expression "(byte)(param_2 >> 0x15) | 0x80" (call_expression "(byte)(param_2 >> 0x15)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(param_2 >> 0x15)" (( "(") (binary_expression "param_2 >> 0x15" (identifier "param_2") (>> ">>") (number_literal "0x15")) () ")"))) (| "|") (number_literal "0x80"))) (; ";")) (if_statement "if (param_3 >> 0x1c == 0 && uVar6 == 0) {\n      uVar2 = 4;\n      iVar5 = 3;\n      goto LAB_0003b3d0;\n    }" (if "if") (parenthesized_expression "(param_3 >> 0x1c == 0 && uVar6 == 0)" (( "(") (binary_expression "param_3 >> 0x1c == 0 && uVar6 == 0" (binary_expression "param_3 >> 0x1c == 0" (binary_expression "param_3 >> 0x1c" (identifier "param_3") (>> ">>") (number_literal "0x1c")) (== "==") (number_literal "0")) (&& "&&") (binary_expression "uVar6 == 0" (identifier "uVar6") (== "==") (number_literal "0"))) () ")")) (compound_statement "{\n      uVar2 = 4;\n      iVar5 = 3;\n      goto LAB_0003b3d0;\n    }" ({ "{") (expression_statement "uVar2 = 4;" (assignment_expression "uVar2 = 4" (identifier "uVar2") (= "=") (number_literal "4")) (; ";")) (expression_statement "iVar5 = 3;" (assignment_expression "iVar5 = 3" (identifier "iVar5") (= "=") (number_literal "3")) (; ";")) (goto_statement "goto LAB_0003b3d0;" (goto "goto") (statement_identifier "LAB_0003b3d0") (; ";")) (} "}"))) (expression_statement "abStack_2c[6] = (byte)uVar6 | 0x80;" (assignment_expression "abStack_2c[6] = (byte)uVar6 | 0x80" (subscript_expression "abStack_2c[6]" (identifier "abStack_2c") ([ "[") (number_literal "6") (] "]")) (= "=") (binary_expression "(byte)uVar6 | 0x80" (cast_expression "(byte)uVar6" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar6")) (| "|") (number_literal "0x80"))) (; ";")) (if_statement "if (param_3 >> 3 == 0) {\n      uVar2 = 5;\n      iVar5 = 4;\n      goto LAB_0003b3d0;\n    }" (if "if") (parenthesized_expression "(param_3 >> 3 == 0)" (( "(") (binary_expression "param_3 >> 3 == 0" (binary_expression "param_3 >> 3" (identifier "param_3") (>> ">>") (number_literal "3")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      uVar2 = 5;\n      iVar5 = 4;\n      goto LAB_0003b3d0;\n    }" ({ "{") (expression_statement "uVar2 = 5;" (assignment_expression "uVar2 = 5" (identifier "uVar2") (= "=") (number_literal "5")) (; ";")) (expression_statement "iVar5 = 4;" (assignment_expression "iVar5 = 4" (identifier "iVar5") (= "=") (number_literal "4")) (; ";")) (goto_statement "goto LAB_0003b3d0;" (goto "goto") (statement_identifier "LAB_0003b3d0") (; ";")) (} "}"))) (expression_statement "abStack_2c[7] = (byte)(param_3 >> 3) | 0x80;" (assignment_expression "abStack_2c[7] = (byte)(param_3 >> 3) | 0x80" (subscript_expression "abStack_2c[7]" (identifier "abStack_2c") ([ "[") (number_literal "7") (] "]")) (= "=") (binary_expression "(byte)(param_3 >> 3) | 0x80" (call_expression "(byte)(param_3 >> 3)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(param_3 >> 3)" (( "(") (binary_expression "param_3 >> 3" (identifier "param_3") (>> ">>") (number_literal "3")) () ")"))) (| "|") (number_literal "0x80"))) (; ";")) (if_statement "if (param_3 >> 10 == 0) {\n      uVar2 = 6;\n      iVar5 = 5;\n      goto LAB_0003b3d0;\n    }" (if "if") (parenthesized_expression "(param_3 >> 10 == 0)" (( "(") (binary_expression "param_3 >> 10 == 0" (binary_expression "param_3 >> 10" (identifier "param_3") (>> ">>") (number_literal "10")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      uVar2 = 6;\n      iVar5 = 5;\n      goto LAB_0003b3d0;\n    }" ({ "{") (expression_statement "uVar2 = 6;" (assignment_expression "uVar2 = 6" (identifier "uVar2") (= "=") (number_literal "6")) (; ";")) (expression_statement "iVar5 = 5;" (assignment_expression "iVar5 = 5" (identifier "iVar5") (= "=") (number_literal "5")) (; ";")) (goto_statement "goto LAB_0003b3d0;" (goto "goto") (statement_identifier "LAB_0003b3d0") (; ";")) (} "}"))) (expression_statement "local_24 = CONCAT11(local_24._1_1_,(char)(param_3 >> 10)) | 0x80;" (assignment_expression "local_24 = CONCAT11(local_24._1_1_,(char)(param_3 >> 10)) | 0x80" (identifier "local_24") (= "=") (binary_expression "CONCAT11(local_24._1_1_,(char)(param_3 >> 10)) | 0x80" (call_expression "CONCAT11(local_24._1_1_,(char)(param_3 >> 10))" (identifier "CONCAT11") (argument_list "(local_24._1_1_,(char)(param_3 >> 10))" (( "(") (field_expression "local_24._1_1_" (identifier "local_24") (. ".") (field_identifier "_1_1_")) (, ",") (cast_expression "(char)(param_3 >> 10)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "(param_3 >> 10)" (( "(") (binary_expression "param_3 >> 10" (identifier "param_3") (>> ">>") (number_literal "10")) () ")"))) () ")"))) (| "|") (number_literal "0x80"))) (; ";")) (if_statement "if (param_3 >> 0x11 == 0) {\n      uVar2 = 7;\n      iVar5 = 6;\n      goto LAB_0003b3d0;\n    }" (if "if") (parenthesized_expression "(param_3 >> 0x11 == 0)" (( "(") (binary_expression "param_3 >> 0x11 == 0" (binary_expression "param_3 >> 0x11" (identifier "param_3") (>> ">>") (number_literal "0x11")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      uVar2 = 7;\n      iVar5 = 6;\n      goto LAB_0003b3d0;\n    }" ({ "{") (expression_statement "uVar2 = 7;" (assignment_expression "uVar2 = 7" (identifier "uVar2") (= "=") (number_literal "7")) (; ";")) (expression_statement "iVar5 = 6;" (assignment_expression "iVar5 = 6" (identifier "iVar5") (= "=") (number_literal "6")) (; ";")) (goto_statement "goto LAB_0003b3d0;" (goto "goto") (statement_identifier "LAB_0003b3d0") (; ";")) (} "}"))) (expression_statement "abStack_2c[2] = bVar3 & 0x7f;" (assignment_expression "abStack_2c[2] = bVar3 & 0x7f" (subscript_expression "abStack_2c[2]" (identifier "abStack_2c") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "bVar3 & 0x7f" (identifier "bVar3") (& "&") (number_literal "0x7f"))) (; ";")) (expression_statement "iVar4 = 5;" (assignment_expression "iVar4 = 5" (identifier "iVar4") (= "=") (number_literal "5")) (; ";")) (expression_statement "uVar1 = CONCAT11((char)(param_3 >> 0x11),(undefined1)local_24);" (assignment_expression "uVar1 = CONCAT11((char)(param_3 >> 0x11),(undefined1)local_24)" (identifier "uVar1") (= "=") (call_expression "CONCAT11((char)(param_3 >> 0x11),(undefined1)local_24)" (identifier "CONCAT11") (argument_list "((char)(param_3 >> 0x11),(undefined1)local_24)" (( "(") (cast_expression "(char)(param_3 >> 0x11)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "(param_3 >> 0x11)" (( "(") (binary_expression "param_3 >> 0x11" (identifier "param_3") (>> ">>") (number_literal "0x11")) () ")"))) (, ",") (cast_expression "(undefined1)local_24" (( "(") (type_descriptor "undefined1" (type_identifier "undefined1")) () ")") (identifier "local_24")) () ")")))) (; ";")) (expression_statement "local_24 = uVar1 | 0x8000;" (assignment_expression "local_24 = uVar1 | 0x8000" (identifier "local_24") (= "=") (binary_expression "uVar1 | 0x8000" (identifier "uVar1") (| "|") (number_literal "0x8000"))) (; ";")) (expression_statement "*param_1 = uVar1 << 8 | local_24 >> 8;" (assignment_expression "*param_1 = uVar1 << 8 | local_24 >> 8" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (binary_expression "uVar1 << 8 | local_24 >> 8" (binary_expression "uVar1 << 8" (identifier "uVar1") (<< "<<") (number_literal "8")) (| "|") (binary_expression "local_24 >> 8" (identifier "local_24") (>> ">>") (number_literal "8")))) (; ";")) (expression_statement "uVar2 = 8;" (assignment_expression "uVar2 = 8" (identifier "uVar2") (= "=") (number_literal "8")) (; ";")) (} "}")))) (expression_statement "*(byte *)(param_1 + 1) = abStack_2c[iVar4 + 2];" (assignment_expression "*(byte *)(param_1 + 1) = abStack_2c[iVar4 + 2]" (pointer_expression "*(byte *)(param_1 + 1)" (* "*") (cast_expression "(byte *)(param_1 + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 1)" (( "(") (binary_expression "param_1 + 1" (identifier "param_1") (+ "+") (number_literal "1")) () ")")))) (= "=") (subscript_expression "abStack_2c[iVar4 + 2]" (identifier "abStack_2c") ([ "[") (binary_expression "iVar4 + 2" (identifier "iVar4") (+ "+") (number_literal "2")) (] "]"))) (; ";")) (if_statement "if ((((iVar4 != 0) && (*(byte *)((int)param_1 + 3) = abStack_2c[iVar4 + 1], iVar4 != 1)) &&\n      (*(byte *)(param_1 + 2) = abStack_2c[iVar4], iVar4 != 2)) &&\n     ((*(byte *)((int)param_1 + 5) = abStack_2c[iVar4 + -1], iVar4 != 3 &&\n      (*(byte *)(param_1 + 3) = abStack_2c[iVar4 + -2], iVar4 != 4)))) {\n    *(byte *)((int)param_1 + 7) = abStack_2c[2];\n  }" (if "if") (parenthesized_expression "((((iVar4 != 0) && (*(byte *)((int)param_1 + 3) = abStack_2c[iVar4 + 1], iVar4 != 1)) &&\n      (*(byte *)(param_1 + 2) = abStack_2c[iVar4], iVar4 != 2)) &&\n     ((*(byte *)((int)param_1 + 5) = abStack_2c[iVar4 + -1], iVar4 != 3 &&\n      (*(byte *)(param_1 + 3) = abStack_2c[iVar4 + -2], iVar4 != 4))))" (( "(") (binary_expression "(((iVar4 != 0) && (*(byte *)((int)param_1 + 3) = abStack_2c[iVar4 + 1], iVar4 != 1)) &&\n      (*(byte *)(param_1 + 2) = abStack_2c[iVar4], iVar4 != 2)) &&\n     ((*(byte *)((int)param_1 + 5) = abStack_2c[iVar4 + -1], iVar4 != 3 &&\n      (*(byte *)(param_1 + 3) = abStack_2c[iVar4 + -2], iVar4 != 4)))" (parenthesized_expression "(((iVar4 != 0) && (*(byte *)((int)param_1 + 3) = abStack_2c[iVar4 + 1], iVar4 != 1)) &&\n      (*(byte *)(param_1 + 2) = abStack_2c[iVar4], iVar4 != 2))" (( "(") (binary_expression "((iVar4 != 0) && (*(byte *)((int)param_1 + 3) = abStack_2c[iVar4 + 1], iVar4 != 1)) &&\n      (*(byte *)(param_1 + 2) = abStack_2c[iVar4], iVar4 != 2)" (parenthesized_expression "((iVar4 != 0) && (*(byte *)((int)param_1 + 3) = abStack_2c[iVar4 + 1], iVar4 != 1))" (( "(") (binary_expression "(iVar4 != 0) && (*(byte *)((int)param_1 + 3) = abStack_2c[iVar4 + 1], iVar4 != 1)" (parenthesized_expression "(iVar4 != 0)" (( "(") (binary_expression "iVar4 != 0" (identifier "iVar4") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(*(byte *)((int)param_1 + 3) = abStack_2c[iVar4 + 1], iVar4 != 1)" (( "(") (comma_expression "*(byte *)((int)param_1 + 3) = abStack_2c[iVar4 + 1], iVar4 != 1" (assignment_expression "*(byte *)((int)param_1 + 3) = abStack_2c[iVar4 + 1]" (pointer_expression "*(byte *)((int)param_1 + 3)" (* "*") (cast_expression "(byte *)((int)param_1 + 3)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + 3)" (( "(") (binary_expression "(int)param_1 + 3" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "3")) () ")")))) (= "=") (subscript_expression "abStack_2c[iVar4 + 1]" (identifier "abStack_2c") ([ "[") (binary_expression "iVar4 + 1" (identifier "iVar4") (+ "+") (number_literal "1")) (] "]"))) (, ",") (binary_expression "iVar4 != 1" (identifier "iVar4") (!= "!=") (number_literal "1"))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(*(byte *)(param_1 + 2) = abStack_2c[iVar4], iVar4 != 2)" (( "(") (comma_expression "*(byte *)(param_1 + 2) = abStack_2c[iVar4], iVar4 != 2" (assignment_expression "*(byte *)(param_1 + 2) = abStack_2c[iVar4]" (pointer_expression "*(byte *)(param_1 + 2)" (* "*") (cast_expression "(byte *)(param_1 + 2)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 2)" (( "(") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2")) () ")")))) (= "=") (subscript_expression "abStack_2c[iVar4]" (identifier "abStack_2c") ([ "[") (identifier "iVar4") (] "]"))) (, ",") (binary_expression "iVar4 != 2" (identifier "iVar4") (!= "!=") (number_literal "2"))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "((*(byte *)((int)param_1 + 5) = abStack_2c[iVar4 + -1], iVar4 != 3 &&\n      (*(byte *)(param_1 + 3) = abStack_2c[iVar4 + -2], iVar4 != 4)))" (( "(") (parenthesized_expression "(*(byte *)((int)param_1 + 5) = abStack_2c[iVar4 + -1], iVar4 != 3 &&\n      (*(byte *)(param_1 + 3) = abStack_2c[iVar4 + -2], iVar4 != 4))" (( "(") (comma_expression "*(byte *)((int)param_1 + 5) = abStack_2c[iVar4 + -1], iVar4 != 3 &&\n      (*(byte *)(param_1 + 3) = abStack_2c[iVar4 + -2], iVar4 != 4)" (assignment_expression "*(byte *)((int)param_1 + 5) = abStack_2c[iVar4 + -1]" (pointer_expression "*(byte *)((int)param_1 + 5)" (* "*") (cast_expression "(byte *)((int)param_1 + 5)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + 5)" (( "(") (binary_expression "(int)param_1 + 5" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "5")) () ")")))) (= "=") (subscript_expression "abStack_2c[iVar4 + -1]" (identifier "abStack_2c") ([ "[") (binary_expression "iVar4 + -1" (identifier "iVar4") (+ "+") (number_literal "-1")) (] "]"))) (, ",") (binary_expression "iVar4 != 3 &&\n      (*(byte *)(param_1 + 3) = abStack_2c[iVar4 + -2], iVar4 != 4)" (binary_expression "iVar4 != 3" (identifier "iVar4") (!= "!=") (number_literal "3")) (&& "&&") (parenthesized_expression "(*(byte *)(param_1 + 3) = abStack_2c[iVar4 + -2], iVar4 != 4)" (( "(") (comma_expression "*(byte *)(param_1 + 3) = abStack_2c[iVar4 + -2], iVar4 != 4" (assignment_expression "*(byte *)(param_1 + 3) = abStack_2c[iVar4 + -2]" (pointer_expression "*(byte *)(param_1 + 3)" (* "*") (cast_expression "(byte *)(param_1 + 3)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 3)" (( "(") (binary_expression "param_1 + 3" (identifier "param_1") (+ "+") (number_literal "3")) () ")")))) (= "=") (subscript_expression "abStack_2c[iVar4 + -2]" (identifier "abStack_2c") ([ "[") (binary_expression "iVar4 + -2" (identifier "iVar4") (+ "+") (number_literal "-2")) (] "]"))) (, ",") (binary_expression "iVar4 != 4" (identifier "iVar4") (!= "!=") (number_literal "4"))) () ")")))) () ")")) () ")"))) () ")")) (compound_statement "{\n    *(byte *)((int)param_1 + 7) = abStack_2c[2];\n  }" ({ "{") (expression_statement "*(byte *)((int)param_1 + 7) = abStack_2c[2];" (assignment_expression "*(byte *)((int)param_1 + 7) = abStack_2c[2]" (pointer_expression "*(byte *)((int)param_1 + 7)" (* "*") (cast_expression "(byte *)((int)param_1 + 7)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + 7)" (( "(") (binary_expression "(int)param_1 + 7" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "7")) () ")")))) (= "=") (subscript_expression "abStack_2c[2]" (identifier "abStack_2c") ([ "[") (number_literal "2") (] "]"))) (; ";")) (} "}"))) (labeled_statement "LAB_0003b337:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    uStack_30 = &UNK_0003b454;\n    FUN_00153870();\n  }" (statement_identifier "LAB_0003b337") (: ":") (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    uStack_30 = &UNK_0003b454;\n    FUN_00153870();\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                    \n    uStack_30 = &UNK_0003b454;\n    FUN_00153870();\n  }" ({ "{") (expression_statement "uStack_30 = &UNK_0003b454;" (assignment_expression "uStack_30 = &UNK_0003b454" (identifier "uStack_30") (= "=") (pointer_expression "&UNK_0003b454" (& "&") (identifier "UNK_0003b454"))) (; ";")) (expression_statement "FUN_00153870();" (call_expression "FUN_00153870()" (identifier "FUN_00153870") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (return_statement "return uVar2;" (return "return") (identifier "uVar2") (; ";")) (} "}")))

int __regparm3 function_1(type_1 *p,type_2 v)

{
  int var_10;
  type_3 var_9;
  int iVar3;
  type_4 var_2;
  type_5 var_4;
  type_4 var_3;
  int var_6;
  int var_5;
  type_4 var_7;
  int var_1;
  type_6 uStack_30;
  type_1 auStack_2c [2];
  type_7 buf [10];
  
  var_10 = *(int *)(var_1 + 0x14);
  var_4 = (type_5)var_3;
  if ((var_2 & 0xff000000) != 0) {
    p[8] = var_4;
    p[7] = (type_5)(var_3 >> 8) | 0x80;
    p[6] = (type_5)(var_3 >> 0xf) | 0x80;
    p[5] = (type_5)(var_3 >> 0x16) | 0x80;
    p[4] = (type_5)(var_3 >> 0x1d) | (type_5)(var_2 << 3) | 0x80;
    p[3] = (type_5)(var_2 >> 4) | 0x80;
    p[2] = (type_5)(var_2 >> 0xb) | 0x80;
    p[1] = (type_5)(var_2 >> 0x12) | 0x80;
    *p = (type_5)(var_2 >> 0x19) | 0x80;
    iVar3 = 9;
    goto LAB_0003b337;
  }
  if (var_2 >> 7 == 0 && (var_3 >> 7 == 0 && (var_2 & 0x7f) == 0)) {
    buf[0] = var_4 & 0x7f;
    *p = buf[0];
    iVar3 = 1;
    goto LAB_0003b337;
  }
  buf[1] = (type_5)(var_3 >> 7) | 0x80;
  if (var_2 >> 0xe == 0 && (var_3 >> 0xe == 0 && (var_2 & 0x3fff) == 0)) {
    iVar3 = 2;
    var_5 = 1;
LAB_0003b3d0:
    buf[0] = var_4 & 0x7f;
    *p = buf[var_5];
    var_6 = var_5 + -2;
    p[1] = auStack_2c[var_5 + 1];
    if (var_6 == -1) goto LAB_0003b337;
  }
  else {
    buf[2] = (type_5)(var_3 >> 0xe) | 0x80;
    if (var_2 >> 0x15 == 0 && (var_3 >> 0x15 == 0 && (var_2 & 0x1fffff) == 0)) {
      iVar3 = 3;
      var_5 = 2;
      goto LAB_0003b3d0;
    }
    var_7 = var_3 >> 0x1c | var_2 << 4;
    buf[3] = (type_5)(var_3 >> 0x15) | 0x80;
    if (var_2 >> 0x1c == 0 && var_7 == 0) {
      iVar3 = 4;
      var_5 = 3;
      goto LAB_0003b3d0;
    }
    buf[4] = (type_5)var_7 | 0x80;
    if (var_2 >> 3 == 0) {
      iVar3 = 5;
      var_5 = 4;
      goto LAB_0003b3d0;
    }
    buf[5] = (type_5)(var_2 >> 3) | 0x80;
    if (var_2 >> 10 == 0) {
      iVar3 = 6;
      var_5 = 5;
      goto LAB_0003b3d0;
    }
    buf._6_2_ = var_8(buf[7],(char)(var_2 >> 10)) | 0x80;
    if (var_2 >> 0x11 == 0) {
      iVar3 = 7;
      var_5 = 6;
      goto LAB_0003b3d0;
    }
    buf[0] = var_4 & 0x7f;
    var_6 = 5;
    var_9 = var_8((char)(var_2 >> 0x11),buf[6]);
    buf._6_2_ = var_9 | 0x8000;
    *(type_3 *)p = var_9 << 8 | (type_3)buf._6_2_ >> 8;
    iVar3 = 8;
  }
  p[2] = buf[var_6];
  if ((((var_6 != 0) && (p[3] = auStack_2c[var_6 + 1], var_6 != 1)) &&
      (p[4] = auStack_2c[var_6], var_6 != 2)) &&
     ((p[5] = auStack_2c[var_6 + -1], var_6 != 3 && (p[6] = auStack_2c[var_6 + -2], var_6 != 4)))) {
    p[7] = buf[0];
  }
LAB_0003b337:
  if (var_10 != *(int *)(var_1 + 0x14)) {
                    /* WARNING: Subroutine does not return */
    uStack_30 = &UNK_0003b454;
    var_11();
  }
  return iVar3;
}


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

undefined4 __regparm3 MASKED(ushort *param_1,uint param_2,uint param_3)

{
  ushort uVar1;
  undefined4 uVar2;
  byte bVar3;
  int iVar4;
  int iVar5;
  uint uVar6;
  int in_GS_OFFSET;
  undefined4 uStack_30;
  byte abStack_2c [8];
  undefined2 local_24;
  int local_20;
  
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  bVar3 = (byte)param_2;
  if ((param_3 & 0xff000000) != 0) {
    *(byte *)(param_1 + 4) = bVar3;
    *(byte *)((int)param_1 + 7) = (byte)(param_2 >> 8) | 0x80;
    *(byte *)(param_1 + 3) = (byte)(param_2 >> 0xf) | 0x80;
    *(byte *)((int)param_1 + 5) = (byte)(param_2 >> 0x16) | 0x80;
    *(byte *)(param_1 + 2) = (byte)(param_2 >> 0x1d) | (byte)(param_3 << 3) | 0x80;
    *(byte *)((int)param_1 + 3) = (byte)(param_3 >> 4) | 0x80;
    *(byte *)(param_1 + 1) = (byte)(param_3 >> 0xb) | 0x80;
    *(byte *)((int)param_1 + 1) = (byte)(param_3 >> 0x12) | 0x80;
    *(byte *)param_1 = (byte)(param_3 >> 0x19) | 0x80;
    uVar2 = 9;
    goto LAB_0003b337;
  }
  if (param_3 >> 7 == 0 && (param_2 >> 7 == 0 && (param_3 & 0x7f) == 0)) {
    abStack_2c[2] = bVar3 & 0x7f;
    *(byte *)param_1 = abStack_2c[2];
    uVar2 = 1;
    goto LAB_0003b337;
  }
  abStack_2c[3] = (byte)(param_2 >> 7) | 0x80;
  if (param_3 >> 0xe == 0 && (param_2 >> 0xe == 0 && (param_3 & 0x3fff) == 0)) {
    uVar2 = 2;
    iVar5 = 1;
LAB_0003b3d0:
    abStack_2c[2] = bVar3 & 0x7f;
    *(byte *)param_1 = abStack_2c[iVar5 + 2];
    iVar4 = iVar5 + -2;
    *(byte *)((int)param_1 + 1) = abStack_2c[iVar5 + 1];
    if (iVar4 == -1) goto LAB_0003b337;
  }
  else {
    abStack_2c[4] = (byte)(param_2 >> 0xe) | 0x80;
    if (param_3 >> 0x15 == 0 && (param_2 >> 0x15 == 0 && (param_3 & 0x1fffff) == 0)) {
      uVar2 = 3;
      iVar5 = 2;
      goto LAB_0003b3d0;
    }
    uVar6 = param_2 >> 0x1c | param_3 << 4;
    abStack_2c[5] = (byte)(param_2 >> 0x15) | 0x80;
    if (param_3 >> 0x1c == 0 && uVar6 == 0) {
      uVar2 = 4;
      iVar5 = 3;
      goto LAB_0003b3d0;
    }
    abStack_2c[6] = (byte)uVar6 | 0x80;
    if (param_3 >> 3 == 0) {
      uVar2 = 5;
      iVar5 = 4;
      goto LAB_0003b3d0;
    }
    abStack_2c[7] = (byte)(param_3 >> 3) | 0x80;
    if (param_3 >> 10 == 0) {
      uVar2 = 6;
      iVar5 = 5;
      goto LAB_0003b3d0;
    }
    local_24 = CONCAT11(local_24._1_1_,(char)(param_3 >> 10)) | 0x80;
    if (param_3 >> 0x11 == 0) {
      uVar2 = 7;
      iVar5 = 6;
      goto LAB_0003b3d0;
    }
    abStack_2c[2] = bVar3 & 0x7f;
    iVar4 = 5;
    uVar1 = CONCAT11((char)(param_3 >> 0x11),(undefined1)local_24);
    local_24 = uVar1 | 0x8000;
    *param_1 = uVar1 << 8 | local_24 >> 8;
    uVar2 = 8;
  }
  *(byte *)(param_1 + 1) = abStack_2c[iVar4 + 2];
  if ((((iVar4 != 0) && (*(byte *)((int)param_1 + 3) = abStack_2c[iVar4 + 1], iVar4 != 1)) &&
      (*(byte *)(param_1 + 2) = abStack_2c[iVar4], iVar4 != 2)) &&
     ((*(byte *)((int)param_1 + 5) = abStack_2c[iVar4 + -1], iVar4 != 3 &&
      (*(byte *)(param_1 + 3) = abStack_2c[iVar4 + -2], iVar4 != 4)))) {
    *(byte *)((int)param_1 + 7) = abStack_2c[2];
  }
LAB_0003b337:
  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    uStack_30 = &UNK_0003b454;
    FUN_00153870();
  }
  return uVar2;
}

