; Listing generated by Microsoft (R) Optimizing Compiler Version 14.00.50727.42 

	TITLE	c:\Documents and Settings\Tobi\My Documents\Visual Studio 2005\Projects\Scimark2-AMD\source\Random.c
	.686P
	.XMM
	include listing.inc
	.model	flat

INCLUDELIB OLDNAMES

_m1	DD	07fffffffH
_m2	DD	010000H
PUBLIC	__real@3e00000000200000
_dm1	DQ	01H DUP (?)
;	COMDAT __real@3e00000000200000
; File c:\documents and settings\tobi\my documents\visual studio 2005\projects\scimark2-amd\source\random.c
CONST	SEGMENT
__real@3e00000000200000 DQ 03e00000000200000r	; 4.65661e-010
; Function compile flags: /Ogtpy
CONST	ENDS
_TEXT	SEGMENT
_initialize PROC
; _R$ = edi
; _seed$ = eax

; 110  : 
; 111  :     int jseed, k0, k1, j0, j1, iloop;
; 112  : 
; 113  :     dm1  = 1.0 / (double) m1; 
; 114  : 
; 115  :     R->seed = seed;
; 116  : 
; 117  :     if (seed < 0 ) seed = -seed;            /* seed = abs(seed) */  

	test	eax, eax
	movsd	xmm0, QWORD PTR __real@3e00000000200000
	movsd	QWORD PTR _dm1, xmm0
	mov	DWORD PTR [edi+68], eax
	jge	SHORT $LN5@initialize
	neg	eax
$LN5@initialize:

; 118  :     jseed = (seed < m1 ? seed : m1);        /* jseed = min(seed, m1) */

	cmp	eax, 2147483647				; 7fffffffH
	jl	SHORT $LN9@initialize
	mov	eax, 2147483647				; 7fffffffH
$LN9@initialize:

; 119  :     if (jseed % 2 == 0) --jseed;

	mov	ecx, eax
	and	ecx, -2147483647			; 80000001H
	jns	SHORT $LN12@initialize
	dec	ecx
	or	ecx, -2					; fffffffeH
	inc	ecx
$LN12@initialize:
	jne	SHORT $LN4@initialize
	sub	eax, 1
$LN4@initialize:

; 120  :     k0 = 9069 % m2;
; 121  :     k1 = 9069 / m2;
; 122  :     j0 = jseed % m2;

	mov	ecx, eax
	and	ecx, -2147418113			; 8000ffffH
	push	ebx
	push	esi
	jns	SHORT $LN13@initialize
	dec	ecx
	or	ecx, -65536				; ffff0000H
	inc	ecx
$LN13@initialize:

; 123  :     j1 = jseed / m2;

	cdq
	and	edx, 65535				; 0000ffffH
	add	eax, edx
	sar	eax, 16					; 00000010H

; 124  :     for (iloop = 0; iloop < 17; ++iloop) 

	xor	esi, esi
	npad	5
$LL3@initialize:

; 125  :     {
; 126  :         jseed = j0 * k0;

	imul	ecx, 9069				; 0000236dH

; 127  :         j1 = (jseed / m2 + j0 * k1 + j1 * k0) % (m2 / 2);

	mov	ebx, eax
	imul	ebx, 9069				; 0000236dH
	mov	eax, ecx
	cdq
	and	edx, 65535				; 0000ffffH
	add	eax, edx
	sar	eax, 16					; 00000010H
	add	eax, ebx
	and	eax, -2147450881			; 80007fffH
	jns	SHORT $LN14@initialize
	dec	eax
	or	eax, -32768				; ffff8000H
	inc	eax
$LN14@initialize:

; 128  :         j0 = jseed % m2;

	and	ecx, -2147418113			; 8000ffffH
	jns	SHORT $LN15@initialize
	dec	ecx
	or	ecx, -65536				; ffff0000H
	inc	ecx
$LN15@initialize:

; 129  :         R->m[iloop] = j0 + m2 * j1;

	mov	edx, eax
	shl	edx, 16					; 00000010H
	add	edx, ecx
	mov	DWORD PTR [edi+esi*4], edx
	add	esi, 1
	cmp	esi, 17					; 00000011H
	jl	SHORT $LL3@initialize
	pop	esi

; 130  :     }
; 131  :     R->i = 4;

	mov	DWORD PTR [edi+72], 4

; 132  :     R->j = 16;

	mov	DWORD PTR [edi+76], 16			; 00000010H
	pop	ebx

; 133  : 
; 134  : }

	ret	0
_initialize ENDP
_TEXT	ENDS
PUBLIC	_Random_nextDouble
; Function compile flags: /Ogtpy
_TEXT	SEGMENT
_Random_nextDouble PROC
; _R$ = eax

; 74   :     int k;
; 75   : 
; 76   :     int I = R->i;

	mov	edx, DWORD PTR [eax+72]

; 77   :     int J = R->j;

	mov	ecx, DWORD PTR [eax+76]
	push	esi

; 78   :     int *m = R->m;
; 79   : 
; 80   :     k = m[I] - m[J];

	mov	esi, DWORD PTR [eax+edx*4]
	sub	esi, DWORD PTR [eax+ecx*4]

; 81   :     if (k < 0) k += m1;

	jns	SHORT $LN7@Random_nex
	add	esi, 2147483647				; 7fffffffH
$LN7@Random_nex:

; 82   :     R->m[J] = k;
; 83   : 
; 84   :     if (I == 0) 

	test	edx, edx
	mov	DWORD PTR [eax+ecx*4], esi
	jne	SHORT $LN6@Random_nex

; 85   :         I = 16;

	mov	edx, 16					; 00000010H
	jmp	SHORT $LN5@Random_nex
$LN6@Random_nex:

; 86   :     else I--;

	sub	edx, 1
$LN5@Random_nex:

; 87   :     R->i = I;
; 88   : 
; 89   :     if (J == 0) 

	test	ecx, ecx
	mov	DWORD PTR [eax+72], edx
	jne	SHORT $LN4@Random_nex

; 90   :         J = 16 ;

	mov	ecx, 16					; 00000010H
	jmp	SHORT $LN3@Random_nex
$LN4@Random_nex:

; 91   :     else J--;

	sub	ecx, 1
$LN3@Random_nex:

; 92   :     R->j = J;
; 93   : 
; 94   :     if (R->haveRange) 

	cmp	DWORD PTR [eax+80], 0

; 95   :         return  R->left +  dm1 * (double) k * R->width;

	cvtsi2sd xmm0, esi
	mulsd	xmm0, QWORD PTR _dm1
	mov	DWORD PTR [eax+76], ecx
	je	SHORT $LN1@Random_nex
	mulsd	xmm0, QWORD PTR [eax+104]
	addsd	xmm0, QWORD PTR [eax+88]
$LN1@Random_nex:
	pop	esi

; 96   :     else
; 97   :         return dm1 * (double) k;
; 98   : 
; 99   : } 

	ret	0
_Random_nextDouble ENDP
_TEXT	ENDS
PUBLIC	_Random_delete
; Function compile flags: /Ogtpy
_TEXT	SEGMENT
_Random_delete PROC
; _R$ = eax

; 65   :     free(R);

	push	eax
	call	_free
	pop	ecx

; 66   : }

	ret	0
_Random_delete ENDP
_TEXT	ENDS
PUBLIC	_new_Random_seed
; Function compile flags: /Ogtpy
_TEXT	SEGMENT
_seed$ = 8						; size = 4
_new_Random_seed PROC

; 38   : {

	push	edi

; 39   :     Random R = (Random) malloc(sizeof(Random_struct));

	push	112					; 00000070H
	call	_malloc
	mov	edi, eax

; 40   : 
; 41   :     initialize(R, seed);

	mov	eax, DWORD PTR _seed$[esp+4]
	add	esp, 4
	call	_initialize

; 42   :     R->left = 0.0;

	xorps	xmm0, xmm0
	movsd	QWORD PTR [edi+88], xmm0

; 43   :     R->right = 1.0;

	movsd	xmm0, QWORD PTR __real@3ff0000000000000
	movsd	QWORD PTR [edi+96], xmm0

; 44   :     R->width = 1.0;

	movsd	QWORD PTR [edi+104], xmm0

; 45   :     R->haveRange = 0 /*false*/;

	mov	DWORD PTR [edi+80], 0

; 46   : 
; 47   :     return R;

	mov	eax, edi
	pop	edi

; 48   : }

	ret	0
_new_Random_seed ENDP
PUBLIC	_RandomMatrix
; Function compile flags: /Ogtpy
_TEXT	SEGMENT
_i$ = -8						; size = 4
_A$ = -4						; size = 4
_M$ = 8							; size = 4
_N$ = 12						; size = 4
_RandomMatrix PROC
; _R$ = esi

; 149  : {

	sub	esp, 8
	push	ebx

; 150  :     int i;
; 151  :     int j;
; 152  : 
; 153  :     /* allocate matrix */
; 154  : 
; 155  :     double **A = (double **) malloc(sizeof(double*)*M);

	mov	ebx, DWORD PTR _M$[esp+8]
	lea	eax, DWORD PTR [ebx*4]
	push	ebp
	push	eax
	call	_malloc
	mov	ebp, eax
	add	esp, 4

; 156  : 
; 157  :     if (A == NULL) return NULL;

	test	ebp, ebp
	mov	DWORD PTR _A$[esp+16], ebp
	jne	SHORT $LN8@RandomMatr
	pop	ebp
	pop	ebx

; 171  : }

	add	esp, 8
	ret	0
$LN8@RandomMatr:
	push	edi

; 158  : 
; 159  :     for (i=0; i<M; i++)

	xor	edi, edi
	test	ebx, ebx
	mov	DWORD PTR _i$[esp+20], edi
	jle	$LN5@RandomMatr
	mov	ebx, DWORD PTR _N$[esp+16]
	npad	4
$LL7@RandomMatr:

; 160  :     {
; 161  :         A[i] = (double *) malloc(sizeof(double)*N);

	lea	eax, DWORD PTR [ebx*8]
	push	eax
	call	_malloc
	add	esp, 4

; 162  :         if (A[i] == NULL) 

	test	eax, eax
	mov	DWORD PTR [ebp+edi*4], eax
	je	$LN22@RandomMatr

; 166  :         }
; 167  :         for (j=0; j<N; j++)

	movsd	xmm1, QWORD PTR _dm1
	xor	ebp, ebp
	cmp	ebx, 4
	jl	$LC26@RandomMatr
	add	ebx, -4					; fffffffcH
	shr	ebx, 2
	add	ebx, 1
	lea	edi, DWORD PTR [eax+16]
	lea	ebp, DWORD PTR [ebx*4]
$LL55@RandomMatr:

; 168  :             A[i][j] = Random_nextDouble(R);

	mov	ecx, DWORD PTR [esi+72]
	mov	eax, DWORD PTR [esi+76]
	mov	edx, DWORD PTR [esi+ecx*4]
	sub	edx, DWORD PTR [esi+eax*4]
	jns	SHORT $LN27@RandomMatr
	add	edx, 2147483647				; 7fffffffH
$LN27@RandomMatr:
	test	ecx, ecx
	mov	DWORD PTR [esi+eax*4], edx
	jne	SHORT $LN28@RandomMatr
	mov	ecx, 16					; 00000010H
	jmp	SHORT $LN29@RandomMatr
$LN28@RandomMatr:
	sub	ecx, 1
$LN29@RandomMatr:
	test	eax, eax
	mov	DWORD PTR [esi+72], ecx
	jne	SHORT $LN30@RandomMatr
	mov	eax, 16					; 00000010H
	jmp	SHORT $LN31@RandomMatr
$LN30@RandomMatr:
	sub	eax, 1
$LN31@RandomMatr:
	cmp	DWORD PTR [esi+80], 0
	cvtsi2sd xmm0, edx
	mov	DWORD PTR [esi+76], eax
	mulsd	xmm0, xmm1
	je	SHORT $LN33@RandomMatr
	mulsd	xmm0, QWORD PTR [esi+104]
	addsd	xmm0, QWORD PTR [esi+88]
$LN33@RandomMatr:
	movsd	QWORD PTR [edi-16], xmm0
	mov	ecx, DWORD PTR [esi+72]
	mov	eax, DWORD PTR [esi+76]
	mov	edx, DWORD PTR [esi+ecx*4]
	sub	edx, DWORD PTR [esi+eax*4]
	jns	SHORT $LN34@RandomMatr
	add	edx, 2147483647				; 7fffffffH
$LN34@RandomMatr:
	test	ecx, ecx
	mov	DWORD PTR [esi+eax*4], edx
	jne	SHORT $LN35@RandomMatr
	mov	ecx, 16					; 00000010H
	jmp	SHORT $LN36@RandomMatr
$LN35@RandomMatr:
	sub	ecx, 1
$LN36@RandomMatr:
	test	eax, eax
	mov	DWORD PTR [esi+72], ecx
	jne	SHORT $LN37@RandomMatr
	mov	eax, 16					; 00000010H
	jmp	SHORT $LN38@RandomMatr
$LN37@RandomMatr:
	sub	eax, 1
$LN38@RandomMatr:
	cmp	DWORD PTR [esi+80], 0
	cvtsi2sd xmm0, edx
	mov	DWORD PTR [esi+76], eax
	mulsd	xmm0, xmm1
	je	SHORT $LN40@RandomMatr
	mulsd	xmm0, QWORD PTR [esi+104]
	addsd	xmm0, QWORD PTR [esi+88]
$LN40@RandomMatr:
	movsd	QWORD PTR [edi-8], xmm0
	mov	ecx, DWORD PTR [esi+72]
	mov	eax, DWORD PTR [esi+76]
	mov	edx, DWORD PTR [esi+ecx*4]
	sub	edx, DWORD PTR [esi+eax*4]
	jns	SHORT $LN41@RandomMatr
	add	edx, 2147483647				; 7fffffffH
$LN41@RandomMatr:
	test	ecx, ecx
	mov	DWORD PTR [esi+eax*4], edx
	jne	SHORT $LN42@RandomMatr
	mov	ecx, 16					; 00000010H
	jmp	SHORT $LN43@RandomMatr
$LN42@RandomMatr:
	sub	ecx, 1
$LN43@RandomMatr:
	test	eax, eax
	mov	DWORD PTR [esi+72], ecx
	jne	SHORT $LN44@RandomMatr
	mov	eax, 16					; 00000010H
	jmp	SHORT $LN45@RandomMatr
$LN44@RandomMatr:
	sub	eax, 1
$LN45@RandomMatr:
	cmp	DWORD PTR [esi+80], 0
	cvtsi2sd xmm0, edx
	mov	DWORD PTR [esi+76], eax
	mulsd	xmm0, xmm1
	je	SHORT $LN47@RandomMatr
	mulsd	xmm0, QWORD PTR [esi+104]
	addsd	xmm0, QWORD PTR [esi+88]
$LN47@RandomMatr:
	movsd	QWORD PTR [edi], xmm0
	mov	ecx, DWORD PTR [esi+72]
	mov	eax, DWORD PTR [esi+76]
	mov	edx, DWORD PTR [esi+ecx*4]
	sub	edx, DWORD PTR [esi+eax*4]
	jns	SHORT $LN48@RandomMatr
	add	edx, 2147483647				; 7fffffffH
$LN48@RandomMatr:
	test	ecx, ecx
	mov	DWORD PTR [esi+eax*4], edx
	jne	SHORT $LN49@RandomMatr
	mov	ecx, 16					; 00000010H
	jmp	SHORT $LN50@RandomMatr
$LN49@RandomMatr:
	sub	ecx, 1
$LN50@RandomMatr:
	test	eax, eax
	mov	DWORD PTR [esi+72], ecx
	jne	SHORT $LN51@RandomMatr
	mov	eax, 16					; 00000010H
	jmp	SHORT $LN52@RandomMatr
$LN51@RandomMatr:
	sub	eax, 1
$LN52@RandomMatr:
	cmp	DWORD PTR [esi+80], 0
	cvtsi2sd xmm0, edx
	mov	DWORD PTR [esi+76], eax
	mulsd	xmm0, xmm1
	je	SHORT $LN54@RandomMatr
	mulsd	xmm0, QWORD PTR [esi+104]
	addsd	xmm0, QWORD PTR [esi+88]
$LN54@RandomMatr:
	movsd	QWORD PTR [edi+8], xmm0
	add	edi, 32					; 00000020H
	sub	ebx, 1
	jne	$LL55@RandomMatr
	mov	edi, DWORD PTR _i$[esp+20]
	mov	ebx, DWORD PTR _N$[esp+16]
$LC26@RandomMatr:

; 166  :         }
; 167  :         for (j=0; j<N; j++)

	cmp	ebp, ebx
	jge	$LN6@RandomMatr
	mov	ecx, DWORD PTR _A$[esp+20]
	mov	edx, DWORD PTR [ecx+edi*4]
	mov	edi, DWORD PTR _N$[esp+16]
	lea	ebx, DWORD PTR [edx+ebp*8]
	sub	edi, ebp
$LC3@RandomMatr:

; 168  :             A[i][j] = Random_nextDouble(R);

	mov	ecx, DWORD PTR [esi+72]
	mov	eax, DWORD PTR [esi+76]
	mov	edx, DWORD PTR [esi+ecx*4]
	sub	edx, DWORD PTR [esi+eax*4]
	jns	SHORT $LN17@RandomMatr
	add	edx, 2147483647				; 7fffffffH
$LN17@RandomMatr:
	test	ecx, ecx
	mov	DWORD PTR [esi+eax*4], edx
	jne	SHORT $LN16@RandomMatr
	mov	ecx, 16					; 00000010H
	jmp	SHORT $LN15@RandomMatr
$LN16@RandomMatr:
	sub	ecx, 1
$LN15@RandomMatr:
	test	eax, eax
	mov	DWORD PTR [esi+72], ecx
	jne	SHORT $LN14@RandomMatr
	mov	eax, 16					; 00000010H
	jmp	SHORT $LN13@RandomMatr
$LN14@RandomMatr:
	sub	eax, 1
$LN13@RandomMatr:
	cmp	DWORD PTR [esi+80], 0
	cvtsi2sd xmm0, edx
	mov	DWORD PTR [esi+76], eax
	mulsd	xmm0, xmm1
	je	SHORT $LN11@RandomMatr
	mulsd	xmm0, QWORD PTR [esi+104]
	addsd	xmm0, QWORD PTR [esi+88]
$LN11@RandomMatr:
	movsd	QWORD PTR [ebx], xmm0
	add	ebx, 8
	sub	edi, 1
	jne	SHORT $LC3@RandomMatr
	mov	edi, DWORD PTR _i$[esp+20]
	mov	ebx, DWORD PTR _N$[esp+16]
$LN6@RandomMatr:
	mov	ebp, DWORD PTR _A$[esp+20]
	add	edi, 1
	cmp	edi, DWORD PTR _M$[esp+16]
	mov	DWORD PTR _i$[esp+20], edi
	jl	$LL7@RandomMatr
$LN5@RandomMatr:
	pop	edi

; 169  :     }
; 170  :     return A;

	mov	eax, ebp
	pop	ebp
	pop	ebx

; 171  : }

	add	esp, 8
	ret	0
$LN22@RandomMatr:

; 163  :         {
; 164  :             free(A);

	push	ebp
	call	_free
	add	esp, 4
	pop	edi
	pop	ebp

; 165  :             return NULL;

	xor	eax, eax
	pop	ebx

; 171  : }

	add	esp, 8
	ret	0
_RandomMatrix ENDP
_TEXT	ENDS
PUBLIC	_RandomVector
; Function compile flags: /Ogtpy
_TEXT	SEGMENT
_x$ = -4						; size = 4
_N$ = 8							; size = 4
_RandomVector PROC
; _R$ = esi

; 137  : {

	push	ecx
	push	ebp
	push	edi

; 138  :     int i;
; 139  :     double *x = (double *) malloc(sizeof(double)*N);

	mov	edi, DWORD PTR _N$[esp+8]
	lea	eax, DWORD PTR [edi*8]
	push	eax
	call	_malloc

; 140  : 
; 141  :     for (i=0; i<N; i++)

	movsd	xmm1, QWORD PTR _dm1
	add	esp, 4
	xor	ebp, ebp
	cmp	edi, 4
	mov	DWORD PTR _x$[esp+12], eax
	jl	$LC18@RandomVect
	push	ebx
	lea	ebx, DWORD PTR [eax+16]
	lea	eax, DWORD PTR [edi-4]
	shr	eax, 2
	add	eax, 1
	lea	ebp, DWORD PTR [eax*4]
$LL47@RandomVect:

; 142  :         x[i] = Random_nextDouble(R);

	mov	edx, DWORD PTR [esi+72]
	mov	ecx, DWORD PTR [esi+76]
	mov	edi, DWORD PTR [esi+edx*4]
	sub	edi, DWORD PTR [esi+ecx*4]
	jns	SHORT $LN19@RandomVect
	add	edi, 2147483647				; 7fffffffH
$LN19@RandomVect:
	test	edx, edx
	mov	DWORD PTR [esi+ecx*4], edi
	jne	SHORT $LN20@RandomVect
	mov	edx, 16					; 00000010H
	jmp	SHORT $LN21@RandomVect
$LN20@RandomVect:
	sub	edx, 1
$LN21@RandomVect:
	test	ecx, ecx
	mov	DWORD PTR [esi+72], edx
	jne	SHORT $LN22@RandomVect
	mov	ecx, 16					; 00000010H
	jmp	SHORT $LN23@RandomVect
$LN22@RandomVect:
	sub	ecx, 1
$LN23@RandomVect:
	cmp	DWORD PTR [esi+80], 0
	cvtsi2sd xmm0, edi
	mov	DWORD PTR [esi+76], ecx
	mulsd	xmm0, xmm1
	je	SHORT $LN25@RandomVect
	mulsd	xmm0, QWORD PTR [esi+104]
	addsd	xmm0, QWORD PTR [esi+88]
$LN25@RandomVect:
	mov	edi, DWORD PTR [esi+edx*4]
	sub	edi, DWORD PTR [esi+ecx*4]
	movsd	QWORD PTR [ebx-16], xmm0
	jns	SHORT $LN26@RandomVect
	add	edi, 2147483647				; 7fffffffH
$LN26@RandomVect:
	test	edx, edx
	mov	DWORD PTR [esi+ecx*4], edi
	jne	SHORT $LN27@RandomVect
	mov	edx, 16					; 00000010H
	jmp	SHORT $LN28@RandomVect
$LN27@RandomVect:
	sub	edx, 1
$LN28@RandomVect:
	test	ecx, ecx
	mov	DWORD PTR [esi+72], edx
	jne	SHORT $LN29@RandomVect
	mov	ecx, 16					; 00000010H
	jmp	SHORT $LN30@RandomVect
$LN29@RandomVect:
	sub	ecx, 1
$LN30@RandomVect:
	cmp	DWORD PTR [esi+80], 0
	cvtsi2sd xmm0, edi
	mov	DWORD PTR [esi+76], ecx
	mulsd	xmm0, xmm1
	je	SHORT $LN32@RandomVect
	mulsd	xmm0, QWORD PTR [esi+104]
	addsd	xmm0, QWORD PTR [esi+88]
$LN32@RandomVect:
	mov	edi, DWORD PTR [esi+edx*4]
	sub	edi, DWORD PTR [esi+ecx*4]
	movsd	QWORD PTR [ebx-8], xmm0
	jns	SHORT $LN33@RandomVect
	add	edi, 2147483647				; 7fffffffH
$LN33@RandomVect:
	test	edx, edx
	mov	DWORD PTR [esi+ecx*4], edi
	jne	SHORT $LN34@RandomVect
	mov	edx, 16					; 00000010H
	jmp	SHORT $LN35@RandomVect
$LN34@RandomVect:
	sub	edx, 1
$LN35@RandomVect:
	test	ecx, ecx
	mov	DWORD PTR [esi+72], edx
	jne	SHORT $LN36@RandomVect
	mov	ecx, 16					; 00000010H
	jmp	SHORT $LN37@RandomVect
$LN36@RandomVect:
	sub	ecx, 1
$LN37@RandomVect:
	cmp	DWORD PTR [esi+80], 0
	cvtsi2sd xmm0, edi
	mov	DWORD PTR [esi+76], ecx
	mulsd	xmm0, xmm1
	je	SHORT $LN39@RandomVect
	mulsd	xmm0, QWORD PTR [esi+104]
	addsd	xmm0, QWORD PTR [esi+88]
$LN39@RandomVect:
	mov	edi, DWORD PTR [esi+edx*4]
	sub	edi, DWORD PTR [esi+ecx*4]
	movsd	QWORD PTR [ebx], xmm0
	jns	SHORT $LN40@RandomVect
	add	edi, 2147483647				; 7fffffffH
$LN40@RandomVect:
	test	edx, edx
	mov	DWORD PTR [esi+ecx*4], edi
	jne	SHORT $LN41@RandomVect
	mov	edx, 16					; 00000010H
	jmp	SHORT $LN42@RandomVect
$LN41@RandomVect:
	sub	edx, 1
$LN42@RandomVect:
	test	ecx, ecx
	mov	DWORD PTR [esi+72], edx
	jne	SHORT $LN43@RandomVect
	mov	ecx, 16					; 00000010H
	jmp	SHORT $LN44@RandomVect
$LN43@RandomVect:
	sub	ecx, 1
$LN44@RandomVect:
	cmp	DWORD PTR [esi+80], 0
	cvtsi2sd xmm0, edi
	mov	DWORD PTR [esi+76], ecx
	mulsd	xmm0, xmm1
	je	SHORT $LN46@RandomVect
	mulsd	xmm0, QWORD PTR [esi+104]
	addsd	xmm0, QWORD PTR [esi+88]
$LN46@RandomVect:
	movsd	QWORD PTR [ebx+8], xmm0
	add	ebx, 32					; 00000020H
	sub	eax, 1
	jne	$LL47@RandomVect
	mov	eax, DWORD PTR _x$[esp+16]
	mov	edi, DWORD PTR _N$[esp+12]
	pop	ebx
$LC18@RandomVect:

; 140  : 
; 141  :     for (i=0; i<N; i++)

	cmp	ebp, edi
	jge	SHORT $LN17@RandomVect
$LC3@RandomVect:

; 142  :         x[i] = Random_nextDouble(R);

	mov	edx, DWORD PTR [esi+72]
	mov	ecx, DWORD PTR [esi+76]
	mov	edi, DWORD PTR [esi+edx*4]
	sub	edi, DWORD PTR [esi+ecx*4]
	jns	SHORT $LN12@RandomVect
	add	edi, 2147483647				; 7fffffffH
$LN12@RandomVect:
	test	edx, edx
	mov	DWORD PTR [esi+ecx*4], edi
	jne	SHORT $LN11@RandomVect
	mov	edx, 16					; 00000010H
	jmp	SHORT $LN10@RandomVect
$LN11@RandomVect:
	sub	edx, 1
$LN10@RandomVect:
	test	ecx, ecx
	mov	DWORD PTR [esi+72], edx
	jne	SHORT $LN9@RandomVect
	mov	ecx, 16					; 00000010H
	jmp	SHORT $LN8@RandomVect
$LN9@RandomVect:
	sub	ecx, 1
$LN8@RandomVect:
	cmp	DWORD PTR [esi+80], 0
	cvtsi2sd xmm0, edi
	mov	DWORD PTR [esi+76], ecx
	mulsd	xmm0, xmm1
	je	SHORT $LN6@RandomVect
	mulsd	xmm0, QWORD PTR [esi+104]
	addsd	xmm0, QWORD PTR [esi+88]
$LN6@RandomVect:
	mov	ecx, DWORD PTR _x$[esp+12]
	movsd	QWORD PTR [ecx+ebp*8], xmm0
	add	ebp, 1
	cmp	ebp, DWORD PTR _N$[esp+8]
	jl	SHORT $LC3@RandomVect

; 143  : 
; 144  :     return x;

	mov	eax, ecx
$LN17@RandomVect:
	pop	edi
	pop	ebp

; 145  : }

	pop	ecx
	ret	0
_RandomVector ENDP
END
