Advertisement
szymski

Untitled

May 22nd, 2016
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.47 KB | None | 0 0
  1. void __usercall LoadModel(double a1@<st0>, GliTexture *model_, void *Dst, int a4)
  2. {
  3. GliTexture *model; // esi@1
  4. int v5; // eax@6
  5. void *v6; // edi@7
  6. char v7; // al@10
  7. char v8; // al@12
  8. unsigned __int16 v9; // dx@17
  9. char v10; // al@18
  10. char v11; // al@19
  11. unsigned __int16 v12; // dx@20
  12. int v13; // eax@23
  13. size_t v14; // eax@24
  14. unsigned __int16 v15; // bx@25
  15. int v16; // eax@25
  16. int v17; // ecx@25
  17. unsigned __int16 v18; // bp@27
  18. int j; // ecx@28
  19. unsigned __int16 v20; // bp@31
  20. unsigned __int16 v21; // bp@36
  21. int i; // ecx@37
  22. unsigned __int16 v23; // bp@40
  23. int v24; // eax@44
  24. int v25; // [sp-4h] [bp-14h]@48
  25. GliTexture *model_a; // [sp+14h] [bp+4h]@6
  26. void *Dsta; // [sp+18h] [bp+8h]@32
  27. void *Dstb; // [sp+18h] [bp+8h]@41
  28. int v29; // [sp+1Ch] [bp+Ch]@6
  29.  
  30. model = model_;
  31. if ( model_ )
  32. {
  33. ++dword_502660;
  34. if ( !a4 && Get_SNA_PTX_Something() != 1 && !(dword_502660 % 0x14u) )
  35. sub_45F7E0(a1, 1);
  36. v29 = model_->word18;
  37. v5 = model_->dword14;
  38. model_a = model_->word1A;
  39. if ( v5 & 0x80000000 )
  40. {
  41. v6 = Dst;
  42. LoadModelWithTexture(model, model->textureFilename, Dst);
  43. }
  44. else
  45. {
  46. if ( !(v5 & 0x40000000) )
  47. return;
  48. v6 = Dst;
  49. sub_426320(model, model->textureFilename, Dst);
  50. }
  51. model->word18 = v29;
  52. v7 = model->byte45;
  53. model->dword8 = v6;
  54. model->word1A = model_a;
  55. if ( v7 & 0x10 )
  56. model->byte45 = v7 | 0xC;
  57. v8 = model->byte45;
  58. if ( v8 & 0xC && !(byte_503688 & 8) )
  59. {
  60. if ( v8 & 4 )
  61. {
  62. if ( v8 & 0x10 )
  63. model->byte45 = v8 & 0xFB;
  64. v9 = model->word1C;
  65. model->byte45 |= 1u;
  66. sub_425F40(v6, model->word1E, v9);
  67. model->word1E *= 2;
  68. }
  69. v10 = model->byte45;
  70. if ( v10 & 8 )
  71. {
  72. v11 = v10 | 2;
  73. model->byte45 = v11;
  74. if ( v11 & 0x10 )
  75. {
  76. v12 = model->word1C;
  77. model->byte45 = v11 & 0xF7;
  78. sub_426000(v6, model->word1E, v12);
  79. }
  80. else
  81. {
  82. sub_425FA0(v6, model->word1E, model->word1C);
  83. }
  84. model->word1C *= 2;
  85. }
  86. }
  87. v13 = model->dword14;
  88. if ( BYTE1(v13) & 4 )
  89. {
  90. model->word1C >>= 1;
  91. v14 = 4 * model->word1C * model->word1E;
  92. memmove(v6, v6 + v14, v14);
  93. }
  94. v15 = model->word1C;
  95. LOWORD(v16) = model->word1E;
  96. v17 = model->dword14;
  97. if ( !(v17 & 2) || v17 & 8 )
  98. {
  99. v21 = model->word1E;
  100. if ( v16 > model->word1A )
  101. {
  102. for ( i = v15; ; i = v15 )
  103. {
  104. sub_425A90(v6, v6, i, v16);
  105. v21 >>= 1;
  106. LOWORD(v16) = v21;
  107. if ( v21 <= model->word1A )
  108. break;
  109. }
  110. }
  111. v23 = v15;
  112. if ( v15 > model->word18 )
  113. {
  114. v16 = v16;
  115. for ( Dstb = v16; ; v16 = Dstb )
  116. {
  117. sub_425AE0(v6, v6, v15, v16);
  118. v23 >>= 1;
  119. if ( v23 <= model->word18 )
  120. break;
  121. v15 = v23;
  122. }
  123. }
  124. }
  125. else
  126. {
  127. v18 = model->word1E;
  128. if ( v16 > model->word1A )
  129. {
  130. for ( j = v15; ; j = v15 )
  131. {
  132. sub_425B50(v6, v6, j, v16, model->dword2C);
  133. v18 >>= 1;
  134. LOWORD(v16) = v18;
  135. if ( v18 <= model->word1A )
  136. break;
  137. }
  138. }
  139. v20 = v15;
  140. if ( v15 > model->word18 )
  141. {
  142. v16 = v16;
  143. for ( Dsta = v16; ; v16 = Dsta )
  144. {
  145. sub_425BE0(v6, v6, v15, v16, model->dword2C);
  146. v20 >>= 1;
  147. if ( v20 <= model->word18 )
  148. break;
  149. v15 = v20;
  150. }
  151. }
  152. }
  153. v24 = model->dword14;
  154. if ( v24 & 0x902 )
  155. {
  156. if ( dword_503684 & 0x10 )
  157. {
  158. if ( v24 & 0x808 )
  159. {
  160. model->dword14 = v24 & 0xFFFFFFE5 | 0x900;
  161. }
  162. else
  163. {
  164. v25 = model->dword2C;
  165. if ( v24 & 0x10 )
  166. sub_4254B0(v6, model->word1A, model->word18, v25);
  167. else
  168. sub_425200(v6, model->word1A, model->word18, v25);
  169. model->dword14 = model->dword14 & 0xFFFFFFED | 0x100;
  170. }
  171. }
  172. else if ( v24 & 0x808 )
  173. {
  174. sub_4251C0(v6, model->word1E, model->word1C, model->dword2C);
  175. model->dword14 = model->dword14 & 0xFFFFFFE7 | 0x800;
  176. }
  177. else if ( v24 & 0x10 )
  178. {
  179. sub_425240(model, v6);
  180. }
  181. }
  182. }
  183. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement