Skip to content

Instantly share code, notes, and snippets.

@lowlevel01
Created April 9, 2025 14:35
Show Gist options
  • Save lowlevel01/ef183397a0b3110a74751e5445d10c16 to your computer and use it in GitHub Desktop.
Save lowlevel01/ef183397a0b3110a74751e5445d10c16 to your computer and use it in GitHub Desktop.
void __cdecl FUN_000b04f0(uint *param_1,uint *param_2,uint *param_3,uint param_4)
{
int iVar1;
uint uVar2;
uint uVar3;
uint uVar4;
uint uVar5;
uint uVar6;
uint uVar7;
uint *puVar8;
undefined4 *puVar9;
uint uVar10;
uint *puVar11;
undefined2 *puVar12;
uint uVar13;
uint uVar14;
uint local_124;
uint local_120;
uint local_11c;
uint local_118;
uint local_114;
uint local_110;
uint local_10c;
uint local_108;
uint local_104;
uint *local_fc;
uint local_f8;
uint local_f4;
uint *local_ec;
uint *local_e8;
uint local_e0 [4];
uint local_d0;
uint local_cc;
uint local_c8;
uint local_c4;
uint local_c0;
uint local_bc;
uint local_b8;
uint local_b4;
uint local_b0;
uint local_ac;
uint local_a8;
uint local_a4;
undefined2 local_a0 [2];
uint local_9c;
int local_98;
uint local_90 [4];
int local_80;
int local_7c;
int local_78;
int local_74;
int local_70;
int local_6c;
int local_68;
int local_64;
uint local_60;
uint local_5c;
int local_58;
int local_54;
undefined4 local_50;
if (param_4 != 0) {
local_fc = param_2;
puVar8 = param_1;
puVar11 = local_90;
for (iVar1 = 0x10; iVar1 != 0; iVar1 = iVar1 + -1) {
*puVar11 = *puVar8;
puVar8 = puVar8 + 1;
puVar11 = puVar11 + 1;
}
local_ec = (uint *)0x0;
puVar8 = param_1 + 0x10;
puVar9 = &local_50;
for (iVar1 = 0; iVar1 != 0; iVar1 = iVar1 + -1) {
*(short *)puVar9 = (short)*puVar8;
puVar8 = (uint *)((int)puVar8 + 2);
puVar9 = (undefined4 *)((int)puVar9 + 2);
}
do {
local_e8 = param_3;
if (param_4 < 0x40) {
if (param_4 != 0) {
uVar2 = 0;
if (3 < param_4) {
uVar2 = 0;
do {
*(undefined1 *)((int)&local_50 + uVar2) = *(undefined1 *)((int)local_fc + uVar2);
*(undefined1 *)((int)&local_50 + uVar2 + 1) =
*(undefined1 *)((int)local_fc + uVar2 + 1);
*(undefined1 *)((int)&local_50 + uVar2 + 2) =
*(undefined1 *)((int)local_fc + uVar2 + 2);
*(undefined1 *)((int)&local_50 + uVar2 + 3) =
*(undefined1 *)((int)local_fc + uVar2 + 3);
uVar2 = uVar2 + 4;
} while ((param_4 & 0x3c) != uVar2);
}
if ((param_4 & 3) != 0) {
uVar3 = 0;
do {
*(undefined1 *)((int)&local_50 + uVar3 + uVar2) =
*(undefined1 *)((int)local_fc + uVar3 + uVar2);
uVar3 = uVar3 + 1;
} while ((param_4 & 3) != uVar3);
}
}
local_fc = &local_50;
local_ec = param_3;
local_e8 = local_fc;
}
puVar8 = local_90;
puVar11 = local_e0;
local_9c = param_4;
for (iVar1 = 0x10; iVar1 != 0; iVar1 = iVar1 + -1) {
*puVar11 = *puVar8;
puVar8 = puVar8 + 1;
puVar11 = puVar11 + 1;
}
puVar9 = &local_50;
puVar12 = local_a0;
for (iVar1 = 0; iVar1 != 0; iVar1 = iVar1 + -1) {
*puVar12 = *(undefined2 *)puVar9;
puVar9 = (undefined4 *)((int)puVar9 + 2);
puVar12 = puVar12 + 1;
}
local_124 = local_e0[0];
local_11c = local_e0[1];
local_118 = local_c0;
local_114 = local_ac;
local_f4 = local_bc;
local_120 = local_c8;
local_10c = local_e0[2];
local_104 = local_b8;
local_110 = local_e0[3];
local_f8 = local_a4;
local_98 = 10;
local_108 = local_b4;
do {
uVar2 = local_b0 ^ local_124 + local_d0;
uVar3 = uVar2 << 0x10 | uVar2 >> 0x10;
local_118 = local_118 + uVar3;
uVar2 = local_118 + (local_118 & local_d0) * -2 + local_d0;
uVar2 = uVar2 * 0x1000 | uVar2 >> 0x14;
local_124 = local_124 + local_d0 + uVar2;
uVar3 = uVar3 ^ local_124;
uVar10 = uVar3 << 8 | uVar3 >> 0x18;
local_118 = local_118 + uVar10;
uVar2 = uVar2 ^ local_118;
uVar7 = uVar2 << 7 | uVar2 >> 0x19;
local_11c = local_11c + local_cc;
uVar2 = local_a8 ^ local_10c + local_120;
uVar5 = uVar2 << 0x10 | uVar2 >> 0x10;
uVar2 = local_120 ^ local_104 + uVar5;
uVar13 = uVar2 << 0xc | uVar2 >> 0x14;
local_10c = local_10c + local_120 + uVar13;
uVar2 = uVar5 + local_10c + (local_10c & uVar5) * -2;
uVar6 = uVar2 * 0x100 | uVar2 >> 0x18;
local_110 = local_110 + local_c4;
uVar14 = (local_f8 ^ local_110) << 0x10 | (local_f8 ^ local_110) >> 0x10;
local_108 = local_108 + uVar14;
uVar2 = local_c4 ^ local_108;
uVar4 = uVar2 << 0xc | uVar2 >> 0x14;
local_114 = local_11c + (local_114 & local_11c) * -2 + local_114;
local_110 = (local_110 ^ uVar4) + (uVar4 & local_110) * 2;
uVar14 = uVar14 ^ local_110;
local_110 = local_110 + uVar7;
uVar3 = local_114 * 0x10000 | local_114 >> 0x10;
local_f4 = local_f4 + uVar3;
uVar2 = local_cc ^ local_f4;
uVar2 = uVar2 << 0xc | uVar2 >> 0x14;
local_11c = local_11c + uVar2;
uVar3 = uVar3 ^ local_11c;
uVar3 = uVar3 << 8 | uVar3 >> 0x18;
local_f4 = local_f4 + uVar3;
uVar2 = uVar2 ^ local_f4;
uVar2 = uVar2 << 7 | uVar2 >> 0x19;
local_104 = local_104 + uVar5 + uVar6;
uVar13 = uVar13 ^ local_104;
uVar13 = uVar13 << 7 | uVar13 >> 0x19;
uVar5 = uVar14 << 8 | uVar14 >> 0x18;
local_108 = local_108 + uVar5;
uVar4 = uVar4 ^ local_108;
uVar4 = uVar4 << 7 | uVar4 >> 0x19;
local_124 = local_124 + uVar2;
uVar5 = uVar5 ^ local_124;
uVar5 = uVar5 << 0x10 | uVar5 >> 0x10;
local_104 = local_104 + uVar5;
uVar2 = uVar2 ^ local_104;
uVar2 = uVar2 << 0xc | uVar2 >> 0x14;
local_124 = local_124 + uVar2;
uVar5 = uVar5 ^ local_124;
local_f8 = uVar5 << 8 | uVar5 >> 0x18;
local_104 = local_104 + local_f8;
uVar2 = uVar2 ^ local_104;
local_cc = uVar2 << 7 | uVar2 >> 0x19;
local_11c = local_11c + uVar13;
uVar10 = uVar10 ^ local_11c;
uVar2 = uVar10 << 0x10 | uVar10 >> 0x10;
local_108 = local_108 + uVar2;
uVar13 = uVar13 ^ local_108;
uVar13 = uVar13 << 0xc | uVar13 >> 0x14;
local_11c = local_11c + uVar13;
uVar2 = uVar2 ^ local_11c;
local_b0 = uVar2 << 8 | uVar2 >> 0x18;
local_108 = local_108 + local_b0;
uVar13 = uVar13 ^ local_108;
local_120 = uVar13 << 7 | uVar13 >> 0x19;
local_10c = local_10c + uVar4;
uVar3 = uVar3 ^ local_10c;
uVar2 = uVar3 << 0x10 | uVar3 >> 0x10;
local_118 = local_118 + uVar2;
uVar4 = uVar4 ^ local_118;
uVar3 = uVar4 << 0xc | uVar4 >> 0x14;
uVar6 = local_110 + (local_110 & uVar6) * -2 + uVar6;
local_10c = local_10c + uVar3;
uVar2 = uVar2 ^ local_10c;
local_114 = uVar2 << 8 | uVar2 >> 0x18;
local_118 = local_118 + local_114;
uVar3 = uVar3 ^ local_118;
local_c4 = uVar3 << 7 | uVar3 >> 0x19;
uVar3 = uVar6 * 0x10000 | uVar6 >> 0x10;
local_f4 = local_f4 + uVar3;
uVar7 = uVar7 ^ local_f4;
uVar2 = uVar7 << 0xc | uVar7 >> 0x14;
local_110 = local_110 + uVar2;
uVar3 = uVar3 ^ local_110;
local_a8 = uVar3 << 8 | uVar3 >> 0x18;
local_f4 = local_f4 + local_a8;
uVar2 = uVar2 ^ local_f4;
local_d0 = uVar2 << 7 | uVar2 >> 0x19;
local_98 = local_98 + -1;
} while (local_98 != 0);
local_e0[0] = local_124 + local_90[0] ^ *local_fc;
local_e0[1] = local_11c + local_90[1] ^ local_fc[1];
local_e0[2] = local_10c + local_90[2] ^ local_fc[2];
local_e0[3] = local_110 + local_90[3] ^ local_fc[3];
local_d0 = local_d0 + local_80 ^ local_fc[4];
local_cc = local_cc + local_7c ^ local_fc[5];
local_c8 = local_120 + local_78 ^ local_fc[6];
local_c4 = local_c4 + local_74 ^ local_fc[7];
local_c0 = local_118 + local_70 ^ local_fc[8];
local_bc = local_f4 + local_6c ^ local_fc[9];
local_b8 = local_104 + local_68 ^ local_fc[10];
local_b4 = local_108 + local_64 ^ local_fc[0xb];
local_b0 = local_b0 + local_60 ^ local_fc[0xc];
local_ac = local_114 + local_5c ^ local_fc[0xd];
local_a8 = local_a8 + local_58 + local_fc[0xe] + (local_fc[0xe] & local_a8 + local_58) * -2 ;
local_a4 = local_f8 + local_54 ^ local_fc[0xf];
local_60 = local_60 + 1;
if (local_60 == 0) {
local_5c = local_5c + 1;
}
*local_e8 = local_e0[0];
local_e8[1] = local_e0[1];
local_e8[2] = local_e0[2];
local_e8[3] = local_e0[3];
local_e8[4] = local_d0;
local_e8[5] = local_cc;
local_e8[6] = local_c8;
local_e8[7] = local_c4;
local_e8[8] = local_c0;
local_e8[9] = local_bc;
local_e8[10] = local_b8;
local_e8[0xb] = local_b4;
local_e8[0xc] = local_b0;
local_e8[0xd] = local_ac;
local_e8[0xe] = local_a8;
local_e8[0xf] = local_a4;
if (local_9c < 0x41) {
if (local_9c - 1 < 0x3f) {
uVar2 = 0;
if (2 < local_9c - 1) {
uVar2 = 0;
do {
*(undefined1 *)((int)local_ec + uVar2) = *(undefined1 *)((int)local_e8 + uVar2);
*(undefined1 *)((int)local_ec + uVar2 + 1) =
*(undefined1 *)((int)local_e8 + uVar2 + 1);
*(undefined1 *)((int)local_ec + uVar2 + 2) =
*(undefined1 *)((int)local_e8 + uVar2 + 2);
*(undefined1 *)((int)local_ec + uVar2 + 3) =
*(undefined1 *)((int)local_e8 + uVar2 + 3);
uVar2 = uVar2 + 4;
} while ((local_9c & 0x3c) != uVar2);
}
if ((local_9c & 3) != 0) {
uVar3 = 0;
do {
*(undefined1 *)((int)local_ec + uVar3 + uVar2) =
*(undefined1 *)((int)local_e8 + uVar3 + uVar2);
uVar3 = uVar3 + 1;
} while ((local_9c & 3) != uVar3);
}
}
param_1[0xc] = local_60;
param_1[0xd] = local_5c;
param_4 = local_9c;
param_3 = local_e8;
}
else {
local_fc = local_fc + 0x10;
param_3 = local_e8 + 0x10;
param_4 = local_9c - 0x40;
}
} while (0x40 < local_9c);
}
return;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment