Function at 0x45e020
Capabilities:
Encrypt data using rc4 ksa

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xa4
push ebx
push esi
mov esi, ecx
mov al, byte [esi + 0x4c]
test al, al
push edi
mov dword [ebp - 0x24], esi
jne 0x45f536
mov eax, dword [esi]
call dword [eax + 0x44]
mov ecx, esi
call fcn.004419c0
test al, al
je 0x45e08c
mov ecx, dword [ebp + 0x14]
mov edx, dword [ebp + 0x30]
mov eax, dword [ebp + 0x2c]
push ecx
mov ecx, dword [ebp + 0x28]
push edx
mov edx, dword [ebp + 0x24]
push eax
mov eax, dword [ebp + 0x20]
push ecx
mov ecx, dword [ebp + 0x1c]
push edx
mov edx, dword [ebp + 0x18]
push eax
mov eax, dword [ebp + 0x10]
push ecx
mov ecx, dword [ebp + 0xc]
push edx
mov edx, dword [ebp + 8]
push eax
mov eax, dword [esi + 0x44]
push ecx
mov ecx, dword [eax + 8]
push edx
call fcn.0045dd20
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x2c
mov al, byte [esi + 0x2e]
test al, al
jne 0x45f503
mov al, byte [esi + 0x2d]
test al, al
je 0x45e0a9
mov al, byte [esi + 0x4e]
test al, al
je 0x45f503
mov ecx, dword [esi + 0x44]
mov al, byte [ecx + 0x10]
test al, al
jne 0x45f503
mov edx, dword [ebp + 0x30]
mov eax, dword [ebp + 0x2c]
mov edi, dword [ebp + 8]
push edx
mov edx, dword [ebp + 0x28]
push eax
mov eax, dword [ebp + 0x24]
lea ecx, [ebp - 0xa4]
push ecx
mov ecx, dword [ebp + 0x18]
push edx
mov edx, dword [ebp + 0x14]
push eax
push ecx
push edx
lea eax, [ebp + 0x10]
push eax
lea ecx, [ebp + 0xc]
push ecx
push edi
mov ecx, esi
mov dword [ebp - 0xa4], 0
mov dword [ebp - 0xa0], 0
mov dword [ebp - 0x9c], 0
mov dword [ebp - 0x98], 0
mov dword [ebp - 0x94], 0
mov dword [ebp - 0x90], 0
mov dword [ebp - 0x8c], 0
mov dword [ebp - 0x88], 0
call fcn.0044e0f0
test al, al
je 0x45f536
push 0
push 0x52ed8c
push 0x52ed70
push 0
push edi
call fcn.004e3055
push 0
push 0x52ed54
push 0x52ed70
push 0
push edi
mov ebx, eax
call fcn.004e3055
add esp, 0x28
test ebx, ebx
je 0x45f48b
mov edx, dword [ebx]
mov ecx, ebx
call dword [edx + 0x44]
mov esi, dword [ebx + 0x24]
mov ecx, ebx
mov dword [ebp - 0x10], esi
call fcn.00447ea0
test esi, esi
jne 0x45eb19
mov esi, eax
mov eax, dword [ebp + 0x14]
imul esi, dword [eax + 4]
mov edx, dword [eax]
mov eax, dword [ebx]
add esi, edx
call dword [eax + 0x58]
lea ecx, [eax + esi*4]
fld qword [ebp + 0x24]
mov dword [ebp - 0x58], ecx
fcos
fstp qword [ebp - 0x60]
fld qword [ebp + 0x24]
fsin
fstp qword [ebp - 0x6c]
fld qword [ebp - 0x60]
fmul qword [0x5035d0]
call fcn.004e11d8
fld qword [ebp - 0x6c]
fmul qword [0x5035d0]
mov ebx, eax
mov dword [ebp - 4], ebx
call fcn.004e11d8
mov esi, dword [ebp - 0x24]
mov edx, dword [esi]
mov ecx, esi
mov dword [ebp + 0x18], eax
call dword [edx + 0x88]
test al, al
je 0x45f536
mov eax, dword [esi + 0x44]
mov ecx, dword [eax + 0x6c]
mov edx, dword [eax + 0x70]
mov edi, dword [eax + 0x64]
mov dword [ebp - 0x50], ecx
mov ecx, dword [eax + 0x74]
mov dword [ebp - 0x4c], ecx
mov dword [ebp - 0x2c], edx
mov edx, dword [eax + 0x60]
mov ecx, 0x20
sub ecx, edx
mov edx, dword [eax + 0x68]
mov eax, dword [esi + 0xb0]
mov dword [ebp - 0x48], ecx
mov ecx, 0x18
sub ecx, edi
mov dword [ebp - 0x38], ecx
mov ecx, 0x10
sub ecx, edx
mov edx, dword [esi + 0xac]
mov dword [ebp - 0x20], eax
mov eax, dword [esi + 0xa8]
cmp eax, 0x10
mov dword [ebp - 0x28], ecx
mov ecx, dword [esi + 0xb4]
mov dword [ebp - 0x18], edx
mov dword [ebp + 0x20], ecx
jne 0x45e6ba
fld qword [ebp - 0x9c]
call fcn.004e11d8
fld qword [ebp - 0xa4]
mov edi, eax
call fcn.004e11d8
mov ecx, eax
mov eax, dword [esi + 0x64]
imul eax, edi
cdq
sub eax, edx
mov edx, dword [esi + 0x78]
sar eax, 1
add eax, ecx
mov dword [ebp + 0x28], ecx
mov ecx, dword [ebp + 0x1c]
lea eax, [edx + eax*2]
push 0x57de98
push ecx
mov dword [ebp - 0x14], eax
call fcn.00440ec0
add esp, 8
test al, al
je 0x45f480
fld qword [0x4ff9c8]
mov dword [ebp - 8], 0
fcomp qword [ebp - 0x8c]
fnstsw ax
test ah, 5
jp 0x45f480
mov ecx, dword [ebp + 0x2c]
mov eax, dword [ebp + 0x28]
sub eax, ecx
mov dword [ebp + 0x1c], eax
fild dword [ebp + 0x1c]
fsub dword [ebp + 0xc]
fld qword [ebp - 0x60]
fmul st(1)
fstp qword [ebp - 0x84]
fild dword [ebp + 0x2c]
fstp qword [ebp - 0x7c]
fmul qword [ebp - 0x6c]
fild dword [ebp + 0x30]
fld qword [ebp - 0x94]
fsub qword [0x4fe4d0]
call fcn.004e11d8
mov dword [ebp + 0xc], eax
sub edi, dword [ebp + 0x30]
mov dword [ebp - 0xc], edi
fild dword [ebp - 0xc]
fsub dword [ebp + 0x10]
fld qword [ebp - 0x6c]
fmul st(1)
fsubr qword [ebp - 0x84]
fadd qword [ebp - 0x7c]
fmul qword [0x5035d0]
call fcn.004e11d8
fmul qword [ebp - 0x60]
mov edi, eax
fadd st(1)
fadd st(2)
fmul qword [0x5035d0]
call fcn.004e11d8
cmp ebx, 0xffffffff
mov esi, dword [ebp + 0xc]
mov ecx, eax
mov dword [ebp + 0x30], 0
mov dword [ebp + 0x2c], esi
jge 0x45e378
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 8]
shl eax, 0x10
sub eax, edi
sub eax, 0x27fff
cdq
idiv ebx
test eax, eax
jl 0x45e366
mov dword [ebp + 0x30], eax
mov eax, 0x7fff
sub eax, edi
cdq
idiv ebx
cmp eax, esi
jge 0x45e3c5
mov esi, eax
jmp 0x45e3c2
cmp ebx, 1
jl 0x45e3a9
mov eax, 0x10000
sub eax, edi
cdq
idiv ebx
test eax, eax
jle 0x45e38e
mov dword [ebp + 0x30], eax
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 8]
shl eax, 0x10
sub eax, edi
sub eax, 0x17fff
cdq
idiv ebx
cmp eax, esi
jge 0x45e3c5
mov esi, eax
jmp 0x45e3c2
test edi, edi
jl 0x45e3bf
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 8]
shl eax, 0x10
sub eax, 0x10000
cmp edi, eax
jl 0x45e3c5
or esi, 0xffffffff
mov dword [ebp + 0x2c], esi
mov eax, dword [ebp + 0x18]
cmp eax, 0xffffffff
jg 0x45e3fc
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 0xc]
shl eax, 0x10
sub eax, ecx
sub eax, 0x27fff
cdq
idiv dword [ebp + 0x18]
cmp eax, dword [ebp + 0x30]
jle 0x45e3e9
mov dword [ebp + 0x30], eax
mov eax, ecx
cdq
idiv dword [ebp + 0x18]
mov esi, dword [ebp + 0x2c]
neg eax
cmp eax, esi
jge 0x45e44d
mov esi, eax
jmp 0x45e44d
cmp eax, 1
jl 0x45e433
mov eax, 0x10000
sub eax, ecx
cdq
idiv dword [ebp + 0x18]
cmp eax, dword [ebp + 0x30]
jle 0x45e414
mov dword [ebp + 0x30], eax
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 0xc]
shl eax, 0x10
sub eax, ecx
sub eax, 0x17fff
cdq
idiv dword [ebp + 0x18]
mov esi, dword [ebp + 0x2c]
cmp eax, esi
jge 0x45e44d
mov esi, eax
jmp 0x45e44d
test ecx, ecx
jl 0x45e449
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 0xc]
shl eax, 0x10
sub eax, 0x10000
cmp ecx, eax
jl 0x45e44d
mov esi, dword [ebp + 0x30]
dec esi
mov eax, dword [ebp + 0x30]
mov edx, eax
imul eax, dword [ebp + 0x18]
imul edx, ebx
add edi, edx
mov edx, dword [ebp + 0x30]
add ecx, eax
mov eax, dword [ebp - 0x14]
lea eax, [eax + edx*2]
mov edx, dword [ebp + 8]
mov edx, dword [edx + 4]
mov dword [ebp - 0x74], edx
mov edx, dword [ebp + 0x30]
cmp edx, esi
mov dword [ebp - 0x3c], edi
mov dword [ebp - 0x34], ecx
mov dword [ebp - 0x30], eax
jg 0x45e67f
sub esi, edx
inc esi
mov dword [ebp - 0x1c], esi
lea esp, [esp]
mov ax, word [eax]
mov edx, ecx
sar edx, 0x10
imul edx, dword [ebp - 0x74]
mov word [ebp - 0x64], ax
mov eax, edi
sar eax, 0x10
add edx, eax
mov eax, dword [ebp - 0x58]
mov ebx, dword [eax + edx*4]
lea eax, [eax + edx*4]
mov edx, dword [eax + 4]
mov dword [ebp + 0x2c], edx
mov edx, dword [ebp + 8]
mov edx, dword [edx + 4]
and ecx, 0xfffe
lea eax, [eax + edx*4]
mov edx, dword [eax]
and edi, 0xfffe
inc edi
inc ecx
mov dword [ebp + 0x30], edx
mov dword [ebp - 0x70], edi
mov eax, dword [eax + 4]
mov esi, 0x10000
sub esi, ecx
mov edx, 0x10000
sub edx, edi
imul edi, esi
mov dword [ebp + 0x28], edx
imul edx, esi
mov esi, dword [ebp + 0x2c]
mov dword [ebp + 0x1c], ebx
shr esi, 0x18
shr ebx, 0x18
shr edi, 0x10
imul edi, esi
mov esi, ecx
imul ecx, dword [ebp - 0x70]
imul esi, dword [ebp + 0x28]
shr edx, 0x10
imul edx, ebx
mov ebx, dword [ebp + 0x30]
shr ebx, 0x18
shr ecx, 0x10
shr esi, 0x10
imul esi, ebx
mov ebx, eax
shr ebx, 0x18
imul ecx, ebx
shr ecx, 0x10
shr esi, 0x10
mov ebx, 0x100
sub ebx, ecx
sub ebx, esi
shr edi, 0x10
sub ebx, edi
shr edx, 0x10
sub ebx, edx
mov dword [ebp - 0x10], ebx
movzx ebx, word [ebp - 0x64]
mov dword [ebp + 0x28], ebx
mov dword [ebp - 0x44], ecx
mov ebx, eax
and ebx, 0xff00
imul ebx, ecx
mov ecx, dword [ebp + 0x30]
and ecx, 0xff00
imul ecx, esi
add ebx, ecx
mov ecx, dword [ebp + 0x2c]
and ecx, 0xff00
imul ecx, edi
add ebx, ecx
mov ecx, dword [ebp + 0x1c]
and ecx, 0xff00
imul ecx, edx
add ebx, ecx
mov ecx, dword [ebp - 0x38]
mov dword [ebp - 0x40], edi
mov dword [ebp - 0x54], esi
shr ebx, cl
mov ecx, dword [ebp - 0x2c]
mov edi, dword [ebp - 0x20]
shl ebx, cl
mov ecx, dword [ebp + 0x28]
and ecx, edi
imul ecx, dword [ebp - 0x10]
shr ecx, 8
and ecx, edi
add ebx, ecx
mov ecx, dword [ebp + 0x30]
and ecx, 0xff
imul ecx, esi
mov edi, eax
and edi, 0xff
imul edi, dword [ebp - 0x44]
add edi, ecx
mov ecx, dword [ebp + 0x2c]
and ecx, 0xff
imul ecx, dword [ebp - 0x40]
add edi, ecx
mov ecx, dword [ebp + 0x1c]
and ecx, 0xff
imul ecx, edx
add edi, ecx
mov ecx, dword [ebp - 0x28]
shr edi, cl
mov ecx, dword [ebp - 0x4c]
mov esi, dword [ebp + 0x20]
and eax, 0xff0000
shl edi, cl
imul eax, dword [ebp - 0x44]
mov ecx, dword [ebp + 0x28]
and ecx, esi
imul ecx, dword [ebp - 0x10]
shr ecx, 8
and ecx, esi
add edi, ecx
mov ecx, dword [ebp + 0x30]
and ecx, 0xff0000
imul ecx, dword [ebp - 0x54]
add eax, ecx
mov ecx, dword [ebp + 0x2c]
and ecx, 0xff0000
imul ecx, dword [ebp - 0x40]
add eax, ecx
mov ecx, dword [ebp + 0x1c]
and ecx, 0xff0000
imul ecx, edx
mov edx, dword [ebp - 0x18]
add eax, ecx
mov ecx, dword [ebp - 0x48]
shr eax, cl
mov ecx, dword [ebp - 0x50]
mov esi, dword [ebp + 0x18]
or ebx, edi
shl eax, cl
mov ecx, dword [ebp + 0x28]
mov edi, dword [ebp - 0x3c]
and ecx, edx
imul ecx, dword [ebp - 0x10]
shr ecx, 8
and ecx, edx
mov edx, dword [ebp - 0x1c]
add eax, ecx
mov ecx, dword [ebp - 0x34]
or ebx, eax
mov eax, dword [ebp - 0x30]
mov word [eax], bx
mov ebx, dword [ebp - 4]
add eax, 2
add edi, ebx
add ecx, esi
dec edx
mov dword [ebp - 0x30], eax
mov dword [ebp - 0x3c], edi
mov dword [ebp - 0x34], ecx
mov dword [ebp - 0x1c], edx
jne 0x45e490
mov edx, dword [ebp - 0x24]
mov eax, dword [edx + 0x64]
mov ecx, dword [ebp - 0x14]
cdq
sub eax, edx
sar eax, 1
lea edx, [ecx + eax*2]
mov ecx, dword [ebp - 8]
mov eax, dword [ebp - 0xc]
inc ecx
mov dword [ebp - 8], ecx
inc eax
fild dword [ebp - 8]
mov dword [ebp - 0xc], eax
mov dword [ebp - 0x14], edx
fcomp qword [ebp - 0x8c]
fnstsw ax
test ah, 5
jnp 0x45e305
jmp 0x45f47c
cmp eax, 0x20
jne 0x45f480
fld qword [ebp - 0x9c]
call fcn.004e11d8
fld qword [ebp - 0xa4]
mov esi, eax
call fcn.004e11d8
mov ecx, dword [ebp - 0x24]
mov edi, eax
mov eax, dword [ecx + 0x64]
mov ecx, dword [ecx + 0x78]
imul eax, esi
cdq
and edx, 3
add eax, edx
sar eax, 2
add eax, edi
lea edx, [ecx + eax*4]
mov eax, dword [ebp + 0x1c]
push 0x57de98
push eax
mov dword [ebp - 0xc], edx
call fcn.00440ec0
add esp, 8
test al, al
je 0x45f480
fld qword [0x4ff9c8]
mov dword [ebp - 0x14], 0
fcomp qword [ebp - 0x8c]
fnstsw ax
test ah, 5
jp 0x45f480
sub edi, dword [ebp + 0x2c]
mov dword [ebp + 0x1c], edi
fild dword [ebp + 0x1c]
fsub dword [ebp + 0xc]
fld qword [ebp - 0x60]
fmul st(1)
fstp qword [ebp - 0x84]
fild dword [ebp + 0x2c]
fstp qword [ebp - 0x7c]
fmul qword [ebp - 0x6c]
fild dword [ebp + 0x30]
fld qword [ebp - 0x94]
fsub qword [0x4fe4d0]
call fcn.004e11d8
mov dword [ebp + 0xc], eax
sub esi, dword [ebp + 0x30]
mov dword [ebp - 0x10], esi
mov edi, edi
fild dword [ebp - 0x10]
fsub dword [ebp + 0x10]
fld qword [ebp - 0x6c]
fmul st(1)
fsubr qword [ebp - 0x84]
fadd qword [ebp - 0x7c]
fmul qword [0x5035d0]
call fcn.004e11d8
fmul qword [ebp - 0x60]
mov esi, eax
fadd st(2)
fadd st(1)
fmul qword [0x5035d0]
call fcn.004e11d8
cmp ebx, 0xffffffff
mov edi, dword [ebp + 0xc]
mov ecx, eax
mov dword [ebp + 0x30], 0
mov dword [ebp + 0x2c], edi
jge 0x45e7e3
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 8]
shl eax, 0x10
sub eax, esi
sub eax, 0x27fff
cdq
idiv ebx
test eax, eax
jl 0x45e7d1
mov dword [ebp + 0x30], eax
mov eax, 0x7fff
sub eax, esi
cdq
idiv ebx
cmp eax, edi
jge 0x45e830
mov edi, eax
jmp 0x45e82d
cmp ebx, 1
jl 0x45e814
mov eax, 0x10000
sub eax, esi
cdq
idiv ebx
test eax, eax
jle 0x45e7f9
mov dword [ebp + 0x30], eax
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 8]
shl eax, 0x10
sub eax, esi
sub eax, 0x17fff
cdq
idiv ebx
cmp eax, edi
jge 0x45e830
mov edi, eax
jmp 0x45e82d
test esi, esi
jl 0x45e82a
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 8]
shl eax, 0x10
sub eax, 0x10000
cmp esi, eax
jl 0x45e830
or edi, 0xffffffff
mov dword [ebp + 0x2c], edi
mov eax, dword [ebp + 0x18]
cmp eax, 0xffffffff
jg 0x45e867
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 0xc]
shl eax, 0x10
sub eax, ecx
sub eax, 0x27fff
cdq
idiv dword [ebp + 0x18]
cmp eax, dword [ebp + 0x30]
jle 0x45e854
mov dword [ebp + 0x30], eax
mov eax, ecx
cdq
idiv dword [ebp + 0x18]
mov edi, dword [ebp + 0x2c]
neg eax
cmp eax, edi
jge 0x45e8b8
mov edi, eax
jmp 0x45e8b8
cmp eax, 1
jl 0x45e89e
mov eax, 0x10000
sub eax, ecx
cdq
idiv dword [ebp + 0x18]
cmp eax, dword [ebp + 0x30]
jle 0x45e87f
mov dword [ebp + 0x30], eax
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 0xc]
shl eax, 0x10
sub eax, ecx
sub eax, 0x17fff
cdq
idiv dword [ebp + 0x18]
mov edi, dword [ebp + 0x2c]
cmp eax, edi
jge 0x45e8b8
mov edi, eax
jmp 0x45e8b8
test ecx, ecx
jl 0x45e8b4
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 0xc]
shl eax, 0x10
sub eax, 0x10000
cmp ecx, eax
jl 0x45e8b8
mov edi, dword [ebp + 0x30]
dec edi
mov eax, dword [ebp + 0x30]
mov edx, eax
imul eax, dword [ebp + 0x18]
imul edx, ebx
add esi, edx
mov edx, dword [ebp + 0x30]
add ecx, eax
mov eax, dword [ebp - 0xc]
lea eax, [eax + edx*4]
mov edx, dword [ebp + 8]
mov edx, dword [edx + 4]
mov dword [ebp - 0x54], edx
mov edx, dword [ebp + 0x30]
cmp edx, edi
mov dword [ebp - 0x30], esi
mov dword [ebp - 0x40], ecx
mov dword [ebp - 0x3c], eax
jg 0x45eada
sub edi, edx
inc edi
mov dword [ebp - 0x44], edi
mov eax, dword [eax]
mov edx, ecx
sar edx, 0x10
imul edx, dword [ebp - 0x54]
mov dword [ebp + 0x28], eax
mov eax, esi
sar eax, 0x10
add edx, eax
mov eax, dword [ebp - 0x58]
mov edi, dword [eax + edx*4]
lea eax, [eax + edx*4]
mov edx, esi
mov esi, dword [eax + 4]
mov dword [ebp + 0x2c], esi
mov esi, dword [ebp + 8]
mov esi, dword [esi + 4]
and ecx, 0xffff
lea eax, [eax + esi*4]
mov esi, dword [eax]
mov dword [ebp + 0x30], esi
and edx, 0xffff
mov dword [ebp - 0x1c], edx
mov ebx, 0xffff
sub ebx, edx
mov edx, ebx
mov esi, 0xffff
sub esi, ecx
imul edx, esi
mov dword [ebp + 0x1c], edi
shr edi, 0x18
shr edx, 0x10
imul edx, edi
mov edi, dword [ebp - 0x1c]
imul edi, esi
mov esi, dword [ebp + 0x2c]
mov eax, dword [eax + 4]
shr esi, 0x18
shr edi, 0x10
imul edi, esi
mov esi, ecx
imul ecx, dword [ebp - 0x1c]
imul esi, ebx
mov ebx, dword [ebp + 0x30]
shr ebx, 0x18
shr ecx, 0x10
shr esi, 0x10
imul esi, ebx
mov ebx, eax
shr ebx, 0x18
imul ecx, ebx
shr ecx, 0x10
shr esi, 0x10
mov ebx, 0x100
sub ebx, ecx
sub ebx, esi
shr edi, 0x10
sub ebx, edi
shr edx, 0x10
sub ebx, edx
mov dword [ebp - 8], ebx
mov dword [ebp - 0x1c], ecx
mov ebx, eax
and ebx, 0xff
imul ebx, ecx
mov ecx, dword [ebp + 0x30]
and ecx, 0xff
imul ecx, esi
add ebx, ecx
mov ecx, dword [ebp + 0x2c]
and ecx, 0xff
imul ecx, edi
add ebx, ecx
mov ecx, dword [ebp + 0x1c]
and ecx, 0xff
imul ecx, edx
add ebx, ecx
mov ecx, dword [ebp - 0x28]
shr ebx, cl
mov ecx, dword [ebp - 0x4c]
mov dword [ebp - 0x34], edi
mov dword [ebp - 0x64], esi
shl ebx, cl
mov edi, dword [ebp + 0x20]
mov ecx, dword [ebp + 0x28]
and ecx, edi
imul ecx, dword [ebp - 8]
shr ecx, 8
and ecx, edi
add ebx, ecx
mov ecx, dword [ebp + 0x30]
and ecx, 0xff0000
imul ecx, esi
mov edi, eax
and edi, 0xff0000
imul edi, dword [ebp - 0x1c]
add edi, ecx
mov ecx, dword [ebp + 0x2c]
and ecx, 0xff0000
imul ecx, dword [ebp - 0x34]
add edi, ecx
mov ecx, dword [ebp + 0x1c]
and ecx, 0xff0000
imul ecx, edx
add edi, ecx
mov ecx, dword [ebp - 0x48]
mov esi, dword [ebp - 0x18]
shr edi, cl
mov ecx, dword [ebp - 0x50]
and eax, 0xff00
imul eax, dword [ebp - 0x1c]
shl edi, cl
mov ecx, dword [ebp + 0x28]
and ecx, esi
imul ecx, dword [ebp - 8]
shr ecx, 8
and ecx, esi
add edi, ecx
mov ecx, dword [ebp + 0x30]
and ecx, 0xff00
imul ecx, dword [ebp - 0x64]
add eax, ecx
mov ecx, dword [ebp + 0x2c]
and ecx, 0xff00
imul ecx, dword [ebp - 0x34]
add eax, ecx
mov ecx, dword [ebp + 0x1c]
and ecx, 0xff00
imul ecx, edx
mov edx, dword [ebp - 0x20]
add eax, ecx
mov ecx, dword [ebp - 0x38]
shr eax, cl
mov ecx, dword [ebp - 0x2c]
mov esi, dword [ebp - 0x30]
or ebx, edi
shl eax, cl
mov ecx, dword [ebp + 0x28]
mov edi, dword [ebp + 0x18]
and ecx, edx
imul ecx, dword [ebp - 8]
shr ecx, 8
and ecx, edx
mov edx, dword [ebp - 0x44]
add eax, ecx
mov ecx, dword [ebp - 0x40]
or ebx, eax
mov eax, dword [ebp - 0x3c]
mov dword [eax], ebx
mov ebx, dword [ebp - 4]
add eax, 4
add esi, ebx
add ecx, edi
dec edx
mov dword [ebp - 0x3c], eax
mov dword [ebp - 0x30], esi
mov dword [ebp - 0x40], ecx
mov dword [ebp - 0x44], edx
jne 0x45e8f4
mov edx, dword [ebp - 0x24]
mov eax, dword [edx + 0x64]
mov ecx, dword [ebp - 0xc]
cdq
and edx, 3
add eax, edx
sar eax, 2
lea edx, [ecx + eax*4]
mov ecx, dword [ebp - 0x14]
mov eax, dword [ebp - 0x10]
inc ecx
mov dword [ebp - 0x14], ecx
inc eax
fild dword [ebp - 0x14]
mov dword [ebp - 0x10], eax
mov dword [ebp - 0xc], edx
fcomp qword [ebp - 0x8c]
fnstsw ax
test ah, 5
jnp 0x45e770
jmp 0x45f47c
fld qword [ebp + 0x24]
mov ecx, dword [ebp + 0x14]
fcos
imul eax, dword [ecx + 4]
mov edi, dword [ebx + 0x28]
mov edx, dword [ecx]
add eax, edi
add eax, edx
mov dword [ebp - 0x58], eax
fstp qword [ebp - 0x6c]
fld qword [ebp + 0x24]
fsin
fstp qword [ebp - 0x60]
fld qword [ebp - 0x6c]
fmul qword [0x5035d0]
call fcn.004e11d8
fld qword [ebp - 0x60]
fmul qword [0x5035d0]
mov ebx, eax
mov dword [ebp + 0x20], ebx
call fcn.004e11d8
mov edi, dword [ebp - 0x24]
mov edx, dword [edi]
mov ecx, edi
mov dword [ebp + 0x18], eax
call dword [edx + 0x88]
test al, al
je 0x45f536
mov eax, dword [edi + 0x44]
mov ecx, dword [eax + 0x6c]
mov edx, dword [eax + 0x70]
mov dword [ebp - 0x70], ecx
mov ecx, dword [eax + 0x74]
mov dword [ebp - 0x40], ecx
mov dword [ebp - 0x34], edx
mov edx, dword [eax + 0x60]
mov ecx, 0x20
sub ecx, edx
mov edx, dword [eax + 0x64]
mov dword [ebp - 0x44], ecx
mov ecx, 0x18
sub ecx, edx
mov edx, dword [eax + 0x68]
mov eax, dword [edi + 0xb0]
mov dword [ebp - 0x1c], ecx
mov ecx, 0x10
sub ecx, edx
mov edx, dword [edi + 0xac]
mov dword [ebp - 0x3c], eax
mov eax, dword [edi + 0xa8]
cmp eax, 0x10
mov dword [ebp - 0x30], ecx
mov ecx, dword [edi + 0xb4]
mov dword [ebp - 0x74], edx
mov dword [ebp - 0x14], ecx
jne 0x45f059
fld qword [ebp - 0x9c]
call fcn.004e11d8
fld qword [ebp - 0xa4]
mov dword [ebp - 4], eax
call fcn.004e11d8
mov ecx, eax
mov eax, dword [edi + 0x64]
imul eax, dword [ebp - 4]
cdq
sub eax, edx
mov edx, dword [edi + 0x78]
sar eax, 1
add eax, ecx
mov dword [ebp + 0x28], ecx
mov ecx, dword [ebp + 0x1c]
lea eax, [edx + eax*2]
push 0x57de98
push ecx
mov dword [ebp - 0x18], eax
call fcn.00440ec0
add esp, 8
test al, al
je 0x45f480
fld qword [0x4ff9c8]
mov dword [ebp - 0xc], 0
fcomp qword [ebp - 0x8c]
fnstsw ax
test ah, 5
jp 0x45f480
mov edx, dword [ebp + 0x2c]
mov eax, dword [ebp + 0x28]
sub eax, edx
mov dword [ebp + 0x1c], eax
fild dword [ebp + 0x1c]
fsub dword [ebp + 0xc]
fld qword [ebp - 0x6c]
fmul st(1)
fstp qword [ebp - 0x84]
fild dword [ebp + 0x2c]
fstp qword [ebp - 0x7c]
fmul qword [ebp - 0x60]
fild dword [ebp + 0x30]
fld qword [ebp - 0x94]
fsub qword [0x4fe4d0]
call fcn.004e11d8
mov ecx, dword [ebp + 0x30]
mov dword [ebp + 0xc], eax
mov eax, dword [ebp - 4]
sub eax, ecx
mov dword [ebp - 8], eax
mov edi, edi
fild dword [ebp - 8]
fsub dword [ebp + 0x10]
fld qword [ebp - 0x60]
fmul st(1)
fsubr qword [ebp - 0x84]
fadd qword [ebp - 0x7c]
fmul qword [0x5035d0]
call fcn.004e11d8
fmul qword [ebp - 0x6c]
mov edi, eax
fadd st(2)
fadd st(1)
fmul qword [0x5035d0]
call fcn.004e11d8
cmp ebx, 0xffffffff
mov edx, dword [ebp + 0xc]
mov ecx, eax
mov dword [ebp + 0x2c], 0
mov dword [ebp + 0x30], edx
jge 0x45ed05
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 8]
shl eax, 0x10
sub eax, edi
sub eax, 0x27fff
cdq
idiv ebx
test eax, eax
jl 0x45ecf1
mov dword [ebp + 0x2c], eax
mov eax, 0x7fff
sub eax, edi
cdq
idiv ebx
cmp eax, dword [ebp + 0x30]
jge 0x45ed4b
mov dword [ebp + 0x30], eax
jmp 0x45ed4b
cmp ebx, 1
jl 0x45ed2d
mov eax, 0x10000
sub eax, edi
cdq
idiv ebx
test eax, eax
jle 0x45ed1b
mov dword [ebp + 0x2c], eax
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 8]
shl eax, 0x10
sub eax, edi
sub eax, 0x17fff
jmp 0x45ecf8
test edi, edi
jl 0x45ed44
mov eax, dword [ebp + 0x14]
mov edx, dword [eax + 8]
shl edx, 0x10
sub edx, 0x10000
cmp edi, edx
jl 0x45ed4b
mov dword [ebp + 0x30], 0xffffffff
mov eax, dword [ebp + 0x18]
cmp eax, 0xffffffff
jg 0x45f000
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 0xc]
mov ebx, dword [ebp + 0x18]
shl eax, 0x10
sub eax, ecx
sub eax, 0x27fff
cdq
idiv ebx
cmp eax, dword [ebp + 0x2c]
jle 0x45ed75
mov dword [ebp + 0x2c], eax
mov eax, ecx
cdq
idiv ebx
neg eax
cmp eax, dword [ebp + 0x30]
jge 0x45ed84
mov dword [ebp + 0x30], eax
mov ebx, dword [ebp + 0x20]
mov eax, dword [ebp + 0x2c]
mov edx, eax
imul eax, dword [ebp + 0x18]
imul edx, ebx
add edi, edx
mov edx, dword [ebp + 0x2c]
add ecx, eax
mov eax, dword [ebp - 0x18]
lea eax, [eax + edx*2]
mov edx, dword [ebp + 8]
mov edx, dword [edx + 4]
mov dword [ebp - 0x54], edx
mov edx, dword [ebp + 0x30]
cmp dword [ebp + 0x2c], edx
mov dword [ebp - 0x48], edi
mov dword [ebp - 0x4c], ecx
mov dword [ebp - 0x50], eax
jg 0x45efc5
sub edx, dword [ebp + 0x2c]
inc edx
mov dword [ebp - 0x28], edx
mov ax, word [eax]
mov ebx, dword [ebp - 0x58]
mov edx, ecx
sar edx, 0x10
imul edx, dword [ebp - 0x54]
add ebx, edx
mov edx, edi
mov word [ebp - 0x64], ax
mov eax, edi
sar eax, 0x10
movzx edi, byte [eax + ebx]
add eax, ebx
mov ebx, dword [esi + edi*4]
movzx edi, byte [eax + 1]
mov edi, dword [esi + edi*4]
mov dword [ebp + 0x2c], edi
mov edi, dword [ebp + 8]
mov edi, dword [edi + 4]
add eax, edi
movzx edi, byte [eax]
mov edi, dword [esi + edi*4]
movzx eax, byte [eax + 1]
mov eax, dword [esi + eax*4]
and ecx, 0xfffe
and edx, 0xfffe
inc edx
inc ecx
mov dword [ebp + 0x30], edi
mov dword [ebp - 4], edx
mov edi, 0x10000
sub edi, edx
mov edx, edi
imul edi, ecx
mov esi, 0x10000
sub esi, ecx
imul ecx, dword [ebp - 4]
imul edx, esi
imul esi, dword [ebp - 4]
mov dword [ebp + 0x28], ebx
shr ebx, 0x18
shr edx, 0x10
imul edx, ebx
mov ebx, dword [ebp + 0x2c]
shr ebx, 0x18
shr esi, 0x10
imul esi, ebx
mov ebx, dword [ebp + 0x30]
shr ebx, 0x18
shr ecx, 0x10
shr edi, 0x10
imul edi, ebx
mov ebx, eax
shr ebx, 0x18
imul ecx, ebx
shr ecx, 0x10
shr esi, 0x10
shr edi, 0x10
mov dword [ebp + 0x1c], esi
mov ebx, 0x100
sub ebx, ecx
sub ebx, edi
sub ebx, esi
movzx esi, word [ebp - 0x64]
mov dword [ebp - 0x20], esi
mov dword [ebp - 4], ecx
mov esi, eax
and esi, 0xff00
imul esi, ecx
mov ecx, dword [ebp + 0x30]
and ecx, 0xff00
imul ecx, edi
add esi, ecx
mov ecx, dword [ebp + 0x2c]
and ecx, 0xff00
imul ecx, dword [ebp + 0x1c]
shr edx, 0x10
sub ebx, edx
add esi, ecx
mov ecx, dword [ebp + 0x28]
mov dword [ebp - 0x2c], edi
mov dword [ebp - 0x38], ebx
and ecx, 0xff00
imul ecx, edx
add esi, ecx
mov ecx, dword [ebp - 0x1c]
shr esi, cl
mov ecx, dword [ebp - 0x34]
mov edi, dword [ebp - 0x20]
shl esi, cl
mov ecx, dword [ebp - 0x3c]
and edi, ecx
imul edi, ebx
shr edi, 8
and edi, ecx
mov ecx, dword [ebp + 0x30]
and ecx, 0xff
imul ecx, dword [ebp - 0x2c]
add esi, edi
mov edi, eax
and edi, 0xff
imul edi, dword [ebp - 4]
add edi, ecx
mov ecx, dword [ebp + 0x2c]
and ecx, 0xff
imul ecx, dword [ebp + 0x1c]
add edi, ecx
mov ecx, dword [ebp + 0x28]
and ecx, 0xff
imul ecx, edx
add edi, ecx
mov ecx, dword [ebp - 0x30]
shr edi, cl
mov ecx, dword [ebp - 0x40]
mov ebx, dword [ebp - 0x14]
and eax, 0xff0000
shl edi, cl
imul eax, dword [ebp - 4]
mov ecx, dword [ebp - 0x20]
and ecx, ebx
imul ecx, dword [ebp - 0x38]
shr ecx, 8
and ecx, ebx
add edi, ecx
mov ecx, dword [ebp + 0x30]
and ecx, 0xff0000
imul ecx, dword [ebp - 0x2c]
add eax, ecx
mov ecx, dword [ebp + 0x2c]
and ecx, 0xff0000
imul ecx, dword [ebp + 0x1c]
add eax, ecx
mov ecx, dword [ebp + 0x28]
and ecx, 0xff0000
imul ecx, edx
mov edx, dword [ebp - 0x74]
add eax, ecx
mov ecx, dword [ebp - 0x44]
shr eax, cl
mov ecx, dword [ebp - 0x70]
mov ebx, dword [ebp + 0x20]
or esi, edi
shl eax, cl
mov ecx, dword [ebp - 0x20]
mov edi, dword [ebp - 0x48]
and ecx, edx
imul ecx, dword [ebp - 0x38]
shr ecx, 8
and ecx, edx
mov edx, dword [ebp - 0x28]
add eax, ecx
mov ecx, dword [ebp - 0x4c]
or esi, eax
mov eax, dword [ebp - 0x50]
mov word [eax], si
mov esi, dword [ebp + 0x18]
add eax, 2
add edi, ebx
add ecx, esi
mov dword [ebp - 0x50], eax
mov dword [ebp - 0x48], edi
mov dword [ebp - 0x4c], ecx
dec edx
mov esi, dword [ebp - 0x10]
mov dword [ebp - 0x28], edx
jne 0x45edc5
mov edx, dword [ebp - 0x24]
mov eax, dword [edx + 0x64]
mov ecx, dword [ebp - 0x18]
cdq
sub eax, edx
sar eax, 1
lea edx, [ecx + eax*2]
mov ecx, dword [ebp - 0xc]
mov eax, dword [ebp - 8]
inc ecx
mov dword [ebp - 0xc], ecx
inc eax
fild dword [ebp - 0xc]
mov dword [ebp - 8], eax
mov dword [ebp - 0x18], edx
fcomp qword [ebp - 0x8c]
fnstsw ax
test ah, 5
jnp 0x45ec90
jmp 0x45f47c
cmp eax, 1
jl 0x45f032
mov ebx, dword [ebp + 0x18]
mov eax, 0x10000
sub eax, ecx
cdq
idiv ebx
cmp eax, dword [ebp + 0x2c]
jle 0x45f01a
mov dword [ebp + 0x2c], eax
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 0xc]
shl eax, 0x10
sub eax, ecx
sub eax, 0x17fff
cdq
idiv ebx
jmp 0x45ed7c
test ecx, ecx
jl 0x45f04d
mov eax, dword [ebp + 0x14]
mov edx, dword [eax + 0xc]
shl edx, 0x10
sub edx, 0x10000
cmp ecx, edx
jl 0x45ed87
mov eax, dword [ebp + 0x2c]
dec eax
mov dword [ebp + 0x30], eax
jmp 0x45ed87
cmp eax, 0x20
jne 0x45f480
fld qword [ebp - 0x9c]
call fcn.004e11d8
fld qword [ebp - 0xa4]
mov edi, eax
call fcn.004e11d8
mov ecx, dword [ebp - 0x24]
mov dword [ebp + 0x28], eax
mov eax, dword [ecx + 0x64]
mov ecx, dword [ecx + 0x78]
imul eax, edi
cdq
and edx, 3
add eax, edx
mov edx, dword [ebp + 0x28]
sar eax, 2
add eax, edx
lea edx, [ecx + eax*4]
mov eax, dword [ebp + 0x1c]
push 0x57de98
push eax
mov dword [ebp - 0x18], edx
call fcn.00440ec0
add esp, 8
test al, al
je 0x45f480
fld qword [0x4ff9c8]
mov dword [ebp - 0xc], 0
fcomp qword [ebp - 0x8c]
fnstsw ax
test ah, 5
jp 0x45f480
mov ecx, dword [ebp + 0x2c]
mov eax, dword [ebp + 0x28]
sub eax, ecx
mov dword [ebp + 0x1c], eax
fild dword [ebp + 0x1c]
fsub dword [ebp + 0xc]
fld qword [ebp - 0x6c]
fmul st(1)
fstp qword [ebp - 0x84]
fild dword [ebp + 0x2c]
fstp qword [ebp - 0x7c]
fmul qword [ebp - 0x60]
fild dword [ebp + 0x30]
fld qword [ebp - 0x94]
fsub qword [0x4fe4d0]
call fcn.004e11d8
mov dword [ebp + 0xc], eax
sub edi, dword [ebp + 0x30]
mov dword [ebp - 8], edi
fild dword [ebp - 8]
fsub dword [ebp + 0x10]
fld qword [ebp - 0x60]
fmul st(1)
fsubr qword [ebp - 0x84]
fadd qword [ebp - 0x7c]
fmul qword [0x5035d0]
call fcn.004e11d8
fmul qword [ebp - 0x6c]
mov edi, eax
fadd st(2)
fadd st(1)
fmul qword [0x5035d0]
call fcn.004e11d8
cmp ebx, 0xffffffff
mov edx, dword [ebp + 0xc]
mov ecx, eax
mov dword [ebp + 0x2c], 0
mov dword [ebp + 0x30], edx
jge 0x45f18b
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 8]
shl eax, 0x10
sub eax, edi
sub eax, 0x27fff
cdq
idiv ebx
test eax, eax
jl 0x45f177
mov dword [ebp + 0x2c], eax
mov eax, 0x7fff
sub eax, edi
cdq
idiv ebx
cmp eax, dword [ebp + 0x30]
jge 0x45f1d1
mov dword [ebp + 0x30], eax
jmp 0x45f1d1
cmp ebx, 1
jl 0x45f1b3
mov eax, 0x10000
sub eax, edi
cdq
idiv ebx
test eax, eax
jle 0x45f1a1
mov dword [ebp + 0x2c], eax
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 8]
shl eax, 0x10
sub eax, edi
sub eax, 0x17fff
jmp 0x45f17e
test edi, edi
jl 0x45f1ca
mov eax, dword [ebp + 0x14]
mov edx, dword [eax + 8]
shl edx, 0x10
sub edx, 0x10000
cmp edi, edx
jl 0x45f1d1
mov dword [ebp + 0x30], 0xffffffff
mov eax, dword [ebp + 0x18]
cmp eax, 0xffffffff
jg 0x45f4aa
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 0xc]
mov ebx, dword [ebp + 0x18]
shl eax, 0x10
sub eax, ecx
sub eax, 0x27fff
cdq
idiv ebx
cmp eax, dword [ebp + 0x2c]
jle 0x45f1fb
mov dword [ebp + 0x2c], eax
mov eax, ecx
cdq
idiv ebx
neg eax
cmp eax, dword [ebp + 0x30]
jge 0x45f20a
mov dword [ebp + 0x30], eax
mov ebx, dword [ebp + 0x20]
mov eax, dword [ebp + 0x2c]
mov edx, eax
imul eax, dword [ebp + 0x18]
imul edx, ebx
add edi, edx
mov edx, dword [ebp + 0x2c]
add ecx, eax
mov eax, dword [ebp - 0x18]
lea eax, [eax + edx*4]
mov edx, dword [ebp + 8]
mov edx, dword [edx + 4]
mov dword [ebp - 0x54], edx
mov edx, dword [ebp + 0x30]
cmp dword [ebp + 0x2c], edx
mov dword [ebp - 0x48], edi
mov dword [ebp - 0x4c], ecx
mov dword [ebp - 0x50], eax
jg 0x45f442
sub edx, dword [ebp + 0x2c]
inc edx
mov dword [ebp - 0x28], edx
jmp 0x45f250
mov eax, dword [eax]
mov ebx, dword [ebp - 0x58]
mov edx, ecx
sar edx, 0x10
imul edx, dword [ebp - 0x54]
add ebx, edx
mov edx, edi
mov dword [ebp - 0x20], eax
mov eax, edi
sar eax, 0x10
movzx edi, byte [eax + ebx]
add eax, ebx
mov ebx, dword [esi + edi*4]
movzx edi, byte [eax + 1]
mov edi, dword [esi + edi*4]
mov dword [ebp + 0x2c], edi
mov edi, dword [ebp + 8]
mov edi, dword [edi + 4]
add eax, edi
movzx edi, byte [eax]
mov edi, dword [esi + edi*4]
movzx eax, byte [eax + 1]
mov eax, dword [esi + eax*4]
and ecx, 0xffff
mov dword [ebp + 0x30], edi
and edx, 0xffff
mov dword [ebp - 4], edx
mov edi, 0xffff
sub edi, edx
mov edx, edi
imul edi, ecx
mov esi, 0xffff
sub esi, ecx
imul ecx, dword [ebp - 4]
imul edx, esi
imul esi, dword [ebp - 4]
mov dword [ebp + 0x28], ebx
shr ebx, 0x18
shr edx, 0x10
imul edx, ebx
mov ebx, dword [ebp + 0x2c]
shr ebx, 0x18
shr esi, 0x10
imul esi, ebx
mov ebx, dword [ebp + 0x30]
shr ebx, 0x18
shr ecx, 0x10
shr edi, 0x10
imul edi, ebx
mov ebx, eax
shr ebx, 0x18
imul ecx, ebx
shr ecx, 0x10
shr esi, 0x10
shr edi, 0x10
mov dword [ebp + 0x1c], esi
mov ebx, 0x100
sub ebx, ecx
mov dword [ebp - 4], ecx
sub ebx, edi
sub ebx, esi
mov esi, eax
and esi, 0xff00
imul esi, ecx
mov ecx, dword [ebp + 0x30]
and ecx, 0xff00
imul ecx, edi
add esi, ecx
mov ecx, dword [ebp + 0x2c]
and ecx, 0xff00
imul ecx, dword [ebp + 0x1c]
add esi, ecx
mov ecx, dword [ebp + 0x28]
shr edx, 0x10
and ecx, 0xff00
imul ecx, edx
sub ebx, edx
add esi, ecx
mov ecx, dword [ebp - 0x1c]
mov dword [ebp - 0x2c], edi
mov dword [ebp - 0x38], ebx
shr esi, cl
mov ecx, dword [ebp - 0x34]
mov edi, dword [ebp - 0x20]
shl esi, cl
mov ecx, dword [ebp - 0x3c]
and edi, ecx
imul edi, ebx
shr edi, 8
and edi, ecx
mov ecx, dword [ebp + 0x30]
and ecx, 0xff
imul ecx, dword [ebp - 0x2c]
add esi, edi
mov edi, eax
and edi, 0xff
imul edi, dword [ebp - 4]
add edi, ecx
mov ecx, dword [ebp + 0x2c]
and ecx, 0xff
imul ecx, dword [ebp + 0x1c]
add edi, ecx
mov ecx, dword [ebp + 0x28]
and ecx, 0xff
imul ecx, edx
add edi, ecx
mov ecx, dword [ebp - 0x30]
shr edi, cl
mov ecx, dword [ebp - 0x40]
mov ebx, dword [ebp - 0x14]
and eax, 0xff0000
shl edi, cl
imul eax, dword [ebp - 4]
mov ecx, dword [ebp - 0x20]
and ecx, ebx
imul ecx, dword [ebp - 0x38]
shr ecx, 8
and ecx, ebx
add edi, ecx
mov ecx, dword [ebp + 0x30]
and ecx, 0xff0000
imul ecx, dword [ebp - 0x2c]
add eax, ecx
mov ecx, dword [ebp + 0x2c]
and ecx, 0xff0000
imul ecx, dword [ebp + 0x1c]
add eax, ecx
mov ecx, dword [ebp + 0x28]
and ecx, 0xff0000
imul ecx, edx
mov edx, dword [ebp - 0x74]
add eax, ecx
mov ecx, dword [ebp - 0x44]
shr eax, cl
mov ecx, dword [ebp - 0x70]
mov ebx, dword [ebp + 0x20]
or esi, edi
shl eax, cl
mov ecx, dword [ebp - 0x20]
mov edi, dword [ebp - 0x48]
and ecx, edx
imul ecx, dword [ebp - 0x38]
shr ecx, 8
and ecx, edx
mov edx, dword [ebp - 0x28]
add eax, ecx
mov ecx, dword [ebp - 0x4c]
or esi, eax
mov eax, dword [ebp - 0x50]
mov dword [eax], esi
add ecx, dword [ebp + 0x18]
mov esi, dword [ebp - 0x10]
add eax, 4
add edi, ebx
dec edx
mov dword [ebp - 0x50], eax
mov dword [ebp - 0x48], edi
mov dword [ebp - 0x4c], ecx
mov dword [ebp - 0x28], edx
jne 0x45f250
mov edx, dword [ebp - 0x24]
mov eax, dword [edx + 0x64]
mov ecx, dword [ebp - 0x18]
cdq
and edx, 3
add eax, edx
sar eax, 2
lea edx, [ecx + eax*4]
mov ecx, dword [ebp - 0xc]
mov eax, dword [ebp - 8]
inc ecx
mov dword [ebp - 0xc], ecx
inc eax
fild dword [ebp - 0xc]
mov dword [ebp - 8], eax
mov dword [ebp - 0x18], edx
fcomp qword [ebp - 0x8c]
fnstsw ax
test ah, 5
jnp 0x45f116
fstp st(0)
fstp st(0)
mov ecx, dword [ebp - 0x24]
mov eax, dword [ecx]
call dword [eax + 0x8c]
mov esi, dword [ebp - 0x24]
mov ecx, dword [esi + 0x14]
push ecx
call fcn.004e216d
add esp, 4
pop edi
mov dword [esi + 0x14], 0
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x2c
cmp eax, 1
jl 0x45f4dc
mov ebx, dword [ebp + 0x18]
mov eax, 0x10000
sub eax, ecx
cdq
idiv ebx
cmp eax, dword [ebp + 0x2c]
jle 0x45f4c4
mov dword [ebp + 0x2c], eax
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 0xc]
shl eax, 0x10
sub eax, ecx
sub eax, 0x17fff
cdq
idiv ebx
jmp 0x45f202
test ecx, ecx
jl 0x45f4f7
mov eax, dword [ebp + 0x14]
mov edx, dword [eax + 0xc]
shl edx, 0x10
sub edx, 0x10000
cmp ecx, edx
jl 0x45f20d
mov eax, dword [ebp + 0x2c]
dec eax
mov dword [ebp + 0x30], eax
jmp 0x45f20d
mov edx, dword [ebp + 0x30]
mov eax, dword [ebp + 0x2c]
mov ecx, dword [ebp + 0x28]
push edx
mov edx, dword [ebp + 0x24]
push eax
mov eax, dword [ebp + 0x20]
push ecx
mov ecx, dword [ebp + 0x1c]
push edx
mov edx, dword [ebp + 0x18]
push eax
mov eax, dword [ebp + 0x14]
push ecx
mov ecx, dword [ebp + 0x10]
push edx
mov edx, dword [ebp + 0xc]
push eax
mov eax, dword [ebp + 8]
push ecx
push edx
push eax
mov ecx, esi
call fcn.0044e3b0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x2c