Skip to content

Instantly share code, notes, and snippets.

core::cell::RefCell<rust_experiments::BigStruct> *__fastcall std::thread::local::LocalKey_core::cell::RefCell_rust_experiments::BigStruct__::init_core::cell::RefCell_rust_experiments::BigStruct__(core::cell::UnsafeCell<core::option::Option<core::cell::RefCell<rust_experiments::BigStruct>>> *a1, core::cell::UnsafeCell<core::option::Option<core::cell::RefCell<rust_experiments::BigStruct>>> *a2)
{
  core::cell::UnsafeCell<core::option::Option<core::cell::RefCell<rust_experiments::BigStruct>>> *v2; // ST78_8
  void (__fastcall *init)(char *); // rcx
  char value; // [rsp+80h] [rbp+0h]
  core::option::Option<core::cell::RefCell<rust_experiments::BigStruct>> *ptr; // [rsp+4090h] [rbp+4010h]
  char old_slot_value; // [rsp+4098h] [rbp+4018h]
  char some_value[16408]; // [rsp+80B0h] [rbp+8030h]
  char Dst; // [rsp+C0C8h] [rbp+C048h]
void __fastcall std::thread::local::LocalKey_core::cell::RefCell_rust_experiments::BigStruct__::init_core::cell::RefCell_rust_experiments::BigStruct__(core::cell::UnsafeCell<core::option::Option<core::cell::RefCell<rust_experiments::BigStruct>>> *a1, core::cell::UnsafeCell<core::option::Option<core::cell::RefCell<rust_experiments::BigStruct>>> *a2)
{
  core::cell::UnsafeCell<core::option::Option<core::cell::RefCell<rust_experiments::BigStruct>>> *v2; // ST78_8
  void (__fastcall *v3)(char *); // rcx
  __int64 v4; // rax
  char value; // [rsp+80h] [rbp+0h]
  core::option::Option<core::cell::RefCell<rust_experiments::BigStruct>> *ptr; // [rsp+2090h] [rbp+2010h]
  core::option::Option<core::cell::RefCell<rust_experiments::BigStruct>> old_slot_value; // [rsp+2098h] [rbp+2018h]
  char some_value; // [rsp+40A8h] [rbp+4028h]
@mikevoronov
mikevoronov / main.c
Created April 12, 2019 13:53
main.c
#include "sdk/allocator.h"
#include "sdk/logger.h"
...
char *invoke(const char *str, int length) {
const size_t greeting_length = strlen(greeting);
char *response = (char *)allocate(response_length);
wasm_log(str, length);
for(int i = 0; i < RESPONSE_SIZE_BYTES; ++i) {
response[i] = (response_length >> 8*i) & 0xFF;
call $__extenddftf2
i32.const 8
set_local 124
get_local 3
get_local 124
i32.add
set_local 125
get_local 125
i64.load align=1
set_local 126
block ;; label = @4
block ;; label = @5
get_local 63
i32.eqz
br_if 0 (;@5;)
i32.const 2139095040
set_local 64
get_local 3
f64.load offset=5200
set_local 65
(func $hincrbyCommand (type 0) (param i32)
(local i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i64 i64 i64 i64 i64 i64 i32 i32 i32 i64 i64 i64 i64 i32 i32 i32 i64 i64 i64 i64 i64 i64 i32 i32 i32 i64 i64 i64 i64 i32 i32 i32 i64 i64 i64 i64 i32 i32 i32 i64 i64 i64 i64 i64 i64 i32 i32 i32 i32 i32 i32 i32 i32 i64 i64 i64 i64 i32 i32 i32 i32 i32 i32 i32 i32 i64 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i64 i64 i64 i32 i32 i32)
get_global 0
set_local 1
i32.const 48
set_local 2
get_local 1
get_local 2
i32.sub
set_local 3
(func $hincrbyCommand (type 0) (param i32)
(local i32 i32 i32 i64 i64 i32)
get_global 0
i32.const 32
i32.sub
tee_local 1
set_global 0
block ;; label = @1
get_local 0
get_local 0
(func $hincrbyCommand (type 0) (param i32)
(local i32 i32 i32 i64 i64 i32)
get_global 0
i32.const 32
i32.sub
tee_local 1
set_global 0
block ;; label = @1
get_local 0
get_local 0
(func $__DOUBLE_BITS_ (type 28) (param f64) (result i64)
get_local 0
i64.reinterpret/f64)
...
(func $__DOUBLE_BITS_.1 (type 28) (param f64) (result i64)
get_local 0
i64.reinterpret/f64)
...
(func $__DOUBLE_BITS_.2 (type 28) (param f64) (result i64)
get_local 0
#include "quickjs-libc.h"
const uint32_t pi_size = 1120;
const uint8_t pi[1120] = {
0x01, 0x27, 0x0e, 0x63, 0x61, 0x6c, 0x63, 0x5f,
0x70, 0x69, 0x14, 0x75, 0x73, 0x65, 0x20, 0x73,
0x74, 0x72, 0x69, 0x63, 0x74, 0x14, 0x75, 0x73,
0x65, 0x20, 0x62, 0x69, 0x67, 0x69, 0x6e, 0x74,
0x0a, 0x70, 0x69, 0x2e, 0x6a, 0x73, 0x08, 0x70,