Function at 0x45a2f0
Capabilities:
Encode data using xor
Generate random numbers using a mersenne twister

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x84
push ebx
push esi
push edi
mov edi, dword [ebp + 0xc]
mov dword [ebp - 0x14], 0
mov ebx, dword [edi + 4]
mov eax, dword [edi]
mov dword [ebp - 0x24], ebx
mov dword [ebp - 0x20], eax
cmp eax, ebx
je 0x45a32a
mov esi, eax
mov ecx, esi
call fcn.0042ce10
add esi, 0x34
cmp esi, ebx
jne 0x45a317
mov eax, dword [edi]
mov dword [edi + 4], eax
lea ebx, [edi + 0x38]
mov dword [edi + 0x24], 0
mov dword [edi + 0x18], 0x42700000
mov dword [edi + 0x30], 0xffffffff
mov dword [edi + 0x34], 0
mov eax, dword [ebx]
cmp eax, dword [ebx + 4]
je 0x45a353
mov dword [ebx + 4], eax
mov ecx, dword [ebp + 8]
push 0x72106c
push str.settings
call fcn.00465fd0
mov esi, eax
mov dword [ebp - 4], esi
cmp byte [esi + 8], 7
jne 0x45a889
push 0x7240ed
push str.delay
mov ecx, esi
call fcn.00465fd0
mov eax, dword [eax + 8]
and eax, 0xff
cmp eax, 1
je 0x45a3a1
cmp eax, 2
je 0x45a3a1
cmp eax, 3
je 0x45a3a1
xorps xmm0, xmm0
jmp 0x45a3b9
push 0x7240ed
push str.delay
mov ecx, esi
call fcn.00465fd0
mov ecx, eax
call fcn.00465660
push 0x720ac5
push str.order
mov ecx, esi
movss dword [edi + 0x18], xmm0
call fcn.00465fd0
cmp byte [eax + 8], 4
jne 0x45a421
push 0x720ac5
push str.order
mov ecx, esi
call fcn.00465fd0
lea ecx, [ebp - 0x4c]
push ecx
mov ecx, eax
call fcn.00465130
cmp dword [eax + 0x14], 0xf
mov edx, dword [eax + 0x10]
jbe 0x45a3fc
mov eax, dword [eax]
push 6
push str.sorted
mov ecx, eax
mov dword [ebp - 0x14], 1
call fcn.004108e0
add esp, 8
test al, al
je 0x45a421
mov ecx, 1
mov eax, ecx
jmp 0x45a426
mov eax, dword [ebp - 0x14]
xor ecx, ecx
mov dword [edi + 0x1c], ecx
test al, 1
je 0x45a435
lea ecx, [ebp - 0x4c]
call fcn.004143d0
push 0x7210a4
push str.mode
mov ecx, esi
mov dword [edi + 0x20], 1
call fcn.00465fd0
cmp byte [eax + 8], 4
jne 0x45a52d
push 0x7210a4
push str.mode
mov ecx, esi
call fcn.00465fd0
lea ecx, [ebp - 0x4c]
push ecx
mov ecx, eax
call fcn.00465130
mov esi, dword [ebp - 0x38]
lea ecx, [ebp - 0x4c]
mov edx, dword [ebp - 0x3c]
cmp esi, 0xf
push 5
cmova ecx, dword [ebp - 0x4c]
push str.logon
call fcn.004108e0
add esp, 8
test al, al
je 0x45a4a2
mov dword [edi + 0x20], 0
jmp 0x45a522
mov edx, dword [ebp - 0x3c]
lea ecx, [ebp - 0x4c]
cmp esi, 0xf
push 7
cmova ecx, dword [ebp - 0x4c]
push str.daytime
call fcn.004108e0
add esp, 8
test al, al
je 0x45a4cb
mov dword [edi + 0x20], 2
jmp 0x45a51b
mov edx, dword [ebp - 0x3c]
lea ecx, [ebp - 0x4c]
cmp esi, 0xf
push 9
cmova ecx, dword [ebp - 0x4c]
push str.dayofweek
call fcn.004108e0
add esp, 8
test al, al
je 0x45a4f4
mov dword [edi + 0x20], 3
jmp 0x45a51b
mov edx, dword [ebp - 0x3c]
lea ecx, [ebp - 0x4c]
cmp esi, 0xf
push 5
cmova ecx, dword [ebp - 0x4c]
push str.never
call fcn.004108e0
add esp, 8
test al, al
je 0x45a522
mov dword [edi + 0x20], 4
mov dword [edi + 0x18], 0
lea ecx, [ebp - 0x4c]
call fcn.004143d0
mov esi, dword [ebp - 4]
push 0x724121
push str.videosequence
mov ecx, esi
call fcn.00465fd0
cmp byte [eax + 8], 5
jne 0x45a564
push 0x724121
push str.videosequence
mov ecx, esi
call fcn.00465fd0
mov ecx, eax
call fcn.00465720
test al, al
je 0x45a564
or dword [edi + 0x24], 1
push 0x724131
push str.updateonpause
mov ecx, esi
call fcn.00465fd0
cmp byte [eax + 8], 5
jne 0x45a59b
push 0x724131
push str.updateonpause
mov ecx, esi
call fcn.00465fd0
mov ecx, eax
call fcn.00465720
test al, al
je 0x45a59b
or dword [edi + 0x24], 2
push 0x72107a
push str.transition
mov ecx, esi
call fcn.00465fd0
push 0x72107a
mov ecx, esi
push str.transition
cmp byte [eax + 8], 5
jne 0x45a5dc
call fcn.00465fd0
mov ecx, eax
call fcn.00465720
movzx eax, al
lea eax, [eax*2 - 2]
mov dword [edi + 0x30], eax
jmp 0x45a7c5
call fcn.00465fd0
cmp byte [eax + 8], 4
jne 0x45a7c5
push 0x72107a
push str.transition
mov ecx, esi
call fcn.00465fd0
lea ecx, [ebp - 0x4c]
push ecx
mov ecx, eax
call fcn.00465130
mov esi, dword [ebp - 0x38]
lea ecx, [ebp - 0x4c]
mov edx, dword [ebp - 0x3c]
cmp esi, 0xf
push 6
cmova ecx, dword [ebp - 0x4c]
push str.random
call fcn.004108e0
add esp, 8
test al, al
je 0x45a783
mov esi, dword [ebp - 4]
mov ecx, esi
push 0x724142
push str.transitionpool
mov dword [edi + 0x30], 0xfffffffd
call fcn.00465fd0
mov edx, eax
cmp byte [edx + 8], 6
jne 0x45a7bd
lea eax, [ebp - 0x2c]
mov ecx, edx
push eax
call fcn.00466e90
lea eax, [ebp - 0x34]
mov ecx, edx
push eax
call fcn.00466ed0
nop dword [eax + eax]
cmp byte [ebp - 0x28], 0
mov eax, dword [ebp - 0x2c]
je 0x45a67e
mov cl, byte [ebp - 0x30]
jmp 0x45a684
cmp eax, dword [ebp - 0x34]
sete cl
test cl, cl
jne 0x45a7ba
mov ecx, dword [eax + 0x20]
cmp cl, 4
jne 0x45a776
mov eax, dword [eax + 0x18]
test eax, eax
je 0x45a6aa
shr ecx, 8
test cl, 1
je 0x45a6aa
add eax, 4
push eax
call fcn.005cef57
mov ecx, dword [ebx + 8]
add esp, 4
mov esi, dword [ebx + 4]
mov dword [ebp - 0x1c], eax
cmp esi, ecx
je 0x45a6d0
mov dword [esi], eax
lea ecx, [ebp - 0x2c]
add dword [ebx + 4], 4
call fcn.00428d00
jmp 0x45a670
mov edx, dword [ebx]
mov eax, esi
sub eax, edx
sar eax, 2
mov dword [ebp - 0x14], eax
cmp eax, 0x3fffffff
je 0x45afca
sub ecx, edx
inc eax
sar ecx, 2
mov dword [ebp - 0xc], eax
mov edx, ecx
shr edx, 1
mov eax, 0x3fffffff
sub eax, edx
cmp ecx, eax
jbe 0x45a706
mov ebx, 0x3fffffff
jmp 0x45a710
lea ebx, [edx + ecx]
cmp ebx, dword [ebp - 0xc]
cmovb ebx, dword [ebp - 0xc]
lea edx, [ebp - 0x18]
mov dword [ebp - 0x18], ebx
call fcn.0042c790
mov ecx, dword [ebp - 0x14]
mov edx, eax
mov eax, dword [ebp - 0x1c]
mov dword [ebp - 8], edx
mov dword [edx + ecx*4], eax
mov eax, dword [edi + 0x3c]
mov ecx, dword [edi + 0x38]
cmp esi, eax
jne 0x45a73a
sub eax, ecx
push eax
push ecx
push edx
jmp 0x45a75d
mov eax, esi
sub eax, ecx
push eax
push ecx
push edx
call fcn.005c3580
mov eax, dword [ebp - 0x14]
add esp, 0xc
mov ecx, dword [ebp - 8]
lea ecx, [ecx + eax*4]
mov eax, dword [edi + 0x3c]
add ecx, 4
sub eax, esi
push eax
push esi
push ecx
call fcn.005c3580
add esp, 0xc
push ebx
push dword [ebp - 0xc]
lea ebx, [edi + 0x38]
push dword [ebp - 8]
mov ecx, ebx
call fcn.0042cb00
lea ecx, [ebp - 0x2c]
call fcn.00428d00
jmp 0x45a670
mov ebx, dword [ebp - 0x4c]
lea ecx, [ebp - 0x4c]
mov edx, dword [ebp - 0x3c]
cmp esi, 0xf
push 4
cmova ecx, ebx
push str.none
call fcn.004108e0
add esp, 8
test al, al
jne 0x45a7ba
cmp esi, 0xf
lea eax, [ebp - 0x4c]
cmova eax, ebx
push eax
call fcn.005cef57
add esp, 4
mov dword [edi + 0x30], eax
mov esi, dword [ebp - 4]
lea ecx, [ebp - 0x4c]
call fcn.004143d0
push 0x72108a
push str.transitiontime
mov ecx, esi
mov dword [edi + 0x34], 0x1f4
call fcn.00465fd0
mov eax, dword [eax + 8]
and eax, 0xff
cmp eax, 1
je 0x45a7f4
cmp eax, 2
je 0x45a7f4
cmp eax, 3
jne 0x45a80f
push 0x72108a
push str.transitiontime
mov ecx, esi
call fcn.00465fd0
mov ecx, eax
call fcn.004652e0
mov dword [edi + 0x34], eax
cmp dword [edi + 0x20], 1
jne 0x45a84c
push 0x72414e
push str.beginfirst
mov ecx, esi
call fcn.00465fd0
cmp byte [eax + 8], 5
jne 0x45a84c
push 0x72414e
push str.beginfirst
mov ecx, esi
call fcn.00465fd0
mov ecx, eax
call fcn.00465720
test al, al
je 0x45a84c
or dword [edi + 0x24], 8
test byte [edi + 0x24], 8
je 0x45a889
push 0x724159
push str.playintro
mov ecx, esi
call fcn.00465fd0
cmp byte [eax + 8], 5
jne 0x45a889
push 0x724159
push str.playintro
mov ecx, esi
call fcn.00465fd0
mov ecx, eax
call fcn.00465720
test al, al
je 0x45a889
or dword [edi + 0x24], 0x10
mov ecx, dword [ebp + 8]
push 0x720b4d
push str.items
call fcn.00465fd0
mov esi, eax
mov edx, dword [esi + 8]
and edx, 0xff
mov ecx, edx
sub ecx, 6
je 0x45a8b2
sub ecx, 1
jne 0x45a8c0
mov eax, dword [esi]
test eax, eax
je 0x45a8c0
mov eax, dword [eax]
xor cl, cl
mov eax, dword [eax]
jmp 0x45a8c4
xor eax, eax
mov cl, 1
mov byte [ebp - 0xc], cl
mov dword [ebp - 0x10], eax
sub edx, 6
je 0x45a8d4
sub edx, 1
jne 0x45a8e0
mov esi, dword [esi]
test esi, esi
je 0x45a8e0
mov esi, dword [esi]
xor dl, dl
jmp 0x45a8e4
xor esi, esi
mov dl, 1
mov byte [ebp + 0xb], dl
test cl, cl
je 0x45a8ef
mov cl, dl
jmp 0x45a8f4
cmp eax, esi
sete cl
test cl, cl
jne 0x45ab54
add eax, 0x18
mov dword [ebp - 0x70], 0
xorps xmm0, xmm0
mov dword [ebp - 0x14], eax
movups xmmword [ebp - 0x80], xmm0
mov byte [ebp - 0x80], cl
mov ebx, 0xf
movups xmmword [ebp - 0x64], xmm0
mov byte [ebp - 0x64], cl
mov ecx, dword [eax + 8]
and ecx, 0xff
mov dword [ebp - 0x6c], ebx
mov dword [ebp - 0x54], 0
mov dword [ebp - 0x50], ebx
mov dword [ebp - 0x68], 0
cmp ecx, 4
jne 0x45a96d
lea ecx, [ebp - 0x4c]
push ecx
mov ecx, eax
call fcn.00465130
lea ecx, [ebp - 0x80]
cmp ecx, eax
je 0x45aa81
movups xmm0, xmmword [eax]
movups xmmword [ebp - 0x80], xmm0
movq xmm0, qword [eax + 0x10]
movq qword [ebp - 0x70], xmm0
jmp 0x45aa74
cmp ecx, 7
jne 0x45aac2
push 0x720050
push str.file
mov ecx, eax
call fcn.00465fd0
mov ecx, dword [ebp - 0x14]
push 0x724166
push str.daytimeend
mov dword [ebp - 0x1c], eax
call fcn.00465fd0
mov ecx, dword [ebp - 0x14]
push 0x720122
push str.preset
mov dword [ebp - 0x18], eax
call fcn.00465fd0
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 0x1c]
cmp byte [eax + 8], 4
jne 0x45aac2
lea ecx, [ebp - 0x4c]
push ecx
mov ecx, eax
call fcn.00465130
lea ecx, [ebp - 0x80]
cmp ecx, eax
je 0x45a9f1
movups xmm0, xmmword [eax]
movups xmmword [ebp - 0x80], xmm0
movq xmm0, qword [eax + 0x10]
movq qword [ebp - 0x70], xmm0
mov dword [eax + 0x10], 0
mov dword [eax + 0x14], ebx
mov byte [eax], 0
mov ecx, dword [ebp - 0x38]
cmp ecx, ebx
jbe 0x45aa24
mov edx, dword [ebp - 0x4c]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x45aa1a
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x45afcf
push ecx
push edx
call fcn.005ab85c
add esp, 8
mov ecx, dword [ebp - 0x18]
mov eax, dword [ecx + 8]
and eax, 0xff
cmp eax, 1
je 0x45aa3e
cmp eax, 2
je 0x45aa3e
cmp eax, 3
jne 0x45aa48
call fcn.00465660
movss dword [ebp - 0x68], xmm0
mov eax, dword [ebp - 0x14]
cmp byte [eax + 8], 4
jne 0x45aab4
lea ecx, [ebp - 0x4c]
push ecx
mov ecx, eax
call fcn.00465130
lea ecx, [ebp - 0x64]
cmp ecx, eax
je 0x45aa81
movups xmm0, xmmword [eax]
movups xmmword [ebp - 0x64], xmm0
movq xmm0, qword [eax + 0x10]
movq qword [ebp - 0x54], xmm0
mov byte [eax], 0
mov dword [eax + 0x14], ebx
mov dword [eax + 0x10], 0
mov ecx, dword [ebp - 0x38]
cmp ecx, ebx
jbe 0x45aab4
mov edx, dword [ebp - 0x4c]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x45aaaa
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x45afcf
push ecx
push edx
call fcn.005ab85c
add esp, 8
lea eax, [ebp - 0x80]
mov ecx, edi
push eax
call fcn.0045cb60
mov ebx, dword [ebp - 0x6c]
cmp dword [ebp - 0x70], 0
je 0x45aad7
lea eax, [ebp - 0x80]
push eax
lea ecx, [edi + 0xc]
call fcn.0045cb60
mov ebx, dword [ebp - 0x6c]
mov eax, dword [ebp - 0x50]
cmp eax, 0xf
jbe 0x45ab0d
mov edx, dword [ebp - 0x64]
lea ecx, [eax + 1]
mov eax, edx
cmp ecx, 0x1000
jb 0x45ab03
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x45afcf
push ecx
push edx
call fcn.005ab85c
add esp, 8
cmp ebx, 0xf
jbe 0x45ab3e
mov ecx, dword [ebp - 0x80]
inc ebx
mov eax, ecx
cmp ebx, 0x1000
jb 0x45ab34
mov ecx, dword [eax - 4]
add ebx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x45afcf
push ebx
push ecx
call fcn.005ab85c
add esp, 8
lea ecx, [ebp - 0x10]
call fcn.00428d00
mov cl, byte [ebp - 0xc]
mov eax, dword [ebp - 0x10]
mov dl, byte [ebp + 0xb]
jmp 0x45a8e7
test byte [edi + 0x24], 0x10
je 0x45ab7f
mov edx, dword [edi + 0x10]
mov ecx, dword [edi + 0xc]
cmp ecx, edx
je 0x45ab7f
push ecx
add ecx, 0x34
call fcn.0045da80
mov ecx, dword [edi + 0x10]
add esp, 4
sub ecx, 0x34
call fcn.0042ce10
add dword [edi + 0x10], 0xffffffcc
mov eax, dword [0x74b6e4]
shr eax, 0xe
test al, 1
je 0x45ac24
push dword [ebp + 0xc]
mov esi, dword [edi + 4]
lea ecx, [ebp - 0x1c]
push esi
push dword [edi]
call fcn.0045cc80
add esp, 0xc
mov eax, dword [eax]
cmp eax, esi
je 0x45abd7
mov edx, dword [edi + 4]
mov ecx, esi
push eax
call fcn.0045da80
mov ebx, dword [edi + 4]
add esp, 4
mov dword [ebp + 8], eax
mov esi, eax
cmp eax, ebx
je 0x45abd4
mov ecx, esi
call fcn.0042ce10
add esi, 0x34
cmp esi, ebx
jne 0x45abc3
mov eax, dword [ebp + 8]
mov dword [edi + 4], eax
push dword [ebp + 0xc]
mov esi, dword [edi + 0x10]
lea ecx, [ebp - 0x1c]
push esi
push dword [edi + 0xc]
call fcn.0045cc80
add esp, 0xc
mov eax, dword [eax]
cmp eax, esi
je 0x45ac24
mov edx, dword [edi + 0x10]
mov ecx, esi
push eax
call fcn.0045da80
mov ebx, dword [edi + 0x10]
add esp, 4
mov dword [ebp + 8], eax
mov esi, eax
cmp eax, ebx
je 0x45ac21
nop dword [eax]
mov ecx, esi
call fcn.0042ce10
add esi, 0x34
cmp esi, ebx
jne 0x45ac10
mov eax, dword [ebp + 8]
mov dword [edi + 0x10], eax
mov eax, dword [edi + 0x20]
sub eax, 2
je 0x45acf9
sub eax, 1
jne 0x45aebe
mov ecx, dword [edi + 4]
xor ebx, ebx
mov edx, dword [edi]
mov dword [ebp - 0x14], eax
mov eax, ecx
sub eax, edx
mov dword [ebp + 8], ebx
sar eax, 2
imul eax, eax, 0xc4ec4ec5
mov dword [ebp - 0x18], edx
test eax, eax
je 0x45aebe
mov dword [ebp - 0xc], ebx
sub ecx, edx
mov edx, 1
sar ecx, 2
imul eax, ecx, 0xc4ec4ec5
mov ecx, 7
cmp eax, ecx
cmovl ecx, eax
mov eax, 1
cmp ecx, edx
cmovg edx, ecx
xor ecx, ecx
mov dword [ebp - 0x1c], edx
lea esi, [eax + 6]
test edx, edx
jle 0x45acb5
lea edi, [edx - 1]
mov ebx, edx
mov eax, esi
cmp ecx, edi
jge 0x45aca2
cdq
idiv ebx
mov edx, dword [ebp - 0x1c]
sub esi, eax
cmp ecx, dword [ebp + 8]
je 0x45acaf
inc ecx
dec ebx
cmp ecx, edx
jl 0x45ac96
mov edi, dword [ebp + 0xc]
mov ebx, dword [ebp + 8]
mov ecx, dword [ebp - 0x14]
inc ebx
add ecx, eax
mov dword [ebp + 8], ebx
mov eax, dword [ebp - 0xc]
mov dword [ebp - 0x14], ecx
movd xmm0, ecx
mov ecx, dword [ebp - 0x18]
cvtdq2ps xmm0, xmm0
movss dword [ecx + eax + 0x18], xmm0
add eax, 0x34
mov ecx, dword [edi + 4]
mov edx, dword [edi]
mov dword [ebp - 0xc], eax
mov eax, ecx
sub eax, edx
sar eax, 2
imul eax, eax, 0xc4ec4ec5
cmp ebx, eax
jb 0x45ac61
jmp 0x45aebe
mov eax, dword [edi + 4]
xor esi, esi
mov edx, dword [edi]
xor ecx, ecx
mov dword [ebp + 8], eax
xorps xmm0, xmm0
sub eax, edx
mov dword [ebp - 0xc], esi
sar eax, 2
xorps xmm2, xmm2
imul eax, eax, 0xc4ec4ec5
test eax, eax
je 0x45aebe
movss xmm5, dword [0x739900]
xor ebx, ebx
xor eax, eax
mov dword [ebp - 0x18], ecx
mov dword [ebp - 8], eax
mov dword [ebp - 0x14], 0xffffffff
mov dword [ebp - 4], edx
nop dword [eax]
movss xmm4, dword [edx + eax + 0x18]
mov eax, dword [ebp + 8]
sub eax, edx
sar eax, 2
imul eax, eax, 0xc4ec4ec5
dec eax
cmp esi, eax
jne 0x45ad5c
movaps xmm4, xmm5
comiss xmm4, xmm0
mov edx, dword [ebp + 8]
mov eax, edx
jbe 0x45ae94
mov eax, esi
sub eax, ecx
inc eax
mov dword [ebp - 0x1c], eax
movd xmm3, eax
mov eax, edx
mov edx, dword [ebp - 4]
cvtdq2ps xmm3, xmm3
comiss xmm3, xmm0
jbe 0x45ae7d
movaps xmm0, xmm5
movaps xmm1, xmm4
subss xmm1, xmm2
divss xmm0, xmm3
mulss xmm1, xmm0
cmp ecx, esi
jg 0x45ae7a
cmp dword [ebp - 0x1c], 4
jl 0x45ae43
mov edx, dword [ebp - 0xc]
mov esi, 2
sub edx, ecx
sub edx, 3
shr edx, 2
inc edx
lea ecx, [ecx + edx*4]
nop
lea eax, [esi - 1]
movd xmm0, eax
mov eax, dword [edi]
cvtdq2ps xmm0, xmm0
mulss xmm0, xmm1
addss xmm0, xmm2
movss dword [ebx + eax + 0x18], xmm0
mov eax, dword [edi]
movd xmm0, esi
cvtdq2ps xmm0, xmm0
mulss xmm0, xmm1
addss xmm0, xmm2
movss dword [ebx + eax + 0x4c], xmm0
lea eax, [esi + 1]
movd xmm0, eax
mov eax, dword [edi]
cvtdq2ps xmm0, xmm0
mulss xmm0, xmm1
addss xmm0, xmm2
movss dword [ebx + eax + 0x80], xmm0
lea eax, [esi + 2]
movd xmm0, eax
add esi, 4
mov eax, dword [edi]
cvtdq2ps xmm0, xmm0
mulss xmm0, xmm1
addss xmm0, xmm2
movss dword [ebx + eax + 0xb4], xmm0
add ebx, 0xd0
sub edx, 1
jne 0x45adc0
mov eax, dword [edi + 4]
mov edx, dword [edi]
mov esi, dword [ebp - 0xc]
jmp 0x45ae46
mov edx, dword [ebp - 4]
cmp ecx, esi
jg 0x45ae7a
imul edx, ecx, 0x34
nop dword [eax]
mov eax, dword [ebp - 0x18]
inc eax
add eax, ecx
inc ecx
movd xmm0, eax
mov eax, dword [edi]
cvtdq2ps xmm0, xmm0
mulss xmm0, xmm1
addss xmm0, xmm2
movss dword [edx + eax + 0x18], xmm0
add edx, 0x34
cmp ecx, esi
jle 0x45ae50
mov eax, dword [edi + 4]
mov edx, dword [edi]
xorps xmm0, xmm0
mov edi, dword [ebp - 0x14]
lea ecx, [esi + 1]
mov ebx, dword [ebp - 8]
movaps xmm2, xmm4
mov dword [ebp - 0x18], edi
add ebx, 0x34
mov edi, dword [ebp + 0xc]
jmp 0x45ae97
mov edx, dword [ebp - 4]
add dword [ebp - 8], 0x34
inc esi
dec dword [ebp - 0x14]
mov dword [ebp + 8], eax
sub eax, edx
sar eax, 2
imul eax, eax, 0xc4ec4ec5
mov dword [ebp - 0xc], esi
mov dword [ebp - 4], edx
cmp esi, eax
mov eax, dword [ebp - 8]
jb 0x45ad40
mov ebx, dword [edi + 4]
mov eax, ebx
mov esi, dword [edi]
sub eax, esi
sar eax, 2
imul eax, eax, 0xc4ec4ec5
cmp eax, 2
jae 0x45aefc
cmp esi, ebx
je 0x45afc1
nop dword [eax]
mov ecx, esi
call fcn.0042ce10
add esi, 0x34
cmp esi, ebx
jne 0x45aee0
mov eax, dword [edi]
mov dword [edi + 4], eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
mov eax, dword [ebp - 0x20]
cmp eax, dword [ebp - 0x24]
jne 0x45afc1
mov eax, dword fs:[0x2c]
mov ecx, dword [eax]
mov eax, dword [0x74d920]
cmp eax, dword [ecx + 0x98]
jg 0x45afd4
call fcn.005adb04
push 0
push 0x2710
push edx
push eax
call fcn.005ecd20
mov ecx, dword [0x74d768]
lea edx, [ecx + eax]
inc ecx
mov dword [0x74d768], ecx
mov ecx, 1
mov dword [0x74d934], edx
nop
mov eax, edx
shr eax, 0x1e
xor eax, edx
imul edx, eax, 0x6c078965
add edx, ecx
mov dword [ecx*4 + 0x74d934], edx
inc ecx
cmp ecx, 0x270
jb 0x45af50
mov dword [0x74d930], 0x270
lea ecx, [ebp - 0x34]
mov eax, dword [edi + 4]
sub eax, dword [edi]
sar eax, 2
imul eax, eax, 0xc4ec4ec5
push 0x74d930
mov dword [ebp - 0x34], 0
dec eax
mov dword [ebp - 0x30], eax
call fcn.0045ce90
mov ecx, dword [edi + 4]
xor edx, edx
sub ecx, dword [edi]
sar ecx, 2
imul ecx, ecx, 0xc4ec4ec5
div ecx
test byte [edi + 0x24], 8
mov dword [edi + 0x28], edx
je 0x45afc1
mov dword [edi + 0x28], 0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
call fcn.00410570
call fcn.005c695f
push 0x74d920
call fcn.005ab9bf
add esp, 4
cmp dword [0x74d920], 0xffffffff
jne 0x45af21
mov ecx, 0x74d930
call fcn.0045b250
push 0x74d920
call fcn.005ab96e
add esp, 4
jmp 0x45af21