Guest User

Untitled

a guest
Jun 20th, 2018
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.48 KB | None | 0 0
  1. R0 = buffer0, R1 = buffer1, R2 = buffer2, R3 = size0
  2.  
  3. ROM:22003724 sub_22003724 ; CODE XREF: sub_22003840+54p
  4. ROM:22003724
  5. ROM:22003724 var_8 = -8
  6. ROM:22003724 arg_0 = 0 keyType
  7. ROM:22003724 arg_4 = 4 key
  8. ROM:22003724 arg_8 = 8 option0
  9. ROM:22003724 arg_C = 0xC option1
  10. ROM:22003724 arg_10 = 0x10 size1
  11. ROM:22003724 arg_14 = 0x14 size2
  12. ROM:22003724 arg_18 = 0x18 size3
  13. ROM:22003724 arg_1C = 0x1C iv
  14. ROM:22003724
  15. ROM:22003724 PUSH {R4-R7,LR}
  16. ROM:22003726 MOV R6, R11
  17. ROM:22003728 MOV R5, R10
  18. ROM:2200372A MOV R4, R8
  19. ROM:2200372C PUSH {R4-R6}
  20. ROM:2200372E ADD R7, SP, #0x20+var_8
  21. ROM:22003730 LDR R5, =unk_2201B900
  22. ROM:22003732 ADDS R6, R3, #0
  23. ROM:22003734 LDR R3, =0x38C00008
  24. ROM:22003736 MOVS R4, #0
  25. ROM:22003738 MOV R11, R2
  26. ROM:2200373A MOVS R2, #1
  27. ROM:2200373C STR R4, [R5]
  28. unknown1 = 0;
  29. ROM:2200373E STR R2, [R3]
  30. SET_REG(AES + UNKREG0, 1);
  31. ROM:22003740 STR R4, [R3]
  32. SET_REG(AES + UNKREG0, 0);
  33. ROM:22003742 MOVLS R3, 0x38C00000
  34. ROM:22003746 MOV R8, R0
  35. ROM:22003748 STR R2, [R3]
  36. SET_REG(AES + CONTROL, 1);
  37. ROM:2200374A LDR R3, =0x38C0006C
  38. ROM:2200374C LDR R2, [SP,#0x20+arg_0]
  39. ROM:2200374E MOV R10, R1
  40. ROM:22003750 STR R2, [R3]
  41. SET_REG(AES + TYPE, keyType);
  42. ROM:22003752 LDR R0, [SP,#0x20+arg_4]
  43. ROM:22003754 BL sub_22003620
  44. loadKey(key);
  45. ROM:22003758 LDR R3, =0x38C00014
  46. ROM:2200375A MOVS R2, #6
  47. ROM:2200375C MOVS R0, #1
  48. ROM:2200375E STR R2, [R3]
  49. SET_REG(AES + KEYLEN, 6); // set bits 1 and 2
  50. ROM:22003760 BL sub_220035BC
  51. SET_REG(AES + KEYLEN, (GET_REG(AES + KEYLEN) & ~1) | operation); // 1 bit field starting at bit 0
  52. ROM:22003764 LDR R0, [SP,#0x20+arg_8]
  53. ROM:22003766 BL sub_22003594
  54. SET_REG(AES + KEYLEN, (GET_REG(AES + KEYLEN) & ~0x30) | (option0 << 4)); // 2 bit field starting at bit 4
  55. ROM:2200376A LDR R0, [SP,#0x20+arg_C]
  56. ROM:2200376C BL sub_220035A8
  57. SET_REG(AES + KEYLEN, (GET_REG(AES + KEYLEN) & ~0x8) | (option1 << 3)); // 1 bit field starting at bit 3
  58. ROM:22003770 LDR R0, [SP,#0x20+arg_1C]
  59. ROM:22003772 BL sub_220035DC
  60. initVector(iv);
  61. ROM:22003776 LDR R3, =0x38C00018
  62. ROM:22003778 MOV R2, R8
  63. ROM:2200377A STR R6, [R3]
  64. SET_REG(AES + INSIZE, size0);
  65. ROM:2200377C ADDS R3, #8
  66. ROM:2200377E STR R2, [R3]
  67. SET_REG(AES + INADDR, (uint32_t) buffer0);
  68. ROM:22003780 LDR R2, [SP,#0x20+arg_14]
  69. ROM:22003782 ADDS R3, #4
  70. ROM:22003784 STR R2, [R3]
  71. SET_REG(AES + OUTSIZE, size2);
  72. ROM:22003786 ADDS R3, #4
  73. ROM:22003788 MOV R2, R10
  74. ROM:2200378A STR R2, [R3]
  75. SET_REG(AES + OUTADDR, (uint32_t) buffer1);
  76. ROM:2200378C LDR R2, [SP,#0x20+arg_10]
  77. ROM:2200378E ADDS R3, #4
  78. ROM:22003790 STR R2, [R3]
  79. SET_REG(AES + AUXSIZE, size1);
  80. ROM:22003792 ADDS R3, #4
  81. ROM:22003794 MOV R2, R11
  82. ROM:22003796 STR R2, [R3]
  83. SET_REG(AES + AUXADDR, (uint32_t) buffer2);
  84. ROM:22003798 LDR R2, [SP,#0x20+arg_18]
  85. ROM:2200379A ADDS R3, #4
  86. ROM:2200379C STR R2, [R3]
  87. SET_REG(AES + SIZE3, size3);
  88. ROM:2200379E ADDS R3, #0x3C1c
  89. ROM:220037A0 MOVS R2, #2
  90. ROM:220037A2 STR R4, [R5]
  91. unknown1 = 0;
  92. ROM:220037A4 STR R2, [R3]
  93. SET_REG(AES + GO2, 2);
  94. ROM:220037A6 POP {R2-R4}
  95. ROM:220037A8 MOV R8, R2
  96. ROM:220037AA MOV R10, R3
  97. ROM:220037AC MOV R11, R4
  98. ROM:220037AE POP {R4-R7,PC}
  99. ROM:220037AE ; End of function sub_22003724
Add Comment
Please, Sign In to add comment