ReadUsercmd
0x0057b480 · 6690 bytes · __cdecl
_Z11ReadUsercmdP7bf_readP8CUserCmdS2_
Decompiled
undefined (3 params)
/* WARNING: Type propagation algorithm not settling */
/* ReadUsercmd(bf_read*, CUserCmd*, CUserCmd*) */
void ReadUsercmd(bf_read *param_1,CUserCmd *param_2,CUserCmd *param_3)
{
bf_read *pbVar1;
undefined4 *puVar2;
uint *puVar3;
uint uVar4;
undefined4 uVar5;
uint uVar6;
char cVar7;
CUserCmd CVar8;
uint *puVar9;
ushort uVar10;
int iVar11;
uint uVar12;
longdouble lVar13;
ushort local_24;
uint local_20;
if (param_2 != param_3) {
*(undefined4 *)(param_2 + 4) = *(undefined4 *)(param_3 + 4);
*(undefined4 *)(param_2 + 8) = *(undefined4 *)(param_3 + 8);
*(undefined4 *)(param_2 + 0xc) = *(undefined4 *)(param_3 + 0xc);
*(undefined4 *)(param_2 + 0x10) = *(undefined4 *)(param_3 + 0x10);
*(undefined4 *)(param_2 + 0x14) = *(undefined4 *)(param_3 + 0x14);
*(undefined4 *)(param_2 + 0x18) = *(undefined4 *)(param_3 + 0x18);
*(undefined4 *)(param_2 + 0x1c) = *(undefined4 *)(param_3 + 0x1c);
*(undefined4 *)(param_2 + 0x20) = *(undefined4 *)(param_3 + 0x20);
*(undefined4 *)(param_2 + 0x24) = *(undefined4 *)(param_3 + 0x24);
param_2[0x28] = param_3[0x28];
*(undefined4 *)(param_2 + 0x2c) = *(undefined4 *)(param_3 + 0x2c);
*(undefined4 *)(param_2 + 0x30) = *(undefined4 *)(param_3 + 0x30);
*(undefined4 *)(param_2 + 0x34) = *(undefined4 *)(param_3 + 0x34);
*(undefined2 *)(param_2 + 0x38) = *(undefined2 *)(param_3 + 0x38);
*(undefined2 *)(param_2 + 0x3a) = *(undefined2 *)(param_3 + 0x3a);
param_2[0x3c] = param_3[0x3c];
*(undefined4 *)(param_2 + 0x40) = *(undefined4 *)(param_3 + 0x40);
*(undefined4 *)(param_2 + 0x44) = *(undefined4 *)(param_3 + 0x44);
*(undefined4 *)(param_2 + 0x48) = *(undefined4 *)(param_3 + 0x48);
*(undefined4 *)(param_2 + 0x4c) = *(undefined4 *)(param_3 + 0x4c);
*(undefined4 *)(param_2 + 0x50) = *(undefined4 *)(param_3 + 0x50);
*(undefined4 *)(param_2 + 0x54) = *(undefined4 *)(param_3 + 0x54);
}
uVar12 = *(uint *)(param_1 + 0x10) & 1;
pbVar1 = param_1 + 0x14;
*(int *)pbVar1 = *(int *)pbVar1 + -1;
if (*(int *)pbVar1 == 0) {
puVar2 = *(undefined4 **)(param_1 + 0x18);
*(undefined4 *)(param_1 + 0x14) = 0x20;
if (puVar2 == *(undefined4 **)(param_1 + 0x1c)) {
*(undefined4 *)(param_1 + 0x14) = 1;
*(undefined4 *)(param_1 + 0x10) = 0;
*(undefined4 **)(param_1 + 0x18) = puVar2 + 1;
goto LAB_0057ba45;
}
if (puVar2 <= *(undefined4 **)(param_1 + 0x1c)) {
*(undefined4 **)(param_1 + 0x18) = puVar2 + 1;
*(undefined4 *)(param_1 + 0x10) = *puVar2;
goto LAB_0057ba45;
}
param_1[4] = (bf_read)0x1;
*(undefined4 *)(param_1 + 0x10) = 0;
if (uVar12 != 0) goto LAB_0057ba4d;
LAB_0057b592:
uVar12 = *(int *)(param_3 + 4) + 1;
}
else {
*(uint *)(param_1 + 0x10) = *(uint *)(param_1 + 0x10) >> 1;
LAB_0057ba45:
if (uVar12 == 0) goto LAB_0057b592;
LAB_0057ba4d:
iVar11 = *(int *)(param_1 + 0x14);
if (iVar11 < 0x20) {
puVar9 = *(uint **)(param_1 + 0x18);
uVar12 = *(uint *)(param_1 + 0x10);
if (puVar9 == *(uint **)(param_1 + 0x1c)) {
*(undefined4 *)(param_1 + 0x14) = 1;
*(uint **)(param_1 + 0x18) = puVar9 + 1;
uVar12 = 0;
*(undefined4 *)(param_1 + 0x10) = 0;
param_1[4] = (bf_read)0x1;
}
else {
if (puVar9 < *(uint **)(param_1 + 0x1c)) {
*(uint **)(param_1 + 0x18) = puVar9 + 1;
uVar6 = *puVar9;
*(uint *)(param_1 + 0x10) = uVar6;
if (param_1[4] == (bf_read)0x0) {
*(int *)(param_1 + 0x14) = iVar11;
local_20._0_1_ = (byte)(0x20 - iVar11);
uVar12 = (uVar6 & *(uint *)(CBitBuffer::s_nMaskTable + (0x20 - iVar11) * 4)) <<
((byte)iVar11 & 0x1f) | uVar12;
*(uint *)(param_1 + 0x10) = uVar6 >> ((byte)local_20 & 0x1f);
goto LAB_0057b598;
}
}
else {
param_1[4] = (bf_read)0x1;
*(undefined4 *)(param_1 + 0x10) = 0;
}
uVar12 = 0;
}
}
else {
*(int *)(param_1 + 0x14) = iVar11 + -0x20;
uVar12 = *(uint *)(param_1 + 0x10);
if (iVar11 + -0x20 == 0) {
puVar2 = *(undefined4 **)(param_1 + 0x18);
*(undefined4 *)(param_1 + 0x14) = 0x20;
if (puVar2 == *(undefined4 **)(param_1 + 0x1c)) {
*(undefined4 *)(param_1 + 0x14) = 1;
*(undefined4 *)(param_1 + 0x10) = 0;
*(undefined4 **)(param_1 + 0x18) = puVar2 + 1;
}
else {
if (*(undefined4 **)(param_1 + 0x1c) < puVar2) {
param_1[4] = (bf_read)0x1;
goto LAB_0057c390;
}
*(undefined4 **)(param_1 + 0x18) = puVar2 + 1;
*(undefined4 *)(param_1 + 0x10) = *puVar2;
}
}
else {
LAB_0057c390:
*(undefined4 *)(param_1 + 0x10) = 0;
}
}
}
LAB_0057b598:
*(uint *)(param_2 + 4) = uVar12;
uVar12 = *(uint *)(param_1 + 0x10) & 1;
pbVar1 = param_1 + 0x14;
*(int *)pbVar1 = *(int *)pbVar1 + -1;
if (*(int *)pbVar1 == 0) {
puVar2 = *(undefined4 **)(param_1 + 0x18);
*(undefined4 *)(param_1 + 0x14) = 0x20;
if (puVar2 == *(undefined4 **)(param_1 + 0x1c)) {
*(undefined4 *)(param_1 + 0x14) = 1;
*(undefined4 *)(param_1 + 0x10) = 0;
*(undefined4 **)(param_1 + 0x18) = puVar2 + 1;
goto LAB_0057bac5;
}
if (puVar2 <= *(undefined4 **)(param_1 + 0x1c)) {
*(undefined4 **)(param_1 + 0x18) = puVar2 + 1;
*(undefined4 *)(param_1 + 0x10) = *puVar2;
goto LAB_0057bac5;
}
param_1[4] = (bf_read)0x1;
*(undefined4 *)(param_1 + 0x10) = 0;
if (uVar12 != 0) goto LAB_0057bacd;
LAB_0057b5d9:
uVar12 = *(int *)(param_3 + 8) + 1;
}
else {
*(uint *)(param_1 + 0x10) = *(uint *)(param_1 + 0x10) >> 1;
LAB_0057bac5:
if (uVar12 == 0) goto LAB_0057b5d9;
LAB_0057bacd:
iVar11 = *(int *)(param_1 + 0x14);
if (iVar11 < 0x20) {
uVar12 = *(uint *)(param_1 + 0x10);
puVar9 = *(uint **)(param_1 + 0x18);
if (puVar9 == *(uint **)(param_1 + 0x1c)) {
*(undefined4 *)(param_1 + 0x14) = 1;
*(uint **)(param_1 + 0x18) = puVar9 + 1;
uVar12 = 0;
*(undefined4 *)(param_1 + 0x10) = 0;
param_1[4] = (bf_read)0x1;
}
else {
if (puVar9 < *(uint **)(param_1 + 0x1c)) {
*(uint **)(param_1 + 0x18) = puVar9 + 1;
uVar6 = *puVar9;
*(uint *)(param_1 + 0x10) = uVar6;
if (param_1[4] == (bf_read)0x0) {
*(int *)(param_1 + 0x14) = iVar11;
uVar12 = (*(uint *)(CBitBuffer::s_nMaskTable + (0x20 - iVar11) * 4) & uVar6) <<
((byte)iVar11 & 0x1f) | uVar12;
*(uint *)(param_1 + 0x10) = uVar6 >> ((byte)(0x20 - iVar11) & 0x1f);
goto LAB_0057b5df;
}
}
else {
param_1[4] = (bf_read)0x1;
*(undefined4 *)(param_1 + 0x10) = 0;
}
uVar12 = 0;
}
}
else {
*(int *)(param_1 + 0x14) = iVar11 + -0x20;
uVar12 = *(uint *)(param_1 + 0x10);
if (iVar11 + -0x20 == 0) {
puVar2 = *(undefined4 **)(param_1 + 0x18);
*(undefined4 *)(param_1 + 0x14) = 0x20;
if (puVar2 == *(undefined4 **)(param_1 + 0x1c)) {
*(undefined4 *)(param_1 + 0x14) = 1;
*(undefined4 *)(param_1 + 0x10) = 0;
*(undefined4 **)(param_1 + 0x18) = puVar2 + 1;
}
else {
if (*(undefined4 **)(param_1 + 0x1c) < puVar2) {
param_1[4] = (bf_read)0x1;
goto LAB_0057c34f;
}
*(undefined4 **)(param_1 + 0x18) = puVar2 + 1;
*(undefined4 *)(param_1 + 0x10) = *puVar2;
}
}
else {
LAB_0057c34f:
*(undefined4 *)(param_1 + 0x10) = 0;
}
}
}
LAB_0057b5df:
*(uint *)(param_2 + 8) = uVar12;
iVar11 = *(int *)(param_1 + 0x14) + -1;
*(int *)(param_1 + 0x14) = iVar11;
uVar12 = *(uint *)(param_1 + 0x10) & 1;
if (iVar11 == 0) {
puVar3 = *(uint **)(param_1 + 0x18);
*(undefined4 *)(param_1 + 0x14) = 0x20;
puVar9 = *(uint **)(param_1 + 0x1c);
if (puVar3 == puVar9) {
*(undefined4 *)(param_1 + 0x14) = 1;
*(undefined4 *)(param_1 + 0x10) = 0;
*(uint **)(param_1 + 0x18) = puVar3 + 1;
if (uVar12 != 0) {
local_20 = 0;
iVar11 = 1;
LAB_0057bb4c:
puVar3 = *(uint **)(param_1 + 0x18);
if (puVar3 == puVar9) {
*(undefined4 *)(param_1 + 0x14) = 1;
*(undefined4 *)(param_1 + 0x10) = 0;
*(uint **)(param_1 + 0x18) = puVar9 + 1;
param_1[4] = (bf_read)0x1;
}
else if (puVar9 < puVar3) {
param_1[4] = (bf_read)0x1;
*(undefined4 *)(param_1 + 0x10) = 0;
}
else {
*(uint **)(param_1 + 0x18) = puVar3 + 1;
uVar12 = *puVar3;
*(uint *)(param_1 + 0x10) = uVar12;
if (param_1[4] == (bf_read)0x0) {
uVar5 = *(undefined4 *)(param_1 + 0x14);
*(int *)(param_1 + 0x14) = iVar11;
local_20 = (uVar12 & *(uint *)(CBitBuffer::s_nMaskTable + (0x20 - iVar11) * 4)) <<
((byte)uVar5 & 0x1f) | local_20;
*(uint *)(param_1 + 0x10) = uVar12 >> ((byte)(0x20 - iVar11) & 0x1f);
goto LAB_0057c308;
}
}
local_20 = 0;
goto LAB_0057c308;
}
iVar11 = 1;
local_20 = 0;
}
else {
if (puVar9 < puVar3) {
param_1[4] = (bf_read)0x1;
local_20 = 0;
*(undefined4 *)(param_1 + 0x10) = 0;
}
else {
*(uint **)(param_1 + 0x18) = puVar3 + 1;
local_20 = *puVar3;
*(uint *)(param_1 + 0x10) = local_20;
}
iVar11 = 0x20;
if (uVar12 != 0) goto LAB_0057c2d0;
}
}
else {
local_20 = *(uint *)(param_1 + 0x10) >> 1;
*(uint *)(param_1 + 0x10) = local_20;
if (uVar12 != 0) {
if (iVar11 < 0x20) {
puVar9 = *(uint **)(param_1 + 0x1c);
goto LAB_0057bb4c;
}
LAB_0057c2d0:
*(int *)(param_1 + 0x14) = iVar11 + -0x20;
if (iVar11 + -0x20 == 0) {
puVar2 = *(undefined4 **)(param_1 + 0x18);
*(undefined4 *)(param_1 + 0x14) = 0x20;
if (puVar2 == *(undefined4 **)(param_1 + 0x1c)) {
*(undefined4 *)(param_1 + 0x14) = 1;
*(undefined4 *)(param_1 + 0x10) = 0;
*(undefined4 **)(param_1 + 0x18) = puVar2 + 1;
}
else {
if (*(undefined4 **)(param_1 + 0x1c) < puVar2) {
param_1[4] = (bf_read)0x1;
goto LAB_0057c2fd;
}
*(undefined4 **)(param_1 + 0x18) = puVar2 + 1;
*(undefined4 *)(param_1 + 0x10) = *puVar2;
}
}
else {
LAB_0057c2fd:
*(undefined4 *)(param_1 + 0x10) = 0;
}
LAB_0057c308:
*(uint *)(param_2 + 0xc) = local_20;
local_20 = *(uint *)(param_1 + 0x10);
iVar11 = *(int *)(param_1 + 0x14);
}
}
iVar11 = iVar11 + -1;
uVar12 = local_20 & 1;
*(int *)(param_1 + 0x14) = iVar11;
if (iVar11 == 0) {
puVar3 = *(uint **)(param_1 + 0x18);
*(undefined4 *)(param_1 + 0x14) = 0x20;
puVar9 = *(uint **)(param_1 + 0x1c);
if (puVar3 == puVar9) {
*(undefined4 *)(param_1 + 0x14) = 1;
*(uint **)(param_1 + 0x18) = puVar3 + 1;
iVar11 = 1;
*(undefined4 *)(param_1 + 0x10) = 0;
if (uVar12 != 0) {
local_20 = 0;
LAB_0057bb8c:
puVar3 = *(uint **)(param_1 + 0x18);
if (puVar3 == puVar9) {
*(undefined4 *)(param_1 + 0x14) = 1;
*(undefined4 *)(param_1 + 0x10) = 0;
*(uint **)(param_1 + 0x18) = puVar9 + 1;
param_1[4] = (bf_read)0x1;
}
else if (puVar9 < puVar3) {
param_1[4] = (bf_read)0x1;
*(undefined4 *)(param_1 + 0x10) = 0;
}
else {
*(uint **)(param_1 + 0x18) = puVar3 + 1;
uVar12 = *puVar3;
*(uint *)(param_1 + 0x10) = uVar12;
if (param_1[4] == (bf_read)0x0) {
uVar5 = *(undefined4 *)(param_1 + 0x14);
*(int *)(param_1 + 0x14) = iVar11;
local_20 = (uVar12 & *(uint *)(CBitBuffer::s_nMaskTable + (0x20 - iVar11) * 4)) <<
((byte)uVar5 & 0x1f) | local_20;
*(uint *)(param_1 + 0x10) = uVar12 >> ((byte)(0x20 - iVar11) & 0x1f);
goto LAB_0057c2b8;
}
}
local_20 = 0;
goto LAB_0057c2b8;
}
local_20 = 0;
}
else {
if (puVar9 < puVar3) {
param_1[4] = (bf_read)0x1;
local_20 = 0;
*(undefined4 *)(param_1 + 0x10) = 0;
}
else {
*(uint **)(param_1 + 0x18) = puVar3 + 1;
local_20 = *puVar3;
*(uint *)(param_1 + 0x10) = local_20;
}
iVar11 = 0x20;
if (uVar12 != 0) goto LAB_0057c280;
}
}
else {
local_20 = local_20 >> 1;
*(uint *)(param_1 + 0x10) = local_20;
if (uVar12 != 0) {
if (iVar11 < 0x20) {
puVar9 = *(uint **)(param_1 + 0x1c);
goto LAB_0057bb8c;
}
LAB_0057c280:
*(int *)(param_1 + 0x14) = iVar11 + -0x20;
if (iVar11 + -0x20 == 0) {
puVar2 = *(undefined4 **)(param_1 + 0x18);
*(undefined4 *)(param_1 + 0x14) = 0x20;
if (puVar2 == *(undefined4 **)(param_1 + 0x1c)) {
*(undefined4 *)(param_1 + 0x14) = 1;
*(undefined4 *)(param_1 + 0x10) = 0;
*(undefined4 **)(param_1 + 0x18) = puVar2 + 1;
}
else {
if (*(undefined4 **)(param_1 + 0x1c) < puVar2) {
param_1[4] = (bf_read)0x1;
goto LAB_0057c2ad;
}
*(undefined4 **)(param_1 + 0x18) = puVar2 + 1;
*(undefined4 *)(param_1 + 0x10) = *puVar2;
}
}
else {
LAB_0057c2ad:
*(undefined4 *)(param_1 + 0x10) = 0;
}
LAB_0057c2b8:
*(uint *)(param_2 + 0x10) = local_20;
local_20 = *(uint *)(param_1 + 0x10);
iVar11 = *(int *)(param_1 + 0x14);
}
}
iVar11 = iVar11 + -1;
uVar12 = local_20 & 1;
*(int *)(param_1 + 0x14) = iVar11;
if (iVar11 == 0) {
puVar3 = *(uint **)(param_1 + 0x18);
*(undefined4 *)(param_1 + 0x14) = 0x20;
puVar9 = *(uint **)(param_1 + 0x1c);
if (puVar3 == puVar9) {
*(undefined4 *)(param_1 + 0x14) = 1;
*(uint **)(param_1 + 0x18) = puVar3 + 1;
iVar11 = 1;
*(undefined4 *)(param_1 + 0x10) = 0;
if (uVar12 != 0) {
local_20 = 0;
LAB_0057bbcc:
puVar3 = *(uint **)(param_1 + 0x18);
if (puVar3 == puVar9) {
*(undefined4 *)(param_1 + 0x14) = 1;
*(undefined4 *)(param_1 + 0x10) = 0;
*(uint **)(param_1 + 0x18) = puVar9 + 1;
param_1[4] = (bf_read)0x1;
}
else if (puVar9 < puVar3) {
param_1[4] = (bf_read)0x1;
*(undefined4 *)(param_1 + 0x10) = 0;
}
else {
*(uint **)(param_1 + 0x18) = puVar3 + 1;
uVar12 = *puVar3;
*(uint *)(param_1 + 0x10) = uVar12;
if (param_1[4] == (bf_read)0x0) {
uVar5 = *(undefined4 *)(param_1 + 0x14);
*(int *)(param_1 + 0x14) = iVar11;
local_20 = (uVar12 & *(uint *)(CBitBuffer::s_nMaskTable + (0x20 - iVar11) * 4)) <<
((byte)uVar5 & 0x1f) | local_20;
*(uint *)(param_1 + 0x10) = uVar12 >> ((byte)(0x20 - iVar11) & 0x1f);
goto LAB_0057c268;
}
}
local_20 = 0;
goto LAB_0057c268;
}
local_20 = 0;
}
else {
if (puVar9 < puVar3) {
param_1[4] = (bf_read)0x1;
local_20 = 0;
*(undefined4 *)(param_1 + 0x10) = 0;
}
else {
*(uint **)(param_1 + 0x18) = puVar3 + 1;
local_20 = *puVar3;
*(uint *)(param_1 + 0x10) = local_20;
}
iVar11 = 0x20;
if (uVar12 != 0) goto LAB_0057c230;
}
}
else {
local_20 = local_20 >> 1;
*(uint *)(param_1 + 0x10) = local_20;
if (uVar12 != 0) {
if (iVar11 < 0x20) {
puVar9 = *(uint **)(param_1 + 0x1c);
goto LAB_0057bbcc;
}
LAB_0057c230:
*(int *)(param_1 + 0x14) = iVar11 + -0x20;
if (iVar11 + -0x20 == 0) {
puVar2 = *(undefined4 **)(param_1 + 0x18);
*(undefined4 *)(param_1 + 0x14) = 0x20;
if (puVar2 == *(undefined4 **)(param_1 + 0x1c)) {
*(undefined4 *)(param_1 + 0x14) = 1;
*(undefined4 *)(param_1 + 0x10) = 0;
*(undefined4 **)(param_1 + 0x18) = puVar2 + 1;
}
else {
if (*(undefined4 **)(param_1 + 0x1c) < puVar2) {
param_1[4] = (bf_read)0x1;
goto LAB_0057c25d;
}
*(undefined4 **)(param_1 + 0x18) = puVar2 + 1;
*(undefined4 *)(param_1 + 0x10) = *puVar2;
}
}
else {
LAB_0057c25d:
*(undefined4 *)(param_1 + 0x10) = 0;
}
LAB_0057c268:
*(uint *)(param_2 + 0x14) = local_20;
local_20 = *(uint *)(param_1 + 0x10);
iVar11 = *(int *)(param_1 + 0x14);
}
}
iVar11 = iVar11 + -1;
uVar12 = local_20 & 1;
*(int *)(param_1 + 0x14) = iVar11;
if (iVar11 == 0) {
puVar3 = *(uint **)(param_1 + 0x18);
*(undefined4 *)(param_1 + 0x14) = 0x20;
puVar9 = *(uint **)(param_1 + 0x1c);
if (puVar3 == puVar9) {
*(undefined4 *)(param_1 + 0x14) = 1;
*(undefined4 *)(param_1 + 0x10) = 0;
*(uint **)(param_1 + 0x18) = puVar3 + 1;
if (uVar12 != 0) {
local_20 = 0;
iVar11 = 1;
LAB_0057bc0c:
puVar3 = *(uint **)(param_1 + 0x18);
if (puVar3 == puVar9) {
*(undefined4 *)(param_1 + 0x14) = 1;
*(undefined4 *)(param_1 + 0x10) = 0;
*(uint **)(param_1 + 0x18) = puVar9 + 1;
param_1[4] = (bf_read)0x1;
}
else if (puVar9 < puVar3) {
param_1[4] = (bf_read)0x1;
*(undefined4 *)(param_1 + 0x10) = 0;
}
else {
*(uint **)(param_1 + 0x18) = puVar3 + 1;
uVar12 = *puVar3;
*(uint *)(param_1 + 0x10) = uVar12;
if (param_1[4] == (bf_read)0x0) {
uVar5 = *(undefined4 *)(param_1 + 0x14);
*(int *)(param_1 + 0x14) = iVar11;
local_20 = (uVar12 & *(uint *)(CBitBuffer::s_nMaskTable + (0x20 - iVar11) * 4)) <<
((byte)uVar5 & 0x1f) | local_20;
*(uint *)(param_1 + 0x10) = uVar12 >> ((byte)(0x20 - iVar11) & 0x1f);
goto LAB_0057c218;
}
}
local_20 = 0;
goto LAB_0057c218;
}
iVar11 = 1;
local_20 = 0;
}
else {
if (puVar9 < puVar3) {
param_1[4] = (bf_read)0x1;
local_20 = 0;
*(undefined4 *)(param_1 + 0x10) = 0;
}
else {
*(uint **)(param_1 + 0x18) = puVar3 + 1;
local_20 = *puVar3;
*(uint *)(param_1 + 0x10) = local_20;
}
iVar11 = 0x20;
if (uVar12 != 0) goto LAB_0057c1e0;
}
}
else {
local_20 = local_20 >> 1;
*(uint *)(param_1 + 0x10) = local_20;
if (uVar12 != 0) {
if (iVar11 < 0x20) {
puVar9 = *(uint **)(param_1 + 0x1c);
goto LAB_0057bc0c;
}
LAB_0057c1e0:
*(int *)(param_1 + 0x14) = iVar11 + -0x20;
if (iVar11 + -0x20 == 0) {
puVar2 = *(undefined4 **)(param_1 + 0x18);
*(undefined4 *)(param_1 + 0x14) = 0x20;
if (puVar2 == *(undefined4 **)(param_1 + 0x1c)) {
*(undefined4 *)(param_1 + 0x14) = 1;
*(undefined4 *)(param_1 + 0x10) = 0;
*(undefined4 **)(param_1 + 0x18) = puVar2 + 1;
}
else {
if (*(undefined4 **)(param_1 + 0x1c) < puVar2) {
param_1[4] = (bf_read)0x1;
goto LAB_0057c20d;
}
*(undefined4 **)(param_1 + 0x18) = puVar2 + 1;
*(undefined4 *)(param_1 + 0x10) = *puVar2;
}
}
else {
LAB_0057c20d:
*(undefined4 *)(param_1 + 0x10) = 0;
}
LAB_0057c218:
*(uint *)(param_2 + 0x18) = local_20;
local_20 = *(uint *)(param_1 + 0x10);
iVar11 = *(int *)(param_1 + 0x14);
}
}
iVar11 = iVar11 + -1;
uVar12 = local_20 & 1;
*(int *)(param_1 + 0x14) = iVar11;
if (iVar11 == 0) {
puVar3 = *(uint **)(param_1 + 0x18);
*(undefined4 *)(param_1 + 0x14) = 0x20;
puVar9 = *(uint **)(param_1 + 0x1c);
if (puVar3 == puVar9) {
*(undefined4 *)(param_1 + 0x14) = 1;
*(undefined4 *)(param_1 + 0x10) = 0;
*(uint **)(param_1 + 0x18) = puVar3 + 1;
if (uVar12 != 0) {
local_20 = 0;
iVar11 = 1;
LAB_0057bc4c:
puVar3 = *(uint **)(param_1 + 0x18);
if (puVar3 == puVar9) {
*(undefined4 *)(param_1 + 0x14) = 1;
*(undefined4 *)(param_1 + 0x10) = 0;
*(uint **)(param_1 + 0x18) = puVar9 + 1;
param_1[4] = (bf_read)0x1;
}
else if (puVar9 < puVar3) {
param_1[4] = (bf_read)0x1;
*(undefined4 *)(param_1 + 0x10) = 0;
}
else {
*(uint **)(param_1 + 0x18) = puVar3 + 1;
uVar12 = *puVar3;
*(uint *)(param_1 + 0x10) = uVar12;
if (param_1[4] == (bf_read)0x0) {
uVar5 = *(undefined4 *)(param_1 + 0x14);
*(int *)(param_1 + 0x14) = iVar11;
local_20 = (uVar12 & *(uint *)(CBitBuffer::s_nMaskTable + (0x20 - iVar11) * 4)) <<
((byte)uVar5 & 0x1f) | local_20;
*(uint *)(param_1 + 0x10) = uVar12 >> ((byte)(0x20 - iVar11) & 0x1f);
goto LAB_0057c1c8;
}
}
local_20 = 0;
goto LAB_0057c1c8;
}
iVar11 = 1;
local_20 = 0;
}
else {
if (puVar9 < puVar3) {
param_1[4] = (bf_read)0x1;
local_20 = 0;
*(undefined4 *)(param_1 + 0x10) = 0;
}
else {
*(uint **)(param_1 + 0x18) = puVar3 + 1;
local_20 = *puVar3;
*(uint *)(param_1 + 0x10) = local_20;
}
iVar11 = 0x20;
if (uVar12 != 0) goto LAB_0057c190;
}
}
else {
local_20 = local_20 >> 1;
*(uint *)(param_1 + 0x10) = local_20;
if (uVar12 != 0) {
if (iVar11 < 0x20) {
puVar9 = *(uint **)(param_1 + 0x1c);
goto LAB_0057bc4c;
}
LAB_0057c190:
*(int *)(param_1 + 0x14) = iVar11 + -0x20;
if (iVar11 + -0x20 == 0) {
puVar2 = *(undefined4 **)(param_1 + 0x18);
*(undefined4 *)(param_1 + 0x14) = 0x20;
if (puVar2 == *(undefined4 **)(param_1 + 0x1c)) {
*(undefined4 *)(param_1 + 0x14) = 1;
*(undefined4 *)(param_1 + 0x10) = 0;
*(undefined4 **)(param_1 + 0x18) = puVar2 + 1;
}
else {
if (*(undefined4 **)(param_1 + 0x1c) < puVar2) {
param_1[4] = (bf_read)0x1;
goto LAB_0057c1bd;
}
*(undefined4 **)(param_1 + 0x18) = puVar2 + 1;
*(undefined4 *)(param_1 + 0x10) = *puVar2;
}
}
else {
LAB_0057c1bd:
*(undefined4 *)(param_1 + 0x10) = 0;
}
LAB_0057c1c8:
*(uint *)(param_2 + 0x1c) = local_20;
local_20 = *(uint *)(param_1 + 0x10);
iVar11 = *(int *)(param_1 + 0x14);
}
}
iVar11 = iVar11 + -1;
uVar12 = local_20 & 1;
*(int *)(param_1 + 0x14) = iVar11;
if (iVar11 == 0) {
puVar3 = *(uint **)(param_1 + 0x18);
*(undefined4 *)(param_1 + 0x14) = 0x20;
puVar9 = *(uint **)(param_1 + 0x1c);
if (puVar3 == puVar9) {
*(undefined4 *)(param_1 + 0x14) = 1;
*(undefined4 *)(param_1 + 0x10) = 0;
*(uint **)(param_1 + 0x18) = puVar3 + 1;
if (uVar12 != 0) {
local_20 = 0;
iVar11 = 1;
LAB_0057bc8c:
puVar3 = *(uint **)(param_1 + 0x18);
if (puVar3 == puVar9) {
*(undefined4 *)(param_1 + 0x14) = 1;
*(undefined4 *)(param_1 + 0x10) = 0;
*(uint **)(param_1 + 0x18) = puVar9 + 1;
param_1[4] = (bf_read)0x1;
}
else if (puVar9 < puVar3) {
param_1[4] = (bf_read)0x1;
*(undefined4 *)(param_1 + 0x10) = 0;
}
else {
*(uint **)(param_1 + 0x18) = puVar3 + 1;
uVar12 = *puVar3;
*(uint *)(param_1 + 0x10) = uVar12;
if (param_1[4] == (bf_read)0x0) {
uVar5 = *(undefined4 *)(param_1 + 0x14);
*(int *)(param_1 + 0x14) = iVar11;
local_20 = (uVar12 & *(uint *)(CBitBuffer::s_nMaskTable + (0x20 - iVar11) * 4)) <<
((byte)uVar5 & 0x1f) | local_20;
*(uint *)(param_1 + 0x10) = uVar12 >> ((byte)(0x20 - iVar11) & 0x1f);
goto LAB_0057c180;
}
}
local_20 = 0;
goto LAB_0057c180;
}
iVar11 = 1;
local_20 = 0;
}
else {
if (puVar9 < puVar3) {
param_1[4] = (bf_read)0x1;
local_20 = 0;
*(undefined4 *)(param_1 + 0x10) = 0;
}
else {
*(uint **)(param_1 + 0x18) = puVar3 + 1;
local_20 = *puVar3;
*(uint *)(param_1 + 0x10) = local_20;
}
iVar11 = 0x20;
if (uVar12 != 0) goto LAB_0057c148;
}
}
else {
local_20 = local_20 >> 1;
*(uint *)(param_1 + 0x10) = local_20;
if (uVar12 != 0) {
if (iVar11 < 0x20) {
puVar9 = *(uint **)(param_1 + 0x1c);
goto LAB_0057bc8c;
}
LAB_0057c148:
*(int *)(param_1 + 0x14) = iVar11 + -0x20;
if (iVar11 + -0x20 == 0) {
puVar2 = *(undefined4 **)(param_1 + 0x18);
*(undefined4 *)(param_1 + 0x14) = 0x20;
if (puVar2 == *(undefined4 **)(param_1 + 0x1c)) {
*(undefined4 *)(param_1 + 0x14) = 1;
*(undefined4 *)(param_1 + 0x10) = 0;
*(undefined4 **)(param_1 + 0x18) = puVar2 + 1;
}
else {
if (*(undefined4 **)(param_1 + 0x1c) < puVar2) {
param_1[4] = (bf_read)0x1;
goto LAB_0057c175;
}
*(undefined4 **)(param_1 + 0x18) = puVar2 + 1;
*(undefined4 *)(param_1 + 0x10) = *puVar2;
}
}
else {
LAB_0057c175:
*(undefined4 *)(param_1 + 0x10) = 0;
}
LAB_0057c180:
*(uint *)(param_2 + 0x20) = local_20;
local_20 = *(uint *)(param_1 + 0x10);
iVar11 = *(int *)(param_1 + 0x14);
}
}
iVar11 = iVar11 + -1;
uVar12 = local_20 & 1;
*(int *)(param_1 + 0x14) = iVar11;
if (iVar11 == 0) {
puVar3 = *(uint **)(param_1 + 0x18);
*(undefined4 *)(param_1 + 0x14) = 0x20;
puVar9 = *(uint **)(param_1 + 0x1c);
if (puVar3 == puVar9) {
*(undefined4 *)(param_1 + 0x14) = 1;
*(undefined4 *)(param_1 + 0x10) = 0;
*(uint **)(param_1 + 0x18) = puVar3 + 1;
if (uVar12 != 0) {
local_20 = 0;
iVar11 = 1;
LAB_0057bccc:
puVar3 = *(uint **)(param_1 + 0x18);
if (puVar3 == puVar9) {
*(undefined4 *)(param_1 + 0x14) = 1;
*(uint **)(param_1 + 0x18) = puVar9 + 1;
local_20 = 0;
*(undefined4 *)(param_1 + 0x10) = 0;
param_1[4] = (bf_read)0x1;
}
else {
if (puVar9 < puVar3) {
param_1[4] = (bf_read)0x1;
*(undefined4 *)(param_1 + 0x10) = 0;
}
else {
*(uint **)(param_1 + 0x18) = puVar3 + 1;
uVar12 = *puVar3;
*(uint *)(param_1 + 0x10) = uVar12;
if (param_1[4] == (bf_read)0x0) {
uVar5 = *(undefined4 *)(param_1 + 0x14);
*(int *)(param_1 + 0x14) = iVar11;
local_20 = (uVar12 & *(uint *)(CBitBuffer::s_nMaskTable + (0x20 - iVar11) * 4)) <<
((byte)uVar5 & 0x1f) | local_20;
*(uint *)(param_1 + 0x10) = uVar12 >> ((byte)(0x20 - iVar11) & 0x1f);
goto LAB_0057c134;
}
}
local_20 = 0;
}
goto LAB_0057c134;
}
iVar11 = 1;
local_20 = 0;
}
else {
if (puVar9 < puVar3) {
param_1[4] = (bf_read)0x1;
local_20 = 0;
*(undefined4 *)(param_1 + 0x10) = 0;
}
else {
*(uint **)(param_1 + 0x18) = puVar3 + 1;
local_20 = *puVar3;
*(uint *)(param_1 + 0x10) = local_20;
}
iVar11 = 0x20;
if (uVar12 != 0) goto LAB_0057c100;
}
}
else {
local_20 = local_20 >> 1;
*(uint *)(param_1 + 0x10) = local_20;
if (uVar12 != 0) {
if (iVar11 < 0x20) {
puVar9 = *(uint **)(param_1 + 0x1c);
goto LAB_0057bccc;
}
LAB_0057c100:
*(int *)(param_1 + 0x14) = iVar11 + -0x20;
if (iVar11 + -0x20 == 0) {
puVar2 = *(undefined4 **)(param_1 + 0x18);
*(undefined4 *)(param_1 + 0x14) = 0x20;
if (puVar2 == *(undefined4 **)(param_1 + 0x1c)) {
*(undefined4 *)(param_1 + 0x14) = 1;
*(undefined4 *)(param_1 + 0x10) = 0;
*(undefined4 **)(param_1 + 0x18) = puVar2 + 1;
}
else {
if (*(undefined4 **)(param_1 + 0x1c) < puVar2) {
param_1[4] = (bf_read)0x1;
goto LAB_0057c12d;
}
*(undefined4 **)(param_1 + 0x18) = puVar2 + 1;
*(undefined4 *)(param_1 + 0x10) = *puVar2;
}
}
else {
LAB_0057c12d:
*(undefined4 *)(param_1 + 0x10) = 0;
}
LAB_0057c134:
*(uint *)(param_2 + 0x24) = local_20;
local_20 = *(uint *)(param_1 + 0x10);
iVar11 = *(int *)(param_1 + 0x14);
}
}
iVar11 = iVar11 + -1;
uVar12 = local_20 & 1;
*(int *)(param_1 + 0x14) = iVar11;
if (iVar11 == 0) {
puVar3 = *(uint **)(param_1 + 0x18);
*(undefined4 *)(param_1 + 0x14) = 0x20;
puVar9 = *(uint **)(param_1 + 0x1c);
if (puVar3 == puVar9) {
local_20 = 0;
*(uint **)(param_1 + 0x18) = puVar3 + 1;
iVar11 = 1;
*(undefined4 *)(param_1 + 0x14) = 1;
*(undefined4 *)(param_1 + 0x10) = 0;
if (uVar12 != 0) {
local_20 = 0;
LAB_0057bd3e:
puVar3 = *(uint **)(param_1 + 0x18);
if (puVar3 == puVar9) {
*(undefined4 *)(param_1 + 0x14) = 1;
*(uint **)(param_1 + 0x18) = puVar9 + 1;
CVar8 = (CUserCmd)0x0;
*(undefined4 *)(param_1 + 0x10) = 0;
param_1[4] = (bf_read)0x1;
}
else {
if (puVar9 < puVar3) {
param_1[4] = (bf_read)0x1;
*(undefined4 *)(param_1 + 0x10) = 0;
}
else {
*(uint **)(param_1 + 0x18) = puVar3 + 1;
uVar12 = *puVar3;
*(uint *)(param_1 + 0x10) = uVar12;
if (param_1[4] == (bf_read)0x0) {
uVar6 = *(uint *)(CBitBuffer::s_nMaskTable + (8 - iVar11) * 4);
uVar5 = *(undefined4 *)(param_1 + 0x14);
*(int *)(param_1 + 0x14) = iVar11 + 0x18;
*(uint *)(param_1 + 0x10) = uVar12 >> ((byte)(8 - iVar11) & 0x1f);
local_24._0_1_ = (byte)((uVar6 & uVar12) << ((byte)uVar5 & 0x1f));
CVar8 = (CUserCmd)((byte)local_24 | (byte)local_20);
goto LAB_0057c556;
}
}
CVar8 = (CUserCmd)0x0;
}
LAB_0057c556:
param_2[0x28] = CVar8;
local_20 = *(uint *)(param_1 + 0x10);
iVar11 = *(int *)(param_1 + 0x14);
}
}
else {
if (puVar9 < puVar3) {
param_1[4] = (bf_read)0x1;
local_20 = 0;
*(undefined4 *)(param_1 + 0x10) = 0;
}
else {
*(uint **)(param_1 + 0x18) = puVar3 + 1;
local_20 = *puVar3;
*(uint *)(param_1 + 0x10) = local_20;
}
iVar11 = 0x20;
if (uVar12 != 0) goto LAB_0057c0b8;
}
}
else {
local_20 = local_20 >> 1;
*(uint *)(param_1 + 0x10) = local_20;
if (uVar12 != 0) {
if (iVar11 < 8) {
puVar9 = *(uint **)(param_1 + 0x1c);
goto LAB_0057bd3e;
}
LAB_0057c0b8:
*(int *)(param_1 + 0x14) = iVar11 + -8;
CVar8 = SUB41(local_20,0);
if (iVar11 + -8 == 0) {
puVar2 = *(undefined4 **)(param_1 + 0x18);
*(undefined4 *)(param_1 + 0x14) = 0x20;
if (puVar2 == *(undefined4 **)(param_1 + 0x1c)) {
*(undefined4 *)(param_1 + 0x14) = 1;
*(undefined4 *)(param_1 + 0x10) = 0;
*(undefined4 **)(param_1 + 0x18) = puVar2 + 1;
}
else if (*(undefined4 **)(param_1 + 0x1c) < puVar2) {
param_1[4] = (bf_read)0x1;
*(undefined4 *)(param_1 + 0x10) = 0;
}
else {
*(undefined4 **)(param_1 + 0x18) = puVar2 + 1;
*(undefined4 *)(param_1 + 0x10) = *puVar2;
}
}
else {
*(uint *)(param_1 + 0x10) = local_20 >> 8;
}
goto LAB_0057c556;
}
}
*(int *)(param_1 + 0x14) = iVar11 + -1;
if (iVar11 + -1 == 0) {
puVar2 = *(undefined4 **)(param_1 + 0x18);
*(undefined4 *)(param_1 + 0x14) = 0x20;
if (puVar2 == *(undefined4 **)(param_1 + 0x1c)) {
*(undefined4 *)(param_1 + 0x14) = 1;
*(undefined4 *)(param_1 + 0x10) = 0;
*(undefined4 **)(param_1 + 0x18) = puVar2 + 1;
}
else if (*(undefined4 **)(param_1 + 0x1c) < puVar2) {
param_1[4] = (bf_read)0x1;
*(undefined4 *)(param_1 + 0x10) = 0;
}
else {
*(undefined4 **)(param_1 + 0x18) = puVar2 + 1;
*(undefined4 *)(param_1 + 0x10) = *puVar2;
}
}
else {
*(uint *)(param_1 + 0x10) = local_20 >> 1;
}
if ((local_20 & 1) != 0) {
iVar11 = *(int *)(param_1 + 0x14);
if (iVar11 < 0xb) {
uVar12 = *(uint *)(param_1 + 0x10);
puVar9 = *(uint **)(param_1 + 0x18);
if (puVar9 == *(uint **)(param_1 + 0x1c)) {
*(undefined4 *)(param_1 + 0x14) = 1;
*(uint **)(param_1 + 0x18) = puVar9 + 1;
uVar12 = 0;
*(undefined4 *)(param_1 + 0x10) = 0;
param_1[4] = (bf_read)0x1;
}
else {
if (puVar9 < *(uint **)(param_1 + 0x1c)) {
*(uint **)(param_1 + 0x18) = puVar9 + 1;
uVar6 = *puVar9;
*(uint *)(param_1 + 0x10) = uVar6;
if (param_1[4] == (bf_read)0x0) {
uVar4 = *(uint *)(CBitBuffer::s_nMaskTable + (0xb - iVar11) * 4);
*(int *)(param_1 + 0x14) = iVar11 + 0x15;
uVar12 = (uVar4 & uVar6) << ((byte)iVar11 & 0x1f) | uVar12;
*(uint *)(param_1 + 0x10) = uVar6 >> ((byte)(0xb - iVar11) & 0x1f);
goto LAB_0057c040;
}
}
else {
param_1[4] = (bf_read)0x1;
*(undefined4 *)(param_1 + 0x10) = 0;
}
uVar12 = 0;
}
}
else {
*(int *)(param_1 + 0x14) = iVar11 + -0xb;
uVar12 = *(uint *)(param_1 + 0x10) & 0x7ff;
if (iVar11 + -0xb == 0) {
puVar2 = *(undefined4 **)(param_1 + 0x18);
*(undefined4 *)(param_1 + 0x14) = 0x20;
if (puVar2 == *(undefined4 **)(param_1 + 0x1c)) {
*(undefined4 *)(param_1 + 0x14) = 1;
*(undefined4 *)(param_1 + 0x10) = 0;
*(undefined4 **)(param_1 + 0x18) = puVar2 + 1;
}
else if (*(undefined4 **)(param_1 + 0x1c) < puVar2) {
param_1[4] = (bf_read)0x1;
*(undefined4 *)(param_1 + 0x10) = 0;
}
else {
*(undefined4 **)(param_1 + 0x18) = puVar2 + 1;
*(undefined4 *)(param_1 + 0x10) = *puVar2;
}
}
else {
*(uint *)(param_1 + 0x10) = *(uint *)(param_1 + 0x10) >> 0xb;
}
}
LAB_0057c040:
*(uint *)(param_2 + 0x2c) = uVar12;
uVar12 = *(uint *)(param_1 + 0x10);
pbVar1 = param_1 + 0x14;
*(int *)pbVar1 = *(int *)pbVar1 + -1;
if (*(int *)pbVar1 == 0) {
puVar2 = *(undefined4 **)(param_1 + 0x18);
*(undefined4 *)(param_1 + 0x14) = 0x20;
if (puVar2 == *(undefined4 **)(param_1 + 0x1c)) {
*(undefined4 *)(param_1 + 0x14) = 1;
*(undefined4 *)(param_1 + 0x10) = 0;
*(undefined4 **)(param_1 + 0x18) = puVar2 + 1;
}
else if (*(undefined4 **)(param_1 + 0x1c) < puVar2) {
param_1[4] = (bf_read)0x1;
*(undefined4 *)(param_1 + 0x10) = 0;
}
else {
*(undefined4 **)(param_1 + 0x18) = puVar2 + 1;
*(undefined4 *)(param_1 + 0x10) = *puVar2;
}
}
else {
*(uint *)(param_1 + 0x10) = uVar12 >> 1;
}
if ((uVar12 & 1) != 0) {
iVar11 = *(int *)(param_1 + 0x14);
if (iVar11 < 6) {
uVar12 = *(uint *)(param_1 + 0x10);
puVar9 = *(uint **)(param_1 + 0x18);
if (puVar9 == *(uint **)(param_1 + 0x1c)) {
*(undefined4 *)(param_1 + 0x14) = 1;
*(uint **)(param_1 + 0x18) = puVar9 + 1;
uVar12 = 0;
*(undefined4 *)(param_1 + 0x10) = 0;
param_1[4] = (bf_read)0x1;
}
else {
if (*(uint **)(param_1 + 0x1c) < puVar9) {
param_1[4] = (bf_read)0x1;
*(undefined4 *)(param_1 + 0x10) = 0;
}
else {
*(uint **)(param_1 + 0x18) = puVar9 + 1;
uVar6 = *puVar9;
*(uint *)(param_1 + 0x10) = uVar6;
if (param_1[4] == (bf_read)0x0) {
uVar4 = *(uint *)(CBitBuffer::s_nMaskTable + (6 - iVar11) * 4);
*(int *)(param_1 + 0x14) = iVar11 + 0x1a;
uVar12 = (uVar4 & uVar6) << ((byte)iVar11 & 0x1f) | uVar12;
*(uint *)(param_1 + 0x10) = uVar6 >> ((byte)(6 - iVar11) & 0x1f);
goto LAB_0057c0ab;
}
}
uVar12 = 0;
}
}
else {
*(int *)(param_1 + 0x14) = iVar11 + -6;
uVar12 = *(uint *)(param_1 + 0x10) & 0x3f;
if (iVar11 + -6 == 0) {
puVar2 = *(undefined4 **)(param_1 + 0x18);
*(undefined4 *)(param_1 + 0x14) = 0x20;
if (puVar2 == *(undefined4 **)(param_1 + 0x1c)) {
*(undefined4 *)(param_1 + 0x14) = 1;
*(undefined4 *)(param_1 + 0x10) = 0;
*(undefined4 **)(param_1 + 0x18) = puVar2 + 1;
}
else if (*(undefined4 **)(param_1 + 0x1c) < puVar2) {
param_1[4] = (bf_read)0x1;
*(undefined4 *)(param_1 + 0x10) = 0;
}
else {
*(undefined4 **)(param_1 + 0x18) = puVar2 + 1;
*(undefined4 *)(param_1 + 0x10) = *puVar2;
}
}
else {
*(uint *)(param_1 + 0x10) = *(uint *)(param_1 + 0x10) >> 6;
}
}
LAB_0057c0ab:
*(uint *)(param_2 + 0x30) = uVar12;
}
}
uVar12 = MD5_PseudoRandom(*(uint *)(param_2 + 4));
*(uint *)(param_2 + 0x34) = uVar12 & 0x7fffffff;
iVar11 = *(int *)(param_1 + 0x14) + -1;
*(int *)(param_1 + 0x14) = iVar11;
uVar12 = *(uint *)(param_1 + 0x10) & 1;
if (iVar11 == 0) {
puVar3 = *(uint **)(param_1 + 0x18);
*(undefined4 *)(param_1 + 0x14) = 0x20;
puVar9 = *(uint **)(param_1 + 0x1c);
if (puVar3 == puVar9) {
*(undefined4 *)(param_1 + 0x14) = 1;
*(undefined4 *)(param_1 + 0x10) = 0;
*(uint **)(param_1 + 0x18) = puVar3 + 1;
if (uVar12 == 0) {
iVar11 = 1;
local_20 = 0;
}
else {
local_20 = 0;
iVar11 = 1;
LAB_0057be2c:
puVar3 = *(uint **)(param_1 + 0x18);
if (puVar3 == puVar9) {
*(undefined4 *)(param_1 + 0x14) = 1;
*(uint **)(param_1 + 0x18) = puVar9 + 1;
local_24 = 0;
*(undefined4 *)(param_1 + 0x10) = 0;
param_1[4] = (bf_read)0x1;
}
else {
if (puVar9 < puVar3) {
param_1[4] = (bf_read)0x1;
*(undefined4 *)(param_1 + 0x10) = 0;
}
else {
*(uint **)(param_1 + 0x18) = puVar3 + 1;
uVar12 = *puVar3;
*(uint *)(param_1 + 0x10) = uVar12;
if (param_1[4] == (bf_read)0x0) {
uVar6 = *(uint *)(CBitBuffer::s_nMaskTable + (0x10 - iVar11) * 4);
uVar5 = *(undefined4 *)(param_1 + 0x14);
*(int *)(param_1 + 0x14) = iVar11 + 0x10;
*(uint *)(param_1 + 0x10) = uVar12 >> ((byte)(0x10 - iVar11) & 0x1f);
local_24 = (ushort)((uVar6 & uVar12) << ((byte)uVar5 & 0x1f));
local_24 = local_24 | (ushort)local_20;
goto LAB_0057c430;
}
}
local_24 = 0;
}
LAB_0057c430:
*(ushort *)(param_2 + 0x38) = local_24;
local_20 = *(uint *)(param_1 + 0x10);
iVar11 = *(int *)(param_1 + 0x14);
}
}
else {
if (puVar9 < puVar3) {
param_1[4] = (bf_read)0x1;
local_20 = 0;
*(undefined4 *)(param_1 + 0x10) = 0;
}
else {
*(uint **)(param_1 + 0x18) = puVar3 + 1;
local_20 = *puVar3;
*(uint *)(param_1 + 0x10) = local_20;
}
iVar11 = 0x20;
if (uVar12 != 0) goto LAB_0057c3f0;
}
}
else {
local_20 = *(uint *)(param_1 + 0x10) >> 1;
*(uint *)(param_1 + 0x10) = local_20;
if (uVar12 != 0) {
if (iVar11 < 0x10) {
puVar9 = *(uint **)(param_1 + 0x1c);
goto LAB_0057be2c;
}
LAB_0057c3f0:
*(int *)(param_1 + 0x14) = iVar11 + -0x10;
local_24 = (ushort)local_20;
if (iVar11 + -0x10 == 0) {
puVar2 = *(undefined4 **)(param_1 + 0x18);
*(undefined4 *)(param_1 + 0x14) = 0x20;
if (puVar2 == *(undefined4 **)(param_1 + 0x1c)) {
*(undefined4 *)(param_1 + 0x14) = 1;
*(undefined4 **)(param_1 + 0x18) = puVar2 + 1;
*(undefined4 *)(param_1 + 0x10) = 0;
}
else if (*(undefined4 **)(param_1 + 0x1c) < puVar2) {
param_1[4] = (bf_read)0x1;
*(undefined4 *)(param_1 + 0x10) = 0;
}
else {
*(undefined4 **)(param_1 + 0x18) = puVar2 + 1;
*(undefined4 *)(param_1 + 0x10) = *puVar2;
}
}
else {
*(uint *)(param_1 + 0x10) = local_20 >> 0x10;
}
goto LAB_0057c430;
}
}
*(int *)(param_1 + 0x14) = iVar11 + -1;
if (iVar11 + -1 == 0) {
puVar2 = *(undefined4 **)(param_1 + 0x18);
*(undefined4 *)(param_1 + 0x14) = 0x20;
if (puVar2 == *(undefined4 **)(param_1 + 0x1c)) {
*(undefined4 *)(param_1 + 0x14) = 1;
*(undefined4 *)(param_1 + 0x10) = 0;
*(undefined4 **)(param_1 + 0x18) = puVar2 + 1;
}
else if (*(undefined4 **)(param_1 + 0x1c) < puVar2) {
param_1[4] = (bf_read)0x1;
*(undefined4 *)(param_1 + 0x10) = 0;
}
else {
*(undefined4 **)(param_1 + 0x18) = puVar2 + 1;
*(undefined4 *)(param_1 + 0x10) = *puVar2;
}
}
else {
*(uint *)(param_1 + 0x10) = local_20 >> 1;
}
if ((local_20 & 1) == 0) goto LAB_0057b950;
iVar11 = *(int *)(param_1 + 0x14);
uVar10 = (ushort)*(uint *)(param_1 + 0x10);
if (iVar11 < 0x10) {
puVar9 = *(uint **)(param_1 + 0x18);
if (puVar9 == *(uint **)(param_1 + 0x1c)) {
*(undefined4 *)(param_1 + 0x14) = 1;
uVar10 = 0;
*(undefined4 *)(param_1 + 0x10) = 0;
*(uint **)(param_1 + 0x18) = puVar9 + 1;
param_1[4] = (bf_read)0x1;
}
else {
if (puVar9 < *(uint **)(param_1 + 0x1c)) {
*(uint **)(param_1 + 0x18) = puVar9 + 1;
uVar12 = *puVar9;
*(uint *)(param_1 + 0x10) = uVar12;
if (param_1[4] == (bf_read)0x0) {
uVar6 = *(uint *)(CBitBuffer::s_nMaskTable + (0x10 - iVar11) * 4);
*(int *)(param_1 + 0x14) = iVar11 + 0x10;
uVar10 = (ushort)((uVar6 & uVar12) << ((byte)iVar11 & 0x1f)) | uVar10;
*(uint *)(param_1 + 0x10) = uVar12 >> ((byte)(0x10 - iVar11) & 0x1f);
goto LAB_0057c3e0;
}
}
else {
param_1[4] = (bf_read)0x1;
*(undefined4 *)(param_1 + 0x10) = 0;
}
uVar10 = 0;
}
}
else {
*(int *)(param_1 + 0x14) = iVar11 + -0x10;
if (iVar11 + -0x10 == 0) {
puVar2 = *(undefined4 **)(param_1 + 0x18);
*(undefined4 *)(param_1 + 0x14) = 0x20;
if (puVar2 == *(undefined4 **)(param_1 + 0x1c)) {
*(undefined4 *)(param_1 + 0x14) = 1;
*(undefined4 *)(param_1 + 0x10) = 0;
*(undefined4 **)(param_1 + 0x18) = puVar2 + 1;
}
else if (*(undefined4 **)(param_1 + 0x1c) < puVar2) {
param_1[4] = (bf_read)0x1;
*(undefined4 *)(param_1 + 0x10) = 0;
}
else {
*(undefined4 **)(param_1 + 0x18) = puVar2 + 1;
*(undefined4 *)(param_1 + 0x10) = *puVar2;
}
}
else {
*(uint *)(param_1 + 0x10) = *(uint *)(param_1 + 0x10) >> 0x10;
}
}
LAB_0057c3e0:
*(ushort *)(param_2 + 0x3a) = uVar10;
LAB_0057b950:
cVar7 = IsHeadTrackingEnabled();
if (cVar7 == '\0') {
return;
}
uVar12 = *(uint *)(param_1 + 0x10);
pbVar1 = param_1 + 0x14;
*(int *)pbVar1 = *(int *)pbVar1 + -1;
if (*(int *)pbVar1 == 0) {
puVar2 = *(undefined4 **)(param_1 + 0x18);
*(undefined4 *)(param_1 + 0x14) = 0x20;
if (puVar2 == *(undefined4 **)(param_1 + 0x1c)) {
*(undefined4 *)(param_1 + 0x14) = 1;
*(undefined4 *)(param_1 + 0x10) = 0;
*(undefined4 **)(param_1 + 0x18) = puVar2 + 1;
}
else if (*(undefined4 **)(param_1 + 0x1c) < puVar2) {
param_1[4] = (bf_read)0x1;
*(undefined4 *)(param_1 + 0x10) = 0;
}
else {
*(undefined4 **)(param_1 + 0x18) = puVar2 + 1;
*(undefined4 *)(param_1 + 0x10) = *puVar2;
}
}
else {
*(uint *)(param_1 + 0x10) = uVar12 >> 1;
}
if ((uVar12 & 1) == 0) {
uVar12 = *(uint *)(param_1 + 0x10);
pbVar1 = param_1 + 0x14;
*(int *)pbVar1 = *(int *)pbVar1 + -1;
iVar11 = *(int *)pbVar1;
}
else {
lVar13 = (longdouble)CBitRead::ReadBitAngle((CBitRead *)param_1,0x10);
*(float *)(param_2 + 0x40) = (float)lVar13;
uVar12 = *(uint *)(param_1 + 0x10);
pbVar1 = param_1 + 0x14;
*(int *)pbVar1 = *(int *)pbVar1 + -1;
iVar11 = *(int *)pbVar1;
}
if (iVar11 == 0) {
puVar2 = *(undefined4 **)(param_1 + 0x18);
*(undefined4 *)(param_1 + 0x14) = 0x20;
if (puVar2 == *(undefined4 **)(param_1 + 0x1c)) {
*(undefined4 *)(param_1 + 0x14) = 1;
*(undefined4 *)(param_1 + 0x10) = 0;
*(undefined4 **)(param_1 + 0x18) = puVar2 + 1;
}
else if (*(undefined4 **)(param_1 + 0x1c) < puVar2) {
param_1[4] = (bf_read)0x1;
*(undefined4 *)(param_1 + 0x10) = 0;
}
else {
*(undefined4 **)(param_1 + 0x18) = puVar2 + 1;
*(undefined4 *)(param_1 + 0x10) = *puVar2;
}
}
else {
*(uint *)(param_1 + 0x10) = uVar12 >> 1;
}
if ((uVar12 & 1) == 0) {
uVar12 = *(uint *)(param_1 + 0x10);
pbVar1 = param_1 + 0x14;
*(int *)pbVar1 = *(int *)pbVar1 + -1;
iVar11 = *(int *)pbVar1;
}
else {
lVar13 = (longdouble)CBitRead::ReadBitAngle((CBitRead *)param_1,0x10);
*(float *)(param_2 + 0x44) = (float)lVar13;
uVar12 = *(uint *)(param_1 + 0x10);
pbVar1 = param_1 + 0x14;
*(int *)pbVar1 = *(int *)pbVar1 + -1;
iVar11 = *(int *)pbVar1;
}
if (iVar11 == 0) {
puVar2 = *(undefined4 **)(param_1 + 0x18);
*(undefined4 *)(param_1 + 0x14) = 0x20;
if (puVar2 == *(undefined4 **)(param_1 + 0x1c)) {
*(undefined4 *)(param_1 + 0x14) = 1;
*(undefined4 *)(param_1 + 0x10) = 0;
*(undefined4 **)(param_1 + 0x18) = puVar2 + 1;
}
else if (*(undefined4 **)(param_1 + 0x1c) < puVar2) {
param_1[4] = (bf_read)0x1;
*(undefined4 *)(param_1 + 0x10) = 0;
}
else {
*(undefined4 **)(param_1 + 0x18) = puVar2 + 1;
*(undefined4 *)(param_1 + 0x10) = *puVar2;
}
}
else {
*(uint *)(param_1 + 0x10) = uVar12 >> 1;
}
if ((uVar12 & 1) == 0) {
uVar12 = *(uint *)(param_1 + 0x10);
pbVar1 = param_1 + 0x14;
*(int *)pbVar1 = *(int *)pbVar1 + -1;
iVar11 = *(int *)pbVar1;
}
else {
lVar13 = (longdouble)CBitRead::ReadBitAngle((CBitRead *)param_1,8);
*(float *)(param_2 + 0x48) = (float)lVar13;
uVar12 = *(uint *)(param_1 + 0x10);
pbVar1 = param_1 + 0x14;
*(int *)pbVar1 = *(int *)pbVar1 + -1;
iVar11 = *(int *)pbVar1;
}
if (iVar11 == 0) {
puVar2 = *(undefined4 **)(param_1 + 0x18);
*(undefined4 *)(param_1 + 0x14) = 0x20;
if (puVar2 == *(undefined4 **)(param_1 + 0x1c)) {
*(undefined4 *)(param_1 + 0x14) = 1;
*(undefined4 *)(param_1 + 0x10) = 0;
*(undefined4 **)(param_1 + 0x18) = puVar2 + 1;
}
else if (*(undefined4 **)(param_1 + 0x1c) < puVar2) {
param_1[4] = (bf_read)0x1;
*(undefined4 *)(param_1 + 0x10) = 0;
}
else {
*(undefined4 **)(param_1 + 0x18) = puVar2 + 1;
*(undefined4 *)(param_1 + 0x10) = *puVar2;
}
}
else {
*(uint *)(param_1 + 0x10) = uVar12 >> 1;
}
if ((uVar12 & 1) != 0) {
CBitRead::ReadBitVec3Coord((CBitRead *)param_1,(Vector *)(param_2 + 0x4c));
return;
}
return;
}
SourceMod gamedata
paste intoaddons/sourcemod/gamedata/<your_plugin>.txt
used as the SourceMod key — change to fit your plugin's convention
SourceMod library name (server / engine / matchmaking)
Just a Signatures{} block, ready to drop into a gamedata
file. Wire it up in your plugin however you like - SDKCall, DHooks,
raw memory ops, or anything else.
Signatures + Functions block. The plugin uses
DHookCreateFromConf - DHooks reads return type, this-type,
calling convention, and argument types straight from the gamedata. Less
boilerplate in the plugin, types travel with the gamedata.
Gamedata KeyValues
DHooks plugin example
Type inference is best-effort from the C signature - sanity-check the DHooks types before shipping.