research: particle system SSE optimization analysis

Assembly dumps and research doc for RenderParticleSprites (1.73% CPU),
calculateColorValues (0.63%), SetupParticleRendering, and
ProcessActiveParticles. Identifies SSE opportunities: V4 color interp,
billboard vertex math, rotation block. Plan for particle_sse.zig.
This commit is contained in:
MarcelineVQ
2026-03-23 21:23:19 -07:00
parent 4b5fcd6fa6
commit fec9ac9952
5 changed files with 1554 additions and 0 deletions
+131
View File
@@ -0,0 +1,131 @@
# Particle System SSE Optimization Research
## Overview
Three related functions form the particle rendering pipeline, totaling ~3% CPU:
| Function | Address | CPU% | Size | FPU ops | CALLs | Convention |
|----------|---------|------|------|---------|-------|------------|
| RenderParticleSprites | 0x7B2A50 | 1.73% | ~1700 bytes | 182 | 6 | __thiscall RET 0x8 |
| calculateColorValues | 0x7B9B10 | 0.63% | ~350 bytes | 39 | 1 | __thiscall RET 0x18 |
| SetupParticleRendering | 0x7B3D20 | ~0.2% | ~720 bytes | 6 | 7 | __thiscall RET 0x4 |
| ProcessActiveParticles | 0x7B5A10 | 0.55% | ~1376 bytes | 49 | 14 | __stdcall RET 0x8 |
## Call Graph
```
RenderParticleSprites (0x7B2A50) — per-emitter, called from render pass
├─ calculateColorValues (0x7B9B10) — particle color interpolation
├─ 0x58A230 — rendering state setup
├─ 0x7BCA80 — mat*vec3 transform (already SSE'd in frustumCull pattern)
├─ 0x7BE490 — rotation/sin-cos setup
└─ 0x7BCB40 — matrix function
SetupParticleRendering (0x7B3D20) — builds transform matrices
├─ 0x58B0B0 — rendering setup
├─ 0x58B050 — rendering setup
└─ 0x7BC6A0 — multiplyMatrix4x4 (×5, already SSE'd in clip_sse.zig)
ProcessActiveParticles (0x7B5A10) — per-emitter particle simulation
├─ 0x7B5550 — particle helper (×2)
├─ 0x7B2680 — particle helper
├─ 0x7B28E0 — particle helper
├─ 0x7B5880 — particle helper
└─ ... (14 total calls, complex simulation logic)
```
## RenderParticleSprites (0x7B2A50) — Detailed Analysis
### Assembly reference: `decompiled/asm_RenderParticleSprites.txt`
**Calling convention**: `__thiscall(ECX=emitter, stack=param1, param2)`, RET 0x8
### Structure
1. **Early-out checks** (0x7B2A5E-0x7B2B0B):
- Check `emitter+0x1B4` vs `0x7FF9D8` (visibility threshold)
- Check `emitter+0x1C0` vs `0x7FFD74` (alpha threshold)
- Compute `emitter+0x1B0 * param1[0x1C]`, clamp to [0x7FFD74, 0x7FFE58]
- Compute particle count from float → integer bits
2. **Color computation** (0x7B2B41):
- CALL `calculateColorValues` (0x7B9B10) — 39 FPU ops, pure math
3. **Rendering setup** (0x7B2B46):
- CALL `0x58A230` — sets render state
4. **Transform** (0x7B2BBE):
- CALL `0x7BCA80` (mat*vec3) — transforms particle position
5. **Billboard vertex computation** (0x7B2BF3-0x7B2DEB or 0x7B2D10-0x7B2F0E):
- Two code paths based on particle type (flags at emitter)
- Path A (0x7B2BF3): axis-aligned billboards — scale + offset computation
- Path B (0x7B2D10): world-oriented particles — full rotation via lookup table at 0x87D710
- Both paths: ~50 FPU ops each (multiply, add, subtract for 4 corner vertices)
6. **Optional rotation** (0x7B2E25):
- CALL `0x7BE490` — builds rotation matrix from angle
- Followed by 8×8 FPU multiply block for rotating corner offsets
7. **Vertex output** (0x7B2F30-0x7B3041):
- CALL `0x7BCB40` — final vertex transform/output
- Writes to vertex buffer
### SSE Opportunities
**calculateColorValues** (biggest single-function win):
- 39 FPU ops in 350 bytes. Pure scalar math: interpolation, multiply, add, clamp.
- Color = base + (delta * time * scale). 4-component (RGBA) computation.
- Perfect for V4: process all 4 color channels simultaneously.
- Single CALL at end (0x73F90A) — likely a clamp/validation helper.
- Convention: __thiscall(ECX=colorCtx), 6 stack params (RET 0x18).
**Billboard vertex math** (per-particle, hot inner loop):
- 4 corner vertices, each = center ± halfWidth * right ± halfHeight * up
- Currently scalar x87: 4 × (3 multiplies + 3 adds) = 24 FPU ops per particle
- SSE: broadcast halfWidth/halfHeight, V4 multiply-add for xyz+w simultaneously
- The two code paths (axis-aligned vs world-oriented) need separate SSE versions
**Rotation block** (when particles rotate):
- 8 multiplies + 8 adds for 2D rotation of corner offsets
- SSE: 2 operations (broadcast sin/cos, V4 multiply-add)
## calculateColorValues (0x7B9B10) — Detailed Analysis
### Assembly reference: `decompiled/asm_calculateColorValues.txt`
**Calling convention**: `__thiscall(ECX=colorCtx, stack: time, scale, outAlpha, outR, outG, outB)`, RET 0x18
**Algorithm** (from assembly):
1. Compute `t = (time - ctx+0x2C) * ctx+0x30 * 0x808AAC + 0x807A3C`
2. Interpolate: `value = (float)ctx[+4] * t + (float)ctx[+3]`
3. Scale by param: `value *= scale`
4. Add 0.5 (rounding): `value += 0x8029CC`
5. Store to output as integer (FISTP)
6. Repeat for RGB channels (offsets +0x04/+0x08/+0x0C in ctx)
7. Alpha: separate path with different scaling
8. CALL 0x73F90A — clamp/validate
9. Return via 6 output pointers
**SSE approach**: Load all 4 channel bases as V4, load deltas as V4, single V4 multiply-add chain, then scatter to output pointers.
## SetupParticleRendering (0x7B3D20) — Detailed Analysis
### Assembly reference: `decompiled/asm_SetupParticleRendering.txt`
Already benefits from our SSE multiplyMatrix4x4. Remaining cost is matrix setup (writing identity matrices to stack) and 5 function calls. Not a high-value target — only ~0.2% after matmul optimization.
## Priority Order
1. **calculateColorValues** — pure math, 0.63% CPU, cleanest SSE candidate
2. **Billboard vertex math** (inside RenderParticleSprites) — per-particle, 4 vertices × 3 components
3. **Rotation block** — only when particles rotate, but cheap SSE win
4. **SetupParticleRendering** — low priority, already mostly SSE'd via matmul
## Implementation Plan
Create `src/transform44/particle_sse.zig` as a separate ReleaseFast compilation unit (same pattern as bone_sse.zig / clip_sse.zig). Export functions callable from transform44.zig detour hooks.
Phase 1: `calculateColorValues` SSE replacement
Phase 2: Billboard vertex computation (inline in RenderParticleSprites replacement)
Phase 3: Full RenderParticleSprites replacement (if phases 1-2 show good results)
@@ -0,0 +1,565 @@
// ProcessActiveParticles @ 0x7B5A10 -- 0x7B5F70 (1376 bytes)
// Disassembled from WoW 1.12.1 build 5875
007B5A10 55 push ebp
007B5A11 8BEC mov ebp,esp
007B5A13 83EC24 sub esp,0x24
007B5A16 D94508 fld dword [ebp+0x8]
007B5A19 53 push ebx
007B5A1A D81D74FD7F00 fcomp dword [0x7ffd74]
007B5A20 56 push esi
007B5A21 57 push edi
007B5A22 8BF1 mov esi,ecx
007B5A24 DFE0 fnstsw ax
007B5A26 F6C441 test ah,0x41
007B5A29 0F8B0E020000 jpo 0x7b5c3d
007B5A2F 8B86AC010000 mov eax,[esi+0x1ac]
007B5A35 A801 test al,0x1
007B5A37 7404 jz 0x7b5a3d
007B5A39 A802 test al,0x2
007B5A3B 7504 jnz 0x7b5a41
007B5A3D A820 test al,0x20
007B5A3F 7406 jz 0x7b5a47
007B5A41 8B06 mov eax,[esi]
007B5A43 8BCE mov ecx,esi
007B5A45 FF10 call dword near [eax]
007B5A47 8B450C mov eax,[ebp+0xc]
007B5A4A 85C0 test eax,eax
007B5A4C 7512 jnz 0x7b5a60
007B5A4E 8B5508 mov edx,[ebp+0x8]
007B5A51 8D8EFC010000 lea ecx,[esi+0x1fc]
007B5A57 51 push ecx
007B5A58 52 push edx
007B5A59 8BCE mov ecx,esi
007B5A5B E8F0FAFFFF call 0x7b5550
007B5A60 8B4664 mov eax,[esi+0x64]
007B5A63 33FF xor edi,edi
007B5A65 85C0 test eax,eax
007B5A67 897DF4 mov [ebp-0xc],edi
007B5A6A 0F86A6010000 jna 0x7b5c16
007B5A70 8B465C mov eax,[esi+0x5c]
007B5A73 8B1CB8 mov ebx,[eax+edi*4]
007B5A76 8B4628 mov eax,[esi+0x28]
007B5A79 85C0 test eax,eax
007B5A7B 7508 jnz 0x7b5a85
007B5A7D 8B463C mov eax,[esi+0x3c]
007B5A80 C1E305 shl ebx,byte 0x5
007B5A83 EB06 jmp 0x7b5a8b
007B5A85 8B464C mov eax,[esi+0x4c]
007B5A88 C1E306 shl ebx,byte 0x6
007B5A8B D94508 fld dword [ebp+0x8]
007B5A8E 03D8 add ebx,eax
007B5A90 D8431C fadd dword [ebx+0x1c]
007B5A93 895D0C mov [ebp+0xc],ebx
007B5A96 D9531C fst dword [ebx+0x1c]
007B5A99 D896AC000000 fcom dword [esi+0xac]
007B5A9F DFE0 fnstsw ax
007B5AA1 F6C405 test ah,0x5
007B5AA4 0F8A2D010000 jpe 0x7b5bd7
007B5AAA D89EF0000000 fcomp dword [esi+0xf0]
007B5AB0 DFE0 fnstsw ax
007B5AB2 F6C441 test ah,0x41
007B5AB5 7506 jnz 0x7b5abd
007B5AB7 C6430C01 mov byte [ebx+0xc],0x1
007B5ABB EB04 jmp 0x7b5ac1
007B5ABD C6430C00 mov byte [ebx+0xc],0x0
007B5AC1 8BCB mov ecx,ebx
007B5AC3 8B11 mov edx,[ecx]
007B5AC5 8B4104 mov eax,[ecx+0x4]
007B5AC8 8B4908 mov ecx,[ecx+0x8]
007B5ACB 8945EC mov [ebp-0x14],eax
007B5ACE 8B4628 mov eax,[esi+0x28]
007B5AD1 85C0 test eax,eax
007B5AD3 894DF0 mov [ebp-0x10],ecx
007B5AD6 8955E8 mov [ebp-0x18],edx
007B5AD9 8BCE mov ecx,esi
007B5ADB 750C jnz 0x7b5ae9
007B5ADD 8B5508 mov edx,[ebp+0x8]
007B5AE0 52 push edx
007B5AE1 53 push ebx
007B5AE2 E899CBFFFF call 0x7b2680
007B5AE7 EB0A jmp 0x7b5af3
007B5AE9 8B4508 mov eax,[ebp+0x8]
007B5AEC 50 push eax
007B5AED 53 push ebx
007B5AEE E8EDCDFFFF call 0x7b28e0
007B5AF3 85C0 test eax,eax
007B5AF5 0F84DE000000 jz 0x7b5bd9
007B5AFB 8B467C mov eax,[esi+0x7c]
007B5AFE 85C0 test eax,eax
007B5B00 C745F800000000 mov dword [ebp-0x8],0x0
007B5B07 0F86FA000000 jna 0x7b5c07
007B5B0D 8D8680000000 lea eax,[esi+0x80]
007B5B13 8DBE2C020000 lea edi,[esi+0x22c]
007B5B19 8945FC mov [ebp-0x4],eax
007B5B1C EB03 jmp 0x7b5b21
007B5B1E 8B5D0C mov ebx,[ebp+0xc]
007B5B21 8B4DFC mov ecx,[ebp-0x4]
007B5B24 8B09 mov ecx,[ecx]
007B5B26 8BD7 mov edx,edi
007B5B28 8B02 mov eax,[edx]
007B5B2A 8945DC mov [ebp-0x24],eax
007B5B2D 8B4204 mov eax,[edx+0x4]
007B5B30 8B5208 mov edx,[edx+0x8]
007B5B33 8945E0 mov [ebp-0x20],eax
007B5B36 8955E4 mov [ebp-0x1c],edx
007B5B39 8B13 mov edx,[ebx]
007B5B3B 8BC7 mov eax,edi
007B5B3D 8910 mov [eax],edx
007B5B3F 8B5304 mov edx,[ebx+0x4]
007B5B42 895004 mov [eax+0x4],edx
007B5B45 8B5308 mov edx,[ebx+0x8]
007B5B48 895008 mov [eax+0x8],edx
007B5B4B 8B81AC010000 mov eax,[ecx+0x1ac]
007B5B51 F6C404 test ah,0x4
007B5B54 741C jz 0x7b5b72
007B5B56 8B450C mov eax,[ebp+0xc]
007B5B59 83C010 add eax,0x10
007B5B5C 8B18 mov ebx,[eax]
007B5B5E 8D9158020000 lea edx,[ecx+0x258]
007B5B64 891A mov [edx],ebx
007B5B66 8B5804 mov ebx,[eax+0x4]
007B5B69 895A04 mov [edx+0x4],ebx
007B5B6C 8B4008 mov eax,[eax+0x8]
007B5B6F 894208 mov [edx+0x8],eax
007B5B72 8B81AC010000 mov eax,[ecx+0x1ac]
007B5B78 F6C410 test ah,0x10
007B5B7B 7417 jz 0x7b5b94
007B5B7D 8B45E8 mov eax,[ebp-0x18]
007B5B80 8D9148020000 lea edx,[ecx+0x248]
007B5B86 8902 mov [edx],eax
007B5B88 8B45EC mov eax,[ebp-0x14]
007B5B8B 894204 mov [edx+0x4],eax
007B5B8E 8B45F0 mov eax,[ebp-0x10]
007B5B91 894208 mov [edx+0x8],eax
007B5B94 8B5508 mov edx,[ebp+0x8]
007B5B97 8D86FC010000 lea eax,[esi+0x1fc]
007B5B9D 50 push eax
007B5B9E 52 push edx
007B5B9F E8ACF9FFFF call 0x7b5550
007B5BA4 8B4DDC mov ecx,[ebp-0x24]
007B5BA7 8B55E0 mov edx,[ebp-0x20]
007B5BAA 8BC7 mov eax,edi
007B5BAC 8908 mov [eax],ecx
007B5BAE 8B4DE4 mov ecx,[ebp-0x1c]
007B5BB1 895004 mov [eax+0x4],edx
007B5BB4 8B55FC mov edx,[ebp-0x4]
007B5BB7 894808 mov [eax+0x8],ecx
007B5BBA 8B45F8 mov eax,[ebp-0x8]
007B5BBD 8B4E7C mov ecx,[esi+0x7c]
007B5BC0 40 inc eax
007B5BC1 83C204 add edx,0x4
007B5BC4 3BC1 cmp eax,ecx
007B5BC6 8945F8 mov [ebp-0x8],eax
007B5BC9 8955FC mov [ebp-0x4],edx
007B5BCC 0F824CFFFFFF jc 0x7b5b1e
007B5BD2 8B7DF4 mov edi,[ebp-0xc]
007B5BD5 EB30 jmp 0x7b5c07
007B5BD7 DDD8 fstp st0
007B5BD9 8B16 mov edx,[esi]
007B5BDB 8BCE mov ecx,esi
007B5BDD 53 push ebx
007B5BDE FF520C call dword near [edx+0xc]
007B5BE1 8B465C mov eax,[esi+0x5c]
007B5BE4 8B0CB8 mov ecx,[eax+edi*4]
007B5BE7 8B4678 mov eax,[esi+0x78]
007B5BEA 8D5001 lea edx,[eax+0x1]
007B5BED 895678 mov [esi+0x78],edx
007B5BF0 8B5670 mov edx,[esi+0x70]
007B5BF3 890C82 mov [edx+eax*4],ecx
007B5BF6 8B4E64 mov ecx,[esi+0x64]
007B5BF9 8B465C mov eax,[esi+0x5c]
007B5BFC 8B5488FC mov edx,[eax+ecx*4-0x4]
007B5C00 8914B8 mov [eax+edi*4],edx
007B5C03 FF4E64 dec dword [esi+0x64]
007B5C06 4F dec edi
007B5C07 8B4664 mov eax,[esi+0x64]
007B5C0A 47 inc edi
007B5C0B 3BF8 cmp edi,eax
007B5C0D 897DF4 mov [ebp-0xc],edi
007B5C10 0F825AFEFFFF jc 0x7b5a70
007B5C16 8B467C mov eax,[esi+0x7c]
007B5C19 33FF xor edi,edi
007B5C1B 85C0 test eax,eax
007B5C1D 761E jna 0x7b5c3d
007B5C1F 8D9E80000000 lea ebx,[esi+0x80]
007B5C25 8B4508 mov eax,[ebp+0x8]
007B5C28 8B0B mov ecx,[ebx]
007B5C2A 6A01 push dword 0x1
007B5C2C 50 push eax
007B5C2D E84EFCFFFF call 0x7b5880
007B5C32 8B467C mov eax,[esi+0x7c]
007B5C35 47 inc edi
007B5C36 83C304 add ebx,0x4
007B5C39 3BF8 cmp edi,eax
007B5C3B 72E8 jc 0x7b5c25
007B5C3D 5F pop edi
007B5C3E 5E pop esi
007B5C3F 5B pop ebx
007B5C40 8BE5 mov esp,ebp
007B5C42 5D pop ebp
007B5C43 C20800 ret word 0x8
007B5C46 90 nop
007B5C47 90 nop
007B5C48 90 nop
007B5C49 90 nop
007B5C4A 90 nop
007B5C4B 90 nop
007B5C4C 90 nop
007B5C4D 90 nop
007B5C4E 90 nop
007B5C4F 90 nop
007B5C50 8389AC01000020 or dword [ecx+0x1ac],0x20
007B5C57 C3 ret
007B5C58 90 nop
007B5C59 90 nop
007B5C5A 90 nop
007B5C5B 90 nop
007B5C5C 90 nop
007B5C5D 90 nop
007B5C5E 90 nop
007B5C5F 90 nop
007B5C60 56 push esi
007B5C61 8BF1 mov esi,ecx
007B5C63 8B4664 mov eax,[esi+0x64]
007B5C66 85C0 test eax,eax
007B5C68 7657 jna 0x7b5cc1
007B5C6A 8D9B00000000 lea ebx,[ebx+0x0]
007B5C70 8B4E28 mov ecx,[esi+0x28]
007B5C73 85C9 test ecx,ecx
007B5C75 8B465C mov eax,[esi+0x5c]
007B5C78 8B00 mov eax,[eax]
007B5C7A 7508 jnz 0x7b5c84
007B5C7C 8B4E3C mov ecx,[esi+0x3c]
007B5C7F C1E005 shl eax,byte 0x5
007B5C82 EB06 jmp 0x7b5c8a
007B5C84 8B4E4C mov ecx,[esi+0x4c]
007B5C87 C1E006 shl eax,byte 0x6
007B5C8A 8B16 mov edx,[esi]
007B5C8C 03C1 add eax,ecx
007B5C8E 50 push eax
007B5C8F 8BCE mov ecx,esi
007B5C91 FF520C call dword near [edx+0xc]
007B5C94 8B465C mov eax,[esi+0x5c]
007B5C97 8B08 mov ecx,[eax]
007B5C99 8B4678 mov eax,[esi+0x78]
007B5C9C 8D5001 lea edx,[eax+0x1]
007B5C9F 895678 mov [esi+0x78],edx
007B5CA2 8B5670 mov edx,[esi+0x70]
007B5CA5 890C82 mov [edx+eax*4],ecx
007B5CA8 8B4E64 mov ecx,[esi+0x64]
007B5CAB 8B465C mov eax,[esi+0x5c]
007B5CAE 8B5488FC mov edx,[eax+ecx*4-0x4]
007B5CB2 8910 mov [eax],edx
007B5CB4 8B4E64 mov ecx,[esi+0x64]
007B5CB7 49 dec ecx
007B5CB8 8BC1 mov eax,ecx
007B5CBA 85C0 test eax,eax
007B5CBC 894E64 mov [esi+0x64],ecx
007B5CBF 77AF ja 0x7b5c70
007B5CC1 5E pop esi
007B5CC2 C3 ret
007B5CC3 90 nop
007B5CC4 90 nop
007B5CC5 90 nop
007B5CC6 90 nop
007B5CC7 90 nop
007B5CC8 90 nop
007B5CC9 90 nop
007B5CCA 90 nop
007B5CCB 90 nop
007B5CCC 90 nop
007B5CCD 90 nop
007B5CCE 90 nop
007B5CCF 90 nop
007B5CD0 55 push ebp
007B5CD1 8BEC mov ebp,esp
007B5CD3 D94508 fld dword [ebp+0x8]
007B5CD6 8B4508 mov eax,[ebp+0x8]
007B5CD9 D9E1 fabs
007B5CDB 898188010000 mov [ecx+0x188],eax
007B5CE1 D81D30D88100 fcomp dword [0x81d830]
007B5CE7 DFE0 fnstsw ax
007B5CE9 F6C405 test ah,0x5
007B5CEC 7A0A jpe 0x7b5cf8
007B5CEE C781880100000000 mov dword [ecx+0x188],0x0
-0000
007B5CF8 5D pop ebp
007B5CF9 C20400 ret word 0x4
007B5CFC 90 nop
007B5CFD 90 nop
007B5CFE 90 nop
007B5CFF 90 nop
007B5D00 55 push ebp
007B5D01 8BEC mov ebp,esp
007B5D03 8B81AC010000 mov eax,[ecx+0x1ac]
007B5D09 8B5508 mov edx,[ebp+0x8]
007B5D0C C1E204 shl edx,byte 0x4
007B5D0F 33D0 xor edx,eax
007B5D11 83E210 and edx,0x10
007B5D14 33D0 xor edx,eax
007B5D16 8991AC010000 mov [ecx+0x1ac],edx
007B5D1C 5D pop ebp
007B5D1D C20400 ret word 0x4
007B5D20 8B81AC010000 mov eax,[ecx+0x1ac]
007B5D26 C1E804 shr eax,byte 0x4
007B5D29 83E001 and eax,0x1
007B5D2C C3 ret
007B5D2D 90 nop
007B5D2E 90 nop
007B5D2F 90 nop
007B5D30 55 push ebp
007B5D31 8BEC mov ebp,esp
007B5D33 D94510 fld dword [ebp+0x10]
007B5D36 D86508 fsub dword [ebp+0x8]
007B5D39 D9C0 fld st0
007B5D3B D9E1 fabs
007B5D3D D81DD4298000 fcomp dword [0x8029d4]
007B5D43 DFE0 fnstsw ax
007B5D45 F6C405 test ah,0x5
007B5D48 7B1E jpo 0x7b5d68
007B5D4A D94514 fld dword [ebp+0x14]
007B5D4D D8650C fsub dword [ebp+0xc]
007B5D50 DEF1 fdivrp st1
007B5D52 D991F8010000 fst dword [ecx+0x1f8]
007B5D58 D84D08 fmul dword [ebp+0x8]
007B5D5B D86D0C fsubr dword [ebp+0xc]
007B5D5E D999F4010000 fstp dword [ecx+0x1f4]
007B5D64 5D pop ebp
007B5D65 C21000 ret word 0x10
007B5D68 33C0 xor eax,eax
007B5D6A DDD8 fstp st0
007B5D6C 8981F8010000 mov [ecx+0x1f8],eax
007B5D72 8981F4010000 mov [ecx+0x1f4],eax
007B5D78 5D pop ebp
007B5D79 C21000 ret word 0x10
007B5D7C 90 nop
007B5D7D 90 nop
007B5D7E 90 nop
007B5D7F 90 nop
007B5D80 55 push ebp
007B5D81 8BEC mov ebp,esp
007B5D83 8B417C mov eax,[ecx+0x7c]
007B5D86 8D5001 lea edx,[eax+0x1]
007B5D89 89517C mov [ecx+0x7c],edx
007B5D8C 8B5508 mov edx,[ebp+0x8]
007B5D8F 89948180000000 mov [ecx+eax*4+0x80],edx
007B5D96 5D pop ebp
007B5D97 C20400 ret word 0x4
007B5D9A 90 nop
007B5D9B 90 nop
007B5D9C 90 nop
007B5D9D 90 nop
007B5D9E 90 nop
007B5D9F 90 nop
007B5DA0 55 push ebp
007B5DA1 8BEC mov ebp,esp
007B5DA3 8B450C mov eax,[ebp+0xc]
007B5DA6 56 push esi
007B5DA7 6A00 push dword 0x0
007B5DA9 8BF1 mov esi,ecx
007B5DAB 8B4D08 mov ecx,[ebp+0x8]
007B5DAE 50 push eax
007B5DAF E89C15F5FF call 0x707350
007B5DB4 56 push esi
007B5DB5 68D05D7B00 push dword 0x7b5dd0
007B5DBA 8BC8 mov ecx,eax
007B5DBC 898698000000 mov [esi+0x98],eax
007B5DC2 E8D9A7F5FF call 0x7105a0
007B5DC7 5E pop esi
007B5DC8 5D pop ebp
007B5DC9 C20800 ret word 0x8
007B5DCC 90 nop
007B5DCD 90 nop
007B5DCE 90 nop
007B5DCF 90 nop
007B5DD0 55 push ebp
007B5DD1 8BEC mov ebp,esp
007B5DD3 83EC08 sub esp,0x8
007B5DD6 53 push ebx
007B5DD7 56 push esi
007B5DD8 57 push edi
007B5DD9 8BF9 mov edi,ecx
007B5DDB 85FF test edi,edi
007B5DDD 8955F8 mov [ebp-0x8],edx
007B5DE0 897DFC mov [ebp-0x4],edi
007B5DE3 744E jz 0x7b5e33
007B5DE5 85D2 test edx,edx
007B5DE7 744A jz 0x7b5e33
007B5DE9 E8E2D7F5FF call 0x7135d0
007B5DEE 83F804 cmp eax,0x4
007B5DF1 730B jnc 0x7b5dfe
007B5DF3 8BCF mov ecx,edi
007B5DF5 E8D6D7F5FF call 0x7135d0
007B5DFA 8BD8 mov ebx,eax
007B5DFC EB05 jmp 0x7b5e03
007B5DFE BB04000000 mov ebx,0x4
007B5E03 33F6 xor esi,esi
007B5E05 85DB test ebx,ebx
007B5E07 762A jna 0x7b5e33
007B5E09 EB05 jmp 0x7b5e10
007B5E0B 8B7DFC mov edi,[ebp-0x4]
007B5E0E 8BFF mov edi,edi
007B5E10 56 push esi
007B5E11 8BCF mov ecx,edi
007B5E13 E8E8D7F5FF call 0x713600
007B5E18 8B4DF8 mov ecx,[ebp-0x8]
007B5E1B 8BF8 mov edi,eax
007B5E1D 57 push edi
007B5E1E E85DFFFFFF call 0x7b5d80
007B5E23 6A01 push dword 0x1
007B5E25 6A01 push dword 0x1
007B5E27 8BCF mov ecx,edi
007B5E29 E872EDFFFF call 0x7b4ba0
007B5E2E 46 inc esi
007B5E2F 3BF3 cmp esi,ebx
007B5E31 72D8 jc 0x7b5e0b
007B5E33 5F pop edi
007B5E34 5E pop esi
007B5E35 5B pop ebx
007B5E36 8BE5 mov esp,ebp
007B5E38 5D pop ebp
007B5E39 C3 ret
007B5E3A 90 nop
007B5E3B 90 nop
007B5E3C 90 nop
007B5E3D 90 nop
007B5E3E 90 nop
007B5E3F 90 nop
007B5E40 8BC1 mov eax,ecx
007B5E42 FF4004 inc dword [eax+0x4]
007B5E45 C3 ret
007B5E46 90 nop
007B5E47 90 nop
007B5E48 90 nop
007B5E49 90 nop
007B5E4A 90 nop
007B5E4B 90 nop
007B5E4C 90 nop
007B5E4D 90 nop
007B5E4E 90 nop
007B5E4F 90 nop
007B5E50 FF4904 dec dword [ecx+0x4]
007B5E53 7507 jnz 0x7b5e5c
007B5E55 8B01 mov eax,[ecx]
007B5E57 6A01 push dword 0x1
007B5E59 FF5014 call dword near [eax+0x14]
007B5E5C C3 ret
007B5E5D 90 nop
007B5E5E 90 nop
007B5E5F 90 nop
007B5E60 55 push ebp
007B5E61 8BEC mov ebp,esp
007B5E63 83EC20 sub esp,0x20
007B5E66 53 push ebx
007B5E67 56 push esi
007B5E68 8B7508 mov esi,[ebp+0x8]
007B5E6B 57 push edi
007B5E6C 8BF9 mov edi,ecx
007B5E6E 8B4764 mov eax,[edi+0x64]
007B5E71 85C0 test eax,eax
007B5E73 8945F8 mov [ebp-0x8],eax
007B5E76 C745FC00000000 mov dword [ebp-0x4],0x0
007B5E7D 0F869B000000 jna 0x7b5f1e
007B5E83 8B4DFC mov ecx,[ebp-0x4]
007B5E86 8B475C mov eax,[edi+0x5c]
007B5E89 8B0488 mov eax,[eax+ecx*4]
007B5E8C 8B4F28 mov ecx,[edi+0x28]
007B5E8F 85C9 test ecx,ecx
007B5E91 7508 jnz 0x7b5e9b
007B5E93 8B4F3C mov ecx,[edi+0x3c]
007B5E96 C1E005 shl eax,byte 0x5
007B5E99 EB06 jmp 0x7b5ea1
007B5E9B 8B4F4C mov ecx,[edi+0x4c]
007B5E9E C1E006 shl eax,byte 0x6
007B5EA1 03C1 add eax,ecx
007B5EA3 8BD8 mov ebx,eax
007B5EA5 56 push esi
007B5EA6 8BD3 mov edx,ebx
007B5EA8 8D4DE0 lea ecx,[ebp-0x20]
007B5EAB E8B06D0000 call 0x7bcc60
007B5EB0 D906 fld dword [esi]
007B5EB2 D84B10 fmul dword [ebx+0x10]
007B5EB5 8D4310 lea eax,[ebx+0x10]
007B5EB8 D94004 fld dword [eax+0x4]
007B5EBB D84E10 fmul dword [esi+0x10]
007B5EBE DEC1 faddp st1
007B5EC0 D94008 fld dword [eax+0x8]
007B5EC3 D84E20 fmul dword [esi+0x20]
007B5EC6 DEC1 faddp st1
007B5EC8 D95DEC fstp dword [ebp-0x14]
007B5ECB D94008 fld dword [eax+0x8]
007B5ECE 8B55EC mov edx,[ebp-0x14]
007B5ED1 D84E24 fmul dword [esi+0x24]
007B5ED4 D94604 fld dword [esi+0x4]
007B5ED7 D808 fmul dword [eax]
007B5ED9 DEC1 faddp st1
007B5EDB D94004 fld dword [eax+0x4]
007B5EDE D84E14 fmul dword [esi+0x14]
007B5EE1 DEC1 faddp st1
007B5EE3 D95DF0 fstp dword [ebp-0x10]
007B5EE6 D94628 fld dword [esi+0x28]
007B5EE9 8B4DF0 mov ecx,[ebp-0x10]
007B5EEC D84808 fmul dword [eax+0x8]
007B5EEF D94618 fld dword [esi+0x18]
007B5EF2 D84804 fmul dword [eax+0x4]
007B5EF5 DEC1 faddp st1
007B5EF7 D900 fld dword [eax]
007B5EF9 D84E08 fmul dword [esi+0x8]
007B5EFC 8910 mov [eax],edx
007B5EFE 894804 mov [eax+0x4],ecx
007B5F01 8B4DF8 mov ecx,[ebp-0x8]
007B5F04 DEC1 faddp st1
007B5F06 D95DF4 fstp dword [ebp-0xc]
007B5F09 8B55F4 mov edx,[ebp-0xc]
007B5F0C 895008 mov [eax+0x8],edx
007B5F0F 8B45FC mov eax,[ebp-0x4]
007B5F12 40 inc eax
007B5F13 3BC1 cmp eax,ecx
007B5F15 8945FC mov [ebp-0x4],eax
007B5F18 0F8265FFFFFF jc 0x7b5e83
007B5F1E 8B477C mov eax,[edi+0x7c]
007B5F21 33DB xor ebx,ebx
007B5F23 85C0 test eax,eax
007B5F25 7625 jna 0x7b5f4c
007B5F27 8D8780000000 lea eax,[edi+0x80]
007B5F2D 894508 mov [ebp+0x8],eax
007B5F30 8B4D08 mov ecx,[ebp+0x8]
007B5F33 8B09 mov ecx,[ecx]
007B5F35 56 push esi
007B5F36 E825FFFFFF call 0x7b5e60
007B5F3B 8B4D08 mov ecx,[ebp+0x8]
007B5F3E 8B477C mov eax,[edi+0x7c]
007B5F41 43 inc ebx
007B5F42 83C104 add ecx,0x4
007B5F45 3BD8 cmp ebx,eax
007B5F47 894D08 mov [ebp+0x8],ecx
007B5F4A 72E4 jc 0x7b5f30
007B5F4C 5F pop edi
007B5F4D 5E pop esi
007B5F4E 5B pop ebx
007B5F4F 8BE5 mov esp,ebp
007B5F51 5D pop ebp
007B5F52 C20400 ret word 0x4
007B5F55 90 nop
007B5F56 90 nop
007B5F57 90 nop
007B5F58 90 nop
007B5F59 90 nop
007B5F5A 90 nop
007B5F5B 90 nop
007B5F5C 90 nop
007B5F5D 90 nop
007B5F5E 90 nop
007B5F5F 90 nop
007B5F60 8B4164 mov eax,[ecx+0x64]
007B5F63 85C0 test eax,eax
007B5F65 53 push ebx
007B5F66 56 push esi
007B5F67 57 push edi
007B5F68 7409 jz 0x7b5f73
007B5F6A 5F pop edi
007B5F6B 5E pop esi
007B5F6C B8 db 0xb8
007B5F6D 0100 add [eax],eax
007B5F6F 00 db 0x00
@@ -0,0 +1,542 @@
// RenderParticleSprites @ 0x7B2A50 -- 0x7B3100 (1712 bytes)
// Disassembled from WoW 1.12.1 build 5875
007B2A50 55 push ebp
007B2A51 8BEC mov ebp,esp
007B2A53 81EC88000000 sub esp,0x88
007B2A59 53 push ebx
007B2A5A 56 push esi
007B2A5B 57 push edi
007B2A5C 8BF9 mov edi,ecx
007B2A5E D987B4010000 fld dword [edi+0x1b4]
007B2A64 33F6 xor esi,esi
007B2A66 D81DD8F97F00 fcomp dword [0x7ff9d8]
007B2A6C DFE0 fnstsw ax
007B2A6E F6C405 test ah,0x5
007B2A71 7B13 jpo 0x7b2a86
007B2A73 D987C0010000 fld dword [edi+0x1c0]
007B2A79 D81D74FD7F00 fcomp dword [0x7ffd74]
007B2A7F DFE0 fnstsw ax
007B2A81 F6C444 test ah,0x44
007B2A84 7B53 jpo 0x7b2ad9
007B2A86 D987B0010000 fld dword [edi+0x1b0]
007B2A8C 8B5D08 mov ebx,[ebp+0x8]
007B2A8F D84B1C fmul dword [ebx+0x1c]
007B2A92 D81574FD7F00 fcom dword [0x7ffd74]
007B2A98 DFE0 fnstsw ax
007B2A9A F6C405 test ah,0x5
007B2A9D 7A0A jpe 0x7b2aa9
007B2A9F DDD8 fstp st0
007B2AA1 D90574FD7F00 fld dword [0x7ffd74]
007B2AA7 EB15 jmp 0x7b2abe
007B2AA9 D81558FE7F00 fcom dword [0x7ffe58]
007B2AAF DFE0 fnstsw ax
007B2AB1 F6C405 test ah,0x5
007B2AB4 7B08 jpo 0x7b2abe
007B2AB6 DDD8 fstp st0
007B2AB8 D90558FE7F00 fld dword [0x7ffe58]
007B2ABE D805CC298000 fadd dword [0x8029cc]
007B2AC4 8BC3 mov eax,ebx
007B2AC6 C1E805 shr eax,byte 0x5
007B2AC9 D95DCC fstp dword [ebp-0x34]
007B2ACC 8B75CC mov esi,[ebp-0x34]
007B2ACF C1EE0E shr esi,byte 0xe
007B2AD2 03F0 add esi,eax
007B2AD4 83E67F and esi,0x7f
007B2AD7 EB03 jmp 0x7b2adc
007B2AD9 8B5D08 mov ebx,[ebp+0x8]
007B2ADC D987B4010000 fld dword [edi+0x1b4]
007B2AE2 D81DD8F97F00 fcomp dword [0x7ff9d8]
007B2AE8 DFE0 fnstsw ax
007B2AEA F6C405 test ah,0x5
007B2AED 7A1F jpe 0x7b2b0e
007B2AEF D904B5F058CF00 fld dword [esi*4+0xcf58f0]
007B2AF6 D89FB4010000 fcomp dword [edi+0x1b4]
007B2AFC DFE0 fnstsw ax
007B2AFE F6C441 test ah,0x41
007B2B01 750B jnz 0x7b2b0e
007B2B03 5F pop edi
007B2B04 5E pop esi
007B2B05 33C0 xor eax,eax
007B2B07 5B pop ebx
007B2B08 8BE5 mov esp,ebp
007B2B0A 5D pop ebp
007B2B0B C20800 ret word 0x8
007B2B0E 8D4DF0 lea ecx,[ebp-0x10]
007B2B11 51 push ecx
007B2B12 8D55C0 lea edx,[ebp-0x40]
007B2B15 52 push edx
007B2B16 8B97A8010000 mov edx,[edi+0x1a8]
007B2B1C 8D45BC lea eax,[ebp-0x44]
007B2B1F 50 push eax
007B2B20 8B431C mov eax,[ebx+0x1c]
007B2B23 8D4DE8 lea ecx,[ebp-0x18]
007B2B26 51 push ecx
007B2B27 52 push edx
007B2B28 50 push eax
007B2B29 0FB6430C movzx eax,byte [ebx+0xc]
007B2B2D 8D0C40 lea ecx,[eax+eax*2]
007B2B30 C1E105 shl ecx,byte 0x5
007B2B33 8D8C39BC000000 lea ecx,[ecx+edi+0xbc]
007B2B3A C745E800000000 mov dword [ebp-0x18],0x0
007B2B41 E8CA6F0000 call 0x7b9b10
007B2B46 E8E576DDFF call 0x58a230
007B2B4B 83781C01 cmp dword [eax+0x1c],0x1
007B2B4F 7520 jnz 0x7b2b71
007B2B51 668B45EA mov ax,[ebp-0x16]
007B2B55 8B4DE8 mov ecx,[ebp-0x18]
007B2B58 C745EC00000000 mov dword [ebp-0x14],0x0
007B2B5F 8865EF mov [ebp-0x11],ah
007B2B62 884DEE mov [ebp-0x12],cl
007B2B65 886DED mov [ebp-0x13],ch
007B2B68 8845EC mov [ebp-0x14],al
007B2B6B 8B55EC mov edx,[ebp-0x14]
007B2B6E 8955E8 mov [ebp-0x18],edx
007B2B71 D987C0010000 fld dword [edi+0x1c0]
007B2B77 D81D74FD7F00 fcomp dword [0x7ffd74]
007B2B7D DFE0 fnstsw ax
007B2B7F F6C444 test ah,0x44
007B2B82 7B19 jpo 0x7b2b9d
007B2B84 D904B5F058CF00 fld dword [esi*4+0xcf58f0]
007B2B8B D88FC0010000 fmul dword [edi+0x1c0]
007B2B91 D887B8010000 fadd dword [edi+0x1b8]
007B2B97 D84DF0 fmul dword [ebp-0x10]
007B2B9A D95DF0 fstp dword [ebp-0x10]
007B2B9D 8B87AC010000 mov eax,[edi+0x1ac]
007B2BA3 F6C402 test ah,0x2
007B2BA6 740C jz 0x7b2bb4
007B2BA8 D945F0 fld dword [ebp-0x10]
007B2BAB D88F64020000 fmul dword [edi+0x264]
007B2BB1 D95DF0 fstp dword [ebp-0x10]
007B2BB4 68685BCF00 push dword 0xcf5b68
007B2BB9 8BD3 mov edx,ebx
007B2BBB 8D4DD0 lea ecx,[ebp-0x30]
007B2BBE E8BD9E0000 call 0x7bca80
007B2BC3 8B97AC010000 mov edx,[edi+0x1ac]
007B2BC9 F6C204 test dl,0x4
007B2BCC 8B750C mov esi,[ebp+0xc]
007B2BCF 0F846C040000 jz 0x7b3041
007B2BD5 8B8F9C010000 mov ecx,[edi+0x19c]
007B2BDB 8B45BC mov eax,[ebp-0x44]
007B2BDE 49 dec ecx
007B2BDF 23C8 and ecx,eax
007B2BE1 894DF8 mov [ebp-0x8],ecx
007B2BE4 8B4F0C mov ecx,[edi+0xc]
007B2BE7 C745FC00000000 mov dword [ebp-0x4],0x0
007B2BEE DF6DF8 fild qword [ebp-0x8]
007B2BF1 D3F8 sar eax,cl
007B2BF3 D84F10 fmul dword [edi+0x10]
007B2BF6 89450C mov [ebp+0xc],eax
007B2BF9 D95DC4 fstp dword [ebp-0x3c]
007B2BFC DB450C fild dword [ebp+0xc]
007B2BFF D84F14 fmul dword [edi+0x14]
007B2C02 D95DC8 fstp dword [ebp-0x38]
007B2C05 D9878C010000 fld dword [edi+0x18c]
007B2C0B D81D74FD7F00 fcomp dword [0x7ffd74]
007B2C11 DFE0 fnstsw ax
007B2C13 F6C444 test ah,0x44
007B2C16 0F8ABE010000 jpe 0x7b2dda
007B2C1C F6C620 test dh,0x20
007B2C1F 0F84E7000000 jz 0x7b2d0c
007B2C25 B938D78700 mov ecx,0x87d738
007B2C2A B8345BCF00 mov eax,0xcf5b34
007B2C2F C7450C04000000 mov dword [ebp+0xc],0x4
007B2C36 D945F0 fld dword [ebp-0x10]
007B2C39 8B16 mov edx,[esi]
007B2C3B D848F8 fmul dword [eax-0x8]
007B2C3E 83C00C add eax,0xc
007B2C41 D945F0 fld dword [ebp-0x10]
007B2C44 83C108 add ecx,0x8
007B2C47 D848F0 fmul dword [eax-0x10]
007B2C4A D945F0 fld dword [ebp-0x10]
007B2C4D D848F4 fmul dword [eax-0xc]
007B2C50 D95DA8 fstp dword [ebp-0x58]
007B2C53 D9C9 fxch st1
007B2C55 D845D0 fadd dword [ebp-0x30]
007B2C58 D95DDC fstp dword [ebp-0x24]
007B2C5B 8B5DDC mov ebx,[ebp-0x24]
007B2C5E D845D4 fadd dword [ebp-0x2c]
007B2C61 D95DE0 fstp dword [ebp-0x20]
007B2C64 D945A8 fld dword [ebp-0x58]
007B2C67 D845D8 fadd dword [ebp-0x28]
007B2C6A 891A mov [edx],ebx
007B2C6C 8B5DE0 mov ebx,[ebp-0x20]
007B2C6F 895A04 mov [edx+0x4],ebx
007B2C72 D95DE4 fstp dword [ebp-0x1c]
007B2C75 8B5DE4 mov ebx,[ebp-0x1c]
007B2C78 895A08 mov [edx+0x8],ebx
007B2C7B 8B1D7858CF00 mov ebx,[0xcf5878]
007B2C81 8B5604 mov edx,[esi+0x4]
007B2C84 891A mov [edx],ebx
007B2C86 8B1D7C58CF00 mov ebx,[0xcf587c]
007B2C8C 895A04 mov [edx+0x4],ebx
007B2C8F 8B1D8058CF00 mov ebx,[0xcf5880]
007B2C95 895A08 mov [edx+0x8],ebx
007B2C98 8B5608 mov edx,[esi+0x8]
007B2C9B 8B5DE8 mov ebx,[ebp-0x18]
007B2C9E 891A mov [edx],ebx
007B2CA0 D941F4 fld dword [ecx-0xc]
007B2CA3 D84F10 fmul dword [edi+0x10]
007B2CA6 8B560C mov edx,[esi+0xc]
007B2CA9 D845C4 fadd dword [ebp-0x3c]
007B2CAC D95DF8 fstp dword [ebp-0x8]
007B2CAF D94714 fld dword [edi+0x14]
007B2CB2 8B5DF8 mov ebx,[ebp-0x8]
007B2CB5 D849F8 fmul dword [ecx-0x8]
007B2CB8 891A mov [edx],ebx
007B2CBA D845C8 fadd dword [ebp-0x38]
007B2CBD D95DFC fstp dword [ebp-0x4]
007B2CC0 8B5DFC mov ebx,[ebp-0x4]
007B2CC3 895A04 mov [edx+0x4],ebx
007B2CC6 8B5620 mov edx,[esi+0x20]
007B2CC9 8B1E mov ebx,[esi]
007B2CCB 42 inc edx
007B2CCC 895620 mov [esi+0x20],edx
007B2CCF 8B5610 mov edx,[esi+0x10]
007B2CD2 03DA add ebx,edx
007B2CD4 8B5614 mov edx,[esi+0x14]
007B2CD7 891E mov [esi],ebx
007B2CD9 8B5E04 mov ebx,[esi+0x4]
007B2CDC 03DA add ebx,edx
007B2CDE 8B5618 mov edx,[esi+0x18]
007B2CE1 895E04 mov [esi+0x4],ebx
007B2CE4 8B5E08 mov ebx,[esi+0x8]
007B2CE7 03DA add ebx,edx
007B2CE9 8B561C mov edx,[esi+0x1c]
007B2CEC 895E08 mov [esi+0x8],ebx
007B2CEF 8B5E0C mov ebx,[esi+0xc]
007B2CF2 03DA add ebx,edx
007B2CF4 8B550C mov edx,[ebp+0xc]
007B2CF7 4A dec edx
007B2CF8 895E0C mov [esi+0xc],ebx
007B2CFB 89550C mov [ebp+0xc],edx
007B2CFE 0F8532FFFFFF jnz 0x7b2c36
007B2D04 8B5D08 mov ebx,[ebp+0x8]
007B2D07 E935030000 jmp 0x7b3041
007B2D0C 33C0 xor eax,eax
007B2D0E 8BFF mov edi,edi
007B2D10 D945F0 fld dword [ebp-0x10]
007B2D13 8B0E mov ecx,[esi]
007B2D15 D88814D78700 fmul dword [eax+0x87d714]
007B2D1B 83C008 add eax,0x8
007B2D1E D845D0 fadd dword [ebp-0x30]
007B2D21 D95DDC fstp dword [ebp-0x24]
007B2D24 D945F0 fld dword [ebp-0x10]
007B2D27 8B55DC mov edx,[ebp-0x24]
007B2D2A D88810D78700 fmul dword [eax+0x87d710]
007B2D30 D845D4 fadd dword [ebp-0x2c]
007B2D33 D95DE0 fstp dword [ebp-0x20]
007B2D36 D945D8 fld dword [ebp-0x28]
007B2D39 8911 mov [ecx],edx
007B2D3B 8B55E0 mov edx,[ebp-0x20]
007B2D3E 895104 mov [ecx+0x4],edx
007B2D41 D95DE4 fstp dword [ebp-0x1c]
007B2D44 8B55E4 mov edx,[ebp-0x1c]
007B2D47 895108 mov [ecx+0x8],edx
007B2D4A 8B157858CF00 mov edx,[0xcf5878]
007B2D50 8B4E04 mov ecx,[esi+0x4]
007B2D53 8911 mov [ecx],edx
007B2D55 8B157C58CF00 mov edx,[0xcf587c]
007B2D5B 895104 mov [ecx+0x4],edx
007B2D5E 8B158058CF00 mov edx,[0xcf5880]
007B2D64 895108 mov [ecx+0x8],edx
007B2D67 8B4E08 mov ecx,[esi+0x8]
007B2D6A 8B55E8 mov edx,[ebp-0x18]
007B2D6D 8911 mov [ecx],edx
007B2D6F D9802CD78700 fld dword [eax+0x87d72c]
007B2D75 D84F10 fmul dword [edi+0x10]
007B2D78 8B4E0C mov ecx,[esi+0xc]
007B2D7B D845C4 fadd dword [ebp-0x3c]
007B2D7E D95DF8 fstp dword [ebp-0x8]
007B2D81 D98030D78700 fld dword [eax+0x87d730]
007B2D87 8B55F8 mov edx,[ebp-0x8]
007B2D8A D84F14 fmul dword [edi+0x14]
007B2D8D 8911 mov [ecx],edx
007B2D8F D845C8 fadd dword [ebp-0x38]
007B2D92 D95DFC fstp dword [ebp-0x4]
007B2D95 8B55FC mov edx,[ebp-0x4]
007B2D98 895104 mov [ecx+0x4],edx
007B2D9B 8B4E20 mov ecx,[esi+0x20]
007B2D9E 8B16 mov edx,[esi]
007B2DA0 41 inc ecx
007B2DA1 894E20 mov [esi+0x20],ecx
007B2DA4 8B4E10 mov ecx,[esi+0x10]
007B2DA7 03D1 add edx,ecx
007B2DA9 8B4E04 mov ecx,[esi+0x4]
007B2DAC 8916 mov [esi],edx
007B2DAE 8B5614 mov edx,[esi+0x14]
007B2DB1 03CA add ecx,edx
007B2DB3 8B5608 mov edx,[esi+0x8]
007B2DB6 894E04 mov [esi+0x4],ecx
007B2DB9 8B4E18 mov ecx,[esi+0x18]
007B2DBC 03D1 add edx,ecx
007B2DBE 8B4E0C mov ecx,[esi+0xc]
007B2DC1 895608 mov [esi+0x8],edx
007B2DC4 8B561C mov edx,[esi+0x1c]
007B2DC7 03CA add ecx,edx
007B2DC9 83F820 cmp eax,0x20
007B2DCC 894E0C mov [esi+0xc],ecx
007B2DCF 0F853BFFFFFF jnz 0x7b2d10
007B2DD5 E967020000 jmp 0x7b3041
007B2DDA 84F6 test dh,dh
007B2DDC D9878C010000 fld dword [edi+0x18c]
007B2DE2 D84B1C fmul dword [ebx+0x1c]
007B2DE5 D95DEC fstp dword [ebp-0x14]
007B2DE8 790D jns 0x7b2df7
007B2DEA F6C320 test bl,0x20
007B2DED 7408 jz 0x7b2df7
007B2DEF D945EC fld dword [ebp-0x14]
007B2DF2 D9E0 fchs
007B2DF4 D95DEC fstp dword [ebp-0x14]
007B2DF7 F6C620 test dh,0x20
007B2DFA 0F8449010000 jz 0x7b2f49
007B2E00 C7450C38D78700 mov dword [ebp+0xc],0x87d738
007B2E07 BB305BCF00 mov ebx,0xcf5b30
007B2E0C C745CC04000000 mov dword [ebp-0x34],0x4
007B2E13 8B45EC mov eax,[ebp-0x14]
007B2E16 6A01 push dword 0x1
007B2E18 50 push eax
007B2E19 8D9784020000 lea edx,[edi+0x284]
007B2E1F 8D8D78FFFFFF lea ecx,[ebp-0x88]
007B2E25 E866B60000 call 0x7be490
007B2E2A D98578FFFFFF fld dword [ebp-0x88]
007B2E30 D84BFC fmul dword [ebx-0x4]
007B2E33 8B0E mov ecx,[esi]
007B2E35 D9857CFFFFFF fld dword [ebp-0x84]
007B2E3B D80B fmul dword [ebx]
007B2E3D DEC1 faddp st1
007B2E3F D94580 fld dword [ebp-0x80]
007B2E42 D84B04 fmul dword [ebx+0x4]
007B2E45 DEC1 faddp st1
007B2E47 D94588 fld dword [ebp-0x78]
007B2E4A D80B fmul dword [ebx]
007B2E4C D9458C fld dword [ebp-0x74]
007B2E4F D84B04 fmul dword [ebx+0x4]
007B2E52 DEC1 faddp st1
007B2E54 D94584 fld dword [ebp-0x7c]
007B2E57 D84BFC fmul dword [ebx-0x4]
007B2E5A DEC1 faddp st1
007B2E5C D94594 fld dword [ebp-0x6c]
007B2E5F D80B fmul dword [ebx]
007B2E61 D94598 fld dword [ebp-0x68]
007B2E64 D84B04 fmul dword [ebx+0x4]
007B2E67 DEC1 faddp st1
007B2E69 D94590 fld dword [ebp-0x70]
007B2E6C D84BFC fmul dword [ebx-0x4]
007B2E6F DEC1 faddp st1
007B2E71 D95DA8 fstp dword [ebp-0x58]
007B2E74 D9C9 fxch st1
007B2E76 D84DF0 fmul dword [ebp-0x10]
007B2E79 D95DB0 fstp dword [ebp-0x50]
007B2E7C D84DF0 fmul dword [ebp-0x10]
007B2E7F D945A8 fld dword [ebp-0x58]
007B2E82 D84DF0 fmul dword [ebp-0x10]
007B2E85 D945B0 fld dword [ebp-0x50]
007B2E88 D845D0 fadd dword [ebp-0x30]
007B2E8B D95DDC fstp dword [ebp-0x24]
007B2E8E 8B55DC mov edx,[ebp-0x24]
007B2E91 D9C9 fxch st1
007B2E93 D845D4 fadd dword [ebp-0x2c]
007B2E96 D95DE0 fstp dword [ebp-0x20]
007B2E99 8B45E0 mov eax,[ebp-0x20]
007B2E9C D845D8 fadd dword [ebp-0x28]
007B2E9F 8911 mov [ecx],edx
007B2EA1 894104 mov [ecx+0x4],eax
007B2EA4 D95DE4 fstp dword [ebp-0x1c]
007B2EA7 8B55E4 mov edx,[ebp-0x1c]
007B2EAA 895108 mov [ecx+0x8],edx
007B2EAD 8B0D7858CF00 mov ecx,[0xcf5878]
007B2EB3 8B4604 mov eax,[esi+0x4]
007B2EB6 8908 mov [eax],ecx
007B2EB8 8B157C58CF00 mov edx,[0xcf587c]
007B2EBE 895004 mov [eax+0x4],edx
007B2EC1 8B0D8058CF00 mov ecx,[0xcf5880]
007B2EC7 894808 mov [eax+0x8],ecx
007B2ECA 8B45E8 mov eax,[ebp-0x18]
007B2ECD 8B5608 mov edx,[esi+0x8]
007B2ED0 8902 mov [edx],eax
007B2ED2 8B450C mov eax,[ebp+0xc]
007B2ED5 D940FC fld dword [eax-0x4]
007B2ED8 D84F10 fmul dword [edi+0x10]
007B2EDB D845C4 fadd dword [ebp-0x3c]
007B2EDE D95DF8 fstp dword [ebp-0x8]
007B2EE1 D900 fld dword [eax]
007B2EE3 D84F14 fmul dword [edi+0x14]
007B2EE6 D845C8 fadd dword [ebp-0x38]
007B2EE9 8B4E0C mov ecx,[esi+0xc]
007B2EEC D95DFC fstp dword [ebp-0x4]
007B2EEF 8B55F8 mov edx,[ebp-0x8]
007B2EF2 8911 mov [ecx],edx
007B2EF4 8B55FC mov edx,[ebp-0x4]
007B2EF7 895104 mov [ecx+0x4],edx
007B2EFA 8B5620 mov edx,[esi+0x20]
007B2EFD 8B0E mov ecx,[esi]
007B2EFF 83C008 add eax,0x8
007B2F02 89450C mov [ebp+0xc],eax
007B2F05 8B4610 mov eax,[esi+0x10]
007B2F08 03C8 add ecx,eax
007B2F0A 8B4608 mov eax,[esi+0x8]
007B2F0D 83C30C add ebx,0xc
007B2F10 42 inc edx
007B2F11 895620 mov [esi+0x20],edx
007B2F14 8B5604 mov edx,[esi+0x4]
007B2F17 890E mov [esi],ecx
007B2F19 8B4E14 mov ecx,[esi+0x14]
007B2F1C 03D1 add edx,ecx
007B2F1E 8B4E0C mov ecx,[esi+0xc]
007B2F21 895604 mov [esi+0x4],edx
007B2F24 8B5618 mov edx,[esi+0x18]
007B2F27 03C2 add eax,edx
007B2F29 894608 mov [esi+0x8],eax
007B2F2C 8B461C mov eax,[esi+0x1c]
007B2F2F 03C8 add ecx,eax
007B2F31 8B45CC mov eax,[ebp-0x34]
007B2F34 48 dec eax
007B2F35 894E0C mov [esi+0xc],ecx
007B2F38 8945CC mov [ebp-0x34],eax
007B2F3B 0F85D2FEFFFF jnz 0x7b2e13
007B2F41 8B5D08 mov ebx,[ebp+0x8]
007B2F44 E9F8000000 jmp 0x7b3041
007B2F49 8D4D0C lea ecx,[ebp+0xc]
007B2F4C 8D5508 lea edx,[ebp+0x8]
007B2F4F 894DFC mov [ebp-0x4],ecx
007B2F52 8955CC mov [ebp-0x34],edx
007B2F55 8B45FC mov eax,[ebp-0x4]
007B2F58 8B55CC mov edx,[ebp-0x34]
007B2F5B D945EC fld dword [ebp-0x14]
007B2F5E D9FB fsincos
007B2F60 D918 fstp dword [eax]
007B2F62 D91A fstp dword [edx]
007B2F64 D94508 fld dword [ebp+0x8]
007B2F67 D84DF0 fmul dword [ebp-0x10]
007B2F6A 33C0 xor eax,eax
007B2F6C D95D08 fstp dword [ebp+0x8]
007B2F6F D9450C fld dword [ebp+0xc]
007B2F72 D84DF0 fmul dword [ebp-0x10]
007B2F75 D95D0C fstp dword [ebp+0xc]
007B2F78 D98014D78700 fld dword [eax+0x87d714]
007B2F7E 8B0E mov ecx,[esi]
007B2F80 D98018D78700 fld dword [eax+0x87d718]
007B2F86 83C008 add eax,0x8
007B2F89 D9C1 fld st1
007B2F8B D84D0C fmul dword [ebp+0xc]
007B2F8E D845D0 fadd dword [ebp-0x30]
007B2F91 D9C1 fld st1
007B2F93 D84D08 fmul dword [ebp+0x8]
007B2F96 DEE9 fsubp st1
007B2F98 D919 fstp dword [ecx]
007B2F9A 8B16 mov edx,[esi]
007B2F9C D9C9 fxch st1
007B2F9E D84D08 fmul dword [ebp+0x8]
007B2FA1 D9C9 fxch st1
007B2FA3 D84D0C fmul dword [ebp+0xc]
007B2FA6 DEC1 faddp st1
007B2FA8 D845D4 fadd dword [ebp-0x2c]
007B2FAB D95A04 fstp dword [edx+0x4]
007B2FAE 8B0E mov ecx,[esi]
007B2FB0 8B55D8 mov edx,[ebp-0x28]
007B2FB3 895108 mov [ecx+0x8],edx
007B2FB6 8B157858CF00 mov edx,[0xcf5878]
007B2FBC 8B4E04 mov ecx,[esi+0x4]
007B2FBF 8911 mov [ecx],edx
007B2FC1 8B157C58CF00 mov edx,[0xcf587c]
007B2FC7 895104 mov [ecx+0x4],edx
007B2FCA 8B158058CF00 mov edx,[0xcf5880]
007B2FD0 895108 mov [ecx+0x8],edx
007B2FD3 8B4E08 mov ecx,[esi+0x8]
007B2FD6 8B55E8 mov edx,[ebp-0x18]
007B2FD9 8911 mov [ecx],edx
007B2FDB D9802CD78700 fld dword [eax+0x87d72c]
007B2FE1 D84F10 fmul dword [edi+0x10]
007B2FE4 8B4E0C mov ecx,[esi+0xc]
007B2FE7 D845C4 fadd dword [ebp-0x3c]
007B2FEA D95DF8 fstp dword [ebp-0x8]
007B2FED D98030D78700 fld dword [eax+0x87d730]
007B2FF3 8B55F8 mov edx,[ebp-0x8]
007B2FF6 D84F14 fmul dword [edi+0x14]
007B2FF9 8911 mov [ecx],edx
007B2FFB D845C8 fadd dword [ebp-0x38]
007B2FFE D95DFC fstp dword [ebp-0x4]
007B3001 8B55FC mov edx,[ebp-0x4]
007B3004 895104 mov [ecx+0x4],edx
007B3007 8B4E20 mov ecx,[esi+0x20]
007B300A 8B16 mov edx,[esi]
007B300C 41 inc ecx
007B300D 894E20 mov [esi+0x20],ecx
007B3010 8B4E10 mov ecx,[esi+0x10]
007B3013 03D1 add edx,ecx
007B3015 8B4E04 mov ecx,[esi+0x4]
007B3018 8916 mov [esi],edx
007B301A 8B5614 mov edx,[esi+0x14]
007B301D 03CA add ecx,edx
007B301F 8B5608 mov edx,[esi+0x8]
007B3022 894E04 mov [esi+0x4],ecx
007B3025 8B4E18 mov ecx,[esi+0x18]
007B3028 03D1 add edx,ecx
007B302A 8B4E0C mov ecx,[esi+0xc]
007B302D 895608 mov [esi+0x8],edx
007B3030 8B561C mov edx,[esi+0x1c]
007B3033 03CA add ecx,edx
007B3035 83F820 cmp eax,0x20
007B3038 894E0C mov [esi+0xc],ecx
007B303B 0F8237FFFFFF jc 0x7b2f78
007B3041 F687AC01000008 test byte [edi+0x1ac],0x8
007B3048 0F8477040000 jz 0x7b34c5
007B304E 8B8F9C010000 mov ecx,[edi+0x19c]
007B3054 8B45C0 mov eax,[ebp-0x40]
007B3057 49 dec ecx
007B3058 23C8 and ecx,eax
007B305A 894DF8 mov [ebp-0x8],ecx
007B305D 8B4F0C mov ecx,[edi+0xc]
007B3060 C745FC00000000 mov dword [ebp-0x4],0x0
007B3067 DF6DF8 fild qword [ebp-0x8]
007B306A D3F8 sar eax,cl
007B306C 8B97B4000000 mov edx,[edi+0xb4]
007B3072 D84F10 fmul dword [edi+0x10]
007B3075 C745B800000000 mov dword [ebp-0x48],0x0
007B307C 894508 mov [ebp+0x8],eax
007B307F D95D0C fstp dword [ebp+0xc]
007B3082 8A87AE010000 mov al,[edi+0x1ae]
007B3088 A801 test al,0x1
007B308A DB4508 fild dword [ebp+0x8]
007B308D 895508 mov [ebp+0x8],edx
007B3090 D84F14 fmul dword [edi+0x14]
007B3093 D95DEC fstp dword [ebp-0x14]
007B3096 D94310 fld dword [ebx+0x10]
007B3099 D9E0 fchs
007B309B D95DAC fstp dword [ebp-0x54]
007B309E D94314 fld dword [ebx+0x14]
007B30A1 D9E0 fchs
007B30A3 D95DB0 fstp dword [ebp-0x50]
007B30A6 D94318 fld dword [ebx+0x18]
007B30A9 D9E0 fchs
007B30AB D95DB4 fstp dword [ebp-0x4c]
007B30AE 7413 jz 0x7b30c3
007B30B0 D94508 fld dword [ebp+0x8]
007B30B3 D85B1C fcomp dword [ebx+0x1c]
007B30B6 DFE0 fnstsw ax
007B30B8 F6C441 test ah,0x41
007B30BB 7506 jnz 0x7b30c3
007B30BD 8B431C mov eax,[ebx+0x1c]
007B30C0 894508 mov [ebp+0x8],eax
007B30C3 68685BCF00 push dword 0xcf5b68
007B30C8 8D55AC lea edx,[ebp-0x54]
007B30CB 8D4D9C lea ecx,[ebp-0x64]
007B30CE E86D9A0000 call 0x7bcb40
007B30D3 D94508 fld dword [ebp+0x8]
007B30D6 D808 fmul dword [eax]
007B30D8 D94508 fld dword [ebp+0x8]
007B30DB D84804 fmul dword [eax+0x4]
007B30DE D94508 fld dword [ebp+0x8]
007B30E1 D84808 fmul dword [eax+0x8]
007B30E4 D95DB4 fstp dword [ebp-0x4c]
007B30E7 D9C9 fxch st1
007B30E9 D95DF4 fstp dword [ebp-0xc]
007B30EC D95DF8 fstp dword [ebp-0x8]
007B30EF D945B4 fld dword [ebp-0x4c]
007B30F2 D95DFC fstp dword [ebp-0x4]
007B30F5 D945F4 fld dword [ebp-0xc]
007B30F8 D95DDC fstp dword [ebp-0x24]
007B30FB D945F8 fld dword [ebp-0x8]
007B30FE D9 db 0xd9
007B30FF 55 push ebp
@@ -0,0 +1,190 @@
// SetupParticleRendering @ 0x7B3D20 -- 0x7B4050 (816 bytes)
// Disassembled from WoW 1.12.1 build 5875
007B3D20 55 push ebp
007B3D21 8BEC mov ebp,esp
007B3D23 81EC54010000 sub esp,0x154
007B3D29 53 push ebx
007B3D2A 56 push esi
007B3D2B 8BD9 mov ebx,ecx
007B3D2D 57 push edi
007B3D2E 8D4DAC lea ecx,[ebp-0x54]
007B3D31 C7852CFFFFFF0000 mov dword [ebp-0xd4],0x3f800000
-803F
007B3D3B C78530FFFFFF0000 mov dword [ebp-0xd0],0x0
-0000
007B3D45 C78534FFFFFF0000 mov dword [ebp-0xcc],0x0
-0000
007B3D4F C78538FFFFFF0000 mov dword [ebp-0xc8],0x0
-0000
007B3D59 C7853CFFFFFF0000 mov dword [ebp-0xc4],0x0
-0000
007B3D63 C78540FFFFFF0000 mov dword [ebp-0xc0],0x3f800000
-803F
007B3D6D C78544FFFFFF0000 mov dword [ebp-0xbc],0x0
-0000
007B3D77 C78548FFFFFF0000 mov dword [ebp-0xb8],0x0
-0000
007B3D81 C7854CFFFFFF0000 mov dword [ebp-0xb4],0x0
-0000
007B3D8B C78550FFFFFF0000 mov dword [ebp-0xb0],0x0
-0000
007B3D95 C78554FFFFFF0000 mov dword [ebp-0xac],0x3f800000
-803F
007B3D9F C78558FFFFFF0000 mov dword [ebp-0xa8],0x0
-0000
007B3DA9 C7855CFFFFFF0000 mov dword [ebp-0xa4],0x0
-0000
007B3DB3 C78560FFFFFF0000 mov dword [ebp-0xa0],0x0
-0000
007B3DBD C78564FFFFFF0000 mov dword [ebp-0x9c],0x0
-0000
007B3DC7 C78568FFFFFF0000 mov dword [ebp-0x98],0x3f800000
-803F
007B3DD1 C745AC0000803F mov dword [ebp-0x54],0x3f800000
007B3DD8 C745B000000000 mov dword [ebp-0x50],0x0
007B3DDF C745B400000000 mov dword [ebp-0x4c],0x0
007B3DE6 C745B800000000 mov dword [ebp-0x48],0x0
007B3DED C745BC00000000 mov dword [ebp-0x44],0x0
007B3DF4 C745C00000803F mov dword [ebp-0x40],0x3f800000
007B3DFB C745C400000000 mov dword [ebp-0x3c],0x0
007B3E02 C745C800000000 mov dword [ebp-0x38],0x0
007B3E09 C745CC00000000 mov dword [ebp-0x34],0x0
007B3E10 C745D000000000 mov dword [ebp-0x30],0x0
007B3E17 C745D40000803F mov dword [ebp-0x2c],0x3f800000
007B3E1E C745D800000000 mov dword [ebp-0x28],0x0
007B3E25 C745DC00000000 mov dword [ebp-0x24],0x0
007B3E2C C745E000000000 mov dword [ebp-0x20],0x0
007B3E33 C745E400000000 mov dword [ebp-0x1c],0x0
007B3E3A C745E80000803F mov dword [ebp-0x18],0x3f800000
007B3E41 E86A72DDFF call 0x58b0b0
007B3E46 8D8D2CFFFFFF lea ecx,[ebp-0xd4]
007B3E4C E8FF71DDFF call 0x58b050
007B3E51 D9833C020000 fld dword [ebx+0x23c]
007B3E57 D9E0 fchs
007B3E59 BE00010000 mov esi,0x100
007B3E5E D95DF4 fstp dword [ebp-0xc]
007B3E61 D98340020000 fld dword [ebx+0x240]
007B3E67 8B45F4 mov eax,[ebp-0xc]
007B3E6A D9E0 fchs
007B3E6C 89459C mov [ebp-0x64],eax
007B3E6F 85B3AC010000 test [ebx+0x1ac],esi
007B3E75 D95DF8 fstp dword [ebp-0x8]
007B3E78 D98344020000 fld dword [ebx+0x244]
007B3E7E 8B4DF8 mov ecx,[ebp-0x8]
007B3E81 D9E0 fchs
007B3E83 C7856CFFFFFF0000 mov dword [ebp-0x94],0x3f800000
-803F
007B3E8D D95DFC fstp dword [ebp-0x4]
007B3E90 8B55FC mov edx,[ebp-0x4]
007B3E93 C78570FFFFFF0000 mov dword [ebp-0x90],0x0
-0000
007B3E9D C78574FFFFFF0000 mov dword [ebp-0x8c],0x0
-0000
007B3EA7 C78578FFFFFF0000 mov dword [ebp-0x88],0x0
-0000
007B3EB1 C7857CFFFFFF0000 mov dword [ebp-0x84],0x0
-0000
007B3EBB C745800000803F mov dword [ebp-0x80],0x3f800000
007B3EC2 C7458400000000 mov dword [ebp-0x7c],0x0
007B3EC9 C7458800000000 mov dword [ebp-0x78],0x0
007B3ED0 C7458C00000000 mov dword [ebp-0x74],0x0
007B3ED7 C7459000000000 mov dword [ebp-0x70],0x0
007B3EDE C745940000803F mov dword [ebp-0x6c],0x3f800000
007B3EE5 C7459800000000 mov dword [ebp-0x68],0x0
007B3EEC C745A80000803F mov dword [ebp-0x58],0x3f800000
007B3EF3 894DA0 mov [ebp-0x60],ecx
007B3EF6 8955A4 mov [ebp-0x5c],edx
007B3EF9 744D jz 0x7b3f48
007B3EFB 8D45AC lea eax,[ebp-0x54]
007B3EFE 50 push eax
007B3EFF 8D8D6CFFFFFF lea ecx,[ebp-0x94]
007B3F05 51 push ecx
007B3F06 8D93FC010000 lea edx,[ebx+0x1fc]
007B3F0C 8D8DECFEFFFF lea ecx,[ebp-0x114]
007B3F12 E889870000 call 0x7bc6a0
007B3F17 8BD0 mov edx,eax
007B3F19 8D8DACFEFFFF lea ecx,[ebp-0x154]
007B3F1F E87C870000 call 0x7bc6a0
007B3F24 B9685BCF00 mov ecx,0xcf5b68
007B3F29 BA08000000 mov edx,0x8
007B3F2E 8BFF mov edi,edi
007B3F30 8B38 mov edi,[eax]
007B3F32 8939 mov [ecx],edi
007B3F34 8B7804 mov edi,[eax+0x4]
007B3F37 897904 mov [ecx+0x4],edi
007B3F3A 83C108 add ecx,0x8
007B3F3D 83C008 add eax,0x8
007B3F40 4A dec edx
007B3F41 75ED jnz 0x7b3f30
007B3F43 E97F000000 jmp 0x7b3fc7
007B3F48 8B5508 mov edx,[ebp+0x8]
007B3F4B 85D2 test edx,edx
007B3F4D 7446 jz 0x7b3f95
007B3F4F 8D45AC lea eax,[ebp-0x54]
007B3F52 50 push eax
007B3F53 8D8D6CFFFFFF lea ecx,[ebp-0x94]
007B3F59 51 push ecx
007B3F5A 8D8DACFEFFFF lea ecx,[ebp-0x154]
007B3F60 E83B870000 call 0x7bc6a0
007B3F65 8BD0 mov edx,eax
007B3F67 8D8DECFEFFFF lea ecx,[ebp-0x114]
007B3F6D E82E870000 call 0x7bc6a0
007B3F72 B9685BCF00 mov ecx,0xcf5b68
007B3F77 BA08000000 mov edx,0x8
007B3F7C 8D642400 lea esp,[esp+0x0]
007B3F80 8B38 mov edi,[eax]
007B3F82 8939 mov [ecx],edi
007B3F84 8B7804 mov edi,[eax+0x4]
007B3F87 897904 mov [ecx+0x4],edi
007B3F8A 83C108 add ecx,0x8
007B3F8D 83C008 add eax,0x8
007B3F90 4A dec edx
007B3F91 75ED jnz 0x7b3f80
007B3F93 EB32 jmp 0x7b3fc7
007B3F95 8D55AC lea edx,[ebp-0x54]
007B3F98 52 push edx
007B3F99 8D956CFFFFFF lea edx,[ebp-0x94]
007B3F9F 8D8DACFEFFFF lea ecx,[ebp-0x154]
007B3FA5 E8F6860000 call 0x7bc6a0
007B3FAA B9685BCF00 mov ecx,0xcf5b68
007B3FAF BA08000000 mov edx,0x8
007B3FB4 8B38 mov edi,[eax]
007B3FB6 8939 mov [ecx],edi
007B3FB8 8B7804 mov edi,[eax+0x4]
007B3FBB 897904 mov [ecx+0x4],edi
007B3FBE 83C108 add ecx,0x8
007B3FC1 83C008 add eax,0x8
007B3FC4 4A dec edx
007B3FC5 75ED jnz 0x7b3fb4
007B3FC7 8B45CC mov eax,[ebp-0x34]
007B3FCA 8B4DD0 mov ecx,[ebp-0x30]
007B3FCD 8B55D4 mov edx,[ebp-0x2c]
007B3FD0 A37858CF00 mov [0xcf5878],eax
007B3FD5 890D7C58CF00 mov [0xcf587c],ecx
007B3FDB 89158058CF00 mov [0xcf5880],edx
007B3FE1 8B83AC010000 mov eax,[ebx+0x1ac]
007B3FE7 F6C420 test ah,0x20
007B3FEA 0F84B3020000 jz 0x7b42a3
007B3FF0 A0EC58CF00 mov al,[0xcf58ec]
007B3FF5 A801 test al,0x1
007B3FF7 0F8590000000 jnz 0x7b408d
007B3FFD 8AD0 mov dl,al
007B3FFF 80CA01 or dl,0x1
007B4002 6800457B00 push dword 0x7b4500
007B4007 8815EC58CF00 mov [0xcf58ec],dl
007B400D C705F85ACF000000 mov dword [0xcf5af8],0xbf800000
-80BF
007B4017 C705FC5ACF000000 mov dword [0xcf5afc],0x3f800000
-803F
007B4021 C705005BCF000000 mov dword [0xcf5b00],0x0
-0000
007B402B C705045BCF000000 mov dword [0xcf5b04],0xbf800000
-80BF
007B4035 C705085BCF000000 mov dword [0xcf5b08],0xbf800000
-80BF
007B403F C7050C5BCF000000 mov dword [0xcf5b0c],0x0
-0000
007B4049 C7 db 0xc7
007B404A 05105BCF00 add eax,0xcf5b10
007B404F 00 db 0x00
@@ -0,0 +1,126 @@
// calculateColorValues @ 0x7B9B10 -- 0x7B9C70 (352 bytes)
// Disassembled from WoW 1.12.1 build 5875
007B9B10 55 push ebp
007B9B11 8BEC mov ebp,esp
007B9B13 51 push ecx
007B9B14 D94508 fld dword [ebp+0x8]
007B9B17 56 push esi
007B9B18 8BF1 mov esi,ecx
007B9B1A D8662C fsub dword [esi+0x2c]
007B9B1D 0FB64603 movzx eax,byte [esi+0x3]
007B9B21 8945FC mov [ebp-0x4],eax
007B9B24 D84E30 fmul dword [esi+0x30]
007B9B27 8B4510 mov eax,[ebp+0x10]
007B9B2A D80DAC8A8000 fmul dword [0x808aac]
007B9B30 D8053C7A8000 fadd dword [0x807a3c]
007B9B36 D95D08 fstp dword [ebp+0x8]
007B9B39 DB4604 fild dword [esi+0x4]
007B9B3C D84D08 fmul dword [ebp+0x8]
007B9B3F DA45FC fiadd dword [ebp-0x4]
007B9B42 D84D0C fmul dword [ebp+0xc]
007B9B45 D805CC298000 fadd dword [0x8029cc]
007B9B4B D95D0C fstp dword [ebp+0xc]
007B9B4E 8B4D0C mov ecx,[ebp+0xc]
007B9B51 C1E90E shr ecx,byte 0xe
007B9B54 884803 mov [eax+0x3],cl
007B9B57 DB4608 fild dword [esi+0x8]
007B9B5A 0FB65602 movzx edx,byte [esi+0x2]
007B9B5E 89550C mov [ebp+0xc],edx
007B9B61 D84D08 fmul dword [ebp+0x8]
007B9B64 DA450C fiadd dword [ebp+0xc]
007B9B67 D805CC298000 fadd dword [0x8029cc]
007B9B6D D95D0C fstp dword [ebp+0xc]
007B9B70 8B4D0C mov ecx,[ebp+0xc]
007B9B73 C1E90E shr ecx,byte 0xe
007B9B76 884802 mov [eax+0x2],cl
007B9B79 DB460C fild dword [esi+0xc]
007B9B7C 0FB65601 movzx edx,byte [esi+0x1]
007B9B80 89550C mov [ebp+0xc],edx
007B9B83 D84D08 fmul dword [ebp+0x8]
007B9B86 DA450C fiadd dword [ebp+0xc]
007B9B89 D805CC298000 fadd dword [0x8029cc]
007B9B8F D95D0C fstp dword [ebp+0xc]
007B9B92 8B4D0C mov ecx,[ebp+0xc]
007B9B95 C1E90E shr ecx,byte 0xe
007B9B98 884801 mov [eax+0x1],cl
007B9B9B DB4610 fild dword [esi+0x10]
007B9B9E 0FB616 movzx edx,byte [esi]
007B9BA1 89550C mov [ebp+0xc],edx
007B9BA4 D84D08 fmul dword [ebp+0x8]
007B9BA7 8B551C mov edx,[ebp+0x1c]
007B9BAA DA450C fiadd dword [ebp+0xc]
007B9BAD D805CC298000 fadd dword [0x8029cc]
007B9BB3 D95D0C fstp dword [ebp+0xc]
007B9BB6 8B4D0C mov ecx,[ebp+0xc]
007B9BB9 D94508 fld dword [ebp+0x8]
007B9BBC C1E90E shr ecx,byte 0xe
007B9BBF 8808 mov [eax],cl
007B9BC1 D84E28 fmul dword [esi+0x28]
007B9BC4 D84624 fadd dword [esi+0x24]
007B9BC7 D91A fstp dword [edx]
007B9BC9 8B4650 mov eax,[esi+0x50]
007B9BCC 3D0000803F cmp eax,0x3f800000
007B9BD1 7535 jnz 0x7b9c08
007B9BD3 DB4618 fild dword [esi+0x18]
007B9BD6 8B5514 mov edx,[ebp+0x14]
007B9BD9 D84D08 fmul dword [ebp+0x8]
007B9BDC DA4614 fiadd dword [esi+0x14]
007B9BDF D805CC298000 fadd dword [0x8029cc]
007B9BE5 D95D0C fstp dword [ebp+0xc]
007B9BE8 8B450C mov eax,[ebp+0xc]
007B9BEB C1E80E shr eax,byte 0xe
007B9BEE 33C9 xor ecx,ecx
007B9BF0 8AC8 mov cl,al
007B9BF2 890A mov [edx],ecx
007B9BF4 DB4620 fild dword [esi+0x20]
007B9BF7 D84D08 fmul dword [ebp+0x8]
007B9BFA DA461C fiadd dword [esi+0x1c]
007B9BFD D805CC298000 fadd dword [0x8029cc]
007B9C03 D95D14 fstp dword [ebp+0x14]
007B9C06 EB44 jmp 0x7b9c4c
007B9C08 D94508 fld dword [ebp+0x8]
007B9C0B D84E50 fmul dword [esi+0x50]
007B9C0E DD05B8158000 fld qword [0x8015b8]
007B9C14 E8F15CF8FF call 0x73f90a
007B9C19 DB4618 fild dword [esi+0x18]
007B9C1C 8B5514 mov edx,[ebp+0x14]
007B9C1F D8C9 fmul st1
007B9C21 DA4614 fiadd dword [esi+0x14]
007B9C24 D805CC298000 fadd dword [0x8029cc]
007B9C2A D95D08 fstp dword [ebp+0x8]
007B9C2D 8B4508 mov eax,[ebp+0x8]
007B9C30 C1E80E shr eax,byte 0xe
007B9C33 33C9 xor ecx,ecx
007B9C35 8AC8 mov cl,al
007B9C37 890A mov [edx],ecx
007B9C39 DB4620 fild dword [esi+0x20]
007B9C3C D8C9 fmul st1
007B9C3E DA461C fiadd dword [esi+0x1c]
007B9C41 D805CC298000 fadd dword [0x8029cc]
007B9C47 D95D14 fstp dword [ebp+0x14]
007B9C4A DDD8 fstp st0
007B9C4C 8B4514 mov eax,[ebp+0x14]
007B9C4F 8B5518 mov edx,[ebp+0x18]
007B9C52 C1E80E shr eax,byte 0xe
007B9C55 33C9 xor ecx,ecx
007B9C57 8AC8 mov cl,al
007B9C59 5E pop esi
007B9C5A 890A mov [edx],ecx
007B9C5C 8BE5 mov esp,ebp
007B9C5E 5D pop ebp
007B9C5F C21800 ret word 0x18
007B9C62 90 nop
007B9C63 90 nop
007B9C64 90 nop
007B9C65 90 nop
007B9C66 90 nop
007B9C67 90 nop
007B9C68 90 nop
007B9C69 90 nop
007B9C6A 90 nop
007B9C6B 90 nop
007B9C6C 90 nop
007B9C6D 90 nop
007B9C6E 90 nop
007B9C6F 90 nop