Some Assembly Required 2

This commit is contained in:
Maxime Vorwerk
2024-06-18 20:07:38 +02:00
parent 0cf185032d
commit bf08dc3e2b
6 changed files with 1656 additions and 0 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,102 @@
export memory memory(initial: 2, max: 0);
global g_a:int = 66864;
export global input:int = 1072;
export global dso_handle:int = 1024;
export global data_end:int = 1328;
export global global_base:int = 1024;
export global heap_base:int = 66864;
export global memory_base:int = 0;
export global table_base:int = 1;
table T_a:funcref(min: 1, max: 1);
data d_xakgKNs989l1im8i890088k09nj9(offset: 1024) =
"xakgK\Ns9=8:9l1?im8i<89?00>88k09=nj9kimnu\00\00";
export function wasm_call_ctors() {
}
export function strcmp(a:int, b:int):int {
var c:int = g_a;
var d:int = 32;
var e:int = c - d;
e[6]:int = a;
e[5]:int = b;
var f:int = e[6]:int;
e[4]:int = f;
var g:int = e[5]:int;
e[3]:int = g;
loop L_b {
var h:ubyte_ptr = e[4]:int;
var i:int = 1;
var j:int = h + i;
e[4]:int = j;
var k:int = h[0];
e[11]:byte = k;
var l:ubyte_ptr = e[3]:int;
var m:int = 1;
var n:int = l + m;
e[3]:int = n;
var o:int = l[0];
e[10]:byte = o;
var p:int = e[11]:ubyte;
var q:int = 255;
var r:int = p & q;
if (r) goto B_c;
var s:int = e[11]:ubyte;
var t:int = 255;
var u:int = s & t;
var v:int = e[10]:ubyte;
var w:int = 255;
var x:int = v & w;
var y:int = u - x;
e[7]:int = y;
goto B_a;
label B_c:
var z:int = e[11]:ubyte;
var aa:int = 255;
var ba:int = z & aa;
var ca:int = e[10]:ubyte;
var da:int = 255;
var ea:int = ca & da;
var fa:int = ba;
var ga:int = ea;
var ha:int = fa == ga;
var ia:int = 1;
var ja:int = ha & ia;
if (ja) continue L_b;
}
var ka:int = e[11]:ubyte;
var la:int = 255;
var ma:int = ka & la;
var na:int = e[10]:ubyte;
var oa:int = 255;
var pa:int = na & oa;
var qa:int = ma - pa;
e[7]:int = qa;
label B_a:
var ra:int = e[7]:int;
return ra;
}
export function check_flag():int {
var b:int = 1072;
var c:int = 1024;
var d:int = strcmp(c, b);
var g:int = d != 0;
var i:int = g ^ -1;
var k:int = i & 1;
return k;
}
function copy(a:int, b:int) {
var c:int = g_a;
var e:int_ptr = c - 16;
if (eqz(a))
goto B_a;
a = a ^ 8;
label B_a:
b[1072] = a;
}

View File

@@ -0,0 +1,84 @@
/* Automatically generated by wasm2c */
#ifndef Y8SPLX37QY_H_GENERATED_
#define Y8SPLX37QY_H_GENERATED_
#include "wasm-rt.h"
#include <stdint.h>
#ifndef WASM_RT_CORE_TYPES_DEFINED
#define WASM_RT_CORE_TYPES_DEFINED
typedef uint8_t u8;
typedef int8_t s8;
typedef uint16_t u16;
typedef int16_t s16;
typedef uint32_t u32;
typedef int32_t s32;
typedef uint64_t u64;
typedef int64_t s64;
typedef float f32;
typedef double f64;
#endif
#ifdef __cplusplus
extern "C" {
#endif
typedef struct w2c_Y8splx37qY {
u32 w2c_g0;
u32 w2c_input;
u32 w2c_0x5F_dso_handle;
u32 w2c_0x5F_data_end;
u32 w2c_0x5F_global_base;
u32 w2c_0x5F_heap_base;
u32 w2c_0x5F_memory_base;
u32 w2c_0x5F_table_base;
wasm_rt_memory_t w2c_memory;
wasm_rt_funcref_table_t w2c_T0;
} w2c_Y8splx37qY;
void wasm2c_Y8splx37qY_instantiate(w2c_Y8splx37qY*);
void wasm2c_Y8splx37qY_free(w2c_Y8splx37qY*);
wasm_rt_func_type_t wasm2c_Y8splx37qY_get_func_type(uint32_t param_count, uint32_t result_count, ...);
/* export: 'memory' */
wasm_rt_memory_t* w2c_Y8splx37qY_memory(w2c_Y8splx37qY* instance);
/* export: '__wasm_call_ctors' */
void w2c_Y8splx37qY_0x5F_wasm_call_ctors(w2c_Y8splx37qY*);
/* export: 'strcmp' */
u32 w2c_Y8splx37qY_strcmp(w2c_Y8splx37qY*, u32, u32);
/* export: 'check_flag' */
u32 w2c_Y8splx37qY_check_flag(w2c_Y8splx37qY*);
/* export: 'input' */
u32* w2c_Y8splx37qY_input(w2c_Y8splx37qY* instance);
/* export: 'copy_char' */
void w2c_Y8splx37qY_copy_char(w2c_Y8splx37qY*, u32, u32);
/* export: '__dso_handle' */
u32* w2c_Y8splx37qY_0x5F_dso_handle(w2c_Y8splx37qY* instance);
/* export: '__data_end' */
u32* w2c_Y8splx37qY_0x5F_data_end(w2c_Y8splx37qY* instance);
/* export: '__global_base' */
u32* w2c_Y8splx37qY_0x5F_global_base(w2c_Y8splx37qY* instance);
/* export: '__heap_base' */
u32* w2c_Y8splx37qY_0x5F_heap_base(w2c_Y8splx37qY* instance);
/* export: '__memory_base' */
u32* w2c_Y8splx37qY_0x5F_memory_base(w2c_Y8splx37qY* instance);
/* export: '__table_base' */
u32* w2c_Y8splx37qY_0x5F_table_base(w2c_Y8splx37qY* instance);
#ifdef __cplusplus
}
#endif
#endif /* Y8SPLX37QY_H_GENERATED_ */

View File

@@ -0,0 +1,44 @@
const name_list = ['copy_char', 'value', '207aLjBod', '1301420SaUSqf', '233ZRpipt', '2224QffgXU', 'check_flag', '408533hsoVYx', 'instance', '278338GVFUrH', 'Correct!', '549933ZVjkwI', 'innerHTML', 'charCodeAt', './aD8SvhyVkb', 'result', '977AzKzwq', 'Incorrect!', 'exports', 'length', 'getElementById', '1jIrMBu', 'input', '615361geljRK'];
const name_selector = function(arg1, arg2) {
arg1 = arg1 - 195;
let selected_name = name_list[arg1];
return selected_name;
};
(function(arg1, arg2) {
const _name_selector = name_selector;
while (!![]) {
try {
const some_int = -parseInt(_name_selector(0xc8)) * -parseInt(_name_selector(0xc9)) + -parseInt(_name_selector(0xcd)) + parseInt(_name_selector(0xcf)) + parseInt(_name_selector(195)) + -parseInt(_name_selector(0xc6)) * parseInt(_name_selector(0xd4)) + parseInt(_name_selector(0xcb)) + -parseInt(_name_selector(0xd9)) * parseInt(_name_selector(0xc7));
if (some_int === arg2)
break;
else
arg1['push'](arg1['shift']());
} catch (_0x4f8a) {
arg1['push'](arg1['shift']());
}
}
}(name_list, 310022));
let exports;
(async () => {
const _name_selector = name_selector;
let some_name = await fetch(_name_selector(210)),
wasm = await WebAssembly['instantiate'](await some_name['arrayBuffer']()),
wasm_symbol = wasm[_name_selector(204)];
exports = wasm_symbol[_name_selector(214)];
})();
function onButtonPress() {
const _name_selector = name_selector;
let some_doc_comp = document[_name_selector(0xd8)](_name_selector(0xda))[_name_selector(0xc5)];
for (let i = 0; i < some_doc_comp['length']; i++) {
exports[_name_selector(196)](some_doc_comp[_name_selector(209)](i), i);
}
exports['copy_char'](0, some_doc_comp[_name_selector(0xd7)]),
exports[_name_selector(0xca)]() == 0x1 ?
document['getElementById'](_name_selector(0xd3))[_name_selector(0xd0)] = _name_selector(0xce):
document[_name_selector(0xd8)](_name_selector(0xd3))['innerHTML'] = _name_selector(0xd5);
}

Binary file not shown.

View File

@@ -0,0 +1,281 @@
(module
(table $table0 1 1 funcref)
(memory $memory0 2)
(global $global0 (mut i32) (i32.const 66864))
(global $global1 i32 (i32.const 1072))
(global $global2 i32 (i32.const 1024))
(global $global3 i32 (i32.const 1328))
(global $global4 i32 (i32.const 1024))
(global $global5 i32 (i32.const 66864))
(global $global6 i32 (i32.const 0))
(global $global7 i32 (i32.const 1))
(export "memory" (memory $memory0))
(export "__wasm_call_ctors" (func $func0))
(export "strcmp" (func $func1))
(export "check_flag" (func $func2))
(export "input" (global $global1))
(export "copy_char" (func $func3))
(export "__dso_handle" (global $global2))
(export "__data_end" (global $global3))
(export "__global_base" (global $global4))
(export "__heap_base" (global $global5))
(export "__memory_base" (global $global6))
(export "__table_base" (global $global7))
(func $func0
)
(func $func1 (param $var0 i32) (param $var1 i32) (result i32)
(local $var2 i32) (local $var3 i32) (local $var4 i32) (local $var5 i32) (local $var6 i32) (local $var7 i32) (local $var8 i32) (local $var9 i32) (local $var10 i32) (local $var11 i32) (local $var12 i32) (local $var13 i32) (local $var14 i32) (local $var15 i32) (local $var16 i32) (local $var17 i32) (local $var18 i32) (local $var19 i32) (local $var20 i32) (local $var21 i32) (local $var22 i32) (local $var23 i32) (local $var24 i32) (local $var25 i32) (local $var26 i32) (local $var27 i32) (local $var28 i32) (local $var29 i32) (local $var30 i32) (local $var31 i32) (local $var32 i32) (local $var33 i32) (local $var34 i32) (local $var35 i32) (local $var36 i32) (local $var37 i32) (local $var38 i32) (local $var39 i32) (local $var40 i32) (local $var41 i32) (local $var42 i32) (local $var43 i32)
global.get $global0
local.set $var2
i32.const 32
local.set $var3
local.get $var2
local.get $var3
i32.sub
local.set $var4
local.get $var4
local.get $var0
i32.store offset=24
local.get $var4
local.get $var1
i32.store offset=20
local.get $var4
i32.load offset=24
local.set $var5
local.get $var4
local.get $var5
i32.store offset=16
local.get $var4
i32.load offset=20
local.set $var6
local.get $var4
local.get $var6
i32.store offset=12
block $label1
loop $label2
local.get $var4
i32.load offset=16
local.set $var7
i32.const 1
local.set $var8
local.get $var7
local.get $var8
i32.add
local.set $var9
local.get $var4
local.get $var9
i32.store offset=16
local.get $var7
i32.load8_u
local.set $var10
local.get $var4
local.get $var10
i32.store8 offset=11
local.get $var4
i32.load offset=12
local.set $var11
i32.const 1
local.set $var12
local.get $var11
local.get $var12
i32.add
local.set $var13
local.get $var4
local.get $var13
i32.store offset=12
local.get $var11
i32.load8_u
local.set $var14
local.get $var4
local.get $var14
i32.store8 offset=10
local.get $var4
i32.load8_u offset=11
local.set $var15
i32.const 255
local.set $var16
local.get $var15
local.get $var16
i32.and
local.set $var17
block $label0
local.get $var17
br_if $label0
local.get $var4
i32.load8_u offset=11
local.set $var18
i32.const 255
local.set $var19
local.get $var18
local.get $var19
i32.and
local.set $var20
local.get $var4
i32.load8_u offset=10
local.set $var21
i32.const 255
local.set $var22
local.get $var21
local.get $var22
i32.and
local.set $var23
local.get $var20
local.get $var23
i32.sub
local.set $var24
local.get $var4
local.get $var24
i32.store offset=28
br $label1
end $label0
local.get $var4
i32.load8_u offset=11
local.set $var25
i32.const 255
local.set $var26
local.get $var25
local.get $var26
i32.and
local.set $var27
local.get $var4
i32.load8_u offset=10
local.set $var28
i32.const 255
local.set $var29
local.get $var28
local.get $var29
i32.and
local.set $var30
local.get $var27
local.set $var31
local.get $var30
local.set $var32
local.get $var31
local.get $var32
i32.eq
local.set $var33
i32.const 1
local.set $var34
local.get $var33
local.get $var34
i32.and
local.set $var35
local.get $var35
br_if $label2
end $label2
local.get $var4
i32.load8_u offset=11
local.set $var36
i32.const 255
local.set $var37
local.get $var36
local.get $var37
i32.and
local.set $var38
local.get $var4
i32.load8_u offset=10
local.set $var39
i32.const 255
local.set $var40
local.get $var39
local.get $var40
i32.and
local.set $var41
local.get $var38
local.get $var41
i32.sub
local.set $var42
local.get $var4
local.get $var42
i32.store offset=28
end $label1
local.get $var4
i32.load offset=28
local.set $var43
local.get $var43
return
)
(func $func2 (result i32)
(local $var0 i32) (local $var1 i32) (local $var2 i32) (local $var3 i32) (local $var4 i32) (local $var5 i32) (local $var6 i32) (local $var7 i32) (local $var8 i32) (local $var9 i32) (local $var10 i32)
i32.const 0
local.set $var0
i32.const 1072
local.set $var1
i32.const 1024
local.set $var2
local.get $var2
local.get $var1
call $func1
local.set $var3
local.get $var3
local.set $var4
local.get $var0
local.set $var5
local.get $var4
local.get $var5
i32.ne
local.set $var6
i32.const -1
local.set $var7
local.get $var6
local.get $var7
i32.xor
local.set $var8
i32.const 1
local.set $var9
local.get $var8
local.get $var9
i32.and
local.set $var10
local.get $var10
return
)
(func $func3 (param $var0 i32) (param $var1 i32)
(local $var2 i32) (local $var3 i32) (local $var4 i32) (local $var5 i32) (local $var6 i32) (local $var7 i32) (local $var8 i32) (local $var9 i32) (local $var10 i32)
global.get $global0
local.set $var2
i32.const 16
local.set $var3
local.get $var2
local.get $var3
i32.sub
local.set $var4
local.get $var4
local.get $var0
i32.store offset=12
local.get $var4
local.get $var1
i32.store offset=8
local.get $var4
i32.load offset=12
local.set $var5
block $label0
local.get $var5
i32.eqz
br_if $label0
local.get $var4
i32.load offset=12
local.set $var6
i32.const 8
local.set $var7
local.get $var6
local.get $var7
i32.xor
local.set $var8
local.get $var4
local.get $var8
i32.store offset=12
end $label0
local.get $var4
i32.load offset=12
local.set $var9
local.get $var4
i32.load offset=8
local.set $var10
local.get $var10
local.get $var9
i32.store8 offset=1072
return
)
(data (i32.const 1024) "xakgK\5cNs9=8:9l1?im8i<89?00>88k09=nj9kimnu\00\00")
)