1
// TODO also with >> 1 and >> 3
2
// also HEAP*U*, and HEAP8, 16
3
function shifty($id2) {
4
// $id is a non-ssa, $id2 is a param. both should be replaced with a shifted version
6
q(HEAP32[($id + 40) >> 2]);
7
q(HEAP32[($id + 80 | 0) >> 2]);
8
q(HEAP32[(unknown1 + unknown2 + $id) >> 2]);
9
q(HEAP32[(unknown1 + $id + unknown2) >> 2]); // unknowns should be shifted together
10
var localUnchanged1 = get(1), localUnchanged2 = get(1);
11
q(HEAP32[(localUnchanged1 + $id + localUnchanged2) >> 2]); // unknowns should be shifted together
12
q($id >> _something_); // non-fixed shift
14
q($id << _somethingElse_); // non-fixed shift
20
q(HEAP32[($id2 + 40) >> 1]);
21
q(HEAP32[($id2 + 80 | 0) >> 1]);
24
q(HEAP32[($id3 + 40) >> 3]);
25
q(HEAP32[($id3 + 80 | 0) >> 3]);
28
// similar, but inside another HEAP
29
var _idents = get('abc');
30
q(HEAP32[(HEAP32[_idents >> 2] + 8 | 0) >> 2]);
31
q(HEAP32[(HEAP32[_idents >> 2] + 8 | 0) >> 2]);
32
q(HEAP32[(HEAP32[_idents >> 2] + 8 | 0) >> 2]);
34
// $i's shifts should consolidate (the last should be 0..?
35
// since we may have had |0 in the middle!)
36
var $sn_addr = get(12), $a_addr = get(999);
38
q(HEAP32[($a_addr + ((($sn_addr - 1 << 1) + 1 | 0) << 2) | 0) >> 2]);
39
q(HEAP32[($a_addr + ((($i - 1 << 1) + 1 | 0) << 2) | 0) >> 2]);
40
q(HEAP32[($a_addr + (($i << 1 | 0) << 2) | 0) >> 2]);
41
q(HEAP32[($a_addr + ($i << 2)) >> 2]);
42
q($a_addr >> 2, z($a_addr >> 2));
44
var $level = HEAP[get(322) >> 2]; // ignore this
45
var _dwt_norms_real = get('a'), $orient = get('cheez');
46
q(HEAP32[(_dwt_norms_real + $orient * 80 + ($level << 3) | 0) >> 2]);
47
q(HEAP32[(_dwt_norms_real + $orient * 80 + ($level << 3) + 4 | 0) >> 2]);
48
q(HEAP32[(_dwt_norms_real + $orient * 80 + ($level << 3) + 8 | 0) >> 2]);
51
var $wavelet38 = get(38);
53
q(HEAPF32[(HEAP32[$wavelet38 >> 2] + ($k << 4) + 8 | 0) >> 2]);
54
q(HEAPF32[(HEAP32[$wavelet38 >> 2] + ($k << 4) + 12 | 0) >> 2]);
55
q(HEAPF32[(HEAP32[$wavelet38 >> 2] + ($k << 4) + 400 | 0) >> 2]);
57
// reuse $k, which already reuses $a_addr
58
var $p = $k, $parameters_addr = get('burger')
59
q(HEAP32[($parameters_addr + 5624 + ($p << 2) | 0) >> 2]);
60
q(HEAP32[($parameters_addr + 5644 + ($p << 2) | 0) >> 2]);
61
q(HEAP32[($parameters_addr + 5664 + ($p << 2) | 0) >> 2]);
63
// loops count as more uses!
64
var $res_spec242 = get($real), $cp = get('b'), $tileno = arguments[2];
65
q(HEAP32[($parameters_addr + 5624 + (($res_spec242 - 1 | 0) << 2) | 0) >> 2]);
66
q(HEAP32[(HEAP32[($cp + 108 | 0) >> 2] + $tileno * 5588 + 420 | 0) >> 2]);
69
q(1 << $idx << 1); // Do not turn this into the slower 1 << $idx + 1 (which is identical though)
70
print(INDENT + "Entering: _main" + "hi"); // this order should not be modified
79
HEAP32[HEAP[$tp >> 2]] = 5;
80
HEAP32[HEAP[$tp >> 2] >> 2] = 5;
90
q((go() + 2) >> 2); // the 2 >> 2 can't be simplified
92
// EMSCRIPTEN_GENERATED_FUNCTIONS: ["shifty"]