Function at 0x459dc0
Capabilities:
Encrypt data using rc4 ksa

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x70
mov al, byte [ecx + 0x38]
test al, al
mov dword [ebp - 4], ecx
jne 0x45b034
mov eax, dword [ecx]
push ebx
push esi
push edi
call dword [eax + 0x34]
mov ebx, dword [ebp + 8]
push 0
push 0x4cbf20
push 0x4cbf04
push 0
push ebx
call fcn.0047f9c0
push 0
push 0x4cc224
push 0x4cbf04
mov edi, eax
push 0
push ebx
mov dword [ebp - 0x60], edi
call fcn.0047f9c0
add esp, 0x28
test edi, edi
je 0x45b01b
mov edx, dword [edi]
mov ecx, edi
call dword [edx + 0x34]
mov esi, dword [edi + 0x10]
test esi, esi
mov dword [ebp - 0x14], esi
jne 0x45a728
mov esi, edi
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x48]
fld qword [ebp + 0x20]
fcos
mov dword [ebp - 0x40], eax
fstp qword [ebp - 0x70]
fld qword [ebp + 0x20]
fsin
fstp qword [ebp - 0x68]
fld qword [ebp - 0x70]
fmul qword [0x4b4350]
call fcn.0047e73c
fld qword [ebp - 0x68]
fmul qword [0x4b4350]
mov edi, eax
mov dword [ebp - 8], edi
call fcn.0047e73c
mov ecx, esi
mov dword [ebp + 0x24], eax
call fcn.0044fd10
mov ecx, esi
call fcn.0044fd20
mov esi, dword [ebp - 4]
mov edx, dword [esi]
mov ecx, esi
call dword [edx + 0x78]
test al, al
je 0x45b031
mov eax, dword [esi + 0x30]
mov ecx, dword [eax + 0x3c]
mov edx, dword [eax + 0x40]
mov dword [ebp - 0x58], ecx
mov ecx, dword [eax + 0x44]
mov dword [ebp - 0x50], ecx
mov dword [ebp - 0x48], edx
mov edx, dword [eax + 0x30]
mov ecx, 0x10
sub ecx, edx
mov edx, dword [eax + 0x34]
mov dword [ebp - 0x54], ecx
mov ecx, 0x18
sub ecx, edx
mov edx, dword [eax + 0x38]
mov eax, dword [esi + 0x9c]
mov dword [ebp - 0x44], ecx
mov ecx, 0x20
sub ecx, edx
mov edx, dword [esi + 0x98]
mov dword [ebp - 0x1c], eax
mov eax, dword [esi + 0x94]
cmp eax, 0x10
mov dword [ebp - 0x4c], ecx
mov ecx, dword [esi + 0xa0]
mov dword [ebp - 0x20], edx
mov dword [ebp - 0xc], ecx
jne 0x45a309
mov eax, dword [esi + 0x50]
imul eax, dword [ebp + 0x10]
mov ecx, dword [ebp + 0xc]
cdq
sub eax, edx
mov edx, dword [esi + 0x64]
sar eax, 1
add eax, ecx
mov ecx, dword [ebp + 0x18]
lea eax, [edx + eax*2]
push 0x4d40fc
push ecx
mov dword [ebp - 0x18], eax
call fcn.004371f0
add esp, 8
test al, al
je 0x45b013
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 0xc]
xor ecx, ecx
test eax, eax
mov dword [ebp - 0x3c], ecx
jle 0x45b013
fild dword [ebp + 0x28]
fild dword [ebp + 0x2c]
fld qword [ebp - 0x70]
fld qword [ebp - 0x68]
mov eax, dword [ebp + 0x14]
mov edx, dword [eax]
sub edx, dword [ebp + 0x28]
mov esi, dword [eax + 4]
mov dword [ebp + 0x10], edx
mov edx, dword [ebp + 0x2c]
fild dword [ebp + 0x10]
sub ecx, edx
add ecx, esi
mov dword [ebp + 0xc], ecx
fild dword [ebp + 0xc]
fld st(1)
fmul st(4)
fld st(1)
fmul st(4)
fsubp st(1)
fadd st(6)
fadd qword [0x4ae420]
fmul qword [0x4b4350]
call fcn.0047e73c
fmul st(3)
fxch st(1)
mov esi, eax
fmul st(2)
faddp st(1)
fadd st(3)
fadd qword [0x4ae420]
fmul qword [0x4b4350]
call fcn.0047e73c
mov ecx, eax
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 8]
dec eax
cmp edi, 0xffffffff
mov dword [ebp + 0xc], 0
mov dword [ebp + 0x10], eax
jge 0x459fdf
mov eax, dword [ebx + 4]
shl eax, 0x10
sub eax, esi
sub eax, 0x27fff
cdq
idiv edi
test eax, eax
jl 0x459fcb
mov dword [ebp + 0xc], eax
mov eax, 0x7fff
sub eax, esi
cdq
idiv edi
cmp eax, dword [ebp + 0x10]
jge 0x45a01f
mov dword [ebp + 0x10], eax
jmp 0x45a01f
cmp edi, 1
jl 0x45a004
mov eax, 0x10000
sub eax, esi
cdq
idiv edi
test eax, eax
jle 0x459ff5
mov dword [ebp + 0xc], eax
mov eax, dword [ebx + 4]
shl eax, 0x10
sub eax, esi
sub eax, 0x17fff
jmp 0x459fd2
test esi, esi
jl 0x45a018
mov edx, dword [ebx + 4]
shl edx, 0x10
sub edx, 0x10000
cmp esi, edx
jl 0x45a01f
mov dword [ebp + 0x10], 0xffffffff
mov eax, dword [ebp + 0x24]
cmp eax, 0xffffffff
jg 0x45a2b7
mov eax, dword [ebx + 8]
mov edi, dword [ebp + 0x24]
shl eax, 0x10
sub eax, ecx
sub eax, 0x27fff
cdq
idiv edi
cmp eax, dword [ebp + 0xc]
jle 0x45a046
mov dword [ebp + 0xc], eax
mov eax, ecx
cdq
idiv edi
neg eax
cmp eax, dword [ebp + 0x10]
jge 0x45a055
mov dword [ebp + 0x10], eax
mov edi, dword [ebp - 8]
mov eax, dword [ebp + 0xc]
mov edx, eax
imul eax, dword [ebp + 0x24]
imul edx, edi
add esi, edx
mov edx, dword [ebp + 0xc]
add ecx, eax
mov eax, dword [ebp - 0x18]
lea eax, [eax + edx*2]
mov edx, dword [ebx + 4]
mov dword [ebp - 0x60], edx
mov edx, dword [ebp + 0x10]
cmp dword [ebp + 0xc], edx
mov dword [ebp - 0x30], esi
mov dword [ebp - 0x34], ecx
mov dword [ebp - 0x2c], eax
jg 0x45a289
sub edx, dword [ebp + 0xc]
inc edx
mov dword [ebp - 0x38], edx
mov ax, word [eax]
mov edx, ecx
sar edx, 0x10
imul edx, dword [ebp - 0x60]
mov word [ebp - 0x5c], ax
mov eax, esi
sar eax, 0x10
add edx, eax
mov eax, dword [ebp - 0x40]
mov edi, dword [eax + edx*4]
lea eax, [eax + edx*4]
mov edx, esi
mov esi, dword [eax + 4]
mov dword [ebp + 0xc], esi
mov esi, dword [ebx + 4]
and ecx, 0xffff
lea eax, [eax + esi*4]
mov esi, dword [eax]
mov dword [ebp + 0x10], esi
and edx, 0xffff
mov dword [ebp - 0x28], edx
mov ebx, 0x10000
sub ebx, edx
mov edx, ebx
mov esi, 0x10000
sub esi, ecx
imul edx, esi
mov dword [ebp + 0x18], edi
shr edi, 0x18
shr edx, 0x10
imul edx, edi
mov edi, dword [ebp - 0x28]
imul edi, esi
mov esi, dword [ebp + 0xc]
mov eax, dword [eax + 4]
shr esi, 0x18
shr edi, 0x10
imul edi, esi
mov esi, ecx
imul ecx, dword [ebp - 0x28]
imul esi, ebx
mov ebx, dword [ebp + 0x10]
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 - 0x5c]
mov dword [ebp - 0x14], ebx
mov dword [ebp - 0x28], ecx
mov ebx, eax
and ebx, 0xff0000
imul ebx, ecx
mov ecx, dword [ebp + 0x10]
and ecx, 0xff0000
imul ecx, esi
add ebx, ecx
mov ecx, dword [ebp + 0xc]
and ecx, 0xff0000
imul ecx, edi
add ebx, ecx
mov ecx, dword [ebp + 0x18]
and ecx, 0xff0000
imul ecx, edx
add ebx, ecx
mov ecx, dword [ebp - 0x4c]
mov dword [ebp - 0x24], edi
mov dword [ebp - 0x64], esi
shr ebx, cl
mov ecx, dword [ebp - 0x50]
shl ebx, cl
mov edi, dword [ebp - 0x14]
mov ecx, dword [ebp - 0xc]
and ecx, edi
imul ecx, dword [ebp - 0x10]
mov edi, dword [ebp - 0xc]
shr ecx, 8
and ecx, edi
add ebx, ecx
mov ecx, dword [ebp + 0x10]
and ecx, 0xff
imul ecx, esi
mov edi, eax
and edi, 0xff
imul edi, dword [ebp - 0x28]
add edi, ecx
mov ecx, dword [ebp + 0xc]
and ecx, 0xff
imul ecx, dword [ebp - 0x24]
add edi, ecx
mov ecx, dword [ebp + 0x18]
and ecx, 0xff
imul ecx, edx
add edi, ecx
mov ecx, dword [ebp - 0x54]
mov esi, dword [ebp - 0x14]
shr edi, cl
mov ecx, dword [ebp - 0x58]
and eax, 0xff00
imul eax, dword [ebp - 0x28]
shl edi, cl
mov ecx, dword [ebp - 0x20]
and ecx, esi
imul ecx, dword [ebp - 0x10]
mov esi, dword [ebp - 0x20]
shr ecx, 8
and ecx, esi
add edi, ecx
mov ecx, dword [ebp + 0x10]
and ecx, 0xff00
imul ecx, dword [ebp - 0x64]
add eax, ecx
mov ecx, dword [ebp + 0xc]
and ecx, 0xff00
imul ecx, dword [ebp - 0x24]
add eax, ecx
mov ecx, dword [ebp + 0x18]
mov esi, dword [ebp - 0x14]
and ecx, 0xff00
imul ecx, edx
add eax, ecx
mov ecx, dword [ebp - 0x44]
shr eax, cl
mov ecx, dword [ebp - 0x48]
or ebx, edi
mov edi, dword [ebp - 8]
shl eax, cl
mov ecx, dword [ebp - 0x1c]
mov edx, ecx
and edx, esi
imul edx, dword [ebp - 0x10]
mov esi, dword [ebp - 0x30]
shr edx, 8
and edx, ecx
mov ecx, dword [ebp - 0x34]
add eax, edx
mov edx, dword [ebp - 0x38]
or ebx, eax
mov eax, dword [ebp - 0x2c]
mov word [eax], bx
add ecx, dword [ebp + 0x24]
mov ebx, dword [ebp + 8]
add eax, 2
add esi, edi
dec edx
mov dword [ebp - 0x2c], eax
mov dword [ebp - 0x30], esi
mov dword [ebp - 0x34], ecx
mov dword [ebp - 0x38], edx
jne 0x45a093
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x50]
mov ecx, dword [ebp - 0x18]
cdq
sub eax, edx
sar eax, 1
lea edx, [ecx + eax*2]
mov ecx, dword [ebp - 0x3c]
mov eax, dword [ebp + 0x14]
mov dword [ebp - 0x18], edx
mov edx, dword [eax + 0xc]
inc ecx
cmp ecx, edx
mov dword [ebp - 0x3c], ecx
jl 0x459f44
jmp 0x45b00b
cmp eax, 1
jl 0x45a2e6
mov edi, dword [ebp + 0x24]
mov eax, 0x10000
sub eax, ecx
cdq
idiv edi
cmp eax, dword [ebp + 0xc]
jle 0x45a2d1
mov dword [ebp + 0xc], eax
mov eax, dword [ebx + 8]
shl eax, 0x10
sub eax, ecx
sub eax, 0x17fff
cdq
idiv edi
jmp 0x45a04d
test ecx, ecx
jl 0x45a2fd
mov eax, dword [ebx + 8]
shl eax, 0x10
sub eax, 0x10000
cmp ecx, eax
jl 0x45a058
mov edx, dword [ebp + 0xc]
dec edx
mov dword [ebp + 0x10], edx
jmp 0x45a058
cmp eax, 0x20
jne 0x45b013
mov ecx, dword [ebp - 4]
mov eax, dword [ecx + 0x50]
imul eax, dword [ebp + 0x10]
mov ecx, dword [ecx + 0x64]
cdq
and edx, 3
add eax, edx
mov edx, dword [ebp + 0xc]
sar eax, 2
add eax, edx
lea edx, [ecx + eax*4]
mov eax, dword [ebp + 0x18]
push 0x4d40fc
push eax
mov dword [ebp - 0x10], edx
call fcn.004371f0
add esp, 8
test al, al
je 0x45b013
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 0xc]
xor ecx, ecx
test eax, eax
mov dword [ebp - 0x24], ecx
jle 0x45b013
fild dword [ebp + 0x28]
fild dword [ebp + 0x2c]
fld qword [ebp - 0x70]
fld qword [ebp - 0x68]
jmp 0x45a370
mov eax, dword [ebp + 0x14]
mov edx, dword [eax]
sub edx, dword [ebp + 0x28]
mov esi, dword [eax + 4]
mov dword [ebp + 0x10], edx
mov edx, dword [ebp + 0x2c]
fild dword [ebp + 0x10]
sub ecx, edx
add ecx, esi
mov dword [ebp + 0xc], ecx
fild dword [ebp + 0xc]
fld st(1)
fmul st(4)
fld st(1)
fmul st(4)
fsubp st(1)
fadd st(6)
fadd qword [0x4ae420]
fmul qword [0x4b4350]
call fcn.0047e73c
fmul st(3)
fxch st(1)
mov esi, eax
fmul st(2)
faddp st(1)
fadd st(3)
fadd qword [0x4ae420]
fmul qword [0x4b4350]
call fcn.0047e73c
mov ecx, eax
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 8]
dec eax
cmp edi, 0xffffffff
mov dword [ebp + 0xc], 0
mov dword [ebp + 0x10], eax
jge 0x45a40b
mov eax, dword [ebx + 4]
shl eax, 0x10
sub eax, esi
sub eax, 0x27fff
cdq
idiv edi
test eax, eax
jl 0x45a3f7
mov dword [ebp + 0xc], eax
mov eax, 0x7fff
sub eax, esi
cdq
idiv edi
cmp eax, dword [ebp + 0x10]
jge 0x45a44b
mov dword [ebp + 0x10], eax
jmp 0x45a44b
cmp edi, 1
jl 0x45a430
mov eax, 0x10000
sub eax, esi
cdq
idiv edi
test eax, eax
jle 0x45a421
mov dword [ebp + 0xc], eax
mov eax, dword [ebx + 4]
shl eax, 0x10
sub eax, esi
sub eax, 0x17fff
jmp 0x45a3fe
test esi, esi
jl 0x45a444
mov edx, dword [ebx + 4]
shl edx, 0x10
sub edx, 0x10000
cmp esi, edx
jl 0x45a44b
mov dword [ebp + 0x10], 0xffffffff
mov eax, dword [ebp + 0x24]
cmp eax, 0xffffffff
jg 0x45a6d6
mov eax, dword [ebx + 8]
mov edi, dword [ebp + 0x24]
shl eax, 0x10
sub eax, ecx
sub eax, 0x27fff
cdq
idiv edi
cmp eax, dword [ebp + 0xc]
jle 0x45a472
mov dword [ebp + 0xc], eax
mov eax, ecx
cdq
idiv edi
neg eax
cmp eax, dword [ebp + 0x10]
jge 0x45a481
mov dword [ebp + 0x10], eax
mov edi, dword [ebp - 8]
mov eax, dword [ebp + 0xc]
mov edx, eax
imul eax, dword [ebp + 0x24]
imul edx, edi
add esi, edx
mov edx, dword [ebp + 0xc]
add ecx, eax
mov eax, dword [ebp - 0x10]
lea eax, [eax + edx*4]
mov edx, dword [ebx + 4]
mov dword [ebp - 0x64], edx
mov edx, dword [ebp + 0x10]
cmp dword [ebp + 0xc], edx
mov dword [ebp - 0x30], esi
mov dword [ebp - 0x2c], ecx
mov dword [ebp - 0x34], eax
jg 0x45a6a4
sub edx, dword [ebp + 0xc]
inc edx
mov dword [ebp - 0x28], edx
nop
mov eax, dword [eax]
mov edx, ecx
sar edx, 0x10
imul edx, dword [ebp - 0x64]
mov dword [ebp - 0x18], eax
mov eax, esi
sar eax, 0x10
add edx, eax
mov eax, dword [ebp - 0x40]
mov edi, dword [eax + edx*4]
lea eax, [eax + edx*4]
mov edx, esi
mov esi, dword [eax + 4]
mov dword [ebp + 0xc], esi
mov esi, dword [ebx + 4]
and ecx, 0xffff
lea eax, [eax + esi*4]
mov esi, dword [eax]
mov dword [ebp + 0x10], esi
and edx, 0xffff
mov dword [ebp - 0x3c], edx
mov ebx, 0xffff
sub ebx, edx
mov edx, ebx
mov esi, 0xffff
sub esi, ecx
imul edx, esi
mov dword [ebp + 0x18], edi
shr edi, 0x18
shr edx, 0x10
imul edx, edi
mov edi, dword [ebp - 0x3c]
imul edi, esi
mov esi, dword [ebp + 0xc]
mov eax, dword [eax + 4]
shr esi, 0x18
shr edi, 0x10
imul edi, esi
mov esi, ecx
imul ecx, dword [ebp - 0x3c]
imul esi, ebx
mov ebx, dword [ebp + 0x10]
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 - 0x14], ebx
mov dword [ebp - 0x3c], ecx
mov ebx, eax
and ebx, 0xff00
imul ebx, ecx
mov ecx, dword [ebp + 0x10]
and ecx, 0xff00
imul ecx, esi
add ebx, ecx
mov ecx, dword [ebp + 0xc]
and ecx, 0xff00
imul ecx, edi
add ebx, ecx
mov ecx, dword [ebp + 0x18]
and ecx, 0xff00
imul ecx, edx
add ebx, ecx
mov ecx, dword [ebp - 0x44]
shr ebx, cl
mov ecx, dword [ebp - 0x48]
mov dword [ebp - 0x38], edi
mov dword [ebp - 0x60], esi
shl ebx, cl
mov edi, dword [ebp - 0x1c]
mov ecx, dword [ebp - 0x18]
and ecx, edi
imul ecx, dword [ebp - 0x14]
shr ecx, 8
and ecx, edi
add ebx, ecx
mov ecx, dword [ebp + 0x10]
and ecx, 0xff0000
imul ecx, esi
mov edi, eax
and edi, 0xff0000
imul edi, dword [ebp - 0x3c]
add edi, ecx
mov ecx, dword [ebp + 0xc]
and ecx, 0xff0000
imul ecx, dword [ebp - 0x38]
add edi, ecx
mov ecx, dword [ebp + 0x18]
and ecx, 0xff0000
imul ecx, edx
add edi, ecx
mov ecx, dword [ebp - 0x4c]
mov esi, dword [ebp - 0xc]
shr edi, cl
mov ecx, dword [ebp - 0x50]
and eax, 0xff
imul eax, dword [ebp - 0x3c]
shl edi, cl
mov ecx, dword [ebp - 0x18]
and ecx, esi
imul ecx, dword [ebp - 0x14]
shr ecx, 8
and ecx, esi
add edi, ecx
mov ecx, dword [ebp + 0x10]
and ecx, 0xff
imul ecx, dword [ebp - 0x60]
add eax, ecx
mov ecx, dword [ebp + 0xc]
and ecx, 0xff
imul ecx, dword [ebp - 0x38]
add eax, ecx
mov ecx, dword [ebp + 0x18]
and ecx, 0xff
imul ecx, edx
mov edx, dword [ebp - 0x20]
add eax, ecx
mov ecx, dword [ebp - 0x54]
shr eax, cl
mov ecx, dword [ebp - 0x58]
mov esi, dword [ebp - 0x30]
or ebx, edi
shl eax, cl
mov ecx, dword [ebp - 0x18]
mov edi, dword [ebp - 8]
and ecx, edx
imul ecx, dword [ebp - 0x14]
shr ecx, 8
and ecx, edx
mov edx, dword [ebp - 0x28]
add eax, ecx
mov ecx, dword [ebp - 0x2c]
or ebx, eax
mov eax, dword [ebp - 0x34]
mov dword [eax], ebx
add ecx, dword [ebp + 0x24]
mov ebx, dword [ebp + 8]
add eax, 4
add esi, edi
dec edx
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x30], esi
mov dword [ebp - 0x2c], ecx
mov dword [ebp - 0x28], edx
jne 0x45a4c0
mov edx, dword [ebp - 4]
mov eax, dword [edx + 0x50]
mov ecx, dword [ebp - 0x10]
cdq
and edx, 3
add eax, edx
sar eax, 2
lea edx, [ecx + eax*4]
mov ecx, dword [ebp - 0x24]
mov eax, dword [ebp + 0x14]
mov dword [ebp - 0x10], edx
mov edx, dword [eax + 0xc]
inc ecx
cmp ecx, edx
mov dword [ebp - 0x24], ecx
jl 0x45a370
jmp 0x45b00b
cmp eax, 1
jl 0x45a705
mov edi, dword [ebp + 0x24]
mov eax, 0x10000
sub eax, ecx
cdq
idiv edi
cmp eax, dword [ebp + 0xc]
jle 0x45a6f0
mov dword [ebp + 0xc], eax
mov eax, dword [ebx + 8]
shl eax, 0x10
sub eax, ecx
sub eax, 0x17fff
cdq
idiv edi
jmp 0x45a479
test ecx, ecx
jl 0x45a71c
mov eax, dword [ebx + 8]
shl eax, 0x10
sub eax, 0x10000
cmp ecx, eax
jl 0x45a484
mov edx, dword [ebp + 0xc]
dec edx
mov dword [ebp + 0x10], edx
jmp 0x45a484
fld qword [ebp + 0x20]
mov eax, dword [edi + 0x14]
fcos
mov dword [ebp - 0x44], eax
fstp qword [ebp - 0x70]
fld qword [ebp + 0x20]
fsin
fstp qword [ebp - 0x68]
fld qword [ebp - 0x70]
fmul qword [0x4b4350]
call fcn.0047e73c
fld qword [ebp - 0x68]
fmul qword [0x4b4350]
mov dword [ebp + 0x24], eax
call fcn.0047e73c
mov ecx, edi
mov dword [ebp - 8], eax
call fcn.0044fd10
mov ecx, edi
call fcn.0044fd20
mov edi, dword [ebp - 4]
mov edx, dword [edi]
mov ecx, edi
call dword [edx + 0x78]
test al, al
je 0x45b031
mov eax, dword [edi + 0x30]
mov ecx, dword [eax + 0x3c]
mov edx, dword [eax + 0x40]
mov dword [ebp - 0x34], ecx
mov ecx, dword [eax + 0x44]
mov dword [ebp - 0x3c], ecx
mov dword [ebp - 0x2c], edx
mov edx, dword [eax + 0x30]
mov ecx, 0x10
sub ecx, edx
mov edx, dword [eax + 0x34]
mov dword [ebp - 0x38], ecx
mov ecx, 0x18
sub ecx, edx
mov edx, dword [eax + 0x38]
mov eax, dword [edi + 0x9c]
mov dword [ebp - 0x30], ecx
mov ecx, 0x20
sub ecx, edx
mov edx, dword [edi + 0x98]
mov dword [ebp - 0x5c], eax
mov eax, dword [edi + 0x94]
cmp eax, 0x10
mov dword [ebp - 0x40], ecx
mov ecx, dword [edi + 0xa0]
mov dword [ebp - 0x10], edx
mov dword [ebp - 0x28], ecx
jne 0x45ac22
mov eax, dword [edi + 0x50]
imul eax, dword [ebp + 0x10]
mov ecx, dword [ebp + 0xc]
cdq
sub eax, edx
mov edx, dword [edi + 0x64]
sar eax, 1
add eax, ecx
mov ecx, dword [ebp + 0x18]
lea eax, [edx + eax*2]
push 0x4d40fc
push ecx
mov dword [ebp - 0x18], eax
call fcn.004371f0
add esp, 8
test al, al
je 0x45b013
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 0xc]
test eax, eax
mov dword [ebp - 0x24], 0
jle 0x45b013
fild dword [ebp + 0x28]
fild dword [ebp + 0x2c]
fld qword [ebp - 0x70]
fld qword [ebp - 0x68]
lea ebx, [ebx]
mov eax, dword [ebp + 0x14]
mov ecx, dword [eax]
mov edx, dword [ebp + 0x28]
mov edi, dword [eax + 4]
sub ecx, edx
mov edx, dword [ebp - 0x24]
mov dword [ebp + 0x10], ecx
mov ecx, dword [ebp + 0x2c]
fild dword [ebp + 0x10]
sub edx, ecx
add edx, edi
mov dword [ebp + 0xc], edx
fild dword [ebp + 0xc]
fld st(1)
fmul st(4)
fld st(1)
fmul st(4)
fsubp st(1)
fadd st(6)
fadd qword [0x4ae420]
fmul qword [0x4b4350]
call fcn.0047e73c
fmul st(3)
fxch st(1)
mov edi, eax
fmul st(2)
faddp st(1)
fadd st(3)
fadd qword [0x4ae420]
fmul qword [0x4b4350]
call fcn.0047e73c
mov dword [ebp + 0x10], eax
mov eax, dword [ebp + 0x14]
mov edx, dword [eax + 8]
mov eax, dword [ebp + 0x24]
dec edx
cmp eax, 0xffffffff
mov dword [ebp + 0xc], 0
mov dword [ebp + 0x18], edx
mov ecx, eax
jge 0x45a8db
mov eax, dword [ebx + 4]
shl eax, 0x10
sub eax, edi
sub eax, 0x27fff
cdq
idiv ecx
test eax, eax
jl 0x45a8d2
mov dword [ebp + 0xc], eax
mov eax, 0x7fff
sub eax, edi
jmp 0x45a8fe
cmp ecx, 1
jl 0x45a90c
mov eax, 0x10000
sub eax, edi
cdq
idiv ecx
test eax, eax
jle 0x45a8f1
mov dword [ebp + 0xc], eax
mov eax, dword [ebx + 4]
shl eax, 0x10
sub eax, edi
sub eax, 0x17fff
cdq
idiv ecx
mov edx, dword [ebp + 0x18]
cmp eax, edx
jge 0x45a926
mov edx, eax
jmp 0x45a923
test edi, edi
jl 0x45a920
mov ecx, dword [ebx + 4]
shl ecx, 0x10
sub ecx, 0x10000
cmp edi, ecx
jl 0x45a926
or edx, 0xffffffff
mov dword [ebp + 0x18], edx
mov ecx, dword [ebp - 8]
cmp ecx, 0xffffffff
jg 0x45a95c
mov eax, dword [ebx + 8]
mov edx, dword [ebp + 0x10]
shl eax, 0x10
sub eax, edx
sub eax, 0x27fff
cdq
idiv ecx
cmp eax, dword [ebp + 0xc]
jle 0x45a949
mov dword [ebp + 0xc], eax
mov eax, dword [ebp + 0x10]
cdq
idiv ecx
mov edx, dword [ebp + 0x18]
neg eax
cmp eax, edx
jge 0x45a9af
mov edx, eax
jmp 0x45a9af
cmp ecx, 1
jl 0x45a994
mov edx, dword [ebp + 0x10]
mov eax, 0x10000
sub eax, edx
cdq
idiv ecx
cmp eax, dword [ebp + 0xc]
jle 0x45a976
mov dword [ebp + 0xc], eax
mov eax, dword [ebx + 8]
mov edx, dword [ebp + 0x10]
shl eax, 0x10
sub eax, edx
sub eax, 0x17fff
cdq
idiv ecx
mov edx, dword [ebp + 0x18]
cmp eax, edx
jge 0x45a9af
mov edx, eax
jmp 0x45a9af
mov eax, dword [ebp + 0x10]
test eax, eax
jl 0x45a9ab
mov eax, dword [ebx + 8]
shl eax, 0x10
sub eax, 0x10000
cmp dword [ebp + 0x10], eax
jl 0x45a9af
mov edx, dword [ebp + 0xc]
dec edx
mov eax, dword [ebp + 0xc]
imul eax, dword [ebp + 0x24]
add edi, eax
mov eax, dword [ebp + 0xc]
imul eax, ecx
mov ecx, dword [ebp + 0x10]
add ecx, eax
mov eax, dword [ebp + 0xc]
mov dword [ebp + 0x10], ecx
mov ecx, dword [ebp - 0x18]
lea eax, [ecx + eax*2]
mov ecx, dword [ebx + 4]
mov dword [ebp - 0x64], ecx
mov ecx, dword [ebp + 0xc]
cmp ecx, edx
mov dword [ebp - 0x4c], edi
mov dword [ebp - 0x50], eax
jg 0x45abf4
sub edx, ecx
mov ecx, dword [ebp + 0x10]
inc edx
mov dword [ebp - 0x48], edx
nop
mov dx, word [eax]
sar ecx, 0x10
imul ecx, dword [ebp - 0x64]
mov eax, edi
mov word [ebp - 0x60], dx
mov edx, dword [ebp - 0x44]
add edx, ecx
mov ecx, dword [ebp + 0x10]
sar eax, 0x10
add eax, edx
mov edx, edi
movzx edi, byte [eax]
mov edi, dword [esi + edi*4]
mov dword [ebp - 0xc], edi
movzx edi, byte [eax + 1]
mov edi, dword [esi + edi*4]
mov dword [ebp + 0x18], edi
mov edi, dword [ebx + 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
and edx, 0xffff
mov dword [ebp - 0x58], edx
mov ebx, 0x10000
sub ebx, edx
mov edx, ebx
mov esi, 0x10000
sub esi, ecx
imul edx, esi
mov dword [ebp + 0xc], edi
mov edi, dword [ebp - 0xc]
shr edi, 0x18
shr edx, 0x10
imul edx, edi
mov edi, dword [ebp - 0x58]
imul edi, esi
mov esi, dword [ebp + 0x18]
shr esi, 0x18
shr edi, 0x10
imul edi, esi
mov esi, ecx
imul ecx, dword [ebp - 0x58]
imul esi, ebx
mov ebx, dword [ebp + 0xc]
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 - 0x1c], ebx
movzx ebx, word [ebp - 0x60]
mov dword [ebp - 0x20], ebx
mov dword [ebp - 0x58], ecx
mov ebx, eax
and ebx, 0xff0000
imul ebx, ecx
mov ecx, dword [ebp + 0xc]
and ecx, 0xff0000
imul ecx, esi
add ebx, ecx
mov ecx, dword [ebp + 0x18]
and ecx, 0xff0000
imul ecx, edi
add ebx, ecx
mov ecx, dword [ebp - 0xc]
mov dword [ebp - 0x54], edi
mov dword [ebp - 0x6c], esi
and ecx, 0xff0000
imul ecx, edx
add ebx, ecx
mov ecx, dword [ebp - 0x40]
shr ebx, cl
mov ecx, dword [ebp - 0x3c]
mov edi, dword [ebp - 0x28]
shl ebx, cl
mov ecx, dword [ebp - 0x20]
and ecx, edi
imul ecx, dword [ebp - 0x1c]
shr ecx, 8
and ecx, edi
add ebx, ecx
mov ecx, dword [ebp + 0xc]
and ecx, 0xff
imul ecx, esi
mov edi, eax
and edi, 0xff
imul edi, dword [ebp - 0x58]
add edi, ecx
mov ecx, dword [ebp + 0x18]
and ecx, 0xff
imul ecx, dword [ebp - 0x54]
add edi, ecx
mov ecx, dword [ebp - 0xc]
and ecx, 0xff
imul ecx, edx
add edi, ecx
mov ecx, dword [ebp - 0x38]
shr edi, cl
mov ecx, dword [ebp - 0x34]
mov esi, dword [ebp - 0x10]
and eax, 0xff00
shl edi, cl
imul eax, dword [ebp - 0x58]
mov ecx, dword [ebp - 0x20]
and ecx, esi
imul ecx, dword [ebp - 0x1c]
shr ecx, 8
and ecx, esi
add edi, ecx
mov ecx, dword [ebp + 0xc]
and ecx, 0xff00
imul ecx, dword [ebp - 0x6c]
add eax, ecx
mov ecx, dword [ebp + 0x18]
and ecx, 0xff00
imul ecx, dword [ebp - 0x54]
add eax, ecx
mov ecx, dword [ebp - 0xc]
and ecx, 0xff00
imul ecx, edx
mov edx, dword [ebp - 0x5c]
add eax, ecx
mov ecx, dword [ebp - 0x30]
shr eax, cl
mov ecx, dword [ebp - 0x2c]
mov esi, dword [ebp - 8]
or ebx, edi
shl eax, cl
mov ecx, dword [ebp - 0x20]
mov edi, dword [ebp - 0x4c]
and ecx, edx
imul ecx, dword [ebp - 0x1c]
shr ecx, 8
and ecx, edx
mov edx, dword [ebp - 0x48]
add eax, ecx
mov ecx, dword [ebp + 0x10]
or ebx, eax
mov eax, dword [ebp - 0x50]
mov word [eax], bx
mov ebx, dword [ebp + 0x24]
add eax, 2
add edi, ebx
add ecx, esi
mov dword [ebp - 0x50], eax
mov dword [ebp - 0x4c], edi
mov dword [ebp + 0x10], ecx
dec edx
mov esi, dword [ebp - 0x14]
mov ebx, dword [ebp + 8]
mov dword [ebp - 0x48], edx
jne 0x45a9f0
mov edx, dword [ebp - 4]
mov eax, dword [edx + 0x50]
mov ecx, dword [ebp - 0x18]
cdq
sub eax, edx
sar eax, 1
lea edx, [ecx + eax*2]
mov eax, dword [ebp - 0x24]
mov ecx, dword [ebp + 0x14]
mov dword [ebp - 0x18], edx
mov edx, dword [ecx + 0xc]
inc eax
cmp eax, edx
mov dword [ebp - 0x24], eax
jl 0x45a840
jmp 0x45b00b
cmp eax, 0x20
jne 0x45b013
mov ecx, dword [ebp - 4]
mov eax, dword [ecx + 0x50]
imul eax, dword [ebp + 0x10]
cdq
and edx, 3
add eax, edx
mov edx, dword [ebp + 0xc]
sar eax, 2
add eax, edx
mov edx, dword [ecx + 0x64]
mov ecx, dword [ebp + 0x18]
lea eax, [edx + eax*4]
push 0x4d40fc
push ecx
mov dword [ebp - 0x1c], eax
call fcn.004371f0
add esp, 8
test al, al
je 0x45b013
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 0xc]
test eax, eax
mov dword [ebp - 0x18], 0
jle 0x45b013
fild dword [ebp + 0x28]
fild dword [ebp + 0x2c]
fld qword [ebp - 0x70]
fld qword [ebp - 0x68]
mov eax, dword [ebp + 0x14]
mov ecx, dword [eax]
mov edx, dword [ebp + 0x28]
mov edi, dword [eax + 4]
sub ecx, edx
mov edx, dword [ebp - 0x18]
mov dword [ebp + 0x10], ecx
mov ecx, dword [ebp + 0x2c]
fild dword [ebp + 0x10]
sub edx, ecx
add edx, edi
mov dword [ebp + 0xc], edx
fild dword [ebp + 0xc]
fld st(1)
fmul st(4)
fld st(1)
fmul st(4)
fsubp st(1)
fadd st(6)
fadd qword [0x4ae420]
fmul qword [0x4b4350]
call fcn.0047e73c
fmul st(3)
fxch st(1)
mov edi, eax
fmul st(2)
faddp st(1)
fadd st(3)
fadd qword [0x4ae420]
fmul qword [0x4b4350]
call fcn.0047e73c
mov ecx, dword [ebp + 0x24]
mov dword [ebp + 0x10], eax
mov eax, dword [ebp + 0x14]
mov edx, dword [eax + 8]
dec edx
cmp ecx, 0xffffffff
mov dword [ebp + 0xc], 0
mov dword [ebp + 0x18], edx
jge 0x45ad1f
mov eax, dword [ebx + 4]
shl eax, 0x10
sub eax, edi
sub eax, 0x27fff
cdq
idiv ecx
test eax, eax
jl 0x45ad16
mov dword [ebp + 0xc], eax
mov eax, 0x7fff
sub eax, edi
jmp 0x45ad42
cmp ecx, 1
jl 0x45ad50
mov eax, 0x10000
sub eax, edi
cdq
idiv ecx
test eax, eax
jle 0x45ad35
mov dword [ebp + 0xc], eax
mov eax, dword [ebx + 4]
shl eax, 0x10
sub eax, edi
sub eax, 0x17fff
cdq
idiv ecx
mov edx, dword [ebp + 0x18]
cmp eax, edx
jge 0x45ad69
mov edx, eax
jmp 0x45ad66
test edi, edi
jl 0x45ad63
mov eax, dword [ebx + 4]
shl eax, 0x10
sub eax, 0x10000
cmp edi, eax
jl 0x45ad69
or edx, 0xffffffff
mov dword [ebp + 0x18], edx
mov eax, dword [ebp - 8]
cmp eax, 0xffffffff
jg 0x45b03a
mov eax, dword [ebx + 8]
mov edx, dword [ebp + 0x10]
mov ecx, dword [ebp - 8]
shl eax, 0x10
sub eax, edx
sub eax, 0x27fff
cdq
idiv ecx
cmp eax, dword [ebp + 0xc]
jle 0x45ad93
mov dword [ebp + 0xc], eax
mov eax, dword [ebp + 0x10]
cdq
idiv ecx
neg eax
mov edx, dword [ebp + 0x18]
cmp eax, edx
jge 0x45ada4
mov edx, eax
mov ecx, dword [ebp + 0x24]
mov eax, dword [ebp + 0xc]
imul eax, ecx
mov ecx, dword [ebp + 0xc]
imul ecx, dword [ebp - 8]
add edi, eax
mov eax, dword [ebp + 0x10]
add eax, ecx
mov ecx, dword [ebp + 0xc]
mov dword [ebp + 0x10], eax
mov eax, dword [ebp - 0x1c]
lea eax, [eax + ecx*4]
mov ecx, dword [ebx + 4]
mov dword [ebp - 0x6c], ecx
mov ecx, dword [ebp + 0xc]
cmp ecx, edx
mov dword [ebp - 0x48], edi
mov dword [ebp - 0x4c], eax
jg 0x45afde
sub edx, ecx
mov ecx, dword [ebp + 0x10]
inc edx
mov dword [ebp - 0x60], edx
mov edx, dword [eax]
sar ecx, 0x10
imul ecx, dword [ebp - 0x6c]
mov eax, edi
mov dword [ebp - 0x20], edx
mov edx, dword [ebp - 0x44]
add edx, ecx
sar eax, 0x10
add eax, edx
mov edx, edi
movzx edi, byte [eax]
mov edi, dword [esi + edi*4]
mov ecx, dword [ebp + 0x10]
mov dword [ebp - 0xc], edi
movzx edi, byte [eax + 1]
mov edi, dword [esi + edi*4]
mov dword [ebp + 0x18], edi
mov edi, dword [ebx + 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]
mov ebx, dword [ebp - 0xc]
and ecx, 0xffff
mov dword [ebp + 0xc], edi
and edx, 0xffff
mov dword [ebp - 0x58], edx
mov edi, 0xffff
sub edi, edx
mov edx, edi
imul edi, ecx
mov esi, 0xffff
sub esi, ecx
imul ecx, dword [ebp - 0x58]
imul edx, esi
imul esi, dword [ebp - 0x58]
shr ebx, 0x18
shr edx, 0x10
imul edx, ebx
mov ebx, dword [ebp + 0x18]
shr ebx, 0x18
shr esi, 0x10
imul esi, ebx
mov ebx, dword [ebp + 0xc]
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 - 0x24], esi
mov ebx, 0x100
sub ebx, ecx
mov dword [ebp - 0x58], ecx
sub ebx, edi
sub ebx, esi
mov esi, eax
and esi, 0xff0000
imul esi, ecx
mov ecx, dword [ebp + 0xc]
and ecx, 0xff0000
imul ecx, edi
add esi, ecx
mov ecx, dword [ebp + 0x18]
and ecx, 0xff0000
imul ecx, dword [ebp - 0x24]
add esi, ecx
mov ecx, dword [ebp - 0xc]
shr edx, 0x10
and ecx, 0xff0000
imul ecx, edx
sub ebx, edx
add esi, ecx
mov ecx, dword [ebp - 0x40]
mov dword [ebp - 0x54], edi
mov dword [ebp - 0x50], ebx
shr esi, cl
mov ecx, dword [ebp - 0x3c]
mov edi, dword [ebp - 0x20]
shl esi, cl
mov ecx, dword [ebp - 0x28]
and edi, ecx
imul edi, ebx
shr edi, 8
and edi, ecx
mov ecx, dword [ebp + 0xc]
and ecx, 0xff
imul ecx, dword [ebp - 0x54]
add esi, edi
mov edi, eax
and edi, 0xff
imul edi, dword [ebp - 0x58]
add edi, ecx
mov ecx, dword [ebp + 0x18]
and ecx, 0xff
imul ecx, dword [ebp - 0x24]
add edi, ecx
mov ecx, dword [ebp - 0xc]
and ecx, 0xff
imul ecx, edx
add edi, ecx
mov ecx, dword [ebp - 0x38]
shr edi, cl
mov ecx, dword [ebp - 0x34]
mov ebx, dword [ebp - 0x10]
and eax, 0xff00
shl edi, cl
imul eax, dword [ebp - 0x58]
mov ecx, dword [ebp - 0x20]
and ecx, ebx
imul ecx, dword [ebp - 0x50]
shr ecx, 8
and ecx, ebx
add edi, ecx
mov ecx, dword [ebp + 0xc]
and ecx, 0xff00
imul ecx, dword [ebp - 0x54]
add eax, ecx
mov ecx, dword [ebp + 0x18]
and ecx, 0xff00
imul ecx, dword [ebp - 0x24]
add eax, ecx
mov ecx, dword [ebp - 0xc]
and ecx, 0xff00
imul ecx, edx
mov edx, dword [ebp - 0x5c]
add eax, ecx
mov ecx, dword [ebp - 0x30]
shr eax, cl
mov ecx, dword [ebp - 0x2c]
mov ebx, dword [ebp + 0x24]
or esi, edi
shl eax, cl
mov ecx, dword [ebp - 0x20]
mov edi, dword [ebp - 0x48]
and ecx, edx
imul ecx, dword [ebp - 0x50]
shr ecx, 8
and ecx, edx
mov edx, dword [ebp - 0x60]
add eax, ecx
mov ecx, dword [ebp + 0x10]
or esi, eax
mov eax, dword [ebp - 0x4c]
mov dword [eax], esi
mov esi, dword [ebp - 8]
add edi, ebx
mov ebx, dword [ebp + 8]
add ecx, esi
mov esi, dword [ebp - 0x14]
add eax, 4
dec edx
mov dword [ebp - 0x4c], eax
mov dword [ebp - 0x48], edi
mov dword [ebp + 0x10], ecx
mov dword [ebp - 0x60], edx
jne 0x45ade7
mov edx, dword [ebp - 4]
mov eax, dword [edx + 0x50]
mov ecx, dword [ebp - 0x1c]
cdq
and edx, 3
add eax, edx
sar eax, 2
lea edx, [ecx + eax*4]
mov eax, dword [ebp - 0x18]
mov ecx, dword [ebp + 0x14]
mov dword [ebp - 0x1c], edx
mov edx, dword [ecx + 0xc]
inc eax
cmp eax, edx
mov dword [ebp - 0x18], eax
jl 0x45ac86
fstp st(0)
fstp st(0)
fstp st(0)
fstp st(0)
mov ecx, dword [ebp - 4]
mov edx, dword [ecx]
call dword [edx + 0x7c]
mov esi, dword [ebp - 4]
mov eax, dword [esi + 0xc]
push eax
call fcn.0047ea29
add esp, 4
mov dword [esi + 0xc], 0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x28
cmp eax, 1
jl 0x45b06f
mov ecx, dword [ebp + 0x10]
mov eax, 0x10000
sub eax, ecx
mov ecx, dword [ebp - 8]
cdq
idiv ecx
cmp eax, dword [ebp + 0xc]
jle 0x45b057
mov dword [ebp + 0xc], eax
mov eax, dword [ebx + 8]
mov edx, dword [ebp + 0x10]
shl eax, 0x10
sub eax, edx
sub eax, 0x17fff
cdq
idiv ecx
jmp 0x45ad9b
mov eax, dword [ebp + 0x10]
test eax, eax
jl 0x45b08a
mov eax, dword [ebx + 8]
shl eax, 0x10
sub eax, 0x10000
cmp dword [ebp + 0x10], eax
jl 0x45ada7
mov edx, dword [ebp + 0xc]
dec edx
jmp 0x45ada7