NAME=mips ensure correct cpu is selected FILE=bins/elf/analysis/mips-hello CMDS=< 0x000804fc b 0x804fc \ 0x00080500 nop ; DATA XREF from sym.do_mips_start @ 0x80544 / int main(int argc, char **argv, char **envp); | ; var int32_t var_10h @ stack - 0x10 | ; var int32_t var_8h @ stack - 0x8 | ; var int32_t var_4h @ stack - 0x4 | ; arg int32_t arg_10h @ stack + 0x10 | 0x000805a0 lui gp, 2 | 0x000805a4 addiu gp, gp, -0x75a0 | 0x000805a8 addu gp, gp, t9 | 0x000805ac addiu sp, sp, -0x20 | 0x000805b0 sw ra, (var_4h) | 0x000805b4 sw fp, (var_8h) | 0x000805b8 move fp, sp | 0x000805bc sw gp, (var_10h) | 0x000805c0 lw v0, -segment.LOAD0(gp) ; [data.0009103c:4]=0x80000 segment.ehdr | 0x000805c4 addiu a0, v0, 0x640 ; sym..rodata | ; 0x80640 ; "Hello World" ; const char *s ; str.Hello_World | 0x000805c8 lw v0, -sym._MIPS_STUBS(gp) ; [data.00091048:4]=0x80600 sym.imp.puts | 0x000805cc move t9, v0 | 0x000805d0 jalr t9 ; sym.imp.puts | ; 0x80600 ; int puts(const char *s) | 0x000805d4 nop | 0x000805d8 lw gp, (arg_10h) | 0x000805dc move sp, fp | 0x000805e0 lw ra, (var_4h) | 0x000805e4 lw fp, (var_8h) | 0x000805e8 addiu sp, sp, 0x20 | 0x000805ec jr ra \ 0x000805f0 nop address: 0x804fc opcode: b 0x804fc disasm: b 0x804fc pseudo: goto 0x804fc rzil: (jmp (bv 32 0x804fc)) jump: 0x000804fc EOF RUN NAME=micromips ensure correct cpu is selected FILE=bins/elf/micromips.elf CMDS=< 0x00400118 jrc t9 | | ;-- .L6: | `--> 0x0040011a jrc ra EOF RUN NAME=nanomips ensure correct cpu is selected FILE=bins/elf/emulateme.nanomips_i7200 CMDS=< 0x00400598 lapc.h a1, obj.seckrit | | || 0x0040059c lapc.h a0, loc..LC3 | | || 0x004005a0 lw a3, 0x28(gp) ; reloc.printf | | || ; [0x420044:4]=0x4003ba | | || 0x004005a4 jalrc ra, a3 | | || 0x004005a6 move a3, zero | | || ;-- .L10: | `-``-> 0x004005a8 move a0, a3 | 0x004005aa restore.jrc 0x30, fp, ra, gp | ;-- (0x004005b0) section..fini: | ;-- (0x004005b0) _fini: \ 0x004005ae ~ sigrie 0x83e2 EOF RUN NAME=mips hello reference analysis FILE=bins/elf/analysis/mips-hello CMDS=< 0x004025ec sw s0, (var_30h) | :| 0x004025f0 addiu s0, s0, 4 | :| 0x004025f4 lw v1, 0(s0) | :| 0x004025f8 addiu a1, s2, -0x10c0 | :| 0x004025fc lw t9, -sym.imp.strcmp(gp) ; [0x435200:4]=0x41eb40 sym.imp.strcmp | :| 0x00402600 move a0, v1 | :| 0x00402604 jalr t9 ; sym.imp.strcmp | :| ; 0x41eb40 ; int strcmp(const char *s1, const char *s2) | :| 0x00402608 sw v1, (var_2ch) | :| 0x0040260c lw gp, (var_40h) | :| 0x00402610 lw v1, (var_2ch) | ,===< 0x00402614 beqz v0, 0x402944 | |:| 0x00402618 addiu v0, zero, 0x2d | |:| 0x0040261c lb a0, 0(v1) | ,====< 0x00402620 bne a0, v0, 0x40295c | ||:| 0x00402624 addiu a2, v1, 1 | ||:| 0x00402628 lb v0, 1(v1) | ||:| 0x0040262c move a1, s3 | ||:| 0x00402630 lw t9, -sym.matches(gp) ; [0x4351ac:4]=0x41b2b4 sym.matches | ||:| 0x00402634 xori v0, v0, 0x2d .. | |||||:| ; XREFS: CODE 0x00402a64 CODE 0x00402a9c CODE 0x00402ae0 | |||||:| ; XREFS: CODE 0x00402b40 CODE 0x00402ba8 CODE 0x00402c0c | --------> 0x004026f8 addiu s1, s1, -1 | |||||:| 0x004026fc slti v0, s1, 2 | |||||`==< 0x00402700 beqz v0, 0x4025ec | ||||| | 0x00402704 nop | ||||| `-> 0x00402708 lui v0, 0x43 | ||||| 0x0040270c lw v0, 0x5470(v0) | ||||| ,=< 0x00402710 bnez v0, 0x402850 | ||||| | 0x00402714 lui v0, 0x43 | ||||| | ; CODE XREF from main @ 0x402954 | |||||.--> 0x00402718 lui v1, 0x42 | |||||:| ; CODE XREF from main @ 0x402970 | --------> 0x0040271c lw a0, 0x547c(v0) | |||||:| 0x00402720 addiu v1, v1, 0x3ac | |||||:| 0x00402724 lui v0, 0x43 | ========< 0x00402728 beqz a0, 0x402868 | |||||:| 0x0040272c sw v1, 0x5478(v0) | --------> 0x00402730 jal fcn.00402338 | |||||:| 0x00402734 nop | |||||:| ; CODE XREF from main @ 0x4029c0 | --------> 0x00402738 lw ra, (var_4h) | |||||:| 0x0040273c lw fp, (var_8h) | |||||:| 0x00402740 lw s7, (var_ch) | |||||:| 0x00402744 lw s6, (var_10h) | |||||:| 0x00402748 lw s5, (var_14h) | |||||:| 0x0040274c lw s4, (var_18h) | |||||:| 0x00402750 lw s3, (var_1ch) | |||||:| 0x00402754 lw s2, (var_20h) | |||||:| 0x00402758 lw s1, (var_24h) | |||||:| 0x0040275c lw s0, (var_28h) | |||||:| 0x00402760 jr ra | |||||:| 0x00402764 addiu sp, sp, 0x50 .. | .-------> 0x0040284c lui v0, 0x43 | :||||:`-> 0x00402850 lui v1, 0x42 | :||||: 0x00402854 lw a0, 0x547c(v0) | :||||: 0x00402858 addiu v1, v1, -0xf90 | :||||: 0x0040285c lui v0, 0x43 | ========< 0x00402860 bnez a0, 0x402730 | :||||: 0x00402864 sw v1, 0x5478(v0) | --------> 0x00402868 lw t9, -sym.rtnl_open(gp) ; [0x435300:4]=0x41a99c sym.rtnl_open | :||||: 0x0040286c lui s2, 0x43 | :||||: 0x00402870 addiu a0, s2, 0x3c60 | :||||: 0x00402874 jalr t9 ; sym.rtnl_open | :||||: ; 0x41a99c ; "<\U0000001c" | :||||: 0x00402878 move a1, zero | :||||: 0x0040287c lw gp, (var_40h) | :||||:,=< 0x00402880 bltz v0, 0x402aa4 | :||||:| 0x00402884 nop | :||||:| 0x00402888 lw t9, -sym.imp.strlen(gp) ; [0x435174:4]=0x41ec10 sym.imp.strlen | :||||:| 0x0040288c jalr t9 ; sym.imp.strlen | :||||:| ; 0x41ec10 ; size_t strlen(const char *s) | :||||:| 0x00402890 move a0, s6 | :||||:| 0x00402894 sltiu v0, v0, 3 | :||||:| 0x00402898 lw gp, (var_40h) | ========< 0x0040289c beqz v0, 0x4029b4 | :||||:| 0x004028a0 addiu a0, s6, 2 | :||||:| 0x004028a4 slti v0, s1, 2 | ========< 0x004028a8 bnez v0, 0x402a20 | :||||:| 0x004028ac nop | :||||:| 0x004028b0 lw a0, 4(s0) | :||||:| 0x004028b4 addiu a1, s1, -1 | :||||:| 0x004028b8 jal fcn.00402210 | :||||:| 0x004028bc addiu a2, s0, 4 | :||||:| 0x004028c0 lw ra, (var_4h) | :||||:| 0x004028c4 lw fp, (var_8h) | :||||:| 0x004028c8 lw s7, (var_ch) | :||||:| 0x004028cc lw s6, (var_10h) | :||||:| 0x004028d0 lw s5, (var_14h) | :||||:| 0x004028d4 lw s4, (var_18h) | :||||:| 0x004028d8 lw s3, (var_1ch) | :||||:| 0x004028dc lw s2, (var_20h) | :||||:| 0x004028e0 lw s1, (var_24h) | :||||:| 0x004028e4 lw s0, (var_28h) | :||||:| 0x004028e8 jr ra | :||||:| 0x004028ec addiu sp, sp, 0x50 .. | :|||`---> 0x00402944 lui v0, 0x43 | :||| :| 0x00402948 lw v0, 0x5470(v0) | ========< 0x0040294c bnez v0, 0x40284c | :||| :| 0x00402950 addiu s1, s1, -1 | :||| `==< 0x00402954 b 0x402718 | :||| | 0x00402958 lui v0, 0x43 | :||`----> 0x0040295c lui v0, 0x43 | :|| | 0x00402960 lw v0, 0x5470(v0) | :|| | 0x00402964 lw s0, (var_30h) | `=======< 0x00402968 bnez v0, 0x40284c | || | 0x0040296c lui v0, 0x43 | ========< 0x00402970 b 0x40271c | || | 0x00402974 lui v1, 0x42 .. | --------> 0x004029b4 move a1, s1 | | :|| 0x004029b8 jal fcn.00402210 | | :|| 0x004029bc move a2, s0 | ========< 0x004029c0 b 0x402738 | | :|| 0x004029c4 nop .. | --------> 0x00402a20 lw t9, -sym.rtnl_close(gp) ; [0x4352c8:4]=0x41a9b8 sym.rtnl_close | | || 0x00402a24 jalr t9 ; sym.rtnl_close | | || ; 0x41a9b8 ; "<\U0000001c" | | || 0x00402a28 addiu a0, s2, 0x3c60 | -`...---> 0x00402a2c jal fcn.004022e4 | :::|| 0x00402a30 nop | :::`--> 0x00402a34 lw t9, -sym.matches(gp) ; [0x4351ac:4]=0x41b2b4 sym.matches | ::: | 0x00402a38 lui a1, 0x42 | ::: | 0x00402a3c move a0, a2 | ::: | 0x00402a40 sw a2, (var_2ch) | ::: | 0x00402a44 jalr t9 ; sym.matches | ::: | ; 0x41b2b4 ; "<\U0000001c" | ::: | 0x00402a48 addiu a1, a1, -0x1044 | ::: | 0x00402a4c lw gp, (var_40h) | ::: | 0x00402a50 lw a2, (var_2ch) | :::,==< 0x00402a54 bnez v0, 0x402a6c | :::|| 0x00402a58 lui v0, 0x43 | :::|| 0x00402a5c lw v1, 0x546c(v0) | :::|| 0x00402a60 addiu v1, v1, 1 | ========< 0x00402a64 b 0x4026f8 | :::|| 0x00402a68 sw v1, 0x546c(v0) | :::`--> 0x00402a6c lw t9, -sym.matches(gp) ; [0x4351ac:4]=0x41b2b4 sym.matches | ::: | 0x00402a70 lui a1, 0x42 | ::: | 0x00402a74 move a0, a2 | ::: | 0x00402a78 sw a2, (var_2ch) | ::: | 0x00402a7c jalr t9 ; sym.matches | ::: | ; 0x41b2b4 ; "<\U0000001c" | ::: | 0x00402a80 addiu a1, a1, -0x1038 | ::: | 0x00402a84 lw gp, (var_40h) | ::: | 0x00402a88 lw a2, (var_2ch) | :::,==< 0x00402a8c bnez v0, 0x402ab0 | :::|| 0x00402a90 lui v0, 0x43 | :::|| 0x00402a94 lw v1, 0x5470(v0) | :::|| 0x00402a98 addiu v1, v1, 1 | ========< 0x00402a9c b 0x4026f8 | :::|| 0x00402aa0 sw v1, 0x5470(v0) | :::|`-> 0x00402aa4 lw t9, -sym.imp.exit(gp) ; [0x4351a4:4]=0x41ebb0 sym.imp.exit | :::| 0x00402aa8 jalr t9 ; sym.imp.exit | :::| ; 0x41ebb0 ; void exit(int status) .. | :::`--> 0x00402ab0 lw t9, -sym.matches(gp) ; [0x4351ac:4]=0x41b2b4 sym.matches | ::: 0x00402ab4 lui a1, 0x42 | ::: 0x00402ab8 move a0, a2 | ::: 0x00402abc sw a2, (var_2ch) | ::: 0x00402ac0 jalr t9 ; sym.matches | ::: ; 0x41b2b4 ; "<\U0000001c" | ::: 0x00402ac4 addiu a1, a1, -0x102c | ::: 0x00402ac8 lw gp, (var_40h) | ::: 0x00402acc lw a2, (var_2ch) | ::: ,=< 0x00402ad0 bnez v0, 0x402ae8 | ::: | 0x00402ad4 lui v0, 0x43 | ::: | 0x00402ad8 lw v1, 0x5474(v0) | ::: | 0x00402adc addiu v1, v1, 1 | ========< 0x00402ae0 b 0x4026f8 | ::: | 0x00402ae4 sw v1, 0x5474(v0) | ::: `-> 0x00402ae8 lw t9, -sym.matches(gp) ; [0x4351ac:4]=0x41b2b4 sym.matches | ::: 0x00402aec lui a1, 0x42 | ::: 0x00402af0 move a0, a2 | ::: 0x00402af4 sw a2, (var_2ch) | ::: 0x00402af8 jalr t9 ; sym.matches | ::: ; 0x41b2b4 ; "<\U0000001c" | ::: 0x00402afc addiu a1, a1, -0x1020 | ::: 0x00402b00 lw gp, (var_40h) | ::: 0x00402b04 lw a2, (var_2ch) | ::: ,=< 0x00402b08 beqz v0, 0x402b48 | ::: | 0x00402b0c lui a0, 0x42 | ::: | 0x00402b10 lw t9, -sym.matches(gp) ; [0x4351ac:4]=0x41b2b4 sym.matches | ::: | 0x00402b14 lui a1, 0x42 | ::: | 0x00402b18 move a0, a2 | ::: | 0x00402b1c sw a2, (var_2ch) | ::: | 0x00402b20 jalr t9 ; sym.matches | ::: | ; 0x41b2b4 ; "<\U0000001c" | ::: | 0x00402b24 addiu a1, a1, -0xff8 | ::: | 0x00402b28 lw gp, (var_40h) | ::: | 0x00402b2c lw a2, (var_2ch) | :::,==< 0x00402b30 bnez v0, 0x402b6c | :::|| 0x00402b34 lui v0, 0x43 | :::|| 0x00402b38 lw v1, 0x5480(v0) | :::|| 0x00402b3c addiu v1, v1, 1 | ========< 0x00402b40 b 0x4026f8 | :::|| 0x00402b44 sw v1, 0x5480(v0) | :::|`-> 0x00402b48 lw t9, -sym.imp.printf(gp) ; [0x4353ec:4]=0x41e7b0 sym.imp.printf | :::| 0x00402b4c lui a1, 0x42 | :::| 0x00402b50 addiu a0, a0, -0x1014 | :::| 0x00402b54 jalr t9 ; sym.imp.printf | :::| ; 0x41e7b0 ; int printf(const char *format) | :::| 0x00402b58 addiu a1, a1, -0xf20 | :::| 0x00402b5c lw gp, (var_40h) | :::| 0x00402b60 lw t9, -sym.imp.exit(gp) ; [0x4351a4:4]=0x41ebb0 sym.imp.exit | :::| 0x00402b64 jalr t9 ; sym.imp.exit | :::| ; 0x41ebb0 ; void exit(int status) | :::| 0x00402b68 move a0, zero | :::`--> 0x00402b6c lw t9, -sym.matches(gp) ; [0x4351ac:4]=0x41b2b4 sym.matches | ::: 0x00402b70 lui a1, 0x42 | ::: 0x00402b74 move a0, a2 | ::: 0x00402b78 sw a2, (var_2ch) | ::: 0x00402b7c jalr t9 ; sym.matches | ::: ; 0x41b2b4 ; "<\U0000001c" | ::: 0x00402b80 addiu a1, a1, -0xff0 | ::: 0x00402b84 lw gp, (var_40h) | ::: 0x00402b88 lw a2, (var_2ch) | ::: ,=< 0x00402b8c bnez v0, 0x402bb0 | ::: | 0x00402b90 addiu v0, zero, 1 | ::: | 0x00402b94 addiu s1, s1, -1 | `=====< 0x00402b98 beq s1, v0, 0x402a2c | :: | 0x00402b9c addiu s0, s0, 4 | :: | 0x00402ba0 lui v0, 0x43 | :: | 0x00402ba4 lw v1, 0(s0) | ========< 0x00402ba8 b 0x4026f8 .. | :: `-> 0x00402bb0 lw t9, -sym.matches(gp) ; [0x4351ac:4]=0x41b2b4 sym.matches | :: 0x00402bb4 lui a1, 0x42 | :: 0x00402bb8 move a0, a2 | :: 0x00402bbc sw a2, (var_2ch) | :: 0x00402bc0 jalr t9 ; sym.matches | :: ; 0x41b2b4 ; "<\U0000001c" | :: 0x00402bc4 addiu a1, a1, -0xfe8 | :: 0x00402bc8 lw gp, (var_40h) | :: 0x00402bcc lw a2, (var_2ch) | :: ,=< 0x00402bd0 bnez v0, 0x402c14 | :: | 0x00402bd4 addiu s1, s1, -1 | :: | 0x00402bd8 addiu v0, zero, 1 | `====< 0x00402bdc beq s1, v0, 0x402a2c | : | 0x00402be0 addiu s0, s0, 4 | : | 0x00402be4 addiu a0, sp, 0x18 | : | 0x00402be8 lw t9, -sym.get_unsigned(gp) ; [0x435178:4]=0x41bec4 sym.get_unsigned | : | 0x00402bec lw a1, 0(s0) | : | 0x00402bf0 jalr t9 ; sym.get_unsigned | : | ; 0x41bec4 ; "<\U0000001c" | : | 0x00402bf4 move a2, zero | : | 0x00402bf8 lw gp, (var_40h) | :,==< 0x00402bfc bnez v0, 0x402c68 | :|| 0x00402c00 nop | :|| 0x00402c04 lw v1, (var_38h) | :|| 0x00402c08 lw v0, -obj.rcvbuf(gp) ; [0x4351fc:4]=0x433ca0 obj.rcvbuf | ========< 0x00402c0c b 0x4026f8 | :|| 0x00402c10 sw v1, 0(v0) | :|`-> 0x00402c14 lw t9, -sym.matches(gp) ; [0x4351ac:4]=0x41b2b4 sym.matches | :| 0x00402c18 lui a1, 0x42 | :| 0x00402c1c move a0, a2 | :| 0x00402c20 sw a2, (var_2ch) | :| 0x00402c24 jalr t9 ; sym.matches | :| ; 0x41b2b4 ; "<\U0000001c" | :| 0x00402c28 addiu a1, a1, -0xfc4 | :| 0x00402c2c lw gp, (var_40h) | :| 0x00402c30 lw a2, (var_2ch) | `===< 0x00402c34 beqz v0, 0x402a2c | | 0x00402c38 nop | | 0x00402c3c lw v0, -0x7efc(gp) ; [0x4351e4:4]=0 | | 0x00402c40 lui a1, 0x42 | | 0x00402c44 lw t9, -sym.imp.fprintf(gp) ; [0x4352dc:4]=0x41e940 sym.imp.fprintf | | 0x00402c48 addiu a1, a1, -0xfbc | | 0x00402c4c lw a0, 0(v0) | | ; CODE XREF from main @ 0x402c7c | |.-> 0x00402c50 jalr t9 ; sym.imp.fprintf | |: ; 0x41e940 ; int fprintf(FILE *stream, const char *format, void *va_args) | |: 0x00402c54 nop | |: 0x00402c58 lw gp, (var_40h) | |: 0x00402c5c lw t9, -sym.imp.exit(gp) ; [0x4351a4:4]=0x41ebb0 sym.imp.exit | |: 0x00402c60 jalr t9 ; sym.imp.exit | |: ; 0x41ebb0 ; void exit(int status) | |: 0x00402c64 addiu a0, zero, -1 | `--> 0x00402c68 lw v0, -0x7efc(gp) ; [0x4351e4:4]=0 | : 0x00402c6c lui a1, 0x42 | : 0x00402c70 lw a2, 0(s0) | : 0x00402c74 lw a0, 0(v0) | : 0x00402c78 lw t9, -sym.imp.fprintf(gp) ; [0x4352dc:4]=0x41e940 sym.imp.fprintf \ `=< 0x00402c7c b 0x402c50 EOF RUN NAME=mips ensure family is set FILE== CMDS=<>,31,0x80000000,t2,a0,+,&,>>,|,1,==,$z,?{,$$,1,TRAP,}{,t2,a0,+,a0,=,} rzil: (set a0 (cast 32 (msb (+ (var t2) (var a0))) (+ (var t2) (var a0)))) opex: operands: - type: "reg" value: "a0" - type: "reg" value: "t2" - type: "reg" value: "a0" family: cpu =============== address: 0x0 opcode: dpaqx_sa.w.ph ac3, s3, s2 disasm: dpaqx_sa.w.ph ac3, s3, s2 pseudo: asm("dpaqx_sa.w.ph ac3, s3, s2") mnemonic: dpaqx_sa.w.ph mask: ffffffff prefix: 0 id: 541 bytes: b01e727e refptr: 0 size: 4 sign: false type: null cycles: 0 opex: operands: - type: "reg" value: "ac3" - type: "reg" value: "s3" - type: "reg" value: "s2" family: mmx =============== address: 0x0 opcode: ceil.w.d f10, f8 disasm: ceil.w.d f10, f8 pseudo: asm("ceil.w.d f10, f8") mnemonic: ceil.w.d mask: ffffffff prefix: 0 id: 323 bytes: 8e422046 refptr: 0 size: 4 sign: false type: null cycles: 0 opex: operands: - type: "reg" value: "f10" - type: "reg" value: "f8" family: fpu =============== address: 0x0 opcode: mulr.ps f10, f18, f7 disasm: mulr.ps f10, f18, f7 pseudo: asm("mulr.ps f10, f18, f7") mnemonic: mulr.ps mask: ffffffff prefix: 0 id: 1003 bytes: 9a92c746 refptr: 0 size: 4 sign: false type: null cycles: 0 opex: operands: - type: "reg" value: "f10" - type: "reg" value: "f18" - type: "reg" value: "f7" family: fpu =============== address: 0x0 opcode: mulsaq_s.w.ph ac3, s2, a3 disasm: mulsaq_s.w.ph ac3, s2, a3 pseudo: asm("mulsaq_s.w.ph ac3, s2, a3") mnemonic: mulsaq_s.w.ph mask: ffffffff prefix: 0 id: 1006 bytes: b019477e refptr: 0 size: 4 sign: false type: mul cycles: 0 opex: operands: - type: "reg" value: "ac3" - type: "reg" value: "s2" - type: "reg" value: "a3" family: mmx =============== address: 0x0 opcode: mulsa.w.ph ac3, s2, a3 disasm: mulsa.w.ph ac3, s2, a3 pseudo: asm("mulsa.w.ph ac3, s2, a3") mnemonic: mulsa.w.ph mask: ffffffff prefix: 0 id: 1007 bytes: b018477e refptr: 0 size: 4 sign: false type: mul cycles: 0 opex: operands: - type: "reg" value: "ac3" - type: "reg" value: "s2" - type: "reg" value: "a3" family: mmx =============== address: 0x0 opcode: mulv.b w4, w10, w7 disasm: mulv.b w4, w10, w7 pseudo: asm("mulv.b w4, w10, w7") mnemonic: mulv.b mask: ffffffff prefix: 0 id: 1011 bytes: 12510778 refptr: 0 size: 4 sign: false type: mul cycles: 0 opex: operands: - type: "reg" value: "w4" - type: "reg" value: "w10" - type: "reg" value: "w7" family: mmx =============== address: 0x0 opcode: tlbgwi disasm: tlbgwi pseudo: asm("tlbgwi") mnemonic: tlbgwi mask: ffffffff prefix: 0 id: 1321 bytes: 0a000042 refptr: 0 size: 4 sign: false type: null cycles: 0 opex: operands: [] family: virt =============== address: 0x0 opcode: lbe a0, 5(t2) disasm: lbe a0, 5(t2) pseudo: asm("lbe a0, 5(t2)") mnemonic: lbe mask: ffffffff prefix: 0 id: 797 bytes: ac02447d refptr: 0 size: 4 sign: false type: null cycles: 0 rzil: (set a0 (cast 32 (msb (loadw 0 8 (+ (var t2) (bv 32 0x5)))) (loadw 0 8 (+ (var t2) (bv 32 0x5))))) opex: operands: - type: "reg" value: "a0" - type: "mem" base: "t2" disp: 5 family: virt =============== address: 0x0 opcode: yield a0, t2 disasm: yield a0, t2 pseudo: asm("yield a0, t2") mnemonic: yield mask: ffffffff prefix: 0 id: 1359 bytes: 0920407d refptr: 0 size: 4 sign: false type: null cycles: 0 opex: operands: - type: "reg" value: "a0" - type: "reg" value: "t2" family: thread =============== address: 0x0 opcode: crc32b a0, t2, a0 disasm: crc32b a0, t2, a0 pseudo: asm("crc32b a0, t2, a0") mnemonic: crc32b mask: ffffffff prefix: 0 id: 425 bytes: 0f00447d refptr: 0 size: 4 sign: false type: null cycles: 0 opex: operands: - type: "reg" value: "a0" - type: "reg" value: "t2" - type: "reg" value: "a0" family: crpt EOF RUN NAME=pdf main mips be FILE=bins/elf/analysis/crackmips CMDS=< 0x00002a50 move sp, fp | : 0x00002a54 lw t9, -0x7fe4(gp) ; [0x1701c:4]=0 | : 0x00002a58 lw fp, (var_4h) | : 0x00002a5c addiu t9, t9, fcn.000028dc | `=< 0x00002a60 b fcn.000028dc \ 0x00002a64 addiu sp, sp, 8 --- ; CALL XREF from sym._dl_malloc @ 0x2a60 / fcn.000028dc(int32_t arg_10h); | ; var int32_t var_50h @ stack - 0x50 | ; var int32_t var_4ch @ stack - 0x4c | ; var int32_t var_18h @ stack - 0x18 | ; var int32_t var_14h @ stack - 0x14 | ; var int32_t var_10h @ stack - 0x10 | ; var int32_t var_ch @ stack - 0xc | ; var int32_t var_8h @ stack - 0x8 | ; var int32_t var_4h @ stack - 0x4 | ; arg int32_t arg_10h @ stack + 0x10 | 0x000028dc lui gp, 2 | 0x000028e0 addiu gp, gp, -0x38dc | 0x000028e4 addu gp, gp, t9 | 0x000028e8 addiu sp, sp, -0x30 | 0x000028ec lw v0, -obj._dl_pagesize(gp) ; [0x1702c:4]=0x1718c obj._dl_pagesize | 0x000028f0 sw s3, (var_ch) | 0x000028f4 sw s2, (var_10h) | 0x000028f8 lw s3, -0x7fd8(gp) ; [0x17028:4]=0x10000 | 0x000028fc lw s2, -0x7fd8(gp) ; [0x17028:4]=0x10000 | 0x00002900 sw s1, (var_14h) | 0x00002904 lw v1, 0x71b8(s3) | 0x00002908 move s1, a0 ; arg1 | 0x0000290c lw a0, 0x71b4(s2) | 0x00002910 lw v0, 0(v0) | 0x00002914 subu v1, a0, v1 ; arg1 | 0x00002918 addu v1, v1, s1 | 0x0000291c sw fp, (var_8h) | 0x00002920 sltu v1, v0, v1 | 0x00002924 move fp, sp | 0x00002928 sw ra, (var_4h) | 0x0000292c sw s0, (var_18h) | 0x00002930 sw gp, (var_4ch + 0x2c) | ,=< 0x00002934 beqz v1, 0x29e0 | | 0x00002938 sltu v1, s1, v0 | ,==< 0x0000293c beqz v1, 0x2950 | || 0x00002940 move a1, s1 | || 0x00002944 addiu a1, v0, -1 | || 0x00002948 addu a1, a1, s1 | || 0x0000294c and a1, a1, v0 | `--> 0x00002950 lui a3, 0x400 | | 0x00002954 addiu sp, sp, -0x10 | | 0x00002958 move a0, zero | | 0x0000295c addiu a2, zero, 3 | | 0x00002960 addiu a3, a3, 0x802 | | 0x00002964 move v0, zero | | 0x00002968 addiu s0, zero, -1 | | 0x0000296c addiu sp, sp, -0x20 | | 0x00002970 sw s0, (var_50h) | | 0x00002974 sw v0, (var_4ch) | | 0x00002978 addiu v0, zero, 0xffa | | 0x0000297c syscall | | 0x00002980 addiu sp, sp, 0x20 | ,==< 0x00002984 beqz a3, 0x299c | || 0x00002988 addiu v1, zero, -1 | || 0x0000298c lw v1, -obj._dl_errno(gp) ; [0x17024:4]=0x17190 obj._dl_errno | || 0x00002990 sw v0, 0(v1) | || 0x00002994 addiu v0, zero, -1 | || 0x00002998 addiu v1, zero, -1 | `--> 0x0000299c sw v0, 0x71b4(s2) | ,==< 0x000029a0 bne v0, v1, 0x29e0 | || 0x000029a4 sw v0, 0x71b8(s3) | || 0x000029a8 lw v0, -loc._fdata(gp) ; [0x17070:4]=0x17000 obj._dl_progname | || 0x000029ac lw a1, -0x7fe4(gp) ; [0x1701c:4]=0 | || 0x000029b0 lw t9, -sym._dl_dprintf(gp) ; [0x1706c:4]=0x216c sym._dl_dprintf | || 0x000029b4 lw a2, 0(v0) | || 0x000029b8 addiu a0, zero, 2 | || 0x000029bc bal sym._dl_dprintf | || 0x000029c0 addiu a1, a1, 0x692c ; "%s: mmap of a spare page failed!\n" | || 0x000029c4 lw gp, (arg_10h) | || 0x000029c8 addiu a0, zero, 0x14 | || 0x000029cc addiu v0, zero, 0xfa1 | || 0x000029d0 syscall | ,===< 0x000029d4 beqz a3, 0x29e0 | ||| 0x000029d8 lw v1, -obj._dl_errno(gp) ; [0x17024:4]=0x17190 obj._dl_errno | ||| 0x000029dc sw v0, 0(v1) | ```-> 0x000029e0 lw v0, 0x71b4(s2) | 0x000029e4 move sp, fp | 0x000029e8 addu s1, v0, s1 | 0x000029ec addiu v1, zero, -4 | 0x000029f0 lw ra, (var_4h) | 0x000029f4 addiu s1, s1, 3 | 0x000029f8 and s1, s1, v1 | 0x000029fc sw s1, 0x71b4(s2) | 0x00002a00 lw fp, (var_8h) | 0x00002a04 lw s3, (var_ch) | 0x00002a08 lw s2, (var_10h) | 0x00002a0c lw s1, (var_14h) | 0x00002a10 lw s0, (var_18h) | 0x00002a14 jr ra \ 0x00002a18 addiu sp, sp, 0x30 EOF RUN NAME=mips PIC GOT page + offset string xref (#5203) FILE=bins/elf/analysis/mips-hello CMDS=<