4156 lines
89 KiB
NASM
4156 lines
89 KiB
NASM
; Listing generated by Microsoft (R) Optimizing Compiler Version 16.00.40219.01
|
|
|
|
TITLE E:\Private\Frank\Code\blu-flame.org\4kgfx\vecmath.cpp
|
|
.686P
|
|
.XMM
|
|
include listing.inc
|
|
.model flat
|
|
|
|
INCLUDELIB MSVCRT
|
|
INCLUDELIB OLDNAMES
|
|
|
|
PUBLIC __fltused
|
|
attribs SEGMENT
|
|
__fltused DD 01H
|
|
attribs ENDS
|
|
PUBLIC _pi
|
|
; Function compile flags: /Ogspy
|
|
; File e:\private\frank\code\blu-flame.org\4kgfx\vecmath.cpp
|
|
compile SEGMENT
|
|
_pi PROC
|
|
|
|
; 7 : __asm fldpi
|
|
|
|
fldpi
|
|
|
|
; 8 : }
|
|
|
|
ret 0
|
|
_pi ENDP
|
|
compile ENDS
|
|
PUBLIC _memclear
|
|
; Function compile flags: /Ogspy
|
|
compile SEGMENT
|
|
_dest$ = 8 ; size = 4
|
|
__size$ = 12 ; size = 4
|
|
_memclear PROC
|
|
|
|
; 11 : {
|
|
|
|
push edi
|
|
|
|
; 13 : {
|
|
; 14 : xor eax, eax
|
|
|
|
xor eax, eax
|
|
|
|
; 15 : mov edi, dest
|
|
|
|
mov edi, DWORD PTR _dest$[esp]
|
|
|
|
; 16 : mov ecx, _size
|
|
|
|
mov ecx, DWORD PTR __size$[esp]
|
|
|
|
; 17 : rep stosb
|
|
|
|
rep stosb
|
|
|
|
; 12 : __asm
|
|
|
|
pop edi
|
|
|
|
; 18 : }
|
|
; 19 : }
|
|
|
|
ret 0
|
|
_memclear ENDP
|
|
compile ENDS
|
|
PUBLIC _memcpy
|
|
; Function compile flags: /Ogspy
|
|
compile SEGMENT
|
|
_dest$ = 8 ; size = 4
|
|
_source$ = 12 ; size = 4
|
|
__size$ = 16 ; size = 4
|
|
_memcpy PROC
|
|
|
|
; 22 : {
|
|
|
|
push esi
|
|
push edi
|
|
|
|
; 24 : {
|
|
; 25 : mov esi, source
|
|
|
|
mov esi, DWORD PTR _source$[esp+4]
|
|
|
|
; 26 : mov edi, dest
|
|
|
|
mov edi, DWORD PTR _dest$[esp+4]
|
|
|
|
; 27 : mov ecx, _size
|
|
|
|
mov ecx, DWORD PTR __size$[esp+4]
|
|
|
|
; 28 : rep movsb
|
|
|
|
rep movsb
|
|
|
|
; 23 : __asm
|
|
|
|
pop edi
|
|
pop esi
|
|
|
|
; 29 : }
|
|
; 30 : }
|
|
|
|
ret 0
|
|
_memcpy ENDP
|
|
compile ENDS
|
|
PUBLIC _strlen
|
|
; Function compile flags: /Ogspy
|
|
compile SEGMENT
|
|
_string$ = 8 ; size = 4
|
|
_strlen PROC
|
|
|
|
; 33 : {
|
|
|
|
push edi
|
|
|
|
; 35 : {
|
|
; 36 : xor ecx, ecx
|
|
|
|
xor ecx, ecx
|
|
|
|
; 37 : mov edi, string
|
|
|
|
mov edi, DWORD PTR _string$[esp]
|
|
|
|
; 38 : not ecx
|
|
|
|
not ecx
|
|
|
|
; 39 : xor al, al
|
|
|
|
xor al, al
|
|
|
|
; 40 : cld
|
|
|
|
cld
|
|
|
|
; 41 : repne scasb
|
|
|
|
repnz scasb
|
|
|
|
; 42 : not ecx
|
|
|
|
not ecx
|
|
|
|
; 43 : lea eax, [ecx-1]
|
|
|
|
lea eax, DWORD PTR [ecx-1]
|
|
|
|
; 34 : __asm
|
|
|
|
pop edi
|
|
|
|
; 44 : }
|
|
; 45 : }
|
|
|
|
ret 0
|
|
_strlen ENDP
|
|
compile ENDS
|
|
PUBLIC _pow
|
|
EXTRN __fltused:DWORD
|
|
; Function compile flags: /Ogspy
|
|
compile SEGMENT
|
|
_r$ = -4 ; size = 4
|
|
_x$ = 8 ; size = 4
|
|
_y$ = 12 ; size = 4
|
|
_pow PROC
|
|
|
|
; 48 : {
|
|
|
|
push ecx
|
|
|
|
; 49 : float r;
|
|
; 50 : __asm
|
|
; 51 : {
|
|
; 52 : fld y
|
|
|
|
fld DWORD PTR _y$[esp]
|
|
|
|
; 53 : fld x
|
|
|
|
fld DWORD PTR _x$[esp]
|
|
|
|
; 54 : fyl2x
|
|
|
|
fyl2x
|
|
|
|
; 55 : fld1
|
|
|
|
fld1
|
|
|
|
; 56 : fld st(1)
|
|
|
|
fld ST(1)
|
|
|
|
; 57 : fprem
|
|
|
|
fprem
|
|
|
|
; 58 : f2xm1
|
|
|
|
f2xm1
|
|
|
|
; 59 : faddp st(1),st
|
|
|
|
faddp ST(1), ST(0)
|
|
|
|
; 60 : fscale
|
|
|
|
fscale
|
|
|
|
; 61 : fxch st(1)
|
|
|
|
fxch ST(1)
|
|
|
|
; 62 : fstp st(0)
|
|
|
|
fstp ST(0)
|
|
|
|
; 63 : fstp r
|
|
|
|
fstp DWORD PTR _r$[esp+4]
|
|
|
|
; 64 : }
|
|
; 65 : return r;
|
|
|
|
fld DWORD PTR _r$[esp+4]
|
|
|
|
; 66 : }
|
|
|
|
pop ecx
|
|
ret 0
|
|
_pow ENDP
|
|
compile ENDS
|
|
PUBLIC _sqrt
|
|
; Function compile flags: /Ogspy
|
|
compile SEGMENT
|
|
_x$ = 8 ; size = 4
|
|
_sqrt PROC
|
|
|
|
; 70 : __asm fld x
|
|
|
|
fld DWORD PTR _x$[esp-4]
|
|
|
|
; 71 : __asm fsqrt
|
|
|
|
fsqrt
|
|
|
|
; 72 : }
|
|
|
|
ret 0
|
|
_sqrt ENDP
|
|
compile ENDS
|
|
PUBLIC _sin
|
|
; Function compile flags: /Ogspy
|
|
compile SEGMENT
|
|
_x$ = 8 ; size = 4
|
|
_sin PROC
|
|
|
|
; 76 : __asm fld x
|
|
|
|
fld DWORD PTR _x$[esp-4]
|
|
|
|
; 77 : __asm fsin
|
|
|
|
fsin
|
|
|
|
; 78 : }
|
|
|
|
ret 0
|
|
_sin ENDP
|
|
compile ENDS
|
|
PUBLIC _cos
|
|
; Function compile flags: /Ogspy
|
|
compile SEGMENT
|
|
_x$ = 8 ; size = 4
|
|
_cos PROC
|
|
|
|
; 82 : __asm fld x
|
|
|
|
fld DWORD PTR _x$[esp-4]
|
|
|
|
; 83 : __asm fcos
|
|
|
|
fcos
|
|
|
|
; 84 : }
|
|
|
|
ret 0
|
|
_cos ENDP
|
|
compile ENDS
|
|
PUBLIC _fabs
|
|
; Function compile flags: /Ogspy
|
|
compile SEGMENT
|
|
_x$ = 8 ; size = 4
|
|
_fabs PROC
|
|
|
|
; 88 : __asm fld x
|
|
|
|
fld DWORD PTR _x$[esp-4]
|
|
|
|
; 89 : __asm fabs
|
|
|
|
fabs
|
|
|
|
; 90 : }
|
|
|
|
ret 0
|
|
_fabs ENDP
|
|
compile ENDS
|
|
PUBLIC _tan
|
|
; Function compile flags: /Ogspy
|
|
compile SEGMENT
|
|
tv72 = -8 ; size = 4
|
|
$T18361 = -8 ; size = 4
|
|
$T18357 = -4 ; size = 4
|
|
_f$ = 8 ; size = 4
|
|
_tan PROC
|
|
|
|
; 93 : {
|
|
|
|
push ebp
|
|
mov ebp, esp
|
|
push ecx
|
|
push ecx
|
|
|
|
; 94 : return sin(f) / cos(f);
|
|
|
|
fld DWORD PTR _f$[ebp]
|
|
fsin
|
|
fstp DWORD PTR $T18357[ebp]
|
|
fld DWORD PTR _f$[ebp]
|
|
fcos
|
|
fstp DWORD PTR $T18361[ebp]
|
|
fld DWORD PTR $T18357[ebp]
|
|
fdiv DWORD PTR $T18361[ebp]
|
|
fstp DWORD PTR tv72[ebp]
|
|
fld DWORD PTR tv72[ebp]
|
|
|
|
; 95 : }
|
|
|
|
leave
|
|
ret 0
|
|
_tan ENDP
|
|
compile ENDS
|
|
PUBLIC __real@4008000000000000
|
|
PUBLIC __real@3f800000
|
|
PUBLIC __real@00000000
|
|
PUBLIC _smoothstep
|
|
; COMDAT __real@4008000000000000
|
|
CONST SEGMENT
|
|
__real@4008000000000000 DQ 04008000000000000r ; 3
|
|
CONST ENDS
|
|
; COMDAT __real@3f800000
|
|
CONST SEGMENT
|
|
__real@3f800000 DD 03f800000r ; 1
|
|
CONST ENDS
|
|
; COMDAT __real@00000000
|
|
CONST SEGMENT
|
|
__real@00000000 DD 000000000r ; 0
|
|
; Function compile flags: /Ogspy
|
|
CONST ENDS
|
|
compile SEGMENT
|
|
tv129 = 8 ; size = 4
|
|
_x$ = 8 ; size = 4
|
|
_a$ = 12 ; size = 4
|
|
_b$ = 16 ; size = 4
|
|
_smoothstep PROC
|
|
|
|
; 98 : {
|
|
|
|
push ebp
|
|
mov ebp, esp
|
|
|
|
; 99 : if (x<a) return 0.0f;
|
|
|
|
fld DWORD PTR _x$[ebp]
|
|
fld DWORD PTR _a$[ebp]
|
|
fcompp
|
|
fnstsw ax
|
|
test ah, 65 ; 00000041H
|
|
jne SHORT $LN2@smoothstep
|
|
fldz
|
|
|
|
; 103 : }
|
|
|
|
pop ebp
|
|
ret 0
|
|
$LN2@smoothstep:
|
|
|
|
; 100 : if (x>b) return 1.0f;
|
|
|
|
fld DWORD PTR _x$[ebp]
|
|
fld DWORD PTR _b$[ebp]
|
|
fcompp
|
|
fnstsw ax
|
|
test ah, 5
|
|
jp SHORT $LN1@smoothstep
|
|
fld1
|
|
|
|
; 103 : }
|
|
|
|
pop ebp
|
|
ret 0
|
|
$LN1@smoothstep:
|
|
|
|
; 101 : x = (x-a)/(b-a);
|
|
|
|
fld DWORD PTR _x$[ebp]
|
|
fsub DWORD PTR _a$[ebp]
|
|
fld DWORD PTR _b$[ebp]
|
|
fsub DWORD PTR _a$[ebp]
|
|
fdivp ST(1), ST(0)
|
|
fstp DWORD PTR _x$[ebp]
|
|
|
|
; 102 : return x*x*(3.0f-2.0f*x);
|
|
|
|
fld DWORD PTR _x$[ebp]
|
|
fld DWORD PTR _x$[ebp]
|
|
fadd ST(0), ST(0)
|
|
fsubr QWORD PTR __real@4008000000000000
|
|
fld ST(1)
|
|
fmulp ST(2), ST(0)
|
|
fmulp ST(1), ST(0)
|
|
fstp DWORD PTR tv129[ebp]
|
|
fld DWORD PTR tv129[ebp]
|
|
|
|
; 103 : }
|
|
|
|
pop ebp
|
|
ret 0
|
|
_smoothstep ENDP
|
|
compile ENDS
|
|
PUBLIC _exp2
|
|
; Function compile flags: /Ogspy
|
|
compile SEGMENT
|
|
_f$ = 8 ; size = 4
|
|
_exp2 PROC
|
|
|
|
; 107 : _asm fld dword ptr [f]
|
|
|
|
fld DWORD PTR _f$[esp-4]
|
|
|
|
; 108 : _asm fld1
|
|
|
|
fld1
|
|
|
|
; 109 : _asm fld st(1)
|
|
|
|
fld ST(1)
|
|
|
|
; 110 : _asm fprem
|
|
|
|
fprem
|
|
|
|
; 111 : _asm f2xm1
|
|
|
|
f2xm1
|
|
|
|
; 112 : _asm faddp st(1), st
|
|
|
|
faddp ST(1), ST(0)
|
|
|
|
; 113 : _asm fscale
|
|
|
|
fscale
|
|
|
|
; 114 : _asm fstp st(1)
|
|
|
|
fstp ST(1)
|
|
|
|
; 115 : _asm fstp dword ptr [f]
|
|
|
|
fstp DWORD PTR _f$[esp-4]
|
|
|
|
; 116 : return f;
|
|
|
|
fld DWORD PTR _f$[esp-4]
|
|
|
|
; 117 : }
|
|
|
|
ret 0
|
|
_exp2 ENDP
|
|
compile ENDS
|
|
PUBLIC _ftol
|
|
; Function compile flags: /Ogspy
|
|
compile SEGMENT
|
|
_t$ = -4 ; size = 4
|
|
_x$ = 8 ; size = 4
|
|
_ftol PROC
|
|
|
|
; 120 : {
|
|
|
|
push ecx
|
|
|
|
; 121 : int t;
|
|
; 122 : _asm fld x
|
|
|
|
fld DWORD PTR _x$[esp]
|
|
|
|
; 123 : _asm fistp t
|
|
|
|
fistp DWORD PTR _t$[esp+4]
|
|
|
|
; 124 : return t;
|
|
|
|
mov eax, DWORD PTR _t$[esp+4]
|
|
|
|
; 125 : }
|
|
|
|
pop ecx
|
|
ret 0
|
|
_ftol ENDP
|
|
compile ENDS
|
|
PUBLIC __ftol2_sse
|
|
; Function compile flags: /Ogspy
|
|
compile SEGMENT
|
|
_t$18376 = -4 ; size = 4
|
|
_x$ = 8 ; size = 4
|
|
__ftol2_sse PROC
|
|
|
|
; 128 : {
|
|
|
|
push ecx
|
|
|
|
; 129 : *((char*)0) = 0; // If it breaks here, it's because you have a cast to (int) somewhere. Use ftol for float-to-int casts.
|
|
|
|
mov BYTE PTR ds:0, 0
|
|
|
|
; 130 : return ftol(x);
|
|
|
|
fld DWORD PTR _x$[esp]
|
|
fistp DWORD PTR _t$18376[esp+4]
|
|
mov eax, DWORD PTR _t$18376[esp+4]
|
|
|
|
; 131 : }
|
|
|
|
pop ecx
|
|
ret 0
|
|
__ftol2_sse ENDP
|
|
compile ENDS
|
|
PUBLIC _min
|
|
; Function compile flags: /Ogspy
|
|
compile SEGMENT
|
|
_a$ = 8 ; size = 4
|
|
_b$ = 12 ; size = 4
|
|
_min PROC
|
|
|
|
; 135 : if (a < b) return a;
|
|
|
|
fld DWORD PTR _a$[esp-4]
|
|
fld DWORD PTR _b$[esp-4]
|
|
fcompp
|
|
fnstsw ax
|
|
test ah, 65 ; 00000041H
|
|
jne SHORT $LN1@min
|
|
fld DWORD PTR _a$[esp-4]
|
|
|
|
; 137 : }
|
|
|
|
ret 0
|
|
$LN1@min:
|
|
|
|
; 136 : return b;
|
|
|
|
fld DWORD PTR _b$[esp-4]
|
|
|
|
; 137 : }
|
|
|
|
ret 0
|
|
_min ENDP
|
|
compile ENDS
|
|
PUBLIC _max
|
|
; Function compile flags: /Ogspy
|
|
compile SEGMENT
|
|
_a$ = 8 ; size = 4
|
|
_b$ = 12 ; size = 4
|
|
_max PROC
|
|
|
|
; 141 : if (a > b) return a;
|
|
|
|
fld DWORD PTR _a$[esp-4]
|
|
fld DWORD PTR _b$[esp-4]
|
|
fcompp
|
|
fnstsw ax
|
|
test ah, 5
|
|
jp SHORT $LN1@max
|
|
fld DWORD PTR _a$[esp-4]
|
|
|
|
; 143 : }
|
|
|
|
ret 0
|
|
$LN1@max:
|
|
|
|
; 142 : return b;
|
|
|
|
fld DWORD PTR _b$[esp-4]
|
|
|
|
; 143 : }
|
|
|
|
ret 0
|
|
_max ENDP
|
|
compile ENDS
|
|
PUBLIC ??0vec4@@QAE@XZ ; vec4::vec4
|
|
; Function compile flags: /Ogspy
|
|
compile SEGMENT
|
|
??0vec4@@QAE@XZ PROC ; vec4::vec4
|
|
; _this$ = ecx
|
|
|
|
; 148 : vec4::vec4():x(0),y(0),z(0),w(0){};
|
|
|
|
fldz
|
|
mov eax, ecx
|
|
fst DWORD PTR [eax]
|
|
fst DWORD PTR [eax+4]
|
|
fst DWORD PTR [eax+8]
|
|
fstp DWORD PTR [eax+12]
|
|
ret 0
|
|
??0vec4@@QAE@XZ ENDP ; vec4::vec4
|
|
compile ENDS
|
|
PUBLIC ??0vec4@@QAE@ABU0@@Z ; vec4::vec4
|
|
; Function compile flags: /Ogspy
|
|
compile SEGMENT
|
|
_arg$ = 8 ; size = 4
|
|
??0vec4@@QAE@ABU0@@Z PROC ; vec4::vec4
|
|
; _this$ = ecx
|
|
|
|
; 149 : vec4::vec4(const vec4& arg):x(arg.x),y(arg.y),z(arg.z),w(arg.w){};
|
|
|
|
mov eax, ecx
|
|
mov ecx, DWORD PTR _arg$[esp-4]
|
|
fld DWORD PTR [ecx]
|
|
fstp DWORD PTR [eax]
|
|
fld DWORD PTR [ecx+4]
|
|
fstp DWORD PTR [eax+4]
|
|
fld DWORD PTR [ecx+8]
|
|
fstp DWORD PTR [eax+8]
|
|
fld DWORD PTR [ecx+12]
|
|
fstp DWORD PTR [eax+12]
|
|
ret 4
|
|
??0vec4@@QAE@ABU0@@Z ENDP ; vec4::vec4
|
|
compile ENDS
|
|
PUBLIC ??0vec4@@QAE@MMMM@Z ; vec4::vec4
|
|
; Function compile flags: /Ogspy
|
|
compile SEGMENT
|
|
_X$ = 8 ; size = 4
|
|
_Y$ = 12 ; size = 4
|
|
_Z$ = 16 ; size = 4
|
|
_W$ = 20 ; size = 4
|
|
??0vec4@@QAE@MMMM@Z PROC ; vec4::vec4
|
|
; _this$ = ecx
|
|
|
|
; 150 : vec4::vec4(float X, float Y, float Z, float W):x(X),y(Y),z(Z),w(W){};
|
|
|
|
fld DWORD PTR _X$[esp-4]
|
|
mov eax, ecx
|
|
fstp DWORD PTR [eax]
|
|
fld DWORD PTR _Y$[esp-4]
|
|
fstp DWORD PTR [eax+4]
|
|
fld DWORD PTR _Z$[esp-4]
|
|
fstp DWORD PTR [eax+8]
|
|
fld DWORD PTR _W$[esp-4]
|
|
fstp DWORD PTR [eax+12]
|
|
ret 16 ; 00000010H
|
|
??0vec4@@QAE@MMMM@Z ENDP ; vec4::vec4
|
|
compile ENDS
|
|
PUBLIC ??0vec4@@QAE@M@Z ; vec4::vec4
|
|
; Function compile flags: /Ogspy
|
|
compile SEGMENT
|
|
_a$ = 8 ; size = 4
|
|
??0vec4@@QAE@M@Z PROC ; vec4::vec4
|
|
; _this$ = ecx
|
|
|
|
; 151 : vec4::vec4(float a):x(a),y(a),z(a),w(0){};
|
|
|
|
fld DWORD PTR _a$[esp-4]
|
|
mov eax, ecx
|
|
fstp DWORD PTR [eax]
|
|
fld DWORD PTR _a$[esp-4]
|
|
fstp DWORD PTR [eax+4]
|
|
fld DWORD PTR _a$[esp-4]
|
|
fstp DWORD PTR [eax+8]
|
|
fldz
|
|
fstp DWORD PTR [eax+12]
|
|
ret 4
|
|
??0vec4@@QAE@M@Z ENDP ; vec4::vec4
|
|
compile ENDS
|
|
PUBLIC ??0vec4@@QAE@PBM@Z ; vec4::vec4
|
|
; Function compile flags: /Ogspy
|
|
compile SEGMENT
|
|
_this$ = -4 ; size = 4
|
|
_arg$ = 8 ; size = 4
|
|
??0vec4@@QAE@PBM@Z PROC ; vec4::vec4
|
|
; _this$ = ecx
|
|
|
|
; 152 : vec4::vec4(const float* arg){memcpy(m, arg, 16);};
|
|
|
|
push ecx
|
|
push esi
|
|
mov eax, ecx
|
|
push edi
|
|
mov DWORD PTR _this$[esp+12], eax
|
|
mov esi, DWORD PTR _arg$[esp+8]
|
|
mov edi, DWORD PTR _this$[esp+12]
|
|
mov ecx, 16 ; 00000010H
|
|
rep movsb
|
|
pop edi
|
|
pop esi
|
|
pop ecx
|
|
ret 4
|
|
??0vec4@@QAE@PBM@Z ENDP ; vec4::vec4
|
|
compile ENDS
|
|
PUBLIC ??0vec4@@QAE@ABT__m128@@@Z ; vec4::vec4
|
|
; Function compile flags: /Ogspy
|
|
compile SEGMENT
|
|
_arg$ = 8 ; size = 4
|
|
??0vec4@@QAE@ABT__m128@@@Z PROC ; vec4::vec4
|
|
; _this$ = ecx
|
|
|
|
; 153 : vec4::vec4(const __m128& arg){_mm_store_ps(m, arg);};
|
|
|
|
mov eax, ecx
|
|
mov ecx, DWORD PTR _arg$[esp-4]
|
|
movaps xmm0, XMMWORD PTR [ecx]
|
|
movaps XMMWORD PTR [eax], xmm0
|
|
ret 4
|
|
??0vec4@@QAE@ABT__m128@@@Z ENDP ; vec4::vec4
|
|
compile ENDS
|
|
PUBLIC __real@406fe00000000000
|
|
PUBLIC ?ToInt32@vec4@@QBEHXZ ; vec4::ToInt32
|
|
; COMDAT __real@406fe00000000000
|
|
CONST SEGMENT
|
|
__real@406fe00000000000 DQ 0406fe00000000000r ; 255
|
|
; Function compile flags: /Ogspy
|
|
CONST ENDS
|
|
compile SEGMENT
|
|
$T18407 = -16 ; size = 4
|
|
_t$18405 = -12 ; size = 4
|
|
$T18401 = -12 ; size = 4
|
|
$T18395 = -12 ; size = 4
|
|
_t$18399 = -8 ; size = 4
|
|
_t$18393 = -4 ; size = 4
|
|
?ToInt32@vec4@@QBEHXZ PROC ; vec4::ToInt32
|
|
; _this$ = ecx
|
|
|
|
; 156 : {
|
|
|
|
push ebp
|
|
mov ebp, esp
|
|
sub esp, 16 ; 00000010H
|
|
|
|
; 157 : return (((ftol(255 * x) << 8) + ftol(255 * y)) << 8) + ftol(255 * z);
|
|
|
|
fld DWORD PTR [ecx]
|
|
fmul QWORD PTR __real@406fe00000000000
|
|
fstp DWORD PTR $T18395[ebp]
|
|
fld DWORD PTR $T18395[ebp]
|
|
fistp DWORD PTR _t$18393[ebp]
|
|
fld DWORD PTR [ecx+4]
|
|
mov eax, DWORD PTR _t$18393[ebp]
|
|
fmul QWORD PTR __real@406fe00000000000
|
|
fstp DWORD PTR $T18401[ebp]
|
|
fld DWORD PTR $T18401[ebp]
|
|
fistp DWORD PTR _t$18399[ebp]
|
|
fld DWORD PTR [ecx+8]
|
|
mov edx, DWORD PTR _t$18399[ebp]
|
|
fmul QWORD PTR __real@406fe00000000000
|
|
fstp DWORD PTR $T18407[ebp]
|
|
fld DWORD PTR $T18407[ebp]
|
|
fistp DWORD PTR _t$18405[ebp]
|
|
shl eax, 8
|
|
add eax, edx
|
|
shl eax, 8
|
|
add eax, DWORD PTR _t$18405[ebp]
|
|
|
|
; 158 : }
|
|
|
|
leave
|
|
ret 0
|
|
?ToInt32@vec4@@QBEHXZ ENDP ; vec4::ToInt32
|
|
compile ENDS
|
|
PUBLIC ??Bvec4@@QBE?AT__m128@@XZ ; vec4::operator __m128
|
|
; Function compile flags: /Ogspy
|
|
compile SEGMENT
|
|
___$ReturnUdt$ = 8 ; size = 4
|
|
??Bvec4@@QBE?AT__m128@@XZ PROC ; vec4::operator __m128
|
|
; _this$ = ecx
|
|
|
|
; 162 : return _mm_load_ps(m);
|
|
|
|
mov eax, DWORD PTR ___$ReturnUdt$[esp-4]
|
|
movaps xmm0, XMMWORD PTR [ecx]
|
|
movaps XMMWORD PTR [eax], xmm0
|
|
|
|
; 163 : }
|
|
|
|
ret 4
|
|
??Bvec4@@QBE?AT__m128@@XZ ENDP ; vec4::operator __m128
|
|
compile ENDS
|
|
PUBLIC ??Avec4@@QAEAAMH@Z ; vec4::operator[]
|
|
; Function compile flags: /Ogspy
|
|
compile SEGMENT
|
|
_i$ = 8 ; size = 4
|
|
??Avec4@@QAEAAMH@Z PROC ; vec4::operator[]
|
|
; _this$ = ecx
|
|
|
|
; 167 : return m[i];
|
|
|
|
mov eax, DWORD PTR _i$[esp-4]
|
|
lea eax, DWORD PTR [ecx+eax*4]
|
|
|
|
; 168 : }
|
|
|
|
ret 4
|
|
??Avec4@@QAEAAMH@Z ENDP ; vec4::operator[]
|
|
compile ENDS
|
|
PUBLIC ??Hvec4@@QBE?AU0@ABU0@@Z ; vec4::operator+
|
|
; Function compile flags: /Ogspy
|
|
compile SEGMENT
|
|
___$ReturnUdt$ = 8 ; size = 4
|
|
_arg$ = 12 ; size = 4
|
|
??Hvec4@@QBE?AU0@ABU0@@Z PROC ; vec4::operator+
|
|
; _this$ = ecx
|
|
|
|
; 172 : return _mm_add_ps(_mm_load_ps(m), _mm_load_ps(arg.m));
|
|
|
|
mov edx, DWORD PTR _arg$[esp-4]
|
|
movaps xmm0, XMMWORD PTR [edx]
|
|
mov eax, DWORD PTR ___$ReturnUdt$[esp-4]
|
|
addps xmm0, XMMWORD PTR [ecx]
|
|
movaps XMMWORD PTR [eax], xmm0
|
|
|
|
; 173 : }
|
|
|
|
ret 8
|
|
??Hvec4@@QBE?AU0@ABU0@@Z ENDP ; vec4::operator+
|
|
compile ENDS
|
|
PUBLIC ??Hvec4@@QBE?AU0@M@Z ; vec4::operator+
|
|
; Function compile flags: /Ogspy
|
|
compile SEGMENT
|
|
___$ReturnUdt$ = 8 ; size = 4
|
|
_arg$ = 12 ; size = 4
|
|
??Hvec4@@QBE?AU0@M@Z PROC ; vec4::operator+
|
|
; _this$ = ecx
|
|
|
|
; 177 : return *this + _mm_set_ps1(arg);
|
|
|
|
movss xmm0, DWORD PTR _arg$[esp-4]
|
|
movaps xmm1, XMMWORD PTR [ecx]
|
|
mov eax, DWORD PTR ___$ReturnUdt$[esp-4]
|
|
shufps xmm0, xmm0, 0
|
|
addps xmm1, xmm0
|
|
movaps XMMWORD PTR [eax], xmm1
|
|
|
|
; 178 : }
|
|
|
|
ret 8
|
|
??Hvec4@@QBE?AU0@M@Z ENDP ; vec4::operator+
|
|
compile ENDS
|
|
PUBLIC ??Yvec4@@QAEXABU0@@Z ; vec4::operator+=
|
|
; Function compile flags: /Ogspy
|
|
compile SEGMENT
|
|
_arg$ = 8 ; size = 4
|
|
??Yvec4@@QAEXABU0@@Z PROC ; vec4::operator+=
|
|
; _this$ = ecx
|
|
|
|
; 182 : _mm_store_ps(m, _mm_add_ps(*this, arg));
|
|
|
|
mov eax, DWORD PTR _arg$[esp-4]
|
|
movaps xmm0, XMMWORD PTR [eax]
|
|
addps xmm0, XMMWORD PTR [ecx]
|
|
movaps XMMWORD PTR [ecx], xmm0
|
|
|
|
; 183 : }
|
|
|
|
ret 4
|
|
??Yvec4@@QAEXABU0@@Z ENDP ; vec4::operator+=
|
|
compile ENDS
|
|
PUBLIC ??Yvec4@@QAEXM@Z ; vec4::operator+=
|
|
; Function compile flags: /Ogspy
|
|
compile SEGMENT
|
|
_arg$ = 8 ; size = 4
|
|
??Yvec4@@QAEXM@Z PROC ; vec4::operator+=
|
|
; _this$ = ecx
|
|
|
|
; 187 : *this += _mm_set_ps1(arg);
|
|
|
|
movss xmm0, DWORD PTR _arg$[esp-4]
|
|
movaps xmm1, XMMWORD PTR [ecx]
|
|
shufps xmm0, xmm0, 0
|
|
addps xmm1, xmm0
|
|
movaps XMMWORD PTR [ecx], xmm1
|
|
|
|
; 188 : }
|
|
|
|
ret 4
|
|
??Yvec4@@QAEXM@Z ENDP ; vec4::operator+=
|
|
compile ENDS
|
|
PUBLIC ??Gvec4@@QBE?AU0@ABU0@@Z ; vec4::operator-
|
|
; Function compile flags: /Ogspy
|
|
compile SEGMENT
|
|
___$ReturnUdt$ = 8 ; size = 4
|
|
_arg$ = 12 ; size = 4
|
|
??Gvec4@@QBE?AU0@ABU0@@Z PROC ; vec4::operator-
|
|
; _this$ = ecx
|
|
|
|
; 192 : return _mm_sub_ps(*this, arg);
|
|
|
|
mov edx, DWORD PTR _arg$[esp-4]
|
|
movaps xmm1, XMMWORD PTR [ecx]
|
|
mov eax, DWORD PTR ___$ReturnUdt$[esp-4]
|
|
subps xmm1, XMMWORD PTR [edx]
|
|
movaps XMMWORD PTR [eax], xmm1
|
|
|
|
; 193 : }
|
|
|
|
ret 8
|
|
??Gvec4@@QBE?AU0@ABU0@@Z ENDP ; vec4::operator-
|
|
compile ENDS
|
|
PUBLIC ??Gvec4@@QBE?AU0@M@Z ; vec4::operator-
|
|
; Function compile flags: /Ogspy
|
|
compile SEGMENT
|
|
___$ReturnUdt$ = 8 ; size = 4
|
|
_arg$ = 12 ; size = 4
|
|
??Gvec4@@QBE?AU0@M@Z PROC ; vec4::operator-
|
|
; _this$ = ecx
|
|
|
|
; 197 : return *this - _mm_set_ps1(arg);
|
|
|
|
movss xmm0, DWORD PTR _arg$[esp-4]
|
|
movaps xmm1, XMMWORD PTR [ecx]
|
|
mov eax, DWORD PTR ___$ReturnUdt$[esp-4]
|
|
shufps xmm0, xmm0, 0
|
|
subps xmm1, xmm0
|
|
movaps XMMWORD PTR [eax], xmm1
|
|
|
|
; 198 : }
|
|
|
|
ret 8
|
|
??Gvec4@@QBE?AU0@M@Z ENDP ; vec4::operator-
|
|
compile ENDS
|
|
PUBLIC ??Zvec4@@QAEXABU0@@Z ; vec4::operator-=
|
|
; Function compile flags: /Ogspy
|
|
compile SEGMENT
|
|
_arg$ = 8 ; size = 4
|
|
??Zvec4@@QAEXABU0@@Z PROC ; vec4::operator-=
|
|
; _this$ = ecx
|
|
|
|
; 202 : _mm_store_ps(m, _mm_sub_ps(*this, arg));
|
|
|
|
mov eax, DWORD PTR _arg$[esp-4]
|
|
movaps xmm1, XMMWORD PTR [ecx]
|
|
subps xmm1, XMMWORD PTR [eax]
|
|
movaps XMMWORD PTR [ecx], xmm1
|
|
|
|
; 203 : }
|
|
|
|
ret 4
|
|
??Zvec4@@QAEXABU0@@Z ENDP ; vec4::operator-=
|
|
compile ENDS
|
|
PUBLIC ??Zvec4@@QAEXM@Z ; vec4::operator-=
|
|
; Function compile flags: /Ogspy
|
|
compile SEGMENT
|
|
_arg$ = 8 ; size = 4
|
|
??Zvec4@@QAEXM@Z PROC ; vec4::operator-=
|
|
; _this$ = ecx
|
|
|
|
; 207 : *this -= _mm_set_ps1(arg);
|
|
|
|
movss xmm0, DWORD PTR _arg$[esp-4]
|
|
movaps xmm1, XMMWORD PTR [ecx]
|
|
shufps xmm0, xmm0, 0
|
|
subps xmm1, xmm0
|
|
movaps XMMWORD PTR [ecx], xmm1
|
|
|
|
; 208 : }
|
|
|
|
ret 4
|
|
??Zvec4@@QAEXM@Z ENDP ; vec4::operator-=
|
|
compile ENDS
|
|
PUBLIC ??Dvec4@@QBE?AU0@ABU0@@Z ; vec4::operator*
|
|
; Function compile flags: /Ogspy
|
|
compile SEGMENT
|
|
___$ReturnUdt$ = 8 ; size = 4
|
|
_arg$ = 12 ; size = 4
|
|
??Dvec4@@QBE?AU0@ABU0@@Z PROC ; vec4::operator*
|
|
; _this$ = ecx
|
|
|
|
; 212 : return _mm_mul_ps(*this, arg);
|
|
|
|
mov edx, DWORD PTR _arg$[esp-4]
|
|
movaps xmm0, XMMWORD PTR [edx]
|
|
mov eax, DWORD PTR ___$ReturnUdt$[esp-4]
|
|
mulps xmm0, XMMWORD PTR [ecx]
|
|
movaps XMMWORD PTR [eax], xmm0
|
|
|
|
; 213 : }
|
|
|
|
ret 8
|
|
??Dvec4@@QBE?AU0@ABU0@@Z ENDP ; vec4::operator*
|
|
compile ENDS
|
|
PUBLIC ??Dvec4@@QBE?AU0@M@Z ; vec4::operator*
|
|
; Function compile flags: /Ogspy
|
|
compile SEGMENT
|
|
___$ReturnUdt$ = 8 ; size = 4
|
|
_arg$ = 12 ; size = 4
|
|
??Dvec4@@QBE?AU0@M@Z PROC ; vec4::operator*
|
|
; _this$ = ecx
|
|
|
|
; 217 : return *this * _mm_set_ps1(arg);
|
|
|
|
movss xmm0, DWORD PTR _arg$[esp-4]
|
|
movaps xmm1, XMMWORD PTR [ecx]
|
|
mov eax, DWORD PTR ___$ReturnUdt$[esp-4]
|
|
shufps xmm0, xmm0, 0
|
|
mulps xmm1, xmm0
|
|
movaps XMMWORD PTR [eax], xmm1
|
|
|
|
; 218 : }
|
|
|
|
ret 8
|
|
??Dvec4@@QBE?AU0@M@Z ENDP ; vec4::operator*
|
|
compile ENDS
|
|
PUBLIC ??Xvec4@@QAEXABU0@@Z ; vec4::operator*=
|
|
; Function compile flags: /Ogspy
|
|
compile SEGMENT
|
|
_arg$ = 8 ; size = 4
|
|
??Xvec4@@QAEXABU0@@Z PROC ; vec4::operator*=
|
|
; _this$ = ecx
|
|
|
|
; 222 : _mm_store_ps(m, _mm_mul_ps(*this, arg));
|
|
|
|
mov eax, DWORD PTR _arg$[esp-4]
|
|
movaps xmm0, XMMWORD PTR [eax]
|
|
mulps xmm0, XMMWORD PTR [ecx]
|
|
movaps XMMWORD PTR [ecx], xmm0
|
|
|
|
; 223 : }
|
|
|
|
ret 4
|
|
??Xvec4@@QAEXABU0@@Z ENDP ; vec4::operator*=
|
|
compile ENDS
|
|
PUBLIC ??Xvec4@@QAEXM@Z ; vec4::operator*=
|
|
; Function compile flags: /Ogspy
|
|
compile SEGMENT
|
|
_arg$ = 8 ; size = 4
|
|
??Xvec4@@QAEXM@Z PROC ; vec4::operator*=
|
|
; _this$ = ecx
|
|
|
|
; 227 : *this *= _mm_set_ps1(arg);
|
|
|
|
movss xmm0, DWORD PTR _arg$[esp-4]
|
|
movaps xmm1, XMMWORD PTR [ecx]
|
|
shufps xmm0, xmm0, 0
|
|
mulps xmm1, xmm0
|
|
movaps XMMWORD PTR [ecx], xmm1
|
|
|
|
; 228 : }
|
|
|
|
ret 4
|
|
??Xvec4@@QAEXM@Z ENDP ; vec4::operator*=
|
|
compile ENDS
|
|
PUBLIC __real@3ff0000000000000
|
|
PUBLIC ??Kvec4@@QBE?AU0@M@Z ; vec4::operator/
|
|
; COMDAT __real@3ff0000000000000
|
|
CONST SEGMENT
|
|
__real@3ff0000000000000 DQ 03ff0000000000000r ; 1
|
|
; Function compile flags: /Ogspy
|
|
CONST ENDS
|
|
compile SEGMENT
|
|
___$ReturnUdt$ = 8 ; size = 4
|
|
tv136 = 12 ; size = 4
|
|
tv134 = 12 ; size = 4
|
|
_arg$ = 12 ; size = 4
|
|
??Kvec4@@QBE?AU0@M@Z PROC ; vec4::operator/
|
|
; _this$ = ecx
|
|
|
|
; 232 : return *this * _mm_set_ps1(1.0f / arg);
|
|
|
|
fld DWORD PTR _arg$[esp-4]
|
|
mov eax, DWORD PTR ___$ReturnUdt$[esp-4]
|
|
fld1
|
|
fdivrp ST(1), ST(0)
|
|
fstp DWORD PTR tv136[esp-4]
|
|
fld DWORD PTR tv136[esp-4]
|
|
fstp DWORD PTR tv134[esp-4]
|
|
movss xmm0, DWORD PTR tv134[esp-4]
|
|
movaps xmm1, XMMWORD PTR [ecx]
|
|
shufps xmm0, xmm0, 0
|
|
mulps xmm1, xmm0
|
|
movaps XMMWORD PTR [eax], xmm1
|
|
|
|
; 233 : }
|
|
|
|
ret 8
|
|
??Kvec4@@QBE?AU0@M@Z ENDP ; vec4::operator/
|
|
compile ENDS
|
|
PUBLIC ??_0vec4@@QAEXM@Z ; vec4::operator/=
|
|
; Function compile flags: /Ogspy
|
|
compile SEGMENT
|
|
tv136 = 8 ; size = 4
|
|
tv134 = 8 ; size = 4
|
|
_arg$ = 8 ; size = 4
|
|
??_0vec4@@QAEXM@Z PROC ; vec4::operator/=
|
|
; _this$ = ecx
|
|
|
|
; 237 : *this *= _mm_set_ps1(1.0f / arg);
|
|
|
|
fld DWORD PTR _arg$[esp-4]
|
|
fld1
|
|
fdivrp ST(1), ST(0)
|
|
fstp DWORD PTR tv136[esp-4]
|
|
fld DWORD PTR tv136[esp-4]
|
|
fstp DWORD PTR tv134[esp-4]
|
|
movss xmm0, DWORD PTR tv134[esp-4]
|
|
movaps xmm1, XMMWORD PTR [ecx]
|
|
shufps xmm0, xmm0, 0
|
|
mulps xmm1, xmm0
|
|
movaps XMMWORD PTR [ecx], xmm1
|
|
|
|
; 238 : }
|
|
|
|
ret 4
|
|
??_0vec4@@QAEXM@Z ENDP ; vec4::operator/=
|
|
compile ENDS
|
|
PUBLIC ??Gvec4@@QBE?AU0@XZ ; vec4::operator-
|
|
CONST SEGMENT
|
|
__xmm@0 DB 00H, 00H, 080H, 0bfH, 00H, 00H, 080H, 0bfH, 00H, 00H, 080H
|
|
DB 0bfH, 00H, 00H, 080H, 0bfH
|
|
; Function compile flags: /Ogspy
|
|
CONST ENDS
|
|
compile SEGMENT
|
|
___$ReturnUdt$ = 8 ; size = 4
|
|
??Gvec4@@QBE?AU0@XZ PROC ; vec4::operator-
|
|
; _this$ = ecx
|
|
|
|
; 242 : return *this * -1.0f;
|
|
|
|
movaps xmm1, XMMWORD PTR [ecx]
|
|
mov eax, DWORD PTR ___$ReturnUdt$[esp-4]
|
|
mulps xmm1, XMMWORD PTR __xmm@0
|
|
movaps XMMWORD PTR [eax], xmm1
|
|
|
|
; 243 : }
|
|
|
|
ret 4
|
|
??Gvec4@@QBE?AU0@XZ ENDP ; vec4::operator-
|
|
compile ENDS
|
|
PUBLIC ?dot@@YAMABUvec4@@0@Z ; dot
|
|
; Function compile flags: /Ogspy
|
|
compile SEGMENT
|
|
_temp$ = -16 ; size = 16
|
|
_arg1$ = 8 ; size = 4
|
|
_arg2$ = 12 ; size = 4
|
|
?dot@@YAMABUvec4@@0@Z PROC ; dot
|
|
|
|
; 251 : {
|
|
|
|
push ebp
|
|
mov ebp, esp
|
|
and esp, -16 ; fffffff0H
|
|
sub esp, 16 ; 00000010H
|
|
|
|
; 252 : __m128 temp = _mm_mul_ps(arg1, arg2);
|
|
|
|
mov eax, DWORD PTR _arg1$[ebp]
|
|
movaps xmm0, XMMWORD PTR [eax]
|
|
mov eax, DWORD PTR _arg2$[ebp]
|
|
mulps xmm0, XMMWORD PTR [eax]
|
|
|
|
; 253 : temp = _mm_hadd_ps(temp, temp);
|
|
|
|
haddps xmm0, xmm0
|
|
|
|
; 254 : temp = _mm_hadd_ps(temp, temp);
|
|
|
|
haddps xmm0, xmm0
|
|
movaps XMMWORD PTR _temp$[esp+16], xmm0
|
|
|
|
; 255 : return temp.m128_f32[0];
|
|
|
|
fld DWORD PTR _temp$[esp+16]
|
|
|
|
; 256 : }
|
|
|
|
mov esp, ebp
|
|
pop ebp
|
|
ret 0
|
|
?dot@@YAMABUvec4@@0@Z ENDP ; dot
|
|
compile ENDS
|
|
PUBLIC ?length@@YAMAAUvec4@@@Z ; length
|
|
; Function compile flags: /Ogspy
|
|
compile SEGMENT
|
|
$T18733 = -4 ; size = 4
|
|
$T18732 = -4 ; size = 4
|
|
_arg$ = 8 ; size = 4
|
|
?length@@YAMAAUvec4@@@Z PROC ; length
|
|
|
|
; 259 : {
|
|
|
|
push ebp
|
|
mov ebp, esp
|
|
push ecx
|
|
|
|
; 260 : return sqrt(dot(arg, arg));
|
|
|
|
push DWORD PTR _arg$[ebp]
|
|
push DWORD PTR _arg$[ebp]
|
|
call ?dot@@YAMABUvec4@@0@Z ; dot
|
|
fstp DWORD PTR $T18732[ebp]
|
|
add esp, 8
|
|
fld DWORD PTR $T18732[ebp]
|
|
fsqrt
|
|
fstp DWORD PTR $T18733[ebp]
|
|
fld DWORD PTR $T18733[ebp]
|
|
|
|
; 261 : }
|
|
|
|
leave
|
|
ret 0
|
|
?length@@YAMAAUvec4@@@Z ENDP ; length
|
|
compile ENDS
|
|
PUBLIC ?normalize@@YA?AUvec4@@ABU1@@Z ; normalize
|
|
; Function compile flags: /Ogspy
|
|
compile SEGMENT
|
|
tv135 = -4 ; size = 4
|
|
___$ReturnUdt$ = 8 ; size = 4
|
|
_arg$ = 12 ; size = 4
|
|
?normalize@@YA?AUvec4@@ABU1@@Z PROC ; normalize
|
|
|
|
; 264 : {
|
|
|
|
push ecx
|
|
|
|
; 265 : return arg * _mm_rsqrt_ss(_mm_set_ps1(dot(arg,arg))).m128_f32[0];
|
|
|
|
mov ecx, DWORD PTR _arg$[esp]
|
|
push ecx
|
|
push ecx
|
|
call ?dot@@YAMABUvec4@@0@Z ; dot
|
|
fstp DWORD PTR tv135[esp+12]
|
|
movss xmm0, DWORD PTR tv135[esp+12]
|
|
movaps xmm1, XMMWORD PTR [ecx]
|
|
mov eax, DWORD PTR ___$ReturnUdt$[esp+8]
|
|
shufps xmm0, xmm0, 0
|
|
rsqrtss xmm0, xmm0
|
|
shufps xmm0, xmm0, 0
|
|
mulps xmm1, xmm0
|
|
movaps XMMWORD PTR [eax], xmm1
|
|
|
|
; 266 : }
|
|
|
|
add esp, 12 ; 0000000cH
|
|
ret 0
|
|
?normalize@@YA?AUvec4@@ABU1@@Z ENDP ; normalize
|
|
compile ENDS
|
|
PUBLIC ?mix@@YA?AUvec4@@AAU1@0M@Z ; mix
|
|
; Function compile flags: /Ogspy
|
|
compile SEGMENT
|
|
___$ReturnUdt$ = 8 ; size = 4
|
|
_arg1$ = 12 ; size = 4
|
|
_arg2$ = 16 ; size = 4
|
|
$T18880 = 20 ; size = 4
|
|
_t$ = 20 ; size = 4
|
|
?mix@@YA?AUvec4@@AAU1@0M@Z PROC ; mix
|
|
|
|
; 270 : return arg1 * (1.0f - t) + arg2 * t;
|
|
|
|
fld DWORD PTR _t$[esp-4]
|
|
movss xmm0, DWORD PTR _t$[esp-4]
|
|
fld1
|
|
mov eax, DWORD PTR _arg2$[esp-4]
|
|
shufps xmm0, xmm0, 0
|
|
fsubrp ST(1), ST(0)
|
|
movaps xmm1, xmm0
|
|
movaps xmm0, XMMWORD PTR [eax]
|
|
mov eax, DWORD PTR _arg1$[esp-4]
|
|
mulps xmm0, xmm1
|
|
fstp DWORD PTR $T18880[esp-4]
|
|
movss xmm1, DWORD PTR $T18880[esp-4]
|
|
shufps xmm1, xmm1, 0
|
|
movaps xmm2, xmm1
|
|
movaps xmm1, XMMWORD PTR [eax]
|
|
mov eax, DWORD PTR ___$ReturnUdt$[esp-4]
|
|
mulps xmm1, xmm2
|
|
addps xmm1, xmm0
|
|
movaps XMMWORD PTR [eax], xmm1
|
|
|
|
; 271 : }
|
|
|
|
ret 0
|
|
?mix@@YA?AUvec4@@AAU1@0M@Z ENDP ; mix
|
|
compile ENDS
|
|
PUBLIC ?clamp@@YA?AUvec4@@AAU1@MM@Z ; clamp
|
|
; Function compile flags: /Ogspy
|
|
compile SEGMENT
|
|
___$ReturnUdt$ = 8 ; size = 4
|
|
_arg$ = 12 ; size = 4
|
|
_lo$ = 16 ; size = 4
|
|
_hi$ = 20 ; size = 4
|
|
?clamp@@YA?AUvec4@@AAU1@MM@Z PROC ; clamp
|
|
|
|
; 275 : return _mm_max_ps(_mm_min_ps(arg, _mm_set_ps1(hi)), _mm_set_ps1(lo));
|
|
|
|
mov ecx, DWORD PTR _arg$[esp-4]
|
|
movaps xmm1, XMMWORD PTR [ecx]
|
|
movss xmm0, DWORD PTR _hi$[esp-4]
|
|
mov eax, DWORD PTR ___$ReturnUdt$[esp-4]
|
|
shufps xmm0, xmm0, 0
|
|
minps xmm1, xmm0
|
|
movss xmm0, DWORD PTR _lo$[esp-4]
|
|
shufps xmm0, xmm0, 0
|
|
maxps xmm1, xmm0
|
|
movaps XMMWORD PTR [eax], xmm1
|
|
|
|
; 276 : }
|
|
|
|
ret 0
|
|
?clamp@@YA?AUvec4@@AAU1@MM@Z ENDP ; clamp
|
|
compile ENDS
|
|
PUBLIC ?clamp@@YAMMMM@Z ; clamp
|
|
; Function compile flags: /Ogspy
|
|
compile SEGMENT
|
|
_arg$ = 8 ; size = 4
|
|
_lo$ = 12 ; size = 4
|
|
_hi$ = 16 ; size = 4
|
|
?clamp@@YAMMMM@Z PROC ; clamp
|
|
|
|
; 280 : return max(min(arg, hi), lo);
|
|
|
|
fld DWORD PTR _lo$[esp-4]
|
|
sub esp, 12 ; 0000000cH
|
|
fstp DWORD PTR [esp+8]
|
|
fld DWORD PTR _hi$[esp+8]
|
|
fstp DWORD PTR [esp+4]
|
|
fld DWORD PTR _arg$[esp+8]
|
|
fstp DWORD PTR [esp]
|
|
call _min
|
|
add esp, 4
|
|
fstp DWORD PTR [esp]
|
|
call _max
|
|
add esp, 8
|
|
|
|
; 281 : }
|
|
|
|
ret 0
|
|
?clamp@@YAMMMM@Z ENDP ; clamp
|
|
compile ENDS
|
|
PUBLIC ?reflect@@YA?AUvec4@@AAU1@0@Z ; reflect
|
|
CONST SEGMENT
|
|
__xmm@1 DB 00H, 00H, 00H, '@', 00H, 00H, 00H, '@', 00H, 00H, 00H, '@'
|
|
DB 00H, 00H, 00H, '@'
|
|
; Function compile flags: /Ogspy
|
|
CONST ENDS
|
|
compile SEGMENT
|
|
$T18999 = -4 ; size = 4
|
|
___$ReturnUdt$ = 8 ; size = 4
|
|
_arg1$ = 12 ; size = 4
|
|
_arg2$ = 16 ; size = 4
|
|
?reflect@@YA?AUvec4@@AAU1@0@Z PROC ; reflect
|
|
|
|
; 284 : {
|
|
|
|
push ecx
|
|
|
|
; 285 : return arg1 - arg2 * 2.0f * dot(arg2, arg1);
|
|
|
|
mov eax, DWORD PTR _arg2$[esp]
|
|
mov ecx, DWORD PTR _arg1$[esp]
|
|
movaps xmm1, XMMWORD PTR [eax]
|
|
mulps xmm1, XMMWORD PTR __xmm@1
|
|
push ecx
|
|
push eax
|
|
call ?dot@@YAMABUvec4@@0@Z ; dot
|
|
fstp DWORD PTR $T18999[esp+12]
|
|
movss xmm0, DWORD PTR $T18999[esp+12]
|
|
mov eax, DWORD PTR ___$ReturnUdt$[esp+8]
|
|
shufps xmm0, xmm0, 0
|
|
mulps xmm1, xmm0
|
|
movaps xmm0, XMMWORD PTR [ecx]
|
|
subps xmm0, xmm1
|
|
movaps XMMWORD PTR [eax], xmm0
|
|
|
|
; 286 : }
|
|
|
|
add esp, 12 ; 0000000cH
|
|
ret 0
|
|
?reflect@@YA?AUvec4@@AAU1@0@Z ENDP ; reflect
|
|
compile ENDS
|
|
PUBLIC ?cross@@YA?AUvec4@@AAU1@0@Z ; cross
|
|
; Function compile flags: /Ogspy
|
|
compile SEGMENT
|
|
___$ReturnUdt$ = 8 ; size = 4
|
|
_va$ = 12 ; size = 4
|
|
_vb$ = 16 ; size = 4
|
|
?cross@@YA?AUvec4@@AAU1@0@Z PROC ; cross
|
|
|
|
; 290 : __m128 a = va;
|
|
|
|
mov eax, DWORD PTR _va$[esp-4]
|
|
movaps xmm0, XMMWORD PTR [eax]
|
|
|
|
; 291 : __m128 b = vb;
|
|
|
|
mov eax, DWORD PTR _vb$[esp-4]
|
|
movaps xmm1, XMMWORD PTR [eax]
|
|
|
|
; 292 : __m128 ea = _mm_shuffle_ps(a, a, _MM_SHUFFLE(3, 0, 2, 1));
|
|
; 293 : __m128 eb = _mm_shuffle_ps(b, b, _MM_SHUFFLE(3, 1, 0, 2));
|
|
; 294 : __m128 xa = _mm_mul_ps(ea, eb);
|
|
; 295 : a = _mm_shuffle_ps(a, a, _MM_SHUFFLE(3, 1, 0, 2));
|
|
; 296 : b = _mm_shuffle_ps(b, b, _MM_SHUFFLE(3, 0, 2, 1));
|
|
; 297 : __m128 xb = _mm_mul_ps(a, b);
|
|
; 298 : return _mm_sub_ps(xa, xb);
|
|
|
|
mov eax, DWORD PTR ___$ReturnUdt$[esp-4]
|
|
movaps xmm2, xmm1
|
|
shufps xmm2, xmm1, 201 ; 000000c9H
|
|
movaps xmm3, xmm0
|
|
shufps xmm3, xmm0, 210 ; 000000d2H
|
|
shufps xmm1, xmm1, 210 ; 000000d2H
|
|
shufps xmm0, xmm0, 201 ; 000000c9H
|
|
mulps xmm2, xmm3
|
|
mulps xmm1, xmm0
|
|
subps xmm1, xmm2
|
|
movaps XMMWORD PTR [eax], xmm1
|
|
|
|
; 299 : }
|
|
|
|
ret 0
|
|
?cross@@YA?AUvec4@@AAU1@0@Z ENDP ; cross
|
|
compile ENDS
|
|
PUBLIC ??0Quaternion@@QAE@XZ ; Quaternion::Quaternion
|
|
; Function compile flags: /Ogspy
|
|
compile SEGMENT
|
|
??0Quaternion@@QAE@XZ PROC ; Quaternion::Quaternion
|
|
; _this$ = ecx
|
|
|
|
; 306 : {
|
|
|
|
fldz
|
|
mov eax, ecx
|
|
fst DWORD PTR [eax]
|
|
fst DWORD PTR [eax+4]
|
|
fstp DWORD PTR [eax+8]
|
|
fld1
|
|
fstp DWORD PTR [eax+12]
|
|
|
|
; 307 : };
|
|
|
|
ret 0
|
|
??0Quaternion@@QAE@XZ ENDP ; Quaternion::Quaternion
|
|
compile ENDS
|
|
PUBLIC ??0Quaternion@@QAE@ABU0@@Z ; Quaternion::Quaternion
|
|
; Function compile flags: /Ogspy
|
|
compile SEGMENT
|
|
_arg$ = 8 ; size = 4
|
|
??0Quaternion@@QAE@ABU0@@Z PROC ; Quaternion::Quaternion
|
|
; _this$ = ecx
|
|
|
|
; 314 : {
|
|
|
|
mov eax, ecx
|
|
mov ecx, DWORD PTR _arg$[esp-4]
|
|
fld DWORD PTR [ecx]
|
|
fstp DWORD PTR [eax]
|
|
fld DWORD PTR [ecx+4]
|
|
fstp DWORD PTR [eax+4]
|
|
fld DWORD PTR [ecx+8]
|
|
fstp DWORD PTR [eax+8]
|
|
fld DWORD PTR [ecx+12]
|
|
fstp DWORD PTR [eax+12]
|
|
|
|
; 315 : };
|
|
|
|
ret 4
|
|
??0Quaternion@@QAE@ABU0@@Z ENDP ; Quaternion::Quaternion
|
|
compile ENDS
|
|
PUBLIC ??0Quaternion@@QAE@PBM@Z ; Quaternion::Quaternion
|
|
; Function compile flags: /Ogspy
|
|
compile SEGMENT
|
|
_this$ = -4 ; size = 4
|
|
_M$ = 8 ; size = 4
|
|
??0Quaternion@@QAE@PBM@Z PROC ; Quaternion::Quaternion
|
|
; _this$ = ecx
|
|
|
|
; 318 : {
|
|
|
|
push ecx
|
|
push esi
|
|
mov eax, ecx
|
|
push edi
|
|
mov DWORD PTR _this$[esp+12], eax
|
|
|
|
; 319 : memcpy(m, M, 4 * sizeof(float));
|
|
|
|
mov esi, DWORD PTR _M$[esp+8]
|
|
mov edi, DWORD PTR _this$[esp+12]
|
|
mov ecx, 16 ; 00000010H
|
|
rep movsb
|
|
pop edi
|
|
pop esi
|
|
|
|
; 320 : };
|
|
|
|
pop ecx
|
|
ret 4
|
|
??0Quaternion@@QAE@PBM@Z ENDP ; Quaternion::Quaternion
|
|
compile ENDS
|
|
PUBLIC ??BQuaternion@@QBE?AT__m128@@XZ ; Quaternion::operator __m128
|
|
; Function compile flags: /Ogspy
|
|
compile SEGMENT
|
|
___$ReturnUdt$ = 8 ; size = 4
|
|
??BQuaternion@@QBE?AT__m128@@XZ PROC ; Quaternion::operator __m128
|
|
; _this$ = ecx
|
|
|
|
; 324 : return _mm_load_ps(m);
|
|
|
|
mov eax, DWORD PTR ___$ReturnUdt$[esp-4]
|
|
movaps xmm0, XMMWORD PTR [ecx]
|
|
movaps XMMWORD PTR [eax], xmm0
|
|
|
|
; 325 : }
|
|
|
|
ret 4
|
|
??BQuaternion@@QBE?AT__m128@@XZ ENDP ; Quaternion::operator __m128
|
|
compile ENDS
|
|
PUBLIC ??0Quaternion@@QAE@ABT__m128@@@Z ; Quaternion::Quaternion
|
|
; Function compile flags: /Ogspy
|
|
compile SEGMENT
|
|
_arg$ = 8 ; size = 4
|
|
??0Quaternion@@QAE@ABT__m128@@@Z PROC ; Quaternion::Quaternion
|
|
; _this$ = ecx
|
|
|
|
; 345 : {
|
|
|
|
mov eax, ecx
|
|
|
|
; 346 : _mm_store_ps(m, arg);
|
|
|
|
mov ecx, DWORD PTR _arg$[esp-4]
|
|
movaps xmm0, XMMWORD PTR [ecx]
|
|
movaps XMMWORD PTR [eax], xmm0
|
|
|
|
; 347 : };
|
|
|
|
ret 4
|
|
??0Quaternion@@QAE@ABT__m128@@@Z ENDP ; Quaternion::Quaternion
|
|
compile ENDS
|
|
PUBLIC ??BQuaternion@@QAEPAMXZ ; Quaternion::operator float *
|
|
; Function compile flags: /Ogspy
|
|
compile SEGMENT
|
|
??BQuaternion@@QAEPAMXZ PROC ; Quaternion::operator float *
|
|
; _this$ = ecx
|
|
|
|
; 350 : {
|
|
|
|
mov eax, ecx
|
|
|
|
; 351 : return m;
|
|
; 352 : }
|
|
|
|
ret 0
|
|
??BQuaternion@@QAEPAMXZ ENDP ; Quaternion::operator float *
|
|
compile ENDS
|
|
PUBLIC ??DQuaternion@@QBE?AU0@ABU0@@Z ; Quaternion::operator*
|
|
; Function compile flags: /Ogspy
|
|
compile SEGMENT
|
|
___$ReturnUdt$ = 8 ; size = 4
|
|
tv332 = 12 ; size = 4
|
|
tv323 = 12 ; size = 4
|
|
tv312 = 12 ; size = 4
|
|
tv311 = 12 ; size = 4
|
|
tv309 = 12 ; size = 4
|
|
tv305 = 12 ; size = 4
|
|
tv302 = 12 ; size = 4
|
|
tv298 = 12 ; size = 4
|
|
_arg$ = 12 ; size = 4
|
|
??DQuaternion@@QBE?AU0@ABU0@@Z PROC ; Quaternion::operator*
|
|
; _this$ = ecx
|
|
|
|
; 356 : return _mm_set_ps(
|
|
; 357 : x * -arg.x - y * arg.y - z * arg.z * w * arg.w,
|
|
; 358 : x * -arg.y + y * arg.x + z * arg.w - w * arg.z,
|
|
; 359 : x * -arg.z - y * arg.w + z * arg.x + w * arg.y,
|
|
; 360 : x * -arg.w + y * arg.z - z * arg.y + w * arg.x);
|
|
|
|
mov edx, DWORD PTR _arg$[esp-4]
|
|
fld DWORD PTR [edx]
|
|
mov eax, DWORD PTR ___$ReturnUdt$[esp-4]
|
|
fchs
|
|
fmul DWORD PTR [ecx]
|
|
fld DWORD PTR [edx+4]
|
|
fmul DWORD PTR [ecx+4]
|
|
fsubp ST(1), ST(0)
|
|
fld DWORD PTR [edx+8]
|
|
fmul DWORD PTR [ecx+8]
|
|
fmul DWORD PTR [ecx+12]
|
|
fmul DWORD PTR [edx+12]
|
|
fsubp ST(1), ST(0)
|
|
fstp DWORD PTR tv332[esp-4]
|
|
fld DWORD PTR tv332[esp-4]
|
|
fstp DWORD PTR tv309[esp-4]
|
|
movss xmm0, DWORD PTR tv309[esp-4]
|
|
fld DWORD PTR [edx]
|
|
fmul DWORD PTR [ecx+4]
|
|
fld DWORD PTR [ecx]
|
|
fmul DWORD PTR [edx+4]
|
|
fsubp ST(1), ST(0)
|
|
fld DWORD PTR [ecx+8]
|
|
fmul DWORD PTR [edx+12]
|
|
faddp ST(1), ST(0)
|
|
fld DWORD PTR [ecx+12]
|
|
fmul DWORD PTR [edx+8]
|
|
fsubp ST(1), ST(0)
|
|
fstp DWORD PTR tv323[esp-4]
|
|
fld DWORD PTR tv323[esp-4]
|
|
fstp DWORD PTR tv305[esp-4]
|
|
movss xmm1, DWORD PTR tv305[esp-4]
|
|
fld DWORD PTR [ecx+8]
|
|
fmul DWORD PTR [edx]
|
|
fld DWORD PTR [edx+8]
|
|
fmul DWORD PTR [ecx]
|
|
fld DWORD PTR [edx+12]
|
|
fmul DWORD PTR [ecx+4]
|
|
faddp ST(1), ST(0)
|
|
fsubp ST(1), ST(0)
|
|
fld DWORD PTR [ecx+12]
|
|
fmul DWORD PTR [edx+4]
|
|
faddp ST(1), ST(0)
|
|
fstp DWORD PTR tv312[esp-4]
|
|
fld DWORD PTR tv312[esp-4]
|
|
fstp DWORD PTR tv302[esp-4]
|
|
movss xmm2, DWORD PTR tv302[esp-4]
|
|
fld DWORD PTR [edx+8]
|
|
fmul DWORD PTR [ecx+4]
|
|
fld DWORD PTR [ecx]
|
|
fmul DWORD PTR [edx+12]
|
|
fsubp ST(1), ST(0)
|
|
unpcklps xmm2, xmm0
|
|
fld DWORD PTR [ecx+8]
|
|
fmul DWORD PTR [edx+4]
|
|
fsubp ST(1), ST(0)
|
|
fld DWORD PTR [ecx+12]
|
|
fmul DWORD PTR [edx]
|
|
faddp ST(1), ST(0)
|
|
fstp DWORD PTR tv311[esp-4]
|
|
fld DWORD PTR tv311[esp-4]
|
|
fstp DWORD PTR tv298[esp-4]
|
|
movss xmm3, DWORD PTR tv298[esp-4]
|
|
unpcklps xmm3, xmm1
|
|
unpcklps xmm3, xmm2
|
|
movaps XMMWORD PTR [eax], xmm3
|
|
|
|
; 361 : }
|
|
|
|
ret 8
|
|
??DQuaternion@@QBE?AU0@ABU0@@Z ENDP ; Quaternion::operator*
|
|
compile ENDS
|
|
PUBLIC __mask@@NegFloat@
|
|
PUBLIC ??GQuaternion@@QBE?AU0@XZ ; Quaternion::operator-
|
|
; COMDAT __mask@@NegFloat@
|
|
CONST SEGMENT
|
|
__mask@@NegFloat@ DB 00H, 00H, 00H, 080H, 00H, 00H, 00H, 080H, 00H, 00H, 00H
|
|
DB 080H, 00H, 00H, 00H, 080H
|
|
; Function compile flags: /Ogspy
|
|
CONST ENDS
|
|
compile SEGMENT
|
|
___$ReturnUdt$ = 8 ; size = 4
|
|
??GQuaternion@@QBE?AU0@XZ PROC ; Quaternion::operator-
|
|
; _this$ = ecx
|
|
|
|
; 365 : return _mm_set_ps(-x, -y, -z, -w);
|
|
|
|
movss xmm0, DWORD PTR __mask@@NegFloat@
|
|
movss xmm1, DWORD PTR [ecx]
|
|
movss xmm2, DWORD PTR [ecx+4]
|
|
movss xmm3, DWORD PTR [ecx+8]
|
|
movss xmm4, DWORD PTR [ecx+12]
|
|
mov eax, DWORD PTR ___$ReturnUdt$[esp-4]
|
|
xorps xmm4, xmm0
|
|
xorps xmm1, xmm0
|
|
xorps xmm2, xmm0
|
|
xorps xmm3, xmm0
|
|
unpcklps xmm4, xmm2
|
|
unpcklps xmm3, xmm1
|
|
unpcklps xmm4, xmm3
|
|
movaps XMMWORD PTR [eax], xmm4
|
|
|
|
; 366 : }
|
|
|
|
ret 4
|
|
??GQuaternion@@QBE?AU0@XZ ENDP ; Quaternion::operator-
|
|
compile ENDS
|
|
PUBLIC ??XQuaternion@@QAEXABU0@@Z ; Quaternion::operator*=
|
|
; Function compile flags: /Ogspy
|
|
compile SEGMENT
|
|
$T18094 = -16 ; size = 16
|
|
_arg$ = 8 ; size = 4
|
|
??XQuaternion@@QAEXABU0@@Z PROC ; Quaternion::operator*=
|
|
; _this$ = ecx
|
|
|
|
; 369 : {
|
|
|
|
push ebp
|
|
mov ebp, esp
|
|
and esp, -16 ; fffffff0H
|
|
sub esp, 16 ; 00000010H
|
|
|
|
; 370 : _mm_store_ps(m, *this * arg);
|
|
|
|
push DWORD PTR _arg$[ebp]
|
|
lea eax, DWORD PTR $T18094[esp+20]
|
|
push eax
|
|
call ??DQuaternion@@QBE?AU0@ABU0@@Z ; Quaternion::operator*
|
|
movaps xmm0, XMMWORD PTR [eax]
|
|
movaps XMMWORD PTR [ecx], xmm0
|
|
|
|
; 371 : }
|
|
|
|
mov esp, ebp
|
|
pop ebp
|
|
ret 4
|
|
??XQuaternion@@QAEXABU0@@Z ENDP ; Quaternion::operator*=
|
|
compile ENDS
|
|
PUBLIC ??YQuaternion@@QAEXABU0@@Z ; Quaternion::operator+=
|
|
; Function compile flags: /Ogspy
|
|
compile SEGMENT
|
|
_arg$ = 8 ; size = 4
|
|
??YQuaternion@@QAEXABU0@@Z PROC ; Quaternion::operator+=
|
|
; _this$ = ecx
|
|
|
|
; 375 : _mm_store_ps(m, _mm_add_ps(*this, arg));
|
|
|
|
mov eax, DWORD PTR _arg$[esp-4]
|
|
movaps xmm0, XMMWORD PTR [eax]
|
|
addps xmm0, XMMWORD PTR [ecx]
|
|
movaps XMMWORD PTR [ecx], xmm0
|
|
|
|
; 376 : }
|
|
|
|
ret 4
|
|
??YQuaternion@@QAEXABU0@@Z ENDP ; Quaternion::operator+=
|
|
compile ENDS
|
|
PUBLIC ?rotate@Quaternion@@QAEXABU1@@Z ; Quaternion::rotate
|
|
; Function compile flags: /Ogspy
|
|
compile SEGMENT
|
|
$T18109 = -32 ; size = 16
|
|
$T18107 = -32 ; size = 16
|
|
$T18108 = -16 ; size = 16
|
|
_arg$ = 8 ; size = 4
|
|
?rotate@Quaternion@@QAEXABU1@@Z PROC ; Quaternion::rotate
|
|
; _this$ = ecx
|
|
|
|
; 379 : {
|
|
|
|
push ebp
|
|
mov ebp, esp
|
|
and esp, -16 ; fffffff0H
|
|
sub esp, 44 ; 0000002cH
|
|
|
|
; 380 : _mm_store_ps(m, -arg * *this * arg);
|
|
|
|
mov eax, DWORD PTR _arg$[ebp]
|
|
movss xmm1, DWORD PTR [eax]
|
|
movss xmm0, DWORD PTR __mask@@NegFloat@
|
|
movss xmm2, DWORD PTR [eax+4]
|
|
movss xmm3, DWORD PTR [eax+8]
|
|
movss xmm4, DWORD PTR [eax+12]
|
|
push esi
|
|
push eax
|
|
xorps xmm4, xmm0
|
|
xorps xmm1, xmm0
|
|
xorps xmm2, xmm0
|
|
xorps xmm3, xmm0
|
|
lea eax, DWORD PTR $T18109[esp+52]
|
|
push eax
|
|
mov esi, ecx
|
|
push esi
|
|
lea eax, DWORD PTR $T18108[esp+60]
|
|
unpcklps xmm4, xmm2
|
|
unpcklps xmm3, xmm1
|
|
unpcklps xmm4, xmm3
|
|
push eax
|
|
lea ecx, DWORD PTR $T18107[esp+64]
|
|
movaps XMMWORD PTR $T18107[esp+64], xmm4
|
|
call ??DQuaternion@@QBE?AU0@ABU0@@Z ; Quaternion::operator*
|
|
mov ecx, eax
|
|
call ??DQuaternion@@QBE?AU0@ABU0@@Z ; Quaternion::operator*
|
|
movaps xmm0, XMMWORD PTR [eax]
|
|
movaps XMMWORD PTR [esi], xmm0
|
|
|
|
; 381 : }
|
|
|
|
pop esi
|
|
mov esp, ebp
|
|
pop ebp
|
|
ret 4
|
|
?rotate@Quaternion@@QAEXABU1@@Z ENDP ; Quaternion::rotate
|
|
compile ENDS
|
|
PUBLIC ?lengthSquared@Quaternion@@QBEMXZ ; Quaternion::lengthSquared
|
|
; Function compile flags: /Ogspy
|
|
compile SEGMENT
|
|
_temp$ = -16 ; size = 16
|
|
?lengthSquared@Quaternion@@QBEMXZ PROC ; Quaternion::lengthSquared
|
|
; _this$ = ecx
|
|
|
|
; 384 : {
|
|
|
|
push ebp
|
|
mov ebp, esp
|
|
and esp, -16 ; fffffff0H
|
|
sub esp, 16 ; 00000010H
|
|
|
|
; 385 : __m128 temp = _mm_mul_ps(*this, *this);
|
|
|
|
movaps xmm0, XMMWORD PTR [ecx]
|
|
mulps xmm0, xmm0
|
|
|
|
; 386 : temp = _mm_hadd_ps(temp, temp);
|
|
|
|
haddps xmm0, xmm0
|
|
|
|
; 387 : temp = _mm_hadd_ps(temp, temp);
|
|
|
|
haddps xmm0, xmm0
|
|
movaps XMMWORD PTR _temp$[esp+16], xmm0
|
|
|
|
; 388 : return temp.m128_f32[0];
|
|
|
|
fld DWORD PTR _temp$[esp+16]
|
|
|
|
; 389 : }
|
|
|
|
mov esp, ebp
|
|
pop ebp
|
|
ret 0
|
|
?lengthSquared@Quaternion@@QBEMXZ ENDP ; Quaternion::lengthSquared
|
|
compile ENDS
|
|
PUBLIC ?length@Quaternion@@QBEMXZ ; Quaternion::length
|
|
; Function compile flags: /Ogspy
|
|
compile SEGMENT
|
|
$T19124 = -20 ; size = 4
|
|
_temp$19115 = -16 ; size = 16
|
|
?length@Quaternion@@QBEMXZ PROC ; Quaternion::length
|
|
; _this$ = ecx
|
|
|
|
; 392 : {
|
|
|
|
push ebp
|
|
mov ebp, esp
|
|
and esp, -16 ; fffffff0H
|
|
sub esp, 32 ; 00000020H
|
|
|
|
; 393 : return sqrt(lengthSquared());
|
|
|
|
movaps xmm0, XMMWORD PTR [ecx]
|
|
mulps xmm0, xmm0
|
|
haddps xmm0, xmm0
|
|
haddps xmm0, xmm0
|
|
movaps XMMWORD PTR _temp$19115[esp+32], xmm0
|
|
fld DWORD PTR _temp$19115[esp+32]
|
|
fsqrt
|
|
fstp DWORD PTR $T19124[esp+32]
|
|
fld DWORD PTR $T19124[esp+32]
|
|
|
|
; 394 : }
|
|
|
|
mov esp, ebp
|
|
pop ebp
|
|
ret 0
|
|
?length@Quaternion@@QBEMXZ ENDP ; Quaternion::length
|
|
compile ENDS
|
|
PUBLIC ?normalize@Quaternion@@QAEXXZ ; Quaternion::normalize
|
|
; Function compile flags: /Ogspy
|
|
compile SEGMENT
|
|
tv171 = -20 ; size = 4
|
|
_temp$19143 = -16 ; size = 16
|
|
?normalize@Quaternion@@QAEXXZ PROC ; Quaternion::normalize
|
|
; _this$ = ecx
|
|
|
|
; 397 : {
|
|
|
|
push ebp
|
|
mov ebp, esp
|
|
and esp, -16 ; fffffff0H
|
|
sub esp, 32 ; 00000020H
|
|
|
|
; 398 : _mm_store_ps(m, _mm_mul_ps(*this, _mm_set_ps1(_mm_rsqrt_ss(_mm_set_ps1(lengthSquared())).m128_f32[0])));
|
|
|
|
movaps xmm1, XMMWORD PTR [ecx]
|
|
movaps xmm0, xmm1
|
|
mulps xmm0, xmm1
|
|
haddps xmm0, xmm0
|
|
haddps xmm0, xmm0
|
|
movaps XMMWORD PTR _temp$19143[esp+32], xmm0
|
|
fld DWORD PTR _temp$19143[esp+32]
|
|
fstp DWORD PTR tv171[esp+32]
|
|
movss xmm0, DWORD PTR tv171[esp+32]
|
|
shufps xmm0, xmm0, 0
|
|
rsqrtss xmm0, xmm0
|
|
shufps xmm0, xmm0, 0
|
|
mulps xmm0, xmm1
|
|
movaps XMMWORD PTR [ecx], xmm0
|
|
|
|
; 399 : }
|
|
|
|
mov esp, ebp
|
|
pop ebp
|
|
ret 0
|
|
?normalize@Quaternion@@QAEXXZ ENDP ; Quaternion::normalize
|
|
compile ENDS
|
|
PUBLIC ??0Matrix@@QAE@XZ ; Matrix::Matrix
|
|
; Function compile flags: /Ogspy
|
|
compile SEGMENT
|
|
??0Matrix@@QAE@XZ PROC ; Matrix::Matrix
|
|
; _this$ = ecx
|
|
|
|
; 406 : {
|
|
|
|
fld1
|
|
mov eax, ecx
|
|
fst DWORD PTR [eax]
|
|
fldz
|
|
fst DWORD PTR [eax+4]
|
|
fst DWORD PTR [eax+8]
|
|
fst DWORD PTR [eax+12]
|
|
fst DWORD PTR [eax+16]
|
|
fst DWORD PTR [eax+24]
|
|
fst DWORD PTR [eax+28]
|
|
fxch ST(1)
|
|
fst DWORD PTR [eax+20]
|
|
fxch ST(1)
|
|
fst DWORD PTR [eax+32]
|
|
fst DWORD PTR [eax+36]
|
|
fst DWORD PTR [eax+44]
|
|
fxch ST(1)
|
|
fst DWORD PTR [eax+40]
|
|
fxch ST(1)
|
|
fst DWORD PTR [eax+48]
|
|
fst DWORD PTR [eax+52]
|
|
fstp DWORD PTR [eax+56]
|
|
fstp DWORD PTR [eax+60]
|
|
|
|
; 407 : };
|
|
|
|
ret 0
|
|
??0Matrix@@QAE@XZ ENDP ; Matrix::Matrix
|
|
compile ENDS
|
|
PUBLIC ??0Matrix@@QAE@ABU0@@Z ; Matrix::Matrix
|
|
; Function compile flags: /Ogspy
|
|
compile SEGMENT
|
|
_arg$ = 8 ; size = 4
|
|
??0Matrix@@QAE@ABU0@@Z PROC ; Matrix::Matrix
|
|
; _this$ = ecx
|
|
|
|
; 414 : {
|
|
|
|
push esi
|
|
mov esi, DWORD PTR _arg$[esp]
|
|
push esi
|
|
mov edx, ecx
|
|
call ??0vec4@@QAE@ABU0@@Z ; vec4::vec4
|
|
lea eax, DWORD PTR [esi+16]
|
|
push eax
|
|
lea ecx, DWORD PTR [edx+16]
|
|
call ??0vec4@@QAE@ABU0@@Z ; vec4::vec4
|
|
lea eax, DWORD PTR [esi+32]
|
|
push eax
|
|
lea ecx, DWORD PTR [edx+32]
|
|
call ??0vec4@@QAE@ABU0@@Z ; vec4::vec4
|
|
add esi, 48 ; 00000030H
|
|
push esi
|
|
lea ecx, DWORD PTR [edx+48]
|
|
call ??0vec4@@QAE@ABU0@@Z ; vec4::vec4
|
|
|
|
; 415 : };
|
|
|
|
mov eax, edx
|
|
pop esi
|
|
ret 4
|
|
??0Matrix@@QAE@ABU0@@Z ENDP ; Matrix::Matrix
|
|
compile ENDS
|
|
PUBLIC ??0Matrix@@QAE@ABUvec4@@000@Z ; Matrix::Matrix
|
|
; Function compile flags: /Ogspy
|
|
compile SEGMENT
|
|
_R1$ = 8 ; size = 4
|
|
_R2$ = 12 ; size = 4
|
|
_R3$ = 16 ; size = 4
|
|
_R4$ = 20 ; size = 4
|
|
??0Matrix@@QAE@ABUvec4@@000@Z PROC ; Matrix::Matrix
|
|
; _this$ = ecx
|
|
|
|
; 422 : {
|
|
|
|
push DWORD PTR _R1$[esp-4]
|
|
mov edx, ecx
|
|
call ??0vec4@@QAE@ABU0@@Z ; vec4::vec4
|
|
push DWORD PTR _R2$[esp-4]
|
|
lea ecx, DWORD PTR [edx+16]
|
|
call ??0vec4@@QAE@ABU0@@Z ; vec4::vec4
|
|
push DWORD PTR _R3$[esp-4]
|
|
lea ecx, DWORD PTR [edx+32]
|
|
call ??0vec4@@QAE@ABU0@@Z ; vec4::vec4
|
|
push DWORD PTR _R4$[esp-4]
|
|
lea ecx, DWORD PTR [edx+48]
|
|
call ??0vec4@@QAE@ABU0@@Z ; vec4::vec4
|
|
|
|
; 423 : };
|
|
|
|
mov eax, edx
|
|
ret 16 ; 00000010H
|
|
??0Matrix@@QAE@ABUvec4@@000@Z ENDP ; Matrix::Matrix
|
|
compile ENDS
|
|
PUBLIC ??0Matrix@@QAE@PBM@Z ; Matrix::Matrix
|
|
; Function compile flags: /Ogspy
|
|
compile SEGMENT
|
|
_M$ = 8 ; size = 4
|
|
??0Matrix@@QAE@PBM@Z PROC ; Matrix::Matrix
|
|
; _this$ = ecx
|
|
|
|
; 430 : {
|
|
|
|
push esi
|
|
mov esi, DWORD PTR _M$[esp]
|
|
push esi
|
|
mov edx, ecx
|
|
call ??0vec4@@QAE@PBM@Z ; vec4::vec4
|
|
lea eax, DWORD PTR [esi+16]
|
|
push eax
|
|
lea ecx, DWORD PTR [edx+16]
|
|
call ??0vec4@@QAE@PBM@Z ; vec4::vec4
|
|
lea eax, DWORD PTR [esi+32]
|
|
push eax
|
|
lea ecx, DWORD PTR [edx+32]
|
|
call ??0vec4@@QAE@PBM@Z ; vec4::vec4
|
|
add esi, 48 ; 00000030H
|
|
push esi
|
|
lea ecx, DWORD PTR [edx+48]
|
|
call ??0vec4@@QAE@PBM@Z ; vec4::vec4
|
|
|
|
; 431 : };
|
|
|
|
mov eax, edx
|
|
pop esi
|
|
ret 4
|
|
??0Matrix@@QAE@PBM@Z ENDP ; Matrix::Matrix
|
|
compile ENDS
|
|
PUBLIC ??0Matrix@@QAE@ABUQuaternion@@@Z ; Matrix::Matrix
|
|
; Function compile flags: /Ogspy
|
|
compile SEGMENT
|
|
_wy$ = -68 ; size = 4
|
|
_y2$ = -68 ; size = 4
|
|
_wz$ = -64 ; size = 4
|
|
_x2$ = -64 ; size = 4
|
|
_xy$ = -60 ; size = 4
|
|
_zz$ = -56 ; size = 4
|
|
_xz$ = -52 ; size = 4
|
|
_wx$ = -48 ; size = 4
|
|
_yz$ = -44 ; size = 4
|
|
_yy$ = -40 ; size = 4
|
|
_z2$ = -40 ; size = 4
|
|
_xx$ = -36 ; size = 4
|
|
$T18171 = -32 ; size = 16
|
|
$T18170 = -32 ; size = 16
|
|
$T18169 = -32 ; size = 16
|
|
$T18168 = -32 ; size = 16
|
|
_lQuaterion$ = -32 ; size = 16
|
|
_temp$19217 = -16 ; size = 16
|
|
_aQuaternion$ = 8 ; size = 4
|
|
??0Matrix@@QAE@ABUQuaternion@@@Z PROC ; Matrix::Matrix
|
|
; _this$ = ecx
|
|
|
|
; 434 : {
|
|
|
|
push ebp
|
|
mov ebp, esp
|
|
and esp, -16 ; fffffff0H
|
|
sub esp, 68 ; 00000044H
|
|
fldz
|
|
|
|
; 435 : Quaternion lQuaterion(aQuaternion);
|
|
|
|
mov eax, DWORD PTR _aQuaternion$[ebp]
|
|
mov edx, ecx
|
|
fst DWORD PTR [edx]
|
|
fst DWORD PTR [edx+4]
|
|
push ebx
|
|
fst DWORD PTR [edx+8]
|
|
push esi
|
|
fst DWORD PTR [edx+12]
|
|
push edi
|
|
fst DWORD PTR [edx+16]
|
|
fst DWORD PTR [edx+20]
|
|
fst DWORD PTR [edx+24]
|
|
fst DWORD PTR [edx+28]
|
|
fst DWORD PTR [edx+32]
|
|
fst DWORD PTR [edx+36]
|
|
fst DWORD PTR [edx+40]
|
|
fst DWORD PTR [edx+44]
|
|
fst DWORD PTR [edx+48]
|
|
fst DWORD PTR [edx+52]
|
|
fst DWORD PTR [edx+56]
|
|
fst DWORD PTR [edx+60]
|
|
fld DWORD PTR [eax]
|
|
fstp DWORD PTR _lQuaterion$[esp+80]
|
|
fld DWORD PTR [eax+4]
|
|
fstp DWORD PTR _lQuaterion$[esp+84]
|
|
fld DWORD PTR [eax+8]
|
|
fstp DWORD PTR _lQuaterion$[esp+88]
|
|
fld DWORD PTR [eax+12]
|
|
fstp DWORD PTR _lQuaterion$[esp+92]
|
|
|
|
; 436 : float lf_Length2 = lQuaterion.lengthSquared();
|
|
|
|
movaps xmm0, XMMWORD PTR _lQuaterion$[esp+80]
|
|
mulps xmm0, xmm0
|
|
haddps xmm0, xmm0
|
|
haddps xmm0, xmm0
|
|
movaps XMMWORD PTR _temp$19217[esp+80], xmm0
|
|
|
|
; 437 : if (lf_Length2 != 1.0 && lf_Length2 != 0.0)
|
|
|
|
fld DWORD PTR _temp$19217[esp+80]
|
|
fld1
|
|
fucompp
|
|
fnstsw ax
|
|
test ah, 68 ; 00000044H
|
|
jnp SHORT $LN1@Matrix
|
|
fld DWORD PTR _temp$19217[esp+80]
|
|
fld ST(1)
|
|
fucompp
|
|
fnstsw ax
|
|
test ah, 68 ; 00000044H
|
|
jnp SHORT $LN1@Matrix
|
|
|
|
; 438 : {
|
|
; 439 : lQuaterion.normalize();
|
|
|
|
lea ecx, DWORD PTR _lQuaterion$[esp+80]
|
|
fstp ST(0)
|
|
call ?normalize@Quaternion@@QAEXXZ ; Quaternion::normalize
|
|
fldz
|
|
$LN1@Matrix:
|
|
|
|
; 440 : }
|
|
; 441 :
|
|
; 442 : float wx, wy, wz, xx, yy, yz, xy, xz, zz, x2, y2, z2;
|
|
; 443 :
|
|
; 444 : x2 = lQuaterion.m[0] + lQuaterion.m[0];
|
|
|
|
fld DWORD PTR _lQuaterion$[esp+80]
|
|
|
|
; 445 : y2 = lQuaterion.m[1] + lQuaterion.m[1];
|
|
; 446 : z2 = lQuaterion.m[2] + lQuaterion.m[2];
|
|
; 447 :
|
|
; 448 : xx = lQuaterion.m[0] * x2;
|
|
; 449 : xy = lQuaterion.m[0] * y2;
|
|
; 450 : xz = lQuaterion.m[0] * z2;
|
|
; 451 :
|
|
; 452 : yy = lQuaterion.m[1] * y2;
|
|
; 453 : yz = lQuaterion.m[1] * z2;
|
|
; 454 : zz = lQuaterion.m[2] * z2;
|
|
; 455 :
|
|
; 456 : wx = lQuaterion.m[3] * x2;
|
|
; 457 : wy = lQuaterion.m[3] * y2;
|
|
; 458 : wz = lQuaterion.m[3] * z2;
|
|
; 459 :
|
|
; 460 : r1 = vec4(1.0f - (yy + zz), xy - wz, xz + wy, 0.0f);
|
|
|
|
lea esi, DWORD PTR $T18168[esp+80]
|
|
fld ST(0)
|
|
mov edi, edx
|
|
fld ST(0)
|
|
faddp ST(1), ST(0)
|
|
fstp DWORD PTR _x2$[esp+80]
|
|
fld DWORD PTR _lQuaterion$[esp+84]
|
|
fld ST(0)
|
|
faddp ST(1), ST(0)
|
|
fstp DWORD PTR _y2$[esp+80]
|
|
fld DWORD PTR _lQuaterion$[esp+88]
|
|
fld ST(0)
|
|
faddp ST(1), ST(0)
|
|
fstp DWORD PTR _z2$[esp+80]
|
|
fld ST(0)
|
|
fmul DWORD PTR _x2$[esp+80]
|
|
fstp DWORD PTR _xx$[esp+80]
|
|
fld DWORD PTR _y2$[esp+80]
|
|
fld ST(1)
|
|
fmulp ST(1), ST(0)
|
|
fstp DWORD PTR _xy$[esp+80]
|
|
fld DWORD PTR _z2$[esp+80]
|
|
fld ST(0)
|
|
fmulp ST(2), ST(0)
|
|
fxch ST(1)
|
|
fstp DWORD PTR _xz$[esp+80]
|
|
fld DWORD PTR _lQuaterion$[esp+84]
|
|
fmul DWORD PTR _y2$[esp+80]
|
|
fstp DWORD PTR _yy$[esp+80]
|
|
fld ST(0)
|
|
fmul DWORD PTR _lQuaterion$[esp+84]
|
|
fstp DWORD PTR _yz$[esp+80]
|
|
fld DWORD PTR _lQuaterion$[esp+88]
|
|
fld ST(1)
|
|
fmulp ST(1), ST(0)
|
|
fstp DWORD PTR _zz$[esp+80]
|
|
fld DWORD PTR _lQuaterion$[esp+92]
|
|
fmul DWORD PTR _x2$[esp+80]
|
|
fstp DWORD PTR _wx$[esp+80]
|
|
fld DWORD PTR _lQuaterion$[esp+92]
|
|
fmul DWORD PTR _y2$[esp+80]
|
|
fstp DWORD PTR _wy$[esp+80]
|
|
fmul DWORD PTR _lQuaterion$[esp+92]
|
|
fstp DWORD PTR _wz$[esp+80]
|
|
fld DWORD PTR _zz$[esp+80]
|
|
fadd DWORD PTR _yy$[esp+80]
|
|
fld1
|
|
fld ST(0)
|
|
fsubrp ST(2), ST(0)
|
|
fxch ST(1)
|
|
fstp DWORD PTR $T18168[esp+80]
|
|
fld DWORD PTR _xy$[esp+80]
|
|
fsub DWORD PTR _wz$[esp+80]
|
|
fstp DWORD PTR $T18168[esp+84]
|
|
fld DWORD PTR _wy$[esp+80]
|
|
fadd DWORD PTR _xz$[esp+80]
|
|
fstp DWORD PTR $T18168[esp+88]
|
|
fxch ST(1)
|
|
fst DWORD PTR $T18168[esp+92]
|
|
movsd
|
|
|
|
; 461 : r2 = vec4(xy + wz, 1.0f - (xx + zz), yz - wx, 0.0f);
|
|
|
|
fld DWORD PTR _wz$[esp+80]
|
|
fadd DWORD PTR _xy$[esp+80]
|
|
movsd
|
|
movsd
|
|
movsd
|
|
fstp DWORD PTR $T18169[esp+80]
|
|
fld DWORD PTR _zz$[esp+80]
|
|
fadd DWORD PTR _xx$[esp+80]
|
|
lea esi, DWORD PTR $T18169[esp+80]
|
|
fld ST(2)
|
|
lea edi, DWORD PTR [edx+16]
|
|
fsubrp ST(1), ST(0)
|
|
fstp DWORD PTR $T18169[esp+84]
|
|
fld DWORD PTR _yz$[esp+80]
|
|
fsub DWORD PTR _wx$[esp+80]
|
|
fstp DWORD PTR $T18169[esp+88]
|
|
fst DWORD PTR $T18169[esp+92]
|
|
movsd
|
|
movsd
|
|
movsd
|
|
|
|
; 462 : r3 = vec4(xz - wy, yz + wx, 1.0f - (xx + yy), 0.0f);
|
|
|
|
fld DWORD PTR _xz$[esp+80]
|
|
movsd
|
|
fsub DWORD PTR _wy$[esp+80]
|
|
lea esi, DWORD PTR $T18170[esp+80]
|
|
lea edi, DWORD PTR [edx+32]
|
|
fstp DWORD PTR $T18170[esp+80]
|
|
|
|
; 463 : r4 = vec4(0.0f, 0.0f, 0.0f, 1.0f);
|
|
; 464 : };
|
|
|
|
mov eax, edx
|
|
fld DWORD PTR _wx$[esp+80]
|
|
fadd DWORD PTR _yz$[esp+80]
|
|
fstp DWORD PTR $T18170[esp+84]
|
|
fld DWORD PTR _yy$[esp+80]
|
|
fadd DWORD PTR _xx$[esp+80]
|
|
fsubp ST(2), ST(0)
|
|
fxch ST(1)
|
|
fstp DWORD PTR $T18170[esp+88]
|
|
fst DWORD PTR $T18170[esp+92]
|
|
movsd
|
|
movsd
|
|
movsd
|
|
movsd
|
|
fst DWORD PTR $T18171[esp+80]
|
|
fst DWORD PTR $T18171[esp+84]
|
|
fstp DWORD PTR $T18171[esp+88]
|
|
lea esi, DWORD PTR $T18171[esp+80]
|
|
fld1
|
|
lea edi, DWORD PTR [edx+48]
|
|
fstp DWORD PTR $T18171[esp+92]
|
|
movsd
|
|
movsd
|
|
movsd
|
|
movsd
|
|
pop edi
|
|
pop esi
|
|
pop ebx
|
|
mov esp, ebp
|
|
pop ebp
|
|
ret 4
|
|
??0Matrix@@QAE@ABUQuaternion@@@Z ENDP ; Matrix::Matrix
|
|
compile ENDS
|
|
PUBLIC ??AMatrix@@QAEAAMH@Z ; Matrix::operator[]
|
|
; Function compile flags: /Ogspy
|
|
compile SEGMENT
|
|
_i$ = 8 ; size = 4
|
|
??AMatrix@@QAEAAMH@Z PROC ; Matrix::operator[]
|
|
; _this$ = ecx
|
|
|
|
; 468 : return m[i];
|
|
|
|
mov eax, DWORD PTR _i$[esp-4]
|
|
lea eax, DWORD PTR [ecx+eax*4]
|
|
|
|
; 469 : }
|
|
|
|
ret 4
|
|
??AMatrix@@QAEAAMH@Z ENDP ; Matrix::operator[]
|
|
compile ENDS
|
|
PUBLIC ??DMatrix@@QBE?AUvec4@@ABU1@@Z ; Matrix::operator*
|
|
; Function compile flags: /Ogspy
|
|
compile SEGMENT
|
|
$T19252 = -8 ; size = 4
|
|
$T19253 = -4 ; size = 4
|
|
___$ReturnUdt$ = 8 ; size = 4
|
|
$T19254 = 12 ; size = 4
|
|
_arg$ = 12 ; size = 4
|
|
??DMatrix@@QBE?AUvec4@@ABU1@@Z PROC ; Matrix::operator*
|
|
; _this$ = ecx
|
|
|
|
; 472 : {
|
|
|
|
push ebp
|
|
mov ebp, esp
|
|
push ecx
|
|
push ecx
|
|
|
|
; 473 : return vec4(dot(r1, arg), dot(r2, arg), dot(r3, arg), dot(r4, arg));
|
|
|
|
mov edx, DWORD PTR _arg$[ebp]
|
|
lea eax, DWORD PTR [ecx+16]
|
|
push edx
|
|
push eax
|
|
call ?dot@@YAMABUvec4@@0@Z ; dot
|
|
fstp DWORD PTR $T19254[ebp]
|
|
lea eax, DWORD PTR [ecx+32]
|
|
push edx
|
|
push eax
|
|
call ?dot@@YAMABUvec4@@0@Z ; dot
|
|
fstp DWORD PTR $T19253[ebp]
|
|
lea eax, DWORD PTR [ecx+48]
|
|
push edx
|
|
push eax
|
|
call ?dot@@YAMABUvec4@@0@Z ; dot
|
|
fstp DWORD PTR $T19252[ebp]
|
|
push edx
|
|
push ecx
|
|
call ?dot@@YAMABUvec4@@0@Z ; dot
|
|
mov eax, DWORD PTR ___$ReturnUdt$[ebp]
|
|
fstp DWORD PTR [eax]
|
|
add esp, 32 ; 00000020H
|
|
fld DWORD PTR $T19254[ebp]
|
|
fstp DWORD PTR [eax+4]
|
|
fld DWORD PTR $T19253[ebp]
|
|
fstp DWORD PTR [eax+8]
|
|
fld DWORD PTR $T19252[ebp]
|
|
fstp DWORD PTR [eax+12]
|
|
|
|
; 474 : }
|
|
|
|
leave
|
|
ret 8
|
|
??DMatrix@@QBE?AUvec4@@ABU1@@Z ENDP ; Matrix::operator*
|
|
compile ENDS
|
|
PUBLIC ??DMatrix@@QBE?AU0@ABU0@@Z ; Matrix::operator*
|
|
; Function compile flags: /Ogspy
|
|
compile SEGMENT
|
|
tv400 = -20 ; size = 4
|
|
tv386 = -16 ; size = 4
|
|
tv375 = -12 ; size = 4
|
|
tv367 = -8 ; size = 4
|
|
_value$18196 = -4 ; size = 4
|
|
___$ReturnUdt$ = 8 ; size = 4
|
|
_arg$ = 12 ; size = 4
|
|
??DMatrix@@QBE?AU0@ABU0@@Z PROC ; Matrix::operator*
|
|
; _this$ = ecx
|
|
|
|
; 477 : {
|
|
|
|
sub esp, 20 ; 00000014H
|
|
mov edx, ecx
|
|
|
|
; 478 : Matrix temp;
|
|
|
|
mov ecx, DWORD PTR ___$ReturnUdt$[esp+16]
|
|
call ??0Matrix@@QAE@XZ ; Matrix::Matrix
|
|
push 4
|
|
mov eax, ecx
|
|
|
|
; 479 : for (int i = 0; i < 4; ++i) // zeile
|
|
|
|
mov ecx, edx
|
|
pop edx
|
|
push ebx
|
|
push esi
|
|
sub ecx, eax
|
|
mov DWORD PTR tv400[esp+28], edx
|
|
push edi
|
|
$LL9@operator:
|
|
|
|
; 480 : {
|
|
; 481 : for (int j = 0; j < 4; ++j) // spalte
|
|
|
|
mov esi, DWORD PTR _arg$[esp+28]
|
|
lea ebx, DWORD PTR [ecx+eax]
|
|
mov DWORD PTR tv367[esp+32], esi
|
|
mov DWORD PTR tv375[esp+32], eax
|
|
mov DWORD PTR tv386[esp+32], edx
|
|
$LL18@operator:
|
|
|
|
; 482 : {
|
|
; 483 : float value = 0;
|
|
|
|
fldz
|
|
mov esi, DWORD PTR tv367[esp+32]
|
|
fstp DWORD PTR _value$18196[esp+32]
|
|
mov edi, ebx
|
|
mov eax, edx
|
|
$LL3@operator:
|
|
|
|
; 484 : for (int k = 0; k < 4; ++k)
|
|
; 485 : {
|
|
; 486 : value += m[i*4+k] * arg.m[k*4+j];
|
|
|
|
fld DWORD PTR [esi]
|
|
add esi, 16 ; 00000010H
|
|
fmul DWORD PTR [edi]
|
|
add edi, edx
|
|
dec eax
|
|
fadd DWORD PTR _value$18196[esp+32]
|
|
fstp DWORD PTR _value$18196[esp+32]
|
|
jne SHORT $LL3@operator
|
|
|
|
; 487 : }
|
|
; 488 : temp.m[i*4+j] = value;
|
|
|
|
mov eax, DWORD PTR tv375[esp+32]
|
|
fld DWORD PTR _value$18196[esp+32]
|
|
add DWORD PTR tv367[esp+32], edx
|
|
fstp DWORD PTR [eax]
|
|
add eax, edx
|
|
dec DWORD PTR tv386[esp+32]
|
|
mov DWORD PTR tv375[esp+32], eax
|
|
jne SHORT $LL18@operator
|
|
|
|
; 479 : for (int i = 0; i < 4; ++i) // zeile
|
|
|
|
dec DWORD PTR tv400[esp+32]
|
|
jne SHORT $LL9@operator
|
|
|
|
; 489 : }
|
|
; 490 : }
|
|
; 491 : return temp;
|
|
|
|
mov eax, DWORD PTR ___$ReturnUdt$[esp+28]
|
|
pop edi
|
|
pop esi
|
|
pop ebx
|
|
|
|
; 492 : }
|
|
|
|
add esp, 20 ; 00000014H
|
|
ret 8
|
|
??DMatrix@@QBE?AU0@ABU0@@Z ENDP ; Matrix::operator*
|
|
compile ENDS
|
|
PUBLIC ??XMatrix@@QAEXABU0@@Z ; Matrix::operator*=
|
|
; Function compile flags: /Ogspy
|
|
compile SEGMENT
|
|
$T18209 = -80 ; size = 16
|
|
$T18208 = -80 ; size = 16
|
|
$T18207 = -80 ; size = 16
|
|
$T18206 = -80 ; size = 16
|
|
_lTemp$ = -64 ; size = 64
|
|
_arg$ = 8 ; size = 4
|
|
??XMatrix@@QAEXABU0@@Z PROC ; Matrix::operator*=
|
|
; _this$ = ecx
|
|
|
|
; 495 : {
|
|
|
|
push ebp
|
|
mov ebp, esp
|
|
and esp, -16 ; fffffff0H
|
|
sub esp, 84 ; 00000054H
|
|
push ebx
|
|
push esi
|
|
mov ebx, ecx
|
|
push edi
|
|
|
|
; 496 : Matrix lTemp = *this;
|
|
|
|
push ebx
|
|
lea ecx, DWORD PTR _lTemp$[esp+100]
|
|
call ??0Matrix@@QAE@ABU0@@Z ; Matrix::Matrix
|
|
|
|
; 497 : r1 = lTemp * arg.r1;
|
|
|
|
push DWORD PTR _arg$[ebp]
|
|
lea eax, DWORD PTR $T18206[esp+100]
|
|
push eax
|
|
lea ecx, DWORD PTR _lTemp$[esp+104]
|
|
call ??DMatrix@@QBE?AUvec4@@ABU1@@Z ; Matrix::operator*
|
|
mov esi, eax
|
|
|
|
; 498 : r2 = lTemp * arg.r2;
|
|
|
|
mov eax, DWORD PTR _arg$[ebp]
|
|
mov edi, ebx
|
|
movsd
|
|
movsd
|
|
add eax, 16 ; 00000010H
|
|
movsd
|
|
push eax
|
|
lea eax, DWORD PTR $T18207[esp+100]
|
|
push eax
|
|
movsd
|
|
call ??DMatrix@@QBE?AUvec4@@ABU1@@Z ; Matrix::operator*
|
|
mov esi, eax
|
|
|
|
; 499 : r3 = lTemp * arg.r3;
|
|
|
|
mov eax, DWORD PTR _arg$[ebp]
|
|
lea edi, DWORD PTR [ebx+16]
|
|
movsd
|
|
movsd
|
|
add eax, 32 ; 00000020H
|
|
movsd
|
|
push eax
|
|
lea eax, DWORD PTR $T18208[esp+100]
|
|
push eax
|
|
movsd
|
|
call ??DMatrix@@QBE?AUvec4@@ABU1@@Z ; Matrix::operator*
|
|
mov esi, eax
|
|
|
|
; 500 : r4 = lTemp * arg.r4;
|
|
|
|
mov eax, DWORD PTR _arg$[ebp]
|
|
lea edi, DWORD PTR [ebx+32]
|
|
movsd
|
|
movsd
|
|
add eax, 48 ; 00000030H
|
|
movsd
|
|
push eax
|
|
lea eax, DWORD PTR $T18209[esp+100]
|
|
push eax
|
|
movsd
|
|
call ??DMatrix@@QBE?AUvec4@@ABU1@@Z ; Matrix::operator*
|
|
lea edi, DWORD PTR [ebx+48]
|
|
mov esi, eax
|
|
movsd
|
|
movsd
|
|
movsd
|
|
movsd
|
|
|
|
; 501 : }
|
|
|
|
pop edi
|
|
pop esi
|
|
pop ebx
|
|
mov esp, ebp
|
|
pop ebp
|
|
ret 4
|
|
??XMatrix@@QAEXABU0@@Z ENDP ; Matrix::operator*=
|
|
compile ENDS
|
|
PUBLIC ?rotateX@Matrix@@SA?AU1@M@Z ; Matrix::rotateX
|
|
; Function compile flags: /Ogspy
|
|
compile SEGMENT
|
|
_c$ = -72 ; size = 4
|
|
_s$ = -68 ; size = 4
|
|
$T18219 = -64 ; size = 16
|
|
$T18218 = -48 ; size = 16
|
|
$T18217 = -32 ; size = 16
|
|
$T18216 = -16 ; size = 16
|
|
___$ReturnUdt$ = 8 ; size = 4
|
|
_af_Rad$ = 12 ; size = 4
|
|
?rotateX@Matrix@@SA?AU1@M@Z PROC ; Matrix::rotateX
|
|
|
|
; 504 : {
|
|
|
|
push ebp
|
|
mov ebp, esp
|
|
and esp, -16 ; fffffff0H
|
|
sub esp, 80 ; 00000050H
|
|
|
|
; 505 : float s = sin(af_Rad);
|
|
|
|
fld DWORD PTR _af_Rad$[ebp]
|
|
fsin
|
|
fstp DWORD PTR _s$[esp+80]
|
|
|
|
; 506 : float c = cos(af_Rad);
|
|
|
|
fld DWORD PTR _af_Rad$[ebp]
|
|
fcos
|
|
fstp DWORD PTR _c$[esp+80]
|
|
|
|
; 507 : return Matrix(
|
|
; 508 : vec4(1,0,0,0),
|
|
; 509 : vec4(0,c,-s,0),
|
|
; 510 : vec4(0,s,c,0),
|
|
; 511 : vec4(0,0,0,1));
|
|
|
|
fldz
|
|
mov ecx, DWORD PTR ___$ReturnUdt$[ebp]
|
|
fst DWORD PTR $T18219[esp+80]
|
|
lea eax, DWORD PTR $T18219[esp+80]
|
|
fst DWORD PTR $T18219[esp+84]
|
|
push eax
|
|
fst DWORD PTR $T18219[esp+92]
|
|
lea eax, DWORD PTR $T18218[esp+84]
|
|
fld1
|
|
push eax
|
|
fst DWORD PTR $T18219[esp+100]
|
|
lea eax, DWORD PTR $T18217[esp+88]
|
|
fxch ST(1)
|
|
push eax
|
|
fst DWORD PTR $T18218[esp+92]
|
|
lea eax, DWORD PTR $T18216[esp+92]
|
|
fld DWORD PTR _s$[esp+92]
|
|
push eax
|
|
fstp DWORD PTR $T18218[esp+100]
|
|
fld DWORD PTR _c$[esp+96]
|
|
fstp DWORD PTR $T18218[esp+104]
|
|
fst DWORD PTR $T18218[esp+108]
|
|
fst DWORD PTR $T18217[esp+96]
|
|
fld DWORD PTR _c$[esp+96]
|
|
fstp DWORD PTR $T18217[esp+100]
|
|
fld DWORD PTR _s$[esp+96]
|
|
fchs
|
|
fstp DWORD PTR $T18217[esp+104]
|
|
fst DWORD PTR $T18217[esp+108]
|
|
fst DWORD PTR $T18216[esp+100]
|
|
fst DWORD PTR $T18216[esp+104]
|
|
fstp DWORD PTR $T18216[esp+108]
|
|
fstp DWORD PTR $T18216[esp+96]
|
|
call ??0Matrix@@QAE@ABUvec4@@000@Z ; Matrix::Matrix
|
|
mov eax, DWORD PTR ___$ReturnUdt$[ebp]
|
|
|
|
; 512 : }
|
|
|
|
mov esp, ebp
|
|
pop ebp
|
|
ret 0
|
|
?rotateX@Matrix@@SA?AU1@M@Z ENDP ; Matrix::rotateX
|
|
compile ENDS
|
|
PUBLIC ?rotateY@Matrix@@SA?AU1@M@Z ; Matrix::rotateY
|
|
; Function compile flags: /Ogspy
|
|
compile SEGMENT
|
|
_c$ = -72 ; size = 4
|
|
_s$ = -68 ; size = 4
|
|
$T18230 = -64 ; size = 16
|
|
$T18229 = -48 ; size = 16
|
|
$T18228 = -32 ; size = 16
|
|
$T18227 = -16 ; size = 16
|
|
___$ReturnUdt$ = 8 ; size = 4
|
|
_af_Rad$ = 12 ; size = 4
|
|
?rotateY@Matrix@@SA?AU1@M@Z PROC ; Matrix::rotateY
|
|
|
|
; 515 : {
|
|
|
|
push ebp
|
|
mov ebp, esp
|
|
and esp, -16 ; fffffff0H
|
|
sub esp, 80 ; 00000050H
|
|
|
|
; 516 : float s = sin(af_Rad);
|
|
|
|
fld DWORD PTR _af_Rad$[ebp]
|
|
fsin
|
|
fstp DWORD PTR _s$[esp+80]
|
|
|
|
; 517 : float c = cos(af_Rad);
|
|
|
|
fld DWORD PTR _af_Rad$[ebp]
|
|
fcos
|
|
fstp DWORD PTR _c$[esp+80]
|
|
|
|
; 518 : return Matrix(
|
|
; 519 : vec4(c,0,s,0),
|
|
; 520 : vec4(0,1,0,0),
|
|
; 521 : vec4(-s,0,c,0),
|
|
; 522 : vec4(0,0,0,1));
|
|
|
|
fldz
|
|
mov ecx, DWORD PTR ___$ReturnUdt$[ebp]
|
|
fst DWORD PTR $T18230[esp+80]
|
|
lea eax, DWORD PTR $T18230[esp+80]
|
|
fst DWORD PTR $T18230[esp+84]
|
|
push eax
|
|
fst DWORD PTR $T18230[esp+92]
|
|
lea eax, DWORD PTR $T18229[esp+84]
|
|
fld1
|
|
push eax
|
|
fst DWORD PTR $T18230[esp+100]
|
|
lea eax, DWORD PTR $T18228[esp+88]
|
|
fld DWORD PTR _s$[esp+88]
|
|
push eax
|
|
fchs
|
|
lea eax, DWORD PTR $T18227[esp+92]
|
|
fstp DWORD PTR $T18229[esp+92]
|
|
push eax
|
|
fxch ST(1)
|
|
fst DWORD PTR $T18229[esp+100]
|
|
fld DWORD PTR _c$[esp+96]
|
|
fstp DWORD PTR $T18229[esp+104]
|
|
fst DWORD PTR $T18229[esp+108]
|
|
fst DWORD PTR $T18228[esp+96]
|
|
fst DWORD PTR $T18228[esp+104]
|
|
fst DWORD PTR $T18228[esp+108]
|
|
fxch ST(1)
|
|
fstp DWORD PTR $T18228[esp+100]
|
|
fld DWORD PTR _c$[esp+96]
|
|
fstp DWORD PTR $T18227[esp+96]
|
|
fst DWORD PTR $T18227[esp+100]
|
|
fld DWORD PTR _s$[esp+96]
|
|
fstp DWORD PTR $T18227[esp+104]
|
|
fstp DWORD PTR $T18227[esp+108]
|
|
call ??0Matrix@@QAE@ABUvec4@@000@Z ; Matrix::Matrix
|
|
mov eax, DWORD PTR ___$ReturnUdt$[ebp]
|
|
|
|
; 523 : }
|
|
|
|
mov esp, ebp
|
|
pop ebp
|
|
ret 0
|
|
?rotateY@Matrix@@SA?AU1@M@Z ENDP ; Matrix::rotateY
|
|
compile ENDS
|
|
PUBLIC ?rotateZ@Matrix@@SA?AU1@M@Z ; Matrix::rotateZ
|
|
; Function compile flags: /Ogspy
|
|
compile SEGMENT
|
|
_c$ = -72 ; size = 4
|
|
_s$ = -68 ; size = 4
|
|
$T18241 = -64 ; size = 16
|
|
$T18240 = -48 ; size = 16
|
|
$T18239 = -32 ; size = 16
|
|
$T18238 = -16 ; size = 16
|
|
___$ReturnUdt$ = 8 ; size = 4
|
|
_af_Rad$ = 12 ; size = 4
|
|
?rotateZ@Matrix@@SA?AU1@M@Z PROC ; Matrix::rotateZ
|
|
|
|
; 526 : {
|
|
|
|
push ebp
|
|
mov ebp, esp
|
|
and esp, -16 ; fffffff0H
|
|
sub esp, 80 ; 00000050H
|
|
|
|
; 527 : float s = sin(af_Rad);
|
|
|
|
fld DWORD PTR _af_Rad$[ebp]
|
|
fsin
|
|
fstp DWORD PTR _s$[esp+80]
|
|
|
|
; 528 : float c = cos(af_Rad);
|
|
|
|
fld DWORD PTR _af_Rad$[ebp]
|
|
fcos
|
|
fstp DWORD PTR _c$[esp+80]
|
|
|
|
; 529 : return Matrix(
|
|
; 530 : vec4(c,-s,0,0),
|
|
; 531 : vec4(s,c,0,0),
|
|
; 532 : vec4(0,0,1,0),
|
|
; 533 : vec4(0,0,0,1));
|
|
|
|
fldz
|
|
mov ecx, DWORD PTR ___$ReturnUdt$[ebp]
|
|
fst DWORD PTR $T18241[esp+80]
|
|
lea eax, DWORD PTR $T18241[esp+80]
|
|
fst DWORD PTR $T18241[esp+84]
|
|
push eax
|
|
fst DWORD PTR $T18241[esp+92]
|
|
lea eax, DWORD PTR $T18240[esp+84]
|
|
fld1
|
|
push eax
|
|
fst DWORD PTR $T18241[esp+100]
|
|
lea eax, DWORD PTR $T18239[esp+88]
|
|
fstp DWORD PTR $T18240[esp+96]
|
|
push eax
|
|
lea eax, DWORD PTR $T18238[esp+92]
|
|
push eax
|
|
fst DWORD PTR $T18240[esp+96]
|
|
fst DWORD PTR $T18240[esp+100]
|
|
fst DWORD PTR $T18240[esp+108]
|
|
fld DWORD PTR _s$[esp+96]
|
|
fstp DWORD PTR $T18239[esp+96]
|
|
fld DWORD PTR _c$[esp+96]
|
|
fstp DWORD PTR $T18239[esp+100]
|
|
fst DWORD PTR $T18239[esp+104]
|
|
fst DWORD PTR $T18239[esp+108]
|
|
fld DWORD PTR _c$[esp+96]
|
|
fstp DWORD PTR $T18238[esp+96]
|
|
fld DWORD PTR _s$[esp+96]
|
|
fchs
|
|
fstp DWORD PTR $T18238[esp+100]
|
|
fst DWORD PTR $T18238[esp+104]
|
|
fstp DWORD PTR $T18238[esp+108]
|
|
call ??0Matrix@@QAE@ABUvec4@@000@Z ; Matrix::Matrix
|
|
mov eax, DWORD PTR ___$ReturnUdt$[ebp]
|
|
|
|
; 534 : }
|
|
|
|
mov esp, ebp
|
|
pop ebp
|
|
ret 0
|
|
?rotateZ@Matrix@@SA?AU1@M@Z ENDP ; Matrix::rotateZ
|
|
compile ENDS
|
|
PUBLIC ?scale@Matrix@@SA?AU1@M@Z ; Matrix::scale
|
|
; Function compile flags: /Ogspy
|
|
compile SEGMENT
|
|
$T18250 = -64 ; size = 16
|
|
$T18249 = -48 ; size = 16
|
|
$T18248 = -32 ; size = 16
|
|
$T18247 = -16 ; size = 16
|
|
___$ReturnUdt$ = 8 ; size = 4
|
|
_s$ = 12 ; size = 4
|
|
?scale@Matrix@@SA?AU1@M@Z PROC ; Matrix::scale
|
|
|
|
; 537 : {
|
|
|
|
push ebp
|
|
mov ebp, esp
|
|
and esp, -16 ; fffffff0H
|
|
sub esp, 64 ; 00000040H
|
|
|
|
; 538 : return Matrix(
|
|
; 539 : vec4(s,0,0,0),
|
|
; 540 : vec4(0,s,0,0),
|
|
; 541 : vec4(0,0,s,0),
|
|
; 542 : vec4(0,0,0,1));
|
|
|
|
fldz
|
|
mov ecx, DWORD PTR ___$ReturnUdt$[ebp]
|
|
fst DWORD PTR $T18250[esp+64]
|
|
lea eax, DWORD PTR $T18250[esp+64]
|
|
fst DWORD PTR $T18250[esp+68]
|
|
push eax
|
|
fst DWORD PTR $T18250[esp+76]
|
|
lea eax, DWORD PTR $T18249[esp+68]
|
|
fld1
|
|
push eax
|
|
fstp DWORD PTR $T18250[esp+84]
|
|
lea eax, DWORD PTR $T18248[esp+72]
|
|
push eax
|
|
lea eax, DWORD PTR $T18247[esp+76]
|
|
push eax
|
|
fst DWORD PTR $T18249[esp+80]
|
|
fst DWORD PTR $T18249[esp+84]
|
|
fld DWORD PTR _s$[ebp]
|
|
fstp DWORD PTR $T18249[esp+88]
|
|
fst DWORD PTR $T18249[esp+92]
|
|
fst DWORD PTR $T18248[esp+80]
|
|
fld DWORD PTR _s$[ebp]
|
|
fstp DWORD PTR $T18248[esp+84]
|
|
fst DWORD PTR $T18248[esp+88]
|
|
fst DWORD PTR $T18248[esp+92]
|
|
fld DWORD PTR _s$[ebp]
|
|
fstp DWORD PTR $T18247[esp+80]
|
|
fst DWORD PTR $T18247[esp+84]
|
|
fst DWORD PTR $T18247[esp+88]
|
|
fstp DWORD PTR $T18247[esp+92]
|
|
call ??0Matrix@@QAE@ABUvec4@@000@Z ; Matrix::Matrix
|
|
mov eax, DWORD PTR ___$ReturnUdt$[ebp]
|
|
|
|
; 543 : }
|
|
|
|
mov esp, ebp
|
|
pop ebp
|
|
ret 0
|
|
?scale@Matrix@@SA?AU1@M@Z ENDP ; Matrix::scale
|
|
compile ENDS
|
|
PUBLIC ?scale@Matrix@@SA?AU1@ABUvec4@@@Z ; Matrix::scale
|
|
; Function compile flags: /Ogspy
|
|
compile SEGMENT
|
|
$T18259 = -64 ; size = 16
|
|
$T18258 = -48 ; size = 16
|
|
$T18257 = -32 ; size = 16
|
|
$T18256 = -16 ; size = 16
|
|
___$ReturnUdt$ = 8 ; size = 4
|
|
_s$ = 12 ; size = 4
|
|
?scale@Matrix@@SA?AU1@ABUvec4@@@Z PROC ; Matrix::scale
|
|
|
|
; 546 : {
|
|
|
|
push ebp
|
|
mov ebp, esp
|
|
and esp, -16 ; fffffff0H
|
|
sub esp, 64 ; 00000040H
|
|
|
|
; 547 : return Matrix(
|
|
; 548 : vec4(s.x,0,0,0),
|
|
; 549 : vec4(0,s.y,0,0),
|
|
; 550 : vec4(0,0,s.z,0),
|
|
; 551 : vec4(0,0,0,1));
|
|
|
|
fldz
|
|
mov eax, DWORD PTR _s$[ebp]
|
|
fst DWORD PTR $T18259[esp+64]
|
|
mov ecx, DWORD PTR ___$ReturnUdt$[ebp]
|
|
fst DWORD PTR $T18259[esp+68]
|
|
fst DWORD PTR $T18259[esp+72]
|
|
fld1
|
|
fstp DWORD PTR $T18259[esp+76]
|
|
fst DWORD PTR $T18258[esp+64]
|
|
fst DWORD PTR $T18258[esp+68]
|
|
fld DWORD PTR [eax+8]
|
|
fstp DWORD PTR $T18258[esp+72]
|
|
fst DWORD PTR $T18258[esp+76]
|
|
fst DWORD PTR $T18257[esp+64]
|
|
fld DWORD PTR [eax+4]
|
|
fstp DWORD PTR $T18257[esp+68]
|
|
fst DWORD PTR $T18257[esp+72]
|
|
fst DWORD PTR $T18257[esp+76]
|
|
fld DWORD PTR [eax]
|
|
lea eax, DWORD PTR $T18259[esp+64]
|
|
push eax
|
|
fstp DWORD PTR $T18256[esp+68]
|
|
lea eax, DWORD PTR $T18258[esp+68]
|
|
push eax
|
|
fst DWORD PTR $T18256[esp+76]
|
|
lea eax, DWORD PTR $T18257[esp+72]
|
|
fst DWORD PTR $T18256[esp+80]
|
|
push eax
|
|
fstp DWORD PTR $T18256[esp+88]
|
|
lea eax, DWORD PTR $T18256[esp+76]
|
|
push eax
|
|
call ??0Matrix@@QAE@ABUvec4@@000@Z ; Matrix::Matrix
|
|
mov eax, DWORD PTR ___$ReturnUdt$[ebp]
|
|
|
|
; 552 : }
|
|
|
|
mov esp, ebp
|
|
pop ebp
|
|
ret 0
|
|
?scale@Matrix@@SA?AU1@ABUvec4@@@Z ENDP ; Matrix::scale
|
|
compile ENDS
|
|
PUBLIC ?translate@Matrix@@SA?AU1@ABUvec4@@@Z ; Matrix::translate
|
|
; Function compile flags: /Ogspy
|
|
compile SEGMENT
|
|
$T18268 = -64 ; size = 16
|
|
$T18267 = -48 ; size = 16
|
|
$T18266 = -32 ; size = 16
|
|
$T18265 = -16 ; size = 16
|
|
___$ReturnUdt$ = 8 ; size = 4
|
|
_aTranslation$ = 12 ; size = 4
|
|
?translate@Matrix@@SA?AU1@ABUvec4@@@Z PROC ; Matrix::translate
|
|
|
|
; 555 : {
|
|
|
|
push ebp
|
|
mov ebp, esp
|
|
and esp, -16 ; fffffff0H
|
|
sub esp, 64 ; 00000040H
|
|
|
|
; 556 : return Matrix(
|
|
; 557 : vec4(1,0,0,aTranslation.x),
|
|
; 558 : vec4(0,1,0,aTranslation.y),
|
|
; 559 : vec4(0,0,1,aTranslation.z),
|
|
; 560 : vec4(0,0,0,1));
|
|
|
|
fldz
|
|
mov eax, DWORD PTR _aTranslation$[ebp]
|
|
fst DWORD PTR $T18268[esp+64]
|
|
mov ecx, DWORD PTR ___$ReturnUdt$[ebp]
|
|
fst DWORD PTR $T18268[esp+68]
|
|
fst DWORD PTR $T18268[esp+72]
|
|
fld1
|
|
fst DWORD PTR $T18268[esp+76]
|
|
fst DWORD PTR $T18267[esp+72]
|
|
fxch ST(1)
|
|
fst DWORD PTR $T18267[esp+64]
|
|
fst DWORD PTR $T18267[esp+68]
|
|
fld DWORD PTR [eax+8]
|
|
fstp DWORD PTR $T18267[esp+76]
|
|
fst DWORD PTR $T18266[esp+64]
|
|
fst DWORD PTR $T18266[esp+72]
|
|
fxch ST(1)
|
|
fst DWORD PTR $T18266[esp+68]
|
|
fld DWORD PTR [eax+4]
|
|
fstp DWORD PTR $T18266[esp+76]
|
|
fstp DWORD PTR $T18265[esp+64]
|
|
fst DWORD PTR $T18265[esp+68]
|
|
fstp DWORD PTR $T18265[esp+72]
|
|
fld DWORD PTR [eax]
|
|
lea eax, DWORD PTR $T18268[esp+64]
|
|
push eax
|
|
fstp DWORD PTR $T18265[esp+80]
|
|
lea eax, DWORD PTR $T18267[esp+68]
|
|
push eax
|
|
lea eax, DWORD PTR $T18266[esp+72]
|
|
push eax
|
|
lea eax, DWORD PTR $T18265[esp+76]
|
|
push eax
|
|
call ??0Matrix@@QAE@ABUvec4@@000@Z ; Matrix::Matrix
|
|
mov eax, DWORD PTR ___$ReturnUdt$[ebp]
|
|
|
|
; 561 : }
|
|
|
|
mov esp, ebp
|
|
pop ebp
|
|
ret 0
|
|
?translate@Matrix@@SA?AU1@ABUvec4@@@Z ENDP ; Matrix::translate
|
|
compile ENDS
|
|
PUBLIC ?transpose@Matrix@@QAEXXZ ; Matrix::transpose
|
|
; Function compile flags: /Ogspy
|
|
compile SEGMENT
|
|
tv233 = -136 ; size = 4
|
|
tv236 = -132 ; size = 4
|
|
$T18275 = -128 ; size = 16
|
|
$T18274 = -112 ; size = 16
|
|
$T18273 = -96 ; size = 16
|
|
$T18276 = -80 ; size = 16
|
|
_lTemp$ = -64 ; size = 64
|
|
?transpose@Matrix@@QAEXXZ PROC ; Matrix::transpose
|
|
; _this$ = ecx
|
|
|
|
; 564 : {
|
|
|
|
push ebp
|
|
mov ebp, esp
|
|
and esp, -16 ; fffffff0H
|
|
sub esp, 148 ; 00000094H
|
|
push ebx
|
|
push esi
|
|
push edi
|
|
mov edi, ecx
|
|
|
|
; 565 : Matrix lTemp(
|
|
; 566 : vec4(r1.x, r2.x, r3.x, r4.x),
|
|
; 567 : vec4(r1.y, r2.y, r3.y, r4.y),
|
|
; 568 : vec4(r1.z, r2.z, r3.z, r4.z),
|
|
; 569 : vec4(r1.w, r2.w, r3.w, r4.w));
|
|
|
|
fld DWORD PTR [edi+12]
|
|
lea ebx, DWORD PTR [edi+16]
|
|
fstp DWORD PTR $T18276[esp+160]
|
|
lea eax, DWORD PTR [edi+32]
|
|
fld DWORD PTR [edi+28]
|
|
mov DWORD PTR tv233[esp+160], eax
|
|
fstp DWORD PTR $T18276[esp+164]
|
|
lea ecx, DWORD PTR _lTemp$[esp+160]
|
|
fld DWORD PTR [edi+44]
|
|
fstp DWORD PTR $T18276[esp+168]
|
|
fld DWORD PTR [edi+60]
|
|
fstp DWORD PTR $T18276[esp+172]
|
|
fld DWORD PTR [edi+8]
|
|
fstp DWORD PTR $T18275[esp+160]
|
|
fld DWORD PTR [edi+24]
|
|
fstp DWORD PTR $T18275[esp+164]
|
|
fld DWORD PTR [edi+40]
|
|
fstp DWORD PTR $T18275[esp+168]
|
|
fld DWORD PTR [edi+56]
|
|
fstp DWORD PTR $T18275[esp+172]
|
|
fld DWORD PTR [edi+4]
|
|
fstp DWORD PTR $T18274[esp+160]
|
|
fld DWORD PTR [edi+20]
|
|
fstp DWORD PTR $T18274[esp+164]
|
|
fld DWORD PTR [edi+36]
|
|
fstp DWORD PTR $T18274[esp+168]
|
|
fld DWORD PTR [edi+52]
|
|
fstp DWORD PTR $T18274[esp+172]
|
|
fld DWORD PTR [edi]
|
|
fstp DWORD PTR $T18273[esp+160]
|
|
fld DWORD PTR [ebx]
|
|
fstp DWORD PTR $T18273[esp+164]
|
|
fld DWORD PTR [eax]
|
|
lea eax, DWORD PTR [edi+48]
|
|
mov DWORD PTR tv236[esp+160], eax
|
|
fstp DWORD PTR $T18273[esp+168]
|
|
fld DWORD PTR [eax]
|
|
lea eax, DWORD PTR $T18276[esp+160]
|
|
push eax
|
|
fstp DWORD PTR $T18273[esp+176]
|
|
lea eax, DWORD PTR $T18275[esp+164]
|
|
push eax
|
|
lea eax, DWORD PTR $T18274[esp+168]
|
|
push eax
|
|
lea eax, DWORD PTR $T18273[esp+172]
|
|
push eax
|
|
call ??0Matrix@@QAE@ABUvec4@@000@Z ; Matrix::Matrix
|
|
|
|
; 570 : r1 = lTemp.r1;
|
|
|
|
lea esi, DWORD PTR _lTemp$[esp+160]
|
|
movsd
|
|
movsd
|
|
movsd
|
|
movsd
|
|
|
|
; 571 : r2 = lTemp.r2;
|
|
|
|
mov edi, ebx
|
|
lea esi, DWORD PTR _lTemp$[esp+176]
|
|
movsd
|
|
movsd
|
|
movsd
|
|
movsd
|
|
|
|
; 572 : r3 = lTemp.r3;
|
|
|
|
mov edi, DWORD PTR tv233[esp+160]
|
|
lea esi, DWORD PTR _lTemp$[esp+192]
|
|
movsd
|
|
movsd
|
|
movsd
|
|
movsd
|
|
|
|
; 573 : r4 = lTemp.r4;
|
|
|
|
mov edi, DWORD PTR tv236[esp+160]
|
|
lea esi, DWORD PTR _lTemp$[esp+208]
|
|
movsd
|
|
movsd
|
|
movsd
|
|
movsd
|
|
|
|
; 574 : }
|
|
|
|
pop edi
|
|
pop esi
|
|
pop ebx
|
|
mov esp, ebp
|
|
pop ebp
|
|
ret 0
|
|
?transpose@Matrix@@QAEXXZ ENDP ; Matrix::transpose
|
|
compile ENDS
|
|
PUBLIC ?Determinante2x2@Matrix@@QAEMMMMM@Z ; Matrix::Determinante2x2
|
|
; Function compile flags: /Ogspy
|
|
compile SEGMENT
|
|
tv134 = 8 ; size = 4
|
|
_a1$ = 8 ; size = 4
|
|
_a2$ = 12 ; size = 4
|
|
_b1$ = 16 ; size = 4
|
|
_b2$ = 20 ; size = 4
|
|
?Determinante2x2@Matrix@@QAEMMMMM@Z PROC ; Matrix::Determinante2x2
|
|
; _this$ = ecx
|
|
|
|
; 577 : {
|
|
|
|
push ebp
|
|
mov ebp, esp
|
|
|
|
; 578 : return a1 * b2 - b1 * a2;
|
|
|
|
fld DWORD PTR _a1$[ebp]
|
|
fmul DWORD PTR _b2$[ebp]
|
|
fld DWORD PTR _a2$[ebp]
|
|
fmul DWORD PTR _b1$[ebp]
|
|
fsubp ST(1), ST(0)
|
|
fstp DWORD PTR tv134[ebp]
|
|
fld DWORD PTR tv134[ebp]
|
|
|
|
; 579 : }
|
|
|
|
pop ebp
|
|
ret 16 ; 00000010H
|
|
?Determinante2x2@Matrix@@QAEMMMMM@Z ENDP ; Matrix::Determinante2x2
|
|
compile ENDS
|
|
PUBLIC ?Determinante3x3@Matrix@@QAEMMMMMMMMMM@Z ; Matrix::Determinante3x3
|
|
; Function compile flags: /Ogspy
|
|
compile SEGMENT
|
|
tv220 = -4 ; size = 4
|
|
_a1$ = 8 ; size = 4
|
|
_a2$ = 12 ; size = 4
|
|
_a3$ = 16 ; size = 4
|
|
_b1$ = 20 ; size = 4
|
|
_b2$ = 24 ; size = 4
|
|
_b3$ = 28 ; size = 4
|
|
_c1$ = 32 ; size = 4
|
|
_c2$ = 36 ; size = 4
|
|
tv201 = 40 ; size = 4
|
|
tv195 = 40 ; size = 4
|
|
tv193 = 40 ; size = 4
|
|
_c3$ = 40 ; size = 4
|
|
?Determinante3x3@Matrix@@QAEMMMMMMMMMM@Z PROC ; Matrix::Determinante3x3
|
|
; _this$ = ecx
|
|
|
|
; 584 : {
|
|
|
|
push ebp
|
|
mov ebp, esp
|
|
push ecx
|
|
|
|
; 585 : return a1 * Determinante2x2( b2, b3, c2, c3 ) - b1 * Determinante2x2( a2, a3, c2, c3 ) + c1 * Determinante2x2( a2, a3, b2, b3 );
|
|
|
|
fld DWORD PTR _b2$[ebp]
|
|
fmul DWORD PTR _c3$[ebp]
|
|
fld DWORD PTR _b3$[ebp]
|
|
fmul DWORD PTR _c2$[ebp]
|
|
fsubp ST(1), ST(0)
|
|
fstp DWORD PTR tv220[ebp]
|
|
fld DWORD PTR tv220[ebp]
|
|
fmul DWORD PTR _a1$[ebp]
|
|
fld DWORD PTR _a2$[ebp]
|
|
fmul DWORD PTR _c3$[ebp]
|
|
fld DWORD PTR _a3$[ebp]
|
|
fmul DWORD PTR _c2$[ebp]
|
|
fsubp ST(1), ST(0)
|
|
fstp DWORD PTR tv201[ebp]
|
|
fld DWORD PTR tv201[ebp]
|
|
fmul DWORD PTR _b1$[ebp]
|
|
fsubp ST(1), ST(0)
|
|
fld DWORD PTR _a2$[ebp]
|
|
fmul DWORD PTR _b3$[ebp]
|
|
fld DWORD PTR _a3$[ebp]
|
|
fmul DWORD PTR _b2$[ebp]
|
|
fsubp ST(1), ST(0)
|
|
fstp DWORD PTR tv195[ebp]
|
|
fld DWORD PTR tv195[ebp]
|
|
fmul DWORD PTR _c1$[ebp]
|
|
faddp ST(1), ST(0)
|
|
fstp DWORD PTR tv193[ebp]
|
|
fld DWORD PTR tv193[ebp]
|
|
|
|
; 586 : }
|
|
|
|
leave
|
|
ret 36 ; 00000024H
|
|
?Determinante3x3@Matrix@@QAEMMMMMMMMMM@Z ENDP ; Matrix::Determinante3x3
|
|
compile ENDS
|
|
PUBLIC ?inverse@Matrix@@QAEXXZ ; Matrix::inverse
|
|
; Function compile flags: /Ogspy
|
|
compile SEGMENT
|
|
_lf_Det$ = -68 ; size = 4
|
|
_lResult$ = -64 ; size = 64
|
|
?inverse@Matrix@@QAEXXZ PROC ; Matrix::inverse
|
|
; _this$ = ecx
|
|
|
|
; 589 : {
|
|
|
|
push ebp
|
|
mov ebp, esp
|
|
and esp, -16 ; fffffff0H
|
|
sub esp, 72 ; 00000048H
|
|
push esi
|
|
mov edx, ecx
|
|
push edi
|
|
|
|
; 590 : Matrix lResult;
|
|
|
|
lea ecx, DWORD PTR _lResult$[esp+80]
|
|
call ??0Matrix@@QAE@XZ ; Matrix::Matrix
|
|
|
|
; 591 : lResult.m[0] = Determinante3x3( m[5], m[9], m[13], m[6], m[10], m[14], m[7], m[11], m[15] );
|
|
|
|
fld DWORD PTR [edx+60]
|
|
sub esp, 36 ; 00000024H
|
|
fstp DWORD PTR [esp+32]
|
|
mov ecx, edx
|
|
fld DWORD PTR [edx+44]
|
|
fstp DWORD PTR [esp+28]
|
|
fld DWORD PTR [edx+28]
|
|
fstp DWORD PTR [esp+24]
|
|
fld DWORD PTR [edx+56]
|
|
fstp DWORD PTR [esp+20]
|
|
fld DWORD PTR [edx+40]
|
|
fstp DWORD PTR [esp+16]
|
|
fld DWORD PTR [edx+24]
|
|
fstp DWORD PTR [esp+12]
|
|
fld DWORD PTR [edx+52]
|
|
fstp DWORD PTR [esp+8]
|
|
fld DWORD PTR [edx+36]
|
|
fstp DWORD PTR [esp+4]
|
|
fld DWORD PTR [edx+20]
|
|
fstp DWORD PTR [esp]
|
|
call ?Determinante3x3@Matrix@@QAEMMMMMMMMMM@Z ; Matrix::Determinante3x3
|
|
fstp DWORD PTR _lResult$[esp+80]
|
|
|
|
; 592 : lResult.m[4] = -Determinante3x3( m[4], m[8], m[12], m[6], m[10], m[14], m[7], m[11], m[15] );
|
|
|
|
sub esp, 36 ; 00000024H
|
|
fld DWORD PTR [edx+60]
|
|
fstp DWORD PTR [esp+32]
|
|
fld DWORD PTR [edx+44]
|
|
fstp DWORD PTR [esp+28]
|
|
fld DWORD PTR [edx+28]
|
|
fstp DWORD PTR [esp+24]
|
|
fld DWORD PTR [edx+56]
|
|
fstp DWORD PTR [esp+20]
|
|
fld DWORD PTR [edx+40]
|
|
fstp DWORD PTR [esp+16]
|
|
fld DWORD PTR [edx+24]
|
|
fstp DWORD PTR [esp+12]
|
|
fld DWORD PTR [edx+48]
|
|
fstp DWORD PTR [esp+8]
|
|
fld DWORD PTR [edx+32]
|
|
fstp DWORD PTR [esp+4]
|
|
fld DWORD PTR [edx+16]
|
|
fstp DWORD PTR [esp]
|
|
call ?Determinante3x3@Matrix@@QAEMMMMMMMMMM@Z ; Matrix::Determinante3x3
|
|
fchs
|
|
|
|
; 593 : lResult.m[8] = Determinante3x3( m[4], m[8], m[12], m[5], m[9], m[13], m[7], m[11], m[15] );
|
|
|
|
sub esp, 36 ; 00000024H
|
|
fstp DWORD PTR _lResult$[esp+132]
|
|
fld DWORD PTR [edx+60]
|
|
fstp DWORD PTR [esp+32]
|
|
fld DWORD PTR [edx+44]
|
|
fstp DWORD PTR [esp+28]
|
|
fld DWORD PTR [edx+28]
|
|
fstp DWORD PTR [esp+24]
|
|
fld DWORD PTR [edx+52]
|
|
fstp DWORD PTR [esp+20]
|
|
fld DWORD PTR [edx+36]
|
|
fstp DWORD PTR [esp+16]
|
|
fld DWORD PTR [edx+20]
|
|
fstp DWORD PTR [esp+12]
|
|
fld DWORD PTR [edx+48]
|
|
fstp DWORD PTR [esp+8]
|
|
fld DWORD PTR [edx+32]
|
|
fstp DWORD PTR [esp+4]
|
|
fld DWORD PTR [edx+16]
|
|
fstp DWORD PTR [esp]
|
|
call ?Determinante3x3@Matrix@@QAEMMMMMMMMMM@Z ; Matrix::Determinante3x3
|
|
fstp DWORD PTR _lResult$[esp+112]
|
|
|
|
; 594 : lResult.m[12] = -Determinante3x3( m[4], m[8], m[12], m[5], m[9], m[13], m[6], m[10], m[14] );
|
|
|
|
sub esp, 36 ; 00000024H
|
|
fld DWORD PTR [edx+56]
|
|
fstp DWORD PTR [esp+32]
|
|
fld DWORD PTR [edx+40]
|
|
fstp DWORD PTR [esp+28]
|
|
fld DWORD PTR [edx+24]
|
|
fstp DWORD PTR [esp+24]
|
|
fld DWORD PTR [edx+52]
|
|
fstp DWORD PTR [esp+20]
|
|
fld DWORD PTR [edx+36]
|
|
fstp DWORD PTR [esp+16]
|
|
fld DWORD PTR [edx+20]
|
|
fstp DWORD PTR [esp+12]
|
|
fld DWORD PTR [edx+48]
|
|
fstp DWORD PTR [esp+8]
|
|
fld DWORD PTR [edx+32]
|
|
fstp DWORD PTR [esp+4]
|
|
fld DWORD PTR [edx+16]
|
|
fstp DWORD PTR [esp]
|
|
call ?Determinante3x3@Matrix@@QAEMMMMMMMMMM@Z ; Matrix::Determinante3x3
|
|
fchs
|
|
|
|
; 595 :
|
|
; 596 : lResult.m[1] = -Determinante3x3( m[1], m[9], m[13], m[2], m[10], m[14], m[3], m[11], m[15] );
|
|
|
|
sub esp, 36 ; 00000024H
|
|
fstp DWORD PTR _lResult$[esp+164]
|
|
fld DWORD PTR [edx+60]
|
|
fstp DWORD PTR [esp+32]
|
|
fld DWORD PTR [edx+44]
|
|
fstp DWORD PTR [esp+28]
|
|
fld DWORD PTR [edx+12]
|
|
fstp DWORD PTR [esp+24]
|
|
fld DWORD PTR [edx+56]
|
|
fstp DWORD PTR [esp+20]
|
|
fld DWORD PTR [edx+40]
|
|
fstp DWORD PTR [esp+16]
|
|
fld DWORD PTR [edx+8]
|
|
fstp DWORD PTR [esp+12]
|
|
fld DWORD PTR [edx+52]
|
|
fstp DWORD PTR [esp+8]
|
|
fld DWORD PTR [edx+36]
|
|
fstp DWORD PTR [esp+4]
|
|
fld DWORD PTR [edx+4]
|
|
fstp DWORD PTR [esp]
|
|
call ?Determinante3x3@Matrix@@QAEMMMMMMMMMM@Z ; Matrix::Determinante3x3
|
|
fchs
|
|
|
|
; 597 : lResult.m[5] = Determinante3x3( m[0], m[8], m[12], m[2], m[10], m[14], m[3], m[11], m[15] );
|
|
|
|
sub esp, 36 ; 00000024H
|
|
fstp DWORD PTR _lResult$[esp+120]
|
|
fld DWORD PTR [edx+60]
|
|
fstp DWORD PTR [esp+32]
|
|
fld DWORD PTR [edx+44]
|
|
fstp DWORD PTR [esp+28]
|
|
fld DWORD PTR [edx+12]
|
|
fstp DWORD PTR [esp+24]
|
|
fld DWORD PTR [edx+56]
|
|
fstp DWORD PTR [esp+20]
|
|
fld DWORD PTR [edx+40]
|
|
fstp DWORD PTR [esp+16]
|
|
fld DWORD PTR [edx+8]
|
|
fstp DWORD PTR [esp+12]
|
|
fld DWORD PTR [edx+48]
|
|
fstp DWORD PTR [esp+8]
|
|
fld DWORD PTR [edx+32]
|
|
fstp DWORD PTR [esp+4]
|
|
fld DWORD PTR [edx]
|
|
fstp DWORD PTR [esp]
|
|
call ?Determinante3x3@Matrix@@QAEMMMMMMMMMM@Z ; Matrix::Determinante3x3
|
|
fstp DWORD PTR _lResult$[esp+100]
|
|
|
|
; 598 : lResult.m[9] = -Determinante3x3( m[0], m[8], m[12], m[1], m[9], m[13], m[3], m[11], m[15] );
|
|
|
|
sub esp, 36 ; 00000024H
|
|
fld DWORD PTR [edx+60]
|
|
fstp DWORD PTR [esp+32]
|
|
fld DWORD PTR [edx+44]
|
|
fstp DWORD PTR [esp+28]
|
|
fld DWORD PTR [edx+12]
|
|
fstp DWORD PTR [esp+24]
|
|
fld DWORD PTR [edx+52]
|
|
fstp DWORD PTR [esp+20]
|
|
fld DWORD PTR [edx+36]
|
|
fstp DWORD PTR [esp+16]
|
|
fld DWORD PTR [edx+4]
|
|
fstp DWORD PTR [esp+12]
|
|
fld DWORD PTR [edx+48]
|
|
fstp DWORD PTR [esp+8]
|
|
fld DWORD PTR [edx+32]
|
|
fstp DWORD PTR [esp+4]
|
|
fld DWORD PTR [edx]
|
|
fstp DWORD PTR [esp]
|
|
call ?Determinante3x3@Matrix@@QAEMMMMMMMMMM@Z ; Matrix::Determinante3x3
|
|
fchs
|
|
|
|
; 599 : lResult.m[13] = Determinante3x3( m[0], m[8], m[12], m[1], m[9], m[13], m[2], m[10], m[14] );
|
|
|
|
sub esp, 36 ; 00000024H
|
|
fstp DWORD PTR _lResult$[esp+152]
|
|
fld DWORD PTR [edx+56]
|
|
fstp DWORD PTR [esp+32]
|
|
fld DWORD PTR [edx+40]
|
|
fstp DWORD PTR [esp+28]
|
|
fld DWORD PTR [edx+8]
|
|
fstp DWORD PTR [esp+24]
|
|
fld DWORD PTR [edx+52]
|
|
fstp DWORD PTR [esp+20]
|
|
fld DWORD PTR [edx+36]
|
|
fstp DWORD PTR [esp+16]
|
|
fld DWORD PTR [edx+4]
|
|
fstp DWORD PTR [esp+12]
|
|
fld DWORD PTR [edx+48]
|
|
fstp DWORD PTR [esp+8]
|
|
fld DWORD PTR [edx+32]
|
|
fstp DWORD PTR [esp+4]
|
|
fld DWORD PTR [edx]
|
|
fstp DWORD PTR [esp]
|
|
call ?Determinante3x3@Matrix@@QAEMMMMMMMMMM@Z ; Matrix::Determinante3x3
|
|
fstp DWORD PTR _lResult$[esp+132]
|
|
|
|
; 600 :
|
|
; 601 : lResult.m[2] = Determinante3x3( m[1], m[5], m[13], m[2], m[6], m[14], m[3], m[7], m[15] );
|
|
|
|
sub esp, 36 ; 00000024H
|
|
fld DWORD PTR [edx+60]
|
|
fstp DWORD PTR [esp+32]
|
|
fld DWORD PTR [edx+28]
|
|
fstp DWORD PTR [esp+28]
|
|
fld DWORD PTR [edx+12]
|
|
fstp DWORD PTR [esp+24]
|
|
fld DWORD PTR [edx+56]
|
|
fstp DWORD PTR [esp+20]
|
|
fld DWORD PTR [edx+24]
|
|
fstp DWORD PTR [esp+16]
|
|
fld DWORD PTR [edx+8]
|
|
fstp DWORD PTR [esp+12]
|
|
fld DWORD PTR [edx+52]
|
|
fstp DWORD PTR [esp+8]
|
|
fld DWORD PTR [edx+20]
|
|
fstp DWORD PTR [esp+4]
|
|
fld DWORD PTR [edx+4]
|
|
fstp DWORD PTR [esp]
|
|
call ?Determinante3x3@Matrix@@QAEMMMMMMMMMM@Z ; Matrix::Determinante3x3
|
|
fstp DWORD PTR _lResult$[esp+88]
|
|
|
|
; 602 : lResult.m[6] = -Determinante3x3( m[0], m[4], m[12], m[2], m[6], m[14], m[3], m[7], m[15] );
|
|
|
|
sub esp, 36 ; 00000024H
|
|
fld DWORD PTR [edx+60]
|
|
fstp DWORD PTR [esp+32]
|
|
fld DWORD PTR [edx+28]
|
|
fstp DWORD PTR [esp+28]
|
|
fld DWORD PTR [edx+12]
|
|
fstp DWORD PTR [esp+24]
|
|
fld DWORD PTR [edx+56]
|
|
fstp DWORD PTR [esp+20]
|
|
fld DWORD PTR [edx+24]
|
|
fstp DWORD PTR [esp+16]
|
|
fld DWORD PTR [edx+8]
|
|
fstp DWORD PTR [esp+12]
|
|
fld DWORD PTR [edx+48]
|
|
fstp DWORD PTR [esp+8]
|
|
fld DWORD PTR [edx+16]
|
|
fstp DWORD PTR [esp+4]
|
|
fld DWORD PTR [edx]
|
|
fstp DWORD PTR [esp]
|
|
call ?Determinante3x3@Matrix@@QAEMMMMMMMMMM@Z ; Matrix::Determinante3x3
|
|
fchs
|
|
|
|
; 603 : lResult.m[10] = Determinante3x3( m[0], m[4], m[12], m[1], m[5], m[13], m[3], m[7], m[15] );
|
|
|
|
sub esp, 36 ; 00000024H
|
|
fstp DWORD PTR _lResult$[esp+140]
|
|
fld DWORD PTR [edx+60]
|
|
fstp DWORD PTR [esp+32]
|
|
fld DWORD PTR [edx+28]
|
|
fstp DWORD PTR [esp+28]
|
|
fld DWORD PTR [edx+12]
|
|
fstp DWORD PTR [esp+24]
|
|
fld DWORD PTR [edx+52]
|
|
fstp DWORD PTR [esp+20]
|
|
fld DWORD PTR [edx+20]
|
|
fstp DWORD PTR [esp+16]
|
|
fld DWORD PTR [edx+4]
|
|
fstp DWORD PTR [esp+12]
|
|
fld DWORD PTR [edx+48]
|
|
fstp DWORD PTR [esp+8]
|
|
fld DWORD PTR [edx+16]
|
|
fstp DWORD PTR [esp+4]
|
|
fld DWORD PTR [edx]
|
|
fstp DWORD PTR [esp]
|
|
call ?Determinante3x3@Matrix@@QAEMMMMMMMMMM@Z ; Matrix::Determinante3x3
|
|
fstp DWORD PTR _lResult$[esp+120]
|
|
|
|
; 604 : lResult.m[14] = -Determinante3x3( m[0], m[4], m[12], m[1], m[5], m[13], m[2], m[6], m[14] );
|
|
|
|
sub esp, 36 ; 00000024H
|
|
fld DWORD PTR [edx+56]
|
|
fstp DWORD PTR [esp+32]
|
|
fld DWORD PTR [edx+24]
|
|
fstp DWORD PTR [esp+28]
|
|
fld DWORD PTR [edx+8]
|
|
fstp DWORD PTR [esp+24]
|
|
fld DWORD PTR [edx+52]
|
|
fstp DWORD PTR [esp+20]
|
|
fld DWORD PTR [edx+20]
|
|
fstp DWORD PTR [esp+16]
|
|
fld DWORD PTR [edx+4]
|
|
fstp DWORD PTR [esp+12]
|
|
fld DWORD PTR [edx+48]
|
|
fstp DWORD PTR [esp+8]
|
|
fld DWORD PTR [edx+16]
|
|
fstp DWORD PTR [esp+4]
|
|
fld DWORD PTR [edx]
|
|
fstp DWORD PTR [esp]
|
|
call ?Determinante3x3@Matrix@@QAEMMMMMMMMMM@Z ; Matrix::Determinante3x3
|
|
fchs
|
|
|
|
; 605 :
|
|
; 606 : lResult.m[3] = -Determinante3x3( m[1], m[5], m[9], m[2], m[6], m[10], m[3], m[7], m[11] );
|
|
|
|
sub esp, 36 ; 00000024H
|
|
fstp DWORD PTR _lResult$[esp+172]
|
|
fld DWORD PTR [edx+44]
|
|
fstp DWORD PTR [esp+32]
|
|
fld DWORD PTR [edx+28]
|
|
fstp DWORD PTR [esp+28]
|
|
fld DWORD PTR [edx+12]
|
|
fstp DWORD PTR [esp+24]
|
|
fld DWORD PTR [edx+40]
|
|
fstp DWORD PTR [esp+20]
|
|
fld DWORD PTR [edx+24]
|
|
fstp DWORD PTR [esp+16]
|
|
fld DWORD PTR [edx+8]
|
|
fstp DWORD PTR [esp+12]
|
|
fld DWORD PTR [edx+36]
|
|
fstp DWORD PTR [esp+8]
|
|
fld DWORD PTR [edx+20]
|
|
fstp DWORD PTR [esp+4]
|
|
fld DWORD PTR [edx+4]
|
|
fstp DWORD PTR [esp]
|
|
call ?Determinante3x3@Matrix@@QAEMMMMMMMMMM@Z ; Matrix::Determinante3x3
|
|
fchs
|
|
|
|
; 607 : lResult.m[7] = Determinante3x3( m[0], m[4], m[8], m[2], m[6], m[10], m[3], m[7], m[11] );
|
|
|
|
sub esp, 36 ; 00000024H
|
|
fstp DWORD PTR _lResult$[esp+128]
|
|
fld DWORD PTR [edx+44]
|
|
fstp DWORD PTR [esp+32]
|
|
fld DWORD PTR [edx+28]
|
|
fstp DWORD PTR [esp+28]
|
|
fld DWORD PTR [edx+12]
|
|
fstp DWORD PTR [esp+24]
|
|
fld DWORD PTR [edx+40]
|
|
fstp DWORD PTR [esp+20]
|
|
fld DWORD PTR [edx+24]
|
|
fstp DWORD PTR [esp+16]
|
|
fld DWORD PTR [edx+8]
|
|
fstp DWORD PTR [esp+12]
|
|
fld DWORD PTR [edx+32]
|
|
fstp DWORD PTR [esp+8]
|
|
fld DWORD PTR [edx+16]
|
|
fstp DWORD PTR [esp+4]
|
|
fld DWORD PTR [edx]
|
|
fstp DWORD PTR [esp]
|
|
call ?Determinante3x3@Matrix@@QAEMMMMMMMMMM@Z ; Matrix::Determinante3x3
|
|
fstp DWORD PTR _lResult$[esp+108]
|
|
|
|
; 608 : lResult.m[11] = -Determinante3x3( m[0], m[4], m[8], m[1], m[5], m[9], m[3], m[7], m[11] );
|
|
|
|
sub esp, 36 ; 00000024H
|
|
fld DWORD PTR [edx+44]
|
|
fstp DWORD PTR [esp+32]
|
|
fld DWORD PTR [edx+28]
|
|
fstp DWORD PTR [esp+28]
|
|
fld DWORD PTR [edx+12]
|
|
fstp DWORD PTR [esp+24]
|
|
fld DWORD PTR [edx+36]
|
|
fstp DWORD PTR [esp+20]
|
|
fld DWORD PTR [edx+20]
|
|
fstp DWORD PTR [esp+16]
|
|
fld DWORD PTR [edx+4]
|
|
fstp DWORD PTR [esp+12]
|
|
fld DWORD PTR [edx+32]
|
|
fstp DWORD PTR [esp+8]
|
|
fld DWORD PTR [edx+16]
|
|
fstp DWORD PTR [esp+4]
|
|
fld DWORD PTR [edx]
|
|
fstp DWORD PTR [esp]
|
|
call ?Determinante3x3@Matrix@@QAEMMMMMMMMMM@Z ; Matrix::Determinante3x3
|
|
fchs
|
|
|
|
; 609 : lResult.m[15] = Determinante3x3( m[0], m[4], m[8], m[1], m[5], m[9], m[2], m[6], m[10] );
|
|
|
|
sub esp, 36 ; 00000024H
|
|
fstp DWORD PTR _lResult$[esp+160]
|
|
fld DWORD PTR [edx+40]
|
|
fstp DWORD PTR [esp+32]
|
|
fld DWORD PTR [edx+24]
|
|
fstp DWORD PTR [esp+28]
|
|
fld DWORD PTR [edx+8]
|
|
fstp DWORD PTR [esp+24]
|
|
fld DWORD PTR [edx+36]
|
|
fstp DWORD PTR [esp+20]
|
|
fld DWORD PTR [edx+20]
|
|
fstp DWORD PTR [esp+16]
|
|
fld DWORD PTR [edx+4]
|
|
fstp DWORD PTR [esp+12]
|
|
fld DWORD PTR [edx+32]
|
|
fstp DWORD PTR [esp+8]
|
|
fld DWORD PTR [edx+16]
|
|
fstp DWORD PTR [esp+4]
|
|
fld DWORD PTR [edx]
|
|
fstp DWORD PTR [esp]
|
|
call ?Determinante3x3@Matrix@@QAEMMMMMMMMMM@Z ; Matrix::Determinante3x3
|
|
fstp DWORD PTR _lResult$[esp+140]
|
|
|
|
; 610 :
|
|
; 611 : float lf_Det = (m[0] * lResult.m[0]) + (m[1] * lResult.m[4]) + (m[2] * lResult.m[8]) + (m[3] * lResult.m[12]);
|
|
|
|
fld DWORD PTR [edx]
|
|
fmul DWORD PTR _lResult$[esp+80]
|
|
fld DWORD PTR _lResult$[esp+96]
|
|
fmul DWORD PTR [edx+4]
|
|
faddp ST(1), ST(0)
|
|
fld DWORD PTR [edx+8]
|
|
fmul DWORD PTR _lResult$[esp+112]
|
|
faddp ST(1), ST(0)
|
|
fld DWORD PTR [edx+12]
|
|
fmul DWORD PTR _lResult$[esp+128]
|
|
faddp ST(1), ST(0)
|
|
fstp DWORD PTR _lf_Det$[esp+80]
|
|
|
|
; 612 : if (lf_Det == 0.0f)
|
|
|
|
fld DWORD PTR _lf_Det$[esp+80]
|
|
fldz
|
|
fucompp
|
|
fnstsw ax
|
|
test ah, 68 ; 00000044H
|
|
jnp $LN2@inverse
|
|
|
|
; 613 : return; // matrix is singular
|
|
; 614 :
|
|
; 615 : lf_Det = 1.0f / lf_Det;
|
|
|
|
fld DWORD PTR _lf_Det$[esp+80]
|
|
|
|
; 616 :
|
|
; 617 : *this = lResult;
|
|
|
|
push 16 ; 00000010H
|
|
fld1
|
|
pop ecx
|
|
fdivrp ST(1), ST(0)
|
|
lea esi, DWORD PTR _lResult$[esp+80]
|
|
mov edi, edx
|
|
rep movsd
|
|
fstp DWORD PTR _lf_Det$[esp+80]
|
|
|
|
; 618 :
|
|
; 619 : m[0] *= lf_Det;
|
|
|
|
fld DWORD PTR [edx]
|
|
fld DWORD PTR _lf_Det$[esp+80]
|
|
fld ST(0)
|
|
fmulp ST(2), ST(0)
|
|
fxch ST(1)
|
|
fstp DWORD PTR [edx]
|
|
|
|
; 620 : m[4] *= lf_Det;
|
|
|
|
fld DWORD PTR [edx+16]
|
|
fld ST(1)
|
|
fmulp ST(1), ST(0)
|
|
fstp DWORD PTR [edx+16]
|
|
|
|
; 621 : m[8] *= lf_Det;
|
|
|
|
fld DWORD PTR [edx+32]
|
|
fld ST(1)
|
|
fmulp ST(1), ST(0)
|
|
fstp DWORD PTR [edx+32]
|
|
|
|
; 622 : m[12] *= lf_Det;
|
|
|
|
fld ST(0)
|
|
fmul DWORD PTR [edx+48]
|
|
fstp DWORD PTR [edx+48]
|
|
|
|
; 623 :
|
|
; 624 : m[1] *= lf_Det;
|
|
|
|
fld ST(0)
|
|
fmul DWORD PTR [edx+4]
|
|
fstp DWORD PTR [edx+4]
|
|
|
|
; 625 : m[5] *= lf_Det;
|
|
|
|
fld ST(0)
|
|
fmul DWORD PTR [edx+20]
|
|
fstp DWORD PTR [edx+20]
|
|
|
|
; 626 : m[9] *= lf_Det;
|
|
|
|
fld DWORD PTR [edx+36]
|
|
fld ST(1)
|
|
fmulp ST(1), ST(0)
|
|
fstp DWORD PTR [edx+36]
|
|
|
|
; 627 : m[13] *= lf_Det;
|
|
|
|
fld DWORD PTR [edx+52]
|
|
fld ST(1)
|
|
fmulp ST(1), ST(0)
|
|
fstp DWORD PTR [edx+52]
|
|
|
|
; 628 :
|
|
; 629 : m[2] *= lf_Det;
|
|
|
|
fld DWORD PTR [edx+8]
|
|
fld ST(1)
|
|
fmulp ST(1), ST(0)
|
|
fstp DWORD PTR [edx+8]
|
|
|
|
; 630 : m[6] *= lf_Det;
|
|
|
|
fld DWORD PTR [edx+24]
|
|
fld ST(1)
|
|
fmulp ST(1), ST(0)
|
|
fstp DWORD PTR [edx+24]
|
|
|
|
; 631 : m[10] *= lf_Det;
|
|
|
|
fld ST(0)
|
|
fmul DWORD PTR [edx+40]
|
|
fstp DWORD PTR [edx+40]
|
|
|
|
; 632 : m[14] *= lf_Det;
|
|
|
|
fld DWORD PTR [edx+56]
|
|
fld ST(1)
|
|
fmulp ST(1), ST(0)
|
|
fstp DWORD PTR [edx+56]
|
|
|
|
; 633 :
|
|
; 634 : m[3] *= lf_Det;
|
|
|
|
fld DWORD PTR [edx+12]
|
|
fld ST(1)
|
|
fmulp ST(1), ST(0)
|
|
fstp DWORD PTR [edx+12]
|
|
|
|
; 635 : m[7] *= lf_Det;
|
|
|
|
fld DWORD PTR [edx+28]
|
|
fld ST(1)
|
|
fmulp ST(1), ST(0)
|
|
fstp DWORD PTR [edx+28]
|
|
|
|
; 636 : m[11] *= lf_Det;
|
|
|
|
fld DWORD PTR [edx+44]
|
|
fld ST(1)
|
|
fmulp ST(1), ST(0)
|
|
fstp DWORD PTR [edx+44]
|
|
|
|
; 637 : m[15] *= lf_Det;
|
|
|
|
fmul DWORD PTR [edx+60]
|
|
fstp DWORD PTR [edx+60]
|
|
$LN2@inverse:
|
|
|
|
; 638 : }
|
|
|
|
pop edi
|
|
pop esi
|
|
mov esp, ebp
|
|
pop ebp
|
|
ret 0
|
|
?inverse@Matrix@@QAEXXZ ENDP ; Matrix::inverse
|
|
compile ENDS
|
|
PUBLIC __real@bf800000
|
|
PUBLIC __real@3fe0000000000000
|
|
PUBLIC ?Perspective@Matrix@@SA?AU1@MMMM@Z ; Matrix::Perspective
|
|
; COMDAT __real@bf800000
|
|
CONST SEGMENT
|
|
__real@bf800000 DD 0bf800000r ; -1
|
|
CONST ENDS
|
|
; COMDAT __real@3fe0000000000000
|
|
CONST SEGMENT
|
|
__real@3fe0000000000000 DQ 03fe0000000000000r ; 0.5
|
|
; Function compile flags: /Ogspy
|
|
CONST ENDS
|
|
compile SEGMENT
|
|
_m$ = -72 ; size = 4
|
|
tv233 = -68 ; size = 4
|
|
_f$ = -68 ; size = 4
|
|
$T18315 = -64 ; size = 16
|
|
$T18314 = -48 ; size = 16
|
|
$T18313 = -32 ; size = 16
|
|
$T18312 = -16 ; size = 16
|
|
___$ReturnUdt$ = 8 ; size = 4
|
|
_fov$ = 12 ; size = 4
|
|
_aspectRatio$ = 16 ; size = 4
|
|
_zNear$ = 20 ; size = 4
|
|
_zFar$ = 24 ; size = 4
|
|
?Perspective@Matrix@@SA?AU1@MMMM@Z PROC ; Matrix::Perspective
|
|
|
|
; 641 : {
|
|
|
|
push ebp
|
|
mov ebp, esp
|
|
and esp, -16 ; fffffff0H
|
|
sub esp, 80 ; 00000050H
|
|
|
|
; 642 : float f = 1.0f / tan(fov / 2.0f);
|
|
|
|
fld DWORD PTR _fov$[ebp]
|
|
push ecx
|
|
fmul QWORD PTR __real@3fe0000000000000
|
|
fstp DWORD PTR tv233[esp+84]
|
|
fld DWORD PTR tv233[esp+84]
|
|
fstp DWORD PTR [esp]
|
|
call _tan
|
|
fld1
|
|
|
|
; 643 : float m = zNear - zFar;
|
|
; 644 : Matrix M(
|
|
; 645 : vec4(f / aspectRatio, 0, 0, 0),
|
|
; 646 : vec4(0, f, 0, 0),
|
|
; 647 : vec4(0, 0, (zFar + zNear) / m, (2 * zFar * zNear) / m),
|
|
; 648 : vec4(0, 0, -1, 0));
|
|
|
|
mov ecx, DWORD PTR ___$ReturnUdt$[ebp]
|
|
fdivrp ST(1), ST(0)
|
|
add esp, 4
|
|
lea eax, DWORD PTR $T18315[esp+80]
|
|
push eax
|
|
lea eax, DWORD PTR $T18314[esp+84]
|
|
push eax
|
|
lea eax, DWORD PTR $T18313[esp+88]
|
|
push eax
|
|
lea eax, DWORD PTR $T18312[esp+92]
|
|
push eax
|
|
fstp DWORD PTR _f$[esp+96]
|
|
fld DWORD PTR _zNear$[ebp]
|
|
fsub DWORD PTR _zFar$[ebp]
|
|
fstp DWORD PTR _m$[esp+96]
|
|
fldz
|
|
fst DWORD PTR $T18315[esp+96]
|
|
fst DWORD PTR $T18315[esp+100]
|
|
fld DWORD PTR __real@bf800000
|
|
fstp DWORD PTR $T18315[esp+104]
|
|
fst DWORD PTR $T18315[esp+108]
|
|
fst DWORD PTR $T18314[esp+96]
|
|
fst DWORD PTR $T18314[esp+100]
|
|
fld DWORD PTR _zNear$[ebp]
|
|
fadd DWORD PTR _zFar$[ebp]
|
|
fdiv DWORD PTR _m$[esp+96]
|
|
fstp DWORD PTR $T18314[esp+104]
|
|
fld DWORD PTR _zFar$[ebp]
|
|
fadd ST(0), ST(0)
|
|
fmul DWORD PTR _zNear$[ebp]
|
|
fdiv DWORD PTR _m$[esp+96]
|
|
fstp DWORD PTR $T18314[esp+108]
|
|
fst DWORD PTR $T18313[esp+96]
|
|
fld DWORD PTR _f$[esp+96]
|
|
fstp DWORD PTR $T18313[esp+100]
|
|
fst DWORD PTR $T18313[esp+104]
|
|
fst DWORD PTR $T18313[esp+108]
|
|
fld DWORD PTR _f$[esp+96]
|
|
fdiv DWORD PTR _aspectRatio$[ebp]
|
|
fstp DWORD PTR $T18312[esp+96]
|
|
fst DWORD PTR $T18312[esp+100]
|
|
fst DWORD PTR $T18312[esp+104]
|
|
fstp DWORD PTR $T18312[esp+108]
|
|
call ??0Matrix@@QAE@ABUvec4@@000@Z ; Matrix::Matrix
|
|
|
|
; 649 : return M;
|
|
|
|
mov eax, DWORD PTR ___$ReturnUdt$[ebp]
|
|
|
|
; 650 : }
|
|
|
|
mov esp, ebp
|
|
pop ebp
|
|
ret 0
|
|
?Perspective@Matrix@@SA?AU1@MMMM@Z ENDP ; Matrix::Perspective
|
|
compile ENDS
|
|
PUBLIC ?LookAt@Matrix@@SA?AU1@AAUvec4@@00@Z ; Matrix::LookAt
|
|
; Function compile flags: /Ogspy
|
|
compile SEGMENT
|
|
$T18331 = -128 ; size = 16
|
|
_f$ = -128 ; size = 16
|
|
$T18332 = -112 ; size = 16
|
|
$T18330 = -112 ; size = 16
|
|
_u$ = -96 ; size = 16
|
|
$T18334 = -80 ; size = 16
|
|
_s$ = -80 ; size = 16
|
|
$T18324 = -80 ; size = 16
|
|
$T18335 = -64 ; size = 64
|
|
___$ReturnUdt$ = 8 ; size = 4
|
|
_eye$ = 12 ; size = 4
|
|
_center$ = 16 ; size = 4
|
|
_up$ = 20 ; size = 4
|
|
?LookAt@Matrix@@SA?AU1@AAUvec4@@00@Z PROC ; Matrix::LookAt
|
|
|
|
; 653 : {
|
|
|
|
push ebp
|
|
mov ebp, esp
|
|
and esp, -16 ; fffffff0H
|
|
sub esp, 132 ; 00000084H
|
|
|
|
; 654 : vec4 f = normalize(center - eye);
|
|
|
|
mov eax, DWORD PTR _center$[ebp]
|
|
movaps xmm1, XMMWORD PTR [eax]
|
|
push ebx
|
|
mov ebx, DWORD PTR _eye$[ebp]
|
|
subps xmm1, XMMWORD PTR [ebx]
|
|
push esi
|
|
push edi
|
|
lea eax, DWORD PTR $T18324[esp+144]
|
|
push eax
|
|
lea eax, DWORD PTR _f$[esp+148]
|
|
push eax
|
|
movaps XMMWORD PTR $T18324[esp+152], xmm1
|
|
call ?normalize@@YA?AUvec4@@ABU1@@Z ; normalize
|
|
|
|
; 655 : vec4 u = normalize(up);
|
|
|
|
push DWORD PTR _up$[ebp]
|
|
lea eax, DWORD PTR _u$[esp+156]
|
|
push eax
|
|
call ?normalize@@YA?AUvec4@@ABU1@@Z ; normalize
|
|
|
|
; 656 : vec4 s = cross(f, u);
|
|
|
|
lea eax, DWORD PTR _u$[esp+160]
|
|
push eax
|
|
lea eax, DWORD PTR _f$[esp+164]
|
|
push eax
|
|
lea eax, DWORD PTR _s$[esp+168]
|
|
push eax
|
|
call ?cross@@YA?AUvec4@@AAU1@0@Z ; cross
|
|
|
|
; 657 : u = cross(s, f);
|
|
|
|
lea eax, DWORD PTR _f$[esp+172]
|
|
push eax
|
|
lea eax, DWORD PTR _s$[esp+176]
|
|
push eax
|
|
lea eax, DWORD PTR $T18330[esp+180]
|
|
push eax
|
|
call ?cross@@YA?AUvec4@@AAU1@0@Z ; cross
|
|
|
|
; 658 : s[3] = u[3] = f[3] = 0;
|
|
|
|
fldz
|
|
|
|
; 659 : Matrix M(s, u, -f, vec4(0, 0, 0, 1));
|
|
|
|
movaps xmm0, XMMWORD PTR __xmm@0
|
|
fst DWORD PTR _f$[esp+196]
|
|
movaps xmm1, XMMWORD PTR _f$[esp+184]
|
|
mov ecx, DWORD PTR ___$ReturnUdt$[ebp]
|
|
mov esi, eax
|
|
lea edi, DWORD PTR _u$[esp+184]
|
|
movsd
|
|
movsd
|
|
movsd
|
|
add esp, 40 ; 00000028H
|
|
movsd
|
|
fst DWORD PTR _u$[esp+156]
|
|
fst DWORD PTR _s$[esp+156]
|
|
lea eax, DWORD PTR $T18332[esp+144]
|
|
fst DWORD PTR $T18332[esp+144]
|
|
push eax
|
|
fst DWORD PTR $T18332[esp+152]
|
|
lea eax, DWORD PTR $T18331[esp+148]
|
|
fstp DWORD PTR $T18332[esp+156]
|
|
fld1
|
|
push eax
|
|
lea eax, DWORD PTR _u$[esp+152]
|
|
fstp DWORD PTR $T18332[esp+164]
|
|
push eax
|
|
lea eax, DWORD PTR _s$[esp+156]
|
|
movaps xmm2, xmm0
|
|
mulps xmm1, xmm2
|
|
push eax
|
|
movaps XMMWORD PTR $T18331[esp+160], xmm1
|
|
call ??0Matrix@@QAE@ABUvec4@@000@Z ; Matrix::Matrix
|
|
|
|
; 660 : //M.transpose();
|
|
; 661 : M *= Matrix::translate(-eye);
|
|
|
|
movaps xmm1, XMMWORD PTR [ebx]
|
|
lea eax, DWORD PTR $T18334[esp+144]
|
|
push eax
|
|
lea eax, DWORD PTR $T18335[esp+148]
|
|
mulps xmm1, xmm0
|
|
push eax
|
|
movaps XMMWORD PTR $T18334[esp+152], xmm1
|
|
call ?translate@Matrix@@SA?AU1@ABUvec4@@@Z ; Matrix::translate
|
|
pop ecx
|
|
pop ecx
|
|
mov ecx, DWORD PTR ___$ReturnUdt$[ebp]
|
|
push eax
|
|
call ??XMatrix@@QAEXABU0@@Z ; Matrix::operator*=
|
|
|
|
; 662 : return M;
|
|
|
|
mov eax, DWORD PTR ___$ReturnUdt$[ebp]
|
|
|
|
; 663 : }
|
|
|
|
pop edi
|
|
pop esi
|
|
pop ebx
|
|
mov esp, ebp
|
|
pop ebp
|
|
ret 0
|
|
?LookAt@Matrix@@SA?AU1@AAUvec4@@00@Z ENDP ; Matrix::LookAt
|
|
compile ENDS
|
|
PUBLIC __real@4066800000000000
|
|
PUBLIC ??0Quaternion@@QAE@MMMM_N@Z ; Quaternion::Quaternion
|
|
; COMDAT __real@4066800000000000
|
|
CONST SEGMENT
|
|
__real@4066800000000000 DQ 04066800000000000r ; 180
|
|
; Function compile flags: /Ogspy
|
|
CONST ENDS
|
|
compile SEGMENT
|
|
_X$ = 8 ; size = 4
|
|
_Y$ = 12 ; size = 4
|
|
_Z$ = 16 ; size = 4
|
|
tv173 = 20 ; size = 4
|
|
$T19614 = 20 ; size = 4
|
|
$T19613 = 20 ; size = 4
|
|
_W$ = 20 ; size = 4
|
|
tv181 = 24 ; size = 4
|
|
tv177 = 24 ; size = 4
|
|
$T19622 = 24 ; size = 4
|
|
$T19623 = 24 ; size = 4
|
|
$T19609 = 24 ; size = 4
|
|
_ab_Rotation$ = 24 ; size = 1
|
|
??0Quaternion@@QAE@MMMM_N@Z PROC ; Quaternion::Quaternion
|
|
; _this$ = ecx
|
|
|
|
; 333 : if (ab_Rotation)
|
|
|
|
cmp BYTE PTR _ab_Rotation$[esp-4], 0
|
|
fld DWORD PTR _X$[esp-4]
|
|
fstp DWORD PTR [ecx]
|
|
fld DWORD PTR _Y$[esp-4]
|
|
fstp DWORD PTR [ecx+4]
|
|
fld DWORD PTR _Z$[esp-4]
|
|
fstp DWORD PTR [ecx+8]
|
|
fld DWORD PTR _W$[esp-4]
|
|
fstp DWORD PTR [ecx+12]
|
|
je SHORT $LN1@Quaternion
|
|
|
|
; 334 : {
|
|
; 335 : W *= pi();
|
|
|
|
fldpi
|
|
fstp DWORD PTR $T19609[esp-4]
|
|
|
|
; 336 : W /= 180.0;
|
|
|
|
fld DWORD PTR $T19609[esp-4]
|
|
fmul DWORD PTR _W$[esp-4]
|
|
fstp DWORD PTR tv181[esp-4]
|
|
fld DWORD PTR tv181[esp-4]
|
|
fdiv QWORD PTR __real@4066800000000000
|
|
fstp DWORD PTR _W$[esp-4]
|
|
|
|
; 337 : w = 0.0f;
|
|
|
|
fldz
|
|
fstp DWORD PTR [ecx+12]
|
|
|
|
; 338 : normalize();
|
|
|
|
call ?normalize@Quaternion@@QAEXXZ ; Quaternion::normalize
|
|
|
|
; 339 : _mm_store_ps(m, _mm_mul_ps(*this, _mm_set_ps1(sin(W / 2.0f))));
|
|
|
|
fld DWORD PTR _W$[esp-4]
|
|
fmul QWORD PTR __real@3fe0000000000000
|
|
fstp DWORD PTR tv177[esp-4]
|
|
fld DWORD PTR tv177[esp-4]
|
|
fstp DWORD PTR $T19613[esp-4]
|
|
fld DWORD PTR $T19613[esp-4]
|
|
fsin
|
|
movaps xmm1, XMMWORD PTR [ecx]
|
|
fstp DWORD PTR $T19614[esp-4]
|
|
fld DWORD PTR $T19614[esp-4]
|
|
fstp DWORD PTR tv173[esp-4]
|
|
movss xmm0, DWORD PTR tv173[esp-4]
|
|
|
|
; 340 : w = cos(W / 2.0f);
|
|
|
|
fld DWORD PTR tv177[esp-4]
|
|
shufps xmm0, xmm0, 0
|
|
mulps xmm1, xmm0
|
|
fstp DWORD PTR $T19622[esp-4]
|
|
movaps XMMWORD PTR [ecx], xmm1
|
|
fld DWORD PTR $T19622[esp-4]
|
|
fcos
|
|
fstp DWORD PTR $T19623[esp-4]
|
|
fld DWORD PTR $T19623[esp-4]
|
|
fstp DWORD PTR [ecx+12]
|
|
$LN1@Quaternion:
|
|
|
|
; 341 : }
|
|
; 342 : };
|
|
|
|
mov eax, ecx
|
|
ret 20 ; 00000014H
|
|
??0Quaternion@@QAE@MMMM_N@Z ENDP ; Quaternion::Quaternion
|
|
compile ENDS
|
|
END
|