decode_header.c 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. // callconv: x0 arm64 (x0, x1, x2, x3, x4, x5, x6, x7, stack);
  2. void sym.func.10004b594 (int64_t arg1, int64_t arg2, int64_t arg3, int64_t arg4) {
  3. if (!w2) goto 0x10004b650 // likely
  4. goto loc_0x10004b598;
  5. loc_0x10004b650:
  6. w17 = 0
  7. goto 0x10004b65c
  8. loc_0x10004b65c:
  9. // CODE XREFS from sym.func.10004b594 @ 0x10004b604(x), 0x10004b654(x)
  10. [x3] = w17 // arg4
  11. return x0;
  12. loc_0x10004b598: // orphan
  13. w16 = 0
  14. w4 = 0
  15. w15 = 0
  16. w8 = w2 // arg3
  17. w9 = 2
  18. w10 = 6
  19. w11 = 0x9e
  20. x12 = 0x1008ae000
  21. x12 += 0x6f4
  22. w13 = 0x34 // '4'
  23. x14 = 0x100766000
  24. x14 += 0x40
  25. loc_0x10004b658: // orphan
  26. x17 = x4
  27. goto loc_0x10004b5d4;
  28. loc_0x10004b5d4: // orphan
  29. v = w15 - 2
  30. if (v >= 0)
  31. loc_0x10004b608: // orphan
  32. w15 = w2 & 0x3f
  33. w17 = w10 - w9
  34. w15 = w15 >> w17
  35. w15 = w16 | w15
  36. x15 &= 0xff
  37. x15 ^= x11
  38. w15 = (byte) [x12 + x15]
  39. w15 ^= w13
  40. w17 = w4 + 1
  41. strb w15, [x1, w4, sxtw] // arg2
  42. v = w9 - 5
  43. if (v > 0)
  44. loc_0x10004b644: // orphan
  45. w15 = 0
  46. w9 = 2
  47. loc_0x10004b5f8: // orphan
  48. // CODE XREF from sym.func.10004b594 @ 0x10004b64c(x)
  49. x4 = x17
  50. x8 -= 1
  51. if (v)
  52. loc_0x10004b5c8: // orphan
  53. w17 = (byte) [x0] + 1 // arg1
  54. w2 = w17 - 0x3c
  55. if (((unsigned) v) < 0)
  56. goto loc_0x10004b604;
  57. loc_0x10004b638: // orphan
  58. w15 = 0
  59. w9 += 2
  60. loc_0x10004b5e0: // orphan
  61. // CODE XREF from sym.func.10004b594 @ 0x10004b640(x)
  62. w16 = w2 << w9
  63. add x2, x14, w9, sxtw
  64. w2 = (byte) [x2 -2]
  65. w16 = w2 & w16
  66. w15 -= w9
  67. w15 += 8
  68. goto loc_0x10004b5dc;
  69. loc_0x10004b5dc: // orphan
  70. x17 = x4
  71. }