Function at 0x4b4650
Capabilities:
Encrypt data using rc4 ksa

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xc4
push ebx
push esi
mov esi, ecx
mov al, byte [esi + 0x50]
test al, al
push edi
mov dword [ebp - 0x30], esi
jne 0x4b846e
mov eax, dword [esi]
call dword [eax + 0x50]
mov ecx, esi
call fcn.00495b10
test al, al
je 0x4b46bc
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 + 0x48]
push ecx
mov ecx, dword [eax + 0x30]
push edx
call fcn.004b44e0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x2c
mov al, byte [esi + 0x56]
test al, al
jne 0x4b843b
mov al, byte [esi + 0x32]
test al, al
jne 0x4b843b
mov al, byte [esi + 0x31]
test al, al
je 0x4b46e4
mov al, byte [esi + 0x52]
test al, al
je 0x4b843b
mov ecx, dword [esi + 0x48]
mov al, byte [ecx + 0x38]
test al, al
jne 0x4b843b
mov edx, dword [ebp + 0x30]
mov eax, dword [ebp + 0x2c]
push edx
mov edx, dword [ebp + 0x28]
push eax
mov eax, dword [ebp + 0x24]
lea ecx, [ebp - 0xbc]
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
mov ecx, esi
mov dword [ebp - 0xbc], 0
mov dword [ebp - 0xb8], 0
mov dword [ebp - 0xb4], 0
mov dword [ebp - 0xb0], 0
mov dword [ebp - 0xac], 0
mov dword [ebp - 0xa8], 0
mov dword [ebp - 0xa4], 0
mov dword [ebp - 0xa0], 0
call fcn.004a3d20
test al, al
je 0x4b846e
mov ebx, dword [ebp + 8]
push 0
push 0x588fa4
push 0x588f88
push 0
push ebx
call fcn.0052b199
push 0
push 0x588f6c
push 0x588f88
push 0
push ebx
mov edi, eax
call fcn.0052b199
add esp, 0x28
test edi, edi
je 0x4b842a
mov edx, dword [edi]
mov ecx, edi
call dword [edx + 0x50]
mov eax, dword [ebp + 0x20]
test eax, eax
mov esi, dword [edi + 0x28]
mov dword [ebp - 0x3c], esi
mov ecx, edi
jne 0x4b6ec8
call fcn.004e4ad0
test esi, esi
jne 0x4b5adf
mov esi, eax
mov eax, dword [ebp + 0x14]
imul esi, dword [eax + 4]
mov edx, dword [eax]
mov eax, dword [edi]
add esi, edx
call dword [eax + 0x64]
lea ecx, [eax + esi*4]
fld qword [ebp + 0x24]
mov dword [ebp - 0x44], ecx
fcos
fstp qword [ebp - 0x90]
fld qword [ebp + 0x24]
fsin
fstp qword [ebp - 0x70]
fld qword [ebp - 0x90]
fmul qword [0x55abc0]
call fcn.00527ae0
fld qword [ebp - 0x70]
fmul qword [0x55abc0]
mov esi, eax
mov dword [ebp - 0x24], esi
call fcn.00527ae0
mov edi, dword [ebp - 0x30]
mov edx, dword [edi]
mov ecx, edi
mov dword [ebp + 0x20], eax
call dword [edx + 0x9c]
test al, al
je 0x4b846e
mov eax, dword [edi + 0x48]
mov ecx, dword [eax + 0x20]
mov edx, dword [eax + 0x24]
mov dword [ebp - 0x64], ecx
mov ecx, dword [eax + 0x28]
mov dword [ebp - 0x60], ecx
mov dword [ebp - 0x5c], edx
mov edx, dword [eax + 0x14]
mov ecx, 0x20
sub ecx, edx
mov edx, dword [eax + 0x18]
mov dword [ebp - 0x68], ecx
mov ecx, 0x18
sub ecx, edx
mov edx, dword [eax + 0x1c]
mov eax, dword [edi + 0xb8]
mov dword [ebp - 0x58], ecx
mov ecx, 0x10
sub ecx, edx
mov edx, dword [edi + 0xb4]
mov dword [ebp - 0x54], eax
mov eax, dword [edi + 0xb0]
cmp eax, 0x10
mov dword [ebp - 0x50], ecx
mov ecx, dword [edi + 0xbc]
mov dword [ebp - 0x34], edx
mov dword [ebp - 0x3c], ecx
jne 0x4b51ce
fld qword [ebp - 0xb4]
call fcn.00527ae0
fld qword [ebp - 0xbc]
mov dword [ebp + 0x28], eax
call fcn.00527ae0
mov ecx, eax
mov eax, dword [edi + 0x6c]
imul eax, dword [ebp + 0x28]
cdq
sub eax, edx
mov edx, dword [edi + 0x80]
mov edi, dword [ebp + 0x1c]
sar eax, 1
add eax, ecx
lea eax, [edx + eax*2]
push 0x5c3540
push edi
mov dword [ebp + 0x18], ecx
mov dword [ebp - 0x38], eax
call fcn.00494f90
add esp, 8
test al, al
fld qword [0x546448]
fcomp qword [ebp - 0xa4]
je 0x4b4d43
fnstsw ax
mov dword [ebp - 4], 0
test ah, 5
jp 0x4b5a69
mov edx, dword [ebp + 0x2c]
mov eax, dword [ebp + 0x18]
sub eax, edx
mov dword [ebp + 0x1c], eax
fild dword [ebp + 0x1c]
fsub dword [ebp + 0xc]
fld qword [ebp - 0x90]
fmul st(1)
fstp qword [ebp - 0x7c]
fild dword [ebp + 0x2c]
fstp qword [ebp - 0x88]
fmul qword [ebp - 0x70]
fild dword [ebp + 0x30]
fld qword [ebp - 0xac]
fsub qword [0x546438]
call fcn.00527ae0
mov ecx, dword [ebp + 0x30]
mov dword [ebp + 0x2c], eax
mov eax, dword [ebp + 0x28]
sub eax, ecx
mov dword [ebp - 0x10], eax
lea ecx, [ecx]
fild dword [ebp - 0x10]
fsub dword [ebp + 0x10]
fld qword [ebp - 0x70]
fmul st(1)
fsubr qword [ebp - 0x7c]
fadd qword [ebp - 0x88]
fmul qword [0x55abc0]
call fcn.00527ae0
fmul qword [ebp - 0x90]
mov edi, eax
fadd st(1)
fadd st(2)
fmul qword [0x55abc0]
call fcn.00527ae0
cmp esi, 0xffffffff
mov edx, dword [ebp + 0x2c]
mov ecx, eax
mov dword [ebp + 0x1c], ecx
mov dword [ebp + 0xc], 0
mov dword [ebp + 0x30], edx
jge 0x4b49db
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 8]
shl eax, 0x10
sub eax, edi
sub eax, 0x27fff
cdq
idiv esi
test eax, eax
jl 0x4b49c7
mov dword [ebp + 0xc], eax
mov eax, 0x7fff
sub eax, edi
cdq
idiv esi
cmp eax, dword [ebp + 0x30]
jge 0x4b4a21
mov dword [ebp + 0x30], eax
jmp 0x4b4a21
cmp esi, 1
jl 0x4b4a03
mov eax, 0x10000
sub eax, edi
cdq
idiv esi
test eax, eax
jle 0x4b49f1
mov dword [ebp + 0xc], eax
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 8]
shl eax, 0x10
sub eax, edi
sub eax, 0x17fff
jmp 0x4b49ce
test edi, edi
jl 0x4b4a1a
mov eax, dword [ebp + 0x14]
mov edx, dword [eax + 8]
shl edx, 0x10
sub edx, 0x10000
cmp edi, edx
jl 0x4b4a21
mov dword [ebp + 0x30], 0xffffffff
mov eax, dword [ebp + 0x20]
cmp eax, 0xffffffff
jg 0x4b4ce9
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 0xc]
shl eax, 0x10
sub eax, ecx
sub eax, 0x27fff
cdq
idiv dword [ebp + 0x20]
cmp eax, dword [ebp + 0xc]
jle 0x4b4a49
mov dword [ebp + 0xc], eax
mov eax, dword [ebp + 0x1c]
cdq
idiv dword [ebp + 0x20]
neg eax
cmp eax, dword [ebp + 0x30]
jge 0x4b4a5a
mov dword [ebp + 0x30], eax
mov ecx, dword [ebp + 0x1c]
mov eax, dword [ebp + 0xc]
mov edx, eax
imul eax, dword [ebp + 0x20]
imul edx, esi
add edi, edx
mov edx, dword [ebp - 0x38]
add ecx, eax
mov eax, dword [ebp + 0xc]
lea edx, [edx + eax*2]
mov dword [ebp - 0x28], edx
mov edx, dword [ebx + 4]
mov dword [ebp - 0x80], edx
mov edx, dword [ebp + 0x30]
cmp eax, edx
mov dword [ebp - 0x20], edi
mov dword [ebp + 0x1c], ecx
jg 0x4b4c93
sub edx, eax
mov eax, dword [ebp - 0x28]
inc edx
mov dword [ebp - 0x18], edx
lea esp, [esp]
mov ax, word [eax]
mov edx, ecx
sar edx, 0x10
imul edx, dword [ebp - 0x80]
mov word [ebp - 0xc], ax
mov eax, edi
sar eax, 0x10
add edx, eax
mov eax, dword [ebp - 0x44]
mov esi, dword [eax + edx*4]
mov dword [ebp + 0x18], esi
mov esi, dword [eax + edx*4 + 4]
lea eax, [eax + edx*4]
mov dword [ebp + 0xc], esi
mov esi, dword [ebx + 4]
lea eax, [eax + esi*4]
mov esi, dword [eax]
mov ebx, dword [ebp + 0x18]
and ecx, 0xfffe
mov dword [ebp + 0x30], esi
mov edx, edi
and edx, 0xfffe
inc edx
inc ecx
mov eax, dword [eax + 4]
mov dword [ebp - 0x14], edx
mov edi, 0x10000
sub edi, edx
mov edx, edi
imul edi, ecx
mov esi, 0x10000
sub esi, ecx
imul ecx, dword [ebp - 0x14]
imul edx, esi
imul esi, dword [ebp - 0x14]
shr ebx, 0x18
shr esi, 0x10
shr edx, 0x10
imul edx, ebx
mov ebx, dword [ebp + 0xc]
shr ebx, 0x18
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
mov dword [ebp + 0x28], esi
shr edi, 0x10
mov ebx, pe_nt_image_headers32
sub ebx, ecx
sub ebx, edi
sub ebx, esi
movzx esi, word [ebp - 0xc]
mov dword [ebp - 0x2c], esi
mov dword [ebp - 0x14], ecx
mov esi, eax
and esi, 0xff
imul esi, ecx
mov ecx, dword [ebp + 0x30]
and ecx, 0xff
imul ecx, edi
add esi, ecx
mov ecx, dword [ebp + 0xc]
and ecx, 0xff
imul ecx, dword [ebp + 0x28]
add esi, ecx
mov ecx, dword [ebp + 0x18]
shr edx, 0x10
and ecx, 0xff
imul ecx, edx
sub ebx, edx
add esi, ecx
mov ecx, dword [ebp - 0x50]
mov dword [ebp - 8], edi
mov dword [ebp - 0x1c], ebx
shr esi, cl
mov ecx, dword [ebp - 0x60]
mov edi, dword [ebp - 0x2c]
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, 0xff0000
imul ecx, dword [ebp - 8]
add esi, edi
mov edi, eax
and edi, 0xff0000
imul edi, dword [ebp - 0x14]
add edi, ecx
mov ecx, dword [ebp + 0xc]
and ecx, 0xff0000
imul ecx, dword [ebp + 0x28]
add edi, ecx
mov ecx, dword [ebp + 0x18]
and ecx, 0xff0000
imul ecx, edx
add edi, ecx
mov ecx, dword [ebp - 0x68]
shr edi, cl
mov ecx, dword [ebp - 0x64]
mov ebx, dword [ebp - 0x34]
and eax, 0xff00
shl edi, cl
imul eax, dword [ebp - 0x14]
mov ecx, dword [ebp - 0x2c]
and ecx, ebx
imul ecx, dword [ebp - 0x1c]
shr ecx, 8
and ecx, ebx
add edi, ecx
mov ecx, dword [ebp + 0x30]
and ecx, 0xff00
imul ecx, dword [ebp - 8]
add eax, ecx
mov ecx, dword [ebp + 0xc]
and ecx, 0xff00
imul ecx, dword [ebp + 0x28]
add eax, ecx
mov ecx, dword [ebp + 0x18]
and ecx, 0xff00
imul ecx, edx
mov edx, dword [ebp - 0x54]
add eax, ecx
mov ecx, dword [ebp - 0x58]
shr eax, cl
mov ecx, dword [ebp - 0x5c]
mov ebx, dword [ebp + 0x20]
or esi, edi
shl eax, cl
mov ecx, dword [ebp - 0x2c]
mov edi, dword [ebp - 0x20]
and ecx, edx
imul ecx, dword [ebp - 0x1c]
shr ecx, 8
and ecx, edx
mov edx, dword [ebp - 0x18]
add eax, ecx
mov ecx, dword [ebp + 0x1c]
or esi, eax
mov eax, dword [ebp - 0x28]
mov word [eax], si
mov esi, dword [ebp - 0x24]
add ecx, ebx
mov ebx, dword [ebp + 8]
add eax, 2
add edi, esi
dec edx
mov dword [ebp - 0x28], eax
mov dword [ebp - 0x20], edi
mov dword [ebp + 0x1c], ecx
mov dword [ebp - 0x18], edx
jne 0x4b4aa0
mov edx, dword [ebp - 0x30]
mov eax, dword [edx + 0x6c]
mov ecx, dword [ebp - 0x38]
cdq
sub eax, edx
sar eax, 1
lea edx, [ecx + eax*2]
mov ecx, dword [ebp - 4]
mov eax, dword [ebp - 0x10]
inc ecx
mov dword [ebp - 4], ecx
inc eax
fild dword [ebp - 4]
mov dword [ebp - 0x10], eax
mov dword [ebp - 0x38], edx
fcomp qword [ebp - 0xa4]
fnstsw ax
test ah, 5
jnp 0x4b4960
mov ecx, dword [ebp - 0x30]
fstp st(0)
mov eax, dword [ecx]
fstp st(0)
call dword [eax + 0xa0]
mov ecx, dword [ebp - 0x30]
call fcn.004964e0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x2c
cmp eax, 1
jl 0x4b4d1d
mov eax, 0x10000
sub eax, ecx
cdq
idiv dword [ebp + 0x20]
cmp eax, dword [ebp + 0xc]
jle 0x4b4d01
mov dword [ebp + 0xc], eax
mov ecx, dword [ebp + 0x14]
mov eax, dword [ecx + 0xc]
mov ecx, dword [ebp + 0x1c]
shl eax, 0x10
sub eax, ecx
sub eax, 0x17fff
cdq
idiv dword [ebp + 0x20]
jmp 0x4b4a52
test ecx, ecx
jl 0x4b4d37
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 0xc]
shl eax, 0x10
sub eax, 0x10000
cmp ecx, eax
jl 0x4b4a5d
mov edx, dword [ebp + 0xc]
dec edx
mov dword [ebp + 0x30], edx
jmp 0x4b4a5d
mov eax, dword [edi + 0xc]
mov dword [ebp - 0x18], eax
mov eax, dword [edi]
inc eax
mov dword [ebp - 0x48], eax
mov eax, dword [edi + 4]
mov edi, dword [edi + 8]
inc eax
mov dword [ebp - 0x40], eax
fnstsw ax
inc edi
test ah, 5
mov dword [ebp - 0x94], edi
mov dword [ebp - 0x28], 0
jp 0x4b5a69
mov edx, dword [ebp + 0x2c]
mov eax, dword [ebp + 0x18]
sub eax, edx
mov dword [ebp + 0x1c], eax
fild dword [ebp + 0x1c]
fsub dword [ebp + 0xc]
fld qword [ebp - 0x90]
fmul st(1)
fstp qword [ebp - 0x7c]
fild dword [ebp + 0x2c]
fstp qword [ebp - 0x88]
fmul qword [ebp - 0x70]
fild dword [ebp + 0x30]
fld qword [ebp - 0xac]
fsub qword [0x546438]
call fcn.00527ae0
mov ecx, dword [ebp + 0x30]
mov dword [ebp + 0x2c], eax
mov eax, dword [ebp + 0x28]
sub eax, ecx
mov dword [ebp - 0x2c], eax
lea esp, [esp]
fild dword [ebp - 0x2c]
fsub dword [ebp + 0x10]
fld qword [ebp - 0x70]
fmul st(1)
fsubr qword [ebp - 0x7c]
fadd qword [ebp - 0x88]
fmul qword [0x55abc0]
call fcn.00527ae0
fmul qword [ebp - 0x90]
mov edi, eax
fadd st(2)
fadd st(1)
fmul qword [0x55abc0]
call fcn.00527ae0
cmp esi, 0xffffffff
mov edx, dword [ebp + 0x2c]
mov ecx, eax
mov dword [ebp + 0x1c], ecx
mov dword [ebp + 0xc], 0
mov dword [ebp + 0x30], edx
jge 0x4b4e3b
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 8]
shl eax, 0x10
sub eax, edi
sub eax, 0x27fff
cdq
idiv esi
test eax, eax
jl 0x4b4e27
mov dword [ebp + 0xc], eax
mov eax, 0x7fff
sub eax, edi
cdq
idiv esi
cmp eax, dword [ebp + 0x30]
jge 0x4b4e81
mov dword [ebp + 0x30], eax
jmp 0x4b4e81
cmp esi, 1
jl 0x4b4e63
mov eax, 0x10000
sub eax, edi
cdq
idiv esi
test eax, eax
jle 0x4b4e51
mov dword [ebp + 0xc], eax
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 8]
shl eax, 0x10
sub eax, edi
sub eax, 0x17fff
jmp 0x4b4e2e
test edi, edi
jl 0x4b4e7a
mov eax, dword [ebp + 0x14]
mov edx, dword [eax + 8]
shl edx, 0x10
sub edx, 0x10000
cmp edi, edx
jl 0x4b4e81
mov dword [ebp + 0x30], 0xffffffff
mov eax, dword [ebp + 0x20]
cmp eax, 0xffffffff
jg 0x4b5174
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 0xc]
shl eax, 0x10
sub eax, ecx
sub eax, 0x27fff
cdq
idiv dword [ebp + 0x20]
cmp eax, dword [ebp + 0xc]
jle 0x4b4ea9
mov dword [ebp + 0xc], eax
mov eax, dword [ebp + 0x1c]
cdq
idiv dword [ebp + 0x20]
neg eax
cmp eax, dword [ebp + 0x30]
jge 0x4b4eba
mov dword [ebp + 0x30], eax
mov ecx, dword [ebp + 0x1c]
mov eax, dword [ebp + 0xc]
mov edx, eax
imul eax, dword [ebp + 0x20]
imul edx, esi
add edi, edx
mov edx, dword [ebp - 0x38]
add ecx, eax
mov eax, dword [ebp + 0xc]
lea edx, [edx + eax*2]
mov dword [ebp - 0x10], edx
mov edx, dword [ebx + 4]
mov dword [ebp - 0x80], edx
mov edx, dword [ebp + 0x30]
cmp eax, edx
mov dword [ebp - 0x1c], edi
mov dword [ebp + 0x1c], ecx
jg 0x4b511e
sub edx, eax
mov eax, dword [ebp - 0x10]
inc edx
mov dword [ebp - 0xc], edx
lea esp, [esp]
mov ax, word [eax]
mov edx, ecx
sar edx, 0x10
imul edx, dword [ebp - 0x80]
mov word [ebp - 4], ax
mov eax, edi
sar eax, 0x10
add edx, eax
mov eax, dword [ebp - 0x44]
mov esi, dword [eax + edx*4]
mov dword [ebp + 0x28], esi
mov esi, dword [eax + edx*4 + 4]
mov dword [ebp + 0xc], esi
mov esi, dword [ebx + 4]
lea eax, [eax + edx*4]
lea eax, [eax + esi*4]
mov esi, dword [eax]
mov ebx, dword [ebp + 0x28]
mov dword [ebp + 0x30], esi
mov edx, edi
and ecx, 0xfffe
and edx, 0xfffe
inc edx
inc ecx
mov dword [ebp - 0x20], edx
mov edi, 0x10000
sub edi, edx
mov edx, edi
imul edi, ecx
mov esi, 0x10000
sub esi, ecx
imul ecx, dword [ebp - 0x20]
imul edx, esi
imul esi, dword [ebp - 0x20]
shr ebx, 0x18
shr esi, 0x10
shr edx, 0x10
imul edx, ebx
mov ebx, dword [ebp + 0xc]
imul edx, dword [ebp - 0x18]
shr ebx, 0x18
imul esi, ebx
mov ebx, dword [ebp - 0x18]
mov eax, dword [eax + 4]
imul esi, ebx
shr esi, 0x18
mov dword [ebp + 0x18], esi
mov esi, dword [ebp + 0x30]
shr esi, 0x18
shr edi, 0x10
imul edi, esi
shr ecx, 0x10
imul edi, ebx
mov esi, eax
shr esi, 0x18
imul ecx, esi
mov esi, dword [ebp + 0x18]
imul ecx, ebx
shr ecx, 0x18
shr edi, 0x18
mov ebx, pe_nt_image_headers32
sub ebx, ecx
sub ebx, edi
sub ebx, esi
movzx esi, word [ebp - 4]
mov dword [ebp - 4], esi
mov dword [ebp - 0x20], ecx
mov esi, eax
and esi, 0xff
imul esi, ecx
mov ecx, dword [ebp + 0x30]
and ecx, 0xff
imul ecx, edi
add esi, ecx
mov ecx, dword [ebp + 0xc]
shr edx, 0x18
sub ebx, edx
and ecx, 0xff
imul ecx, dword [ebp + 0x18]
mov dword [ebp - 0x14], edi
mov dword [ebp - 8], ebx
add esi, ecx
mov ecx, dword [ebp + 0x28]
and ecx, 0xff
imul ecx, edx
add esi, ecx
mov ecx, dword [ebp - 0x50]
mov edi, dword [ebp - 4]
shr esi, 8
imul esi, dword [ebp - 0x94]
shr esi, cl
mov ecx, dword [ebp - 0x60]
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, 0xff0000
imul ecx, dword [ebp - 0x14]
add esi, edi
mov edi, eax
and edi, 0xff0000
imul edi, dword [ebp - 0x20]
add edi, ecx
mov ecx, dword [ebp + 0xc]
and ecx, 0xff0000
imul ecx, dword [ebp + 0x18]
add edi, ecx
mov ecx, dword [ebp + 0x28]
and ecx, 0xff0000
imul ecx, edx
add edi, ecx
mov ecx, dword [ebp - 0x68]
mov ebx, dword [ebp - 0x34]
shr edi, 8
imul edi, dword [ebp - 0x48]
shr edi, cl
mov ecx, dword [ebp - 0x64]
and eax, 0xff00
imul eax, dword [ebp - 0x20]
shl edi, cl
mov ecx, dword [ebp - 4]
and ecx, ebx
imul ecx, dword [ebp - 8]
shr ecx, 8
and ecx, ebx
add edi, ecx
mov ecx, dword [ebp + 0x30]
and ecx, 0xff00
imul ecx, dword [ebp - 0x14]
add eax, ecx
mov ecx, dword [ebp + 0xc]
and ecx, 0xff00
imul ecx, dword [ebp + 0x18]
add eax, ecx
mov ecx, dword [ebp + 0x28]
and ecx, 0xff00
imul ecx, edx
add eax, ecx
mov ecx, dword [ebp - 0x58]
mov edx, dword [ebp - 0x54]
shr eax, 8
imul eax, dword [ebp - 0x40]
shr eax, cl
mov ecx, dword [ebp - 0x5c]
or esi, edi
mov edi, dword [ebp - 0x1c]
shl eax, cl
mov ecx, dword [ebp - 4]
and ecx, edx
imul ecx, dword [ebp - 8]
shr ecx, 8
and ecx, edx
add eax, ecx
or esi, eax
mov eax, dword [ebp - 0x10]
mov word [eax], si
mov esi, dword [ebp - 0x24]
add eax, 2
mov dword [ebp - 0x10], eax
mov ecx, dword [ebp + 0x1c]
mov ebx, dword [ebp + 0x20]
mov edx, dword [ebp - 0xc]
add ecx, ebx
mov ebx, dword [ebp + 8]
add edi, esi
dec edx
mov dword [ebp - 0x1c], edi
mov dword [ebp + 0x1c], ecx
mov dword [ebp - 0xc], edx
jne 0x4b4f00
mov edx, dword [ebp - 0x30]
mov eax, dword [edx + 0x6c]
mov ecx, dword [ebp - 0x38]
cdq
sub eax, edx
sar eax, 1
lea edx, [ecx + eax*2]
mov ecx, dword [ebp - 0x28]
mov eax, dword [ebp - 0x2c]
inc ecx
mov dword [ebp - 0x28], ecx
inc eax
fild dword [ebp - 0x28]
mov dword [ebp - 0x2c], eax
mov dword [ebp - 0x38], edx
fcomp qword [ebp - 0xa4]
fnstsw ax
test ah, 5
jnp 0x4b4dc0
mov ecx, dword [ebp - 0x30]
fstp st(0)
mov eax, dword [ecx]
fstp st(0)
call dword [eax + 0xa0]
mov ecx, dword [ebp - 0x30]
call fcn.004964e0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x2c
cmp eax, 1
jl 0x4b51a8
mov eax, 0x10000
sub eax, ecx
cdq
idiv dword [ebp + 0x20]
cmp eax, dword [ebp + 0xc]
jle 0x4b518c
mov dword [ebp + 0xc], eax
mov ecx, dword [ebp + 0x14]
mov eax, dword [ecx + 0xc]
mov ecx, dword [ebp + 0x1c]
shl eax, 0x10
sub eax, ecx
sub eax, 0x17fff
cdq
idiv dword [ebp + 0x20]
jmp 0x4b4eb2
test ecx, ecx
jl 0x4b51c2
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 0xc]
shl eax, 0x10
sub eax, 0x10000
cmp ecx, eax
jl 0x4b4ebd
mov edx, dword [ebp + 0xc]
dec edx
mov dword [ebp + 0x30], edx
jmp 0x4b4ebd
cmp eax, 0x20
jne 0x4b5a69
fld qword [ebp - 0xb4]
call fcn.00527ae0
fld qword [ebp - 0xbc]
mov edi, eax
call fcn.00527ae0
mov ecx, dword [ebp - 0x30]
mov dword [ebp + 0x18], eax
mov eax, dword [ecx + 0x6c]
mov ecx, dword [ecx + 0x80]
imul eax, edi
cdq
and edx, 3
add eax, edx
mov edx, dword [ebp + 0x18]
sar eax, 2
add eax, edx
lea edx, [ecx + eax*4]
mov eax, dword [ebp + 0x1c]
push 0x5c3540
push eax
mov dword [ebp + 0x28], edx
call fcn.00494f90
add esp, 8
test al, al
fld qword [0x546448]
fcomp qword [ebp - 0xa4]
mov dword [ebp - 0x38], 0
je 0x4b566b
fnstsw ax
test ah, 5
jp 0x4b5a69
mov ecx, dword [ebp + 0x2c]
mov eax, dword [ebp + 0x18]
sub eax, ecx
mov dword [ebp + 0x1c], eax
fild dword [ebp + 0x1c]
fsub dword [ebp + 0xc]
fld qword [ebp - 0x90]
fmul st(1)
fstp qword [ebp - 0x7c]
fild dword [ebp + 0x2c]
fstp qword [ebp - 0x88]
fmul qword [ebp - 0x70]
fild dword [ebp + 0x30]
fld qword [ebp - 0xac]
fsub qword [0x546438]
call fcn.00527ae0
mov dword [ebp + 0x2c], eax
sub edi, dword [ebp + 0x30]
mov dword [ebp - 0x28], edi
fild dword [ebp - 0x28]
fsub dword [ebp + 0x10]
fld qword [ebp - 0x70]
fmul st(1)
fsubr qword [ebp - 0x7c]
fadd qword [ebp - 0x88]
fmul qword [0x55abc0]
call fcn.00527ae0
fmul qword [ebp - 0x90]
mov edi, eax
fadd st(2)
fadd st(1)
fmul qword [0x55abc0]
call fcn.00527ae0
cmp esi, 0xffffffff
mov edx, dword [ebp + 0x2c]
mov ecx, eax
mov dword [ebp + 0x1c], ecx
mov dword [ebp + 0xc], 0
mov dword [ebp + 0x30], edx
jge 0x4b530c
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 8]
shl eax, 0x10
sub eax, edi
sub eax, 0x27fff
cdq
idiv esi
test eax, eax
jl 0x4b52f8
mov dword [ebp + 0xc], eax
mov eax, 0x7fff
sub eax, edi
cdq
idiv esi
cmp eax, dword [ebp + 0x30]
jge 0x4b5352
mov dword [ebp + 0x30], eax
jmp 0x4b5352
cmp esi, 1
jl 0x4b5334
mov eax, 0x10000
sub eax, edi
cdq
idiv esi
test eax, eax
jle 0x4b5322
mov dword [ebp + 0xc], eax
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 8]
shl eax, 0x10
sub eax, edi
sub eax, 0x17fff
jmp 0x4b52ff
test edi, edi
jl 0x4b534b
mov eax, dword [ebp + 0x14]
mov edx, dword [eax + 8]
shl edx, 0x10
sub edx, 0x10000
cmp edi, edx
jl 0x4b5352
mov dword [ebp + 0x30], 0xffffffff
mov eax, dword [ebp + 0x20]
cmp eax, 0xffffffff
jg 0x4b5611
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 0xc]
shl eax, 0x10
sub eax, ecx
sub eax, 0x27fff
cdq
idiv dword [ebp + 0x20]
cmp eax, dword [ebp + 0xc]
jle 0x4b537a
mov dword [ebp + 0xc], eax
mov eax, dword [ebp + 0x1c]
cdq
idiv dword [ebp + 0x20]
neg eax
cmp eax, dword [ebp + 0x30]
jge 0x4b538b
mov dword [ebp + 0x30], eax
mov ecx, dword [ebp + 0x1c]
mov eax, dword [ebp + 0xc]
mov edx, eax
imul eax, dword [ebp + 0x20]
imul edx, esi
add edi, edx
mov edx, dword [ebp + 0x28]
add ecx, eax
mov eax, dword [ebp + 0xc]
lea edx, [edx + eax*4]
mov dword [ebp - 0x2c], edx
mov edx, dword [ebx + 4]
mov dword [ebp - 0x40], edx
mov edx, dword [ebp + 0x30]
cmp eax, edx
mov dword [ebp - 0x14], edi
mov dword [ebp + 0x1c], ecx
jg 0x4b55b7
sub edx, eax
mov eax, dword [ebp - 0x2c]
inc edx
mov dword [ebp - 8], edx
lea ebx, [ebx]
mov eax, dword [eax]
mov edx, ecx
sar edx, 0x10
imul edx, dword [ebp - 0x40]
mov dword [ebp - 0x10], eax
mov eax, edi
sar eax, 0x10
add edx, eax
mov eax, dword [ebp - 0x44]
mov esi, dword [eax + edx*4]
mov dword [ebp + 0x18], esi
mov esi, dword [eax + edx*4 + 4]
lea eax, [eax + edx*4]
mov dword [ebp + 0xc], esi
mov esi, dword [ebx + 4]
lea eax, [eax + esi*4]
mov esi, dword [eax]
mov ebx, dword [ebp + 0x18]
and ecx, 0xffff
mov dword [ebp + 0x30], esi
mov edx, edi
and edx, 0xffff
mov eax, dword [eax + 4]
mov dword [ebp - 0xc], edx
mov edi, 0xffff
sub edi, edx
mov edx, edi
imul edi, ecx
mov esi, 0xffff
sub esi, ecx
imul ecx, dword [ebp - 0xc]
imul edx, esi
imul esi, dword [ebp - 0xc]
shr ebx, 0x18
shr esi, 0x10
shr edx, 0x10
imul edx, ebx
mov ebx, dword [ebp + 0xc]
shr ebx, 0x18
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
mov dword [ebp - 4], esi
shr edi, 0x10
mov ebx, pe_nt_image_headers32
sub ebx, ecx
mov dword [ebp - 0xc], 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 + 0xc]
and ecx, 0xff00
imul ecx, dword [ebp - 4]
add esi, ecx
mov ecx, dword [ebp + 0x18]
and ecx, 0xff00
shr edx, 0x10
imul ecx, edx
add esi, ecx
mov ecx, dword [ebp - 0x58]
shr esi, cl
mov ecx, dword [ebp - 0x5c]
sub ebx, edx
mov dword [ebp - 0x18], edi
mov edi, dword [ebp - 0x10]
mov dword [ebp - 0x20], ebx
shl esi, cl
mov ecx, dword [ebp - 0x54]
and edi, ecx
imul edi, ebx
shr edi, 8
and edi, ecx
mov ecx, dword [ebp + 0x30]
and ecx, 0xff
imul ecx, dword [ebp - 0x18]
add esi, edi
mov edi, eax
and edi, 0xff
imul edi, dword [ebp - 0xc]
add edi, ecx
mov ecx, dword [ebp + 0xc]
and ecx, 0xff
imul ecx, dword [ebp - 4]
add edi, ecx
mov ecx, dword [ebp + 0x18]
and ecx, 0xff
imul ecx, edx
add edi, ecx
mov ecx, dword [ebp - 0x50]
shr edi, cl
mov ecx, dword [ebp - 0x60]
mov ebx, dword [ebp - 0x3c]
and eax, 0xff0000
shl edi, cl
imul eax, dword [ebp - 0xc]
mov ecx, dword [ebp - 0x10]
and ecx, ebx
imul ecx, dword [ebp - 0x20]
shr ecx, 8
and ecx, ebx
add edi, ecx
mov ecx, dword [ebp + 0x30]
and ecx, 0xff0000
imul ecx, dword [ebp - 0x18]
add eax, ecx
mov ecx, dword [ebp + 0xc]
and ecx, 0xff0000
imul ecx, dword [ebp - 4]
add eax, ecx
mov ecx, dword [ebp + 0x18]
and ecx, 0xff0000
imul ecx, edx
mov edx, dword [ebp - 0x34]
add eax, ecx
mov ecx, dword [ebp - 0x68]
shr eax, cl
mov ecx, dword [ebp - 0x64]
mov ebx, dword [ebp + 0x20]
or esi, edi
shl eax, cl
mov ecx, dword [ebp - 0x10]
mov edi, dword [ebp - 0x14]
and ecx, edx
imul ecx, dword [ebp - 0x20]
shr ecx, 8
and ecx, edx
mov edx, dword [ebp - 8]
add eax, ecx
mov ecx, dword [ebp + 0x1c]
or esi, eax
mov eax, dword [ebp - 0x2c]
mov dword [eax], esi
mov esi, dword [ebp - 0x24]
add ecx, ebx
mov ebx, dword [ebp + 8]
add eax, 4
add edi, esi
dec edx
mov dword [ebp - 0x2c], eax
mov dword [ebp - 0x14], edi
mov dword [ebp + 0x1c], ecx
mov dword [ebp - 8], edx
jne 0x4b53d0
mov edx, dword [ebp - 0x30]
mov eax, dword [edx + 0x6c]
mov ecx, dword [ebp + 0x28]
cdq
and edx, 3
add eax, edx
sar eax, 2
lea edx, [ecx + eax*4]
mov ecx, dword [ebp - 0x38]
mov eax, dword [ebp - 0x28]
inc ecx
mov dword [ebp - 0x38], ecx
inc eax
fild dword [ebp - 0x38]
mov dword [ebp - 0x28], eax
mov dword [ebp + 0x28], edx
fcomp qword [ebp - 0xa4]
fnstsw ax
test ah, 5
jnp 0x4b5291
mov ecx, dword [ebp - 0x30]
fstp st(0)
mov eax, dword [ecx]
fstp st(0)
call dword [eax + 0xa0]
mov ecx, dword [ebp - 0x30]
call fcn.004964e0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x2c
cmp eax, 1
jl 0x4b5645
mov eax, 0x10000
sub eax, ecx
cdq
idiv dword [ebp + 0x20]
cmp eax, dword [ebp + 0xc]
jle 0x4b5629
mov dword [ebp + 0xc], eax
mov ecx, dword [ebp + 0x14]
mov eax, dword [ecx + 0xc]
mov ecx, dword [ebp + 0x1c]
shl eax, 0x10
sub eax, ecx
sub eax, 0x17fff
cdq
idiv dword [ebp + 0x20]
jmp 0x4b5383
test ecx, ecx
jl 0x4b565f
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 0xc]
shl eax, 0x10
sub eax, 0x10000
cmp ecx, eax
jl 0x4b538e
mov edx, dword [ebp + 0xc]
dec edx
mov dword [ebp + 0x30], edx
jmp 0x4b538e
mov ecx, dword [ebp + 0x1c]
mov eax, dword [ecx + 0xc]
mov dword [ebp - 4], eax
mov eax, dword [ecx]
inc eax
mov dword [ebp - 0x1c], eax
mov eax, dword [ecx + 4]
inc eax
mov dword [ebp - 0x4c], eax
mov eax, dword [ecx + 8]
inc eax
mov dword [ebp - 0x80], eax
fnstsw ax
test ah, 5
jp 0x4b5a69
mov ecx, dword [ebp + 0x2c]
mov eax, dword [ebp + 0x18]
sub eax, ecx
mov dword [ebp + 0x1c], eax
fild dword [ebp + 0x1c]
fsub dword [ebp + 0xc]
fld qword [ebp - 0x90]
fmul st(1)
fstp qword [ebp - 0x7c]
fild dword [ebp + 0x2c]
fstp qword [ebp - 0x88]
fmul qword [ebp - 0x70]
fild dword [ebp + 0x30]
fld qword [ebp - 0xac]
fsub qword [0x546438]
call fcn.00527ae0
mov dword [ebp + 0x2c], eax
sub edi, dword [ebp + 0x30]
mov dword [ebp - 0x28], edi
jmp 0x4b56e0
fild dword [ebp - 0x28]
fsub dword [ebp + 0x10]
fld qword [ebp - 0x70]
fmul st(1)
fsubr qword [ebp - 0x7c]
fadd qword [ebp - 0x88]
fmul qword [0x55abc0]
call fcn.00527ae0
fmul qword [ebp - 0x90]
mov edi, eax
fadd st(2)
fadd st(1)
fmul qword [0x55abc0]
call fcn.00527ae0
cmp esi, 0xffffffff
mov edx, dword [ebp + 0x2c]
mov ecx, eax
mov dword [ebp + 0x1c], ecx
mov dword [ebp + 0xc], 0
mov dword [ebp + 0x30], edx
jge 0x4b575b
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 8]
shl eax, 0x10
sub eax, edi
sub eax, 0x27fff
cdq
idiv esi
test eax, eax
jl 0x4b5747
mov dword [ebp + 0xc], eax
mov eax, 0x7fff
sub eax, edi
cdq
idiv esi
cmp eax, dword [ebp + 0x30]
jge 0x4b57a1
mov dword [ebp + 0x30], eax
jmp 0x4b57a1
cmp esi, 1
jl 0x4b5783
mov eax, 0x10000
sub eax, edi
cdq
idiv esi
test eax, eax
jle 0x4b5771
mov dword [ebp + 0xc], eax
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 8]
shl eax, 0x10
sub eax, edi
sub eax, 0x17fff
jmp 0x4b574e
test edi, edi
jl 0x4b579a
mov eax, dword [ebp + 0x14]
mov edx, dword [eax + 8]
shl edx, 0x10
sub edx, 0x10000
cmp edi, edx
jl 0x4b57a1
mov dword [ebp + 0x30], 0xffffffff
mov eax, dword [ebp + 0x20]
cmp eax, 0xffffffff
jg 0x4b5a85
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 0xc]
shl eax, 0x10
sub eax, ecx
sub eax, 0x27fff
cdq
idiv dword [ebp + 0x20]
cmp eax, dword [ebp + 0xc]
jle 0x4b57c9
mov dword [ebp + 0xc], eax
mov eax, dword [ebp + 0x1c]
cdq
idiv dword [ebp + 0x20]
neg eax
cmp eax, dword [ebp + 0x30]
jge 0x4b57da
mov dword [ebp + 0x30], eax
mov ecx, dword [ebp + 0x1c]
mov eax, dword [ebp + 0xc]
mov edx, eax
imul eax, dword [ebp + 0x20]
imul edx, esi
add edi, edx
mov edx, dword [ebp + 0xc]
add ecx, eax
mov eax, dword [ebp + 0x28]
lea eax, [eax + edx*4]
mov edx, dword [ebx + 4]
mov dword [ebp - 0x40], edx
mov edx, dword [ebp + 0x30]
cmp dword [ebp + 0xc], edx
mov dword [ebp - 0x14], edi
mov dword [ebp + 0x1c], ecx
mov dword [ebp - 0x20], eax
jg 0x4b5a2b
sub edx, dword [ebp + 0xc]
inc edx
mov dword [ebp - 8], edx
mov eax, dword [eax]
mov edx, ecx
sar edx, 0x10
imul edx, dword [ebp - 0x40]
mov dword [ebp - 0x10], eax
mov eax, edi
sar eax, 0x10
add edx, eax
mov eax, dword [ebp - 0x44]
lea eax, [eax + edx*4]
mov edx, dword [eax]
mov dword [ebp + 0x18], edx
mov edx, dword [eax + 4]
mov dword [ebp + 0xc], edx
mov edx, dword [ebx + 4]
mov ebx, dword [ebp + 0x18]
and ecx, 0xfffe
lea eax, [eax + edx*4]
mov edx, dword [eax]
and edi, 0xfffe
mov dword [ebp + 0x30], edx
inc edi
inc ecx
mov dword [ebp - 0x94], edi
mov eax, dword [eax + 4]
mov edx, 0x10000
sub edx, edi
mov dword [ebp - 0x48], edx
shr ebx, 0x18
mov esi, 0x10000
sub esi, ecx
imul edx, esi
imul edi, esi
mov esi, dword [ebp + 0xc]
shr esi, 0x18
shr edx, 0x10
imul edx, ebx
mov ebx, dword [ebp - 4]
shr edi, 0x10
imul edx, ebx
imul edi, esi
mov esi, ecx
imul ecx, dword [ebp - 0x94]
imul edi, ebx
imul esi, dword [ebp - 0x48]
mov ebx, dword [ebp + 0x30]
shr ebx, 0x18
shr ecx, 0x10
shr esi, 0x10
imul esi, ebx
imul esi, dword [ebp - 4]
mov ebx, eax
shr ebx, 0x18
imul ecx, ebx
imul ecx, dword [ebp - 4]
shr ecx, 0x18
shr esi, 0x18
mov ebx, pe_nt_image_headers32
sub ebx, ecx
sub ebx, esi
shr edi, 0x18
sub ebx, edi
shr edx, 0x18
sub ebx, edx
mov dword [ebp - 0x2c], ebx
mov dword [ebp - 0xc], 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 + 0xc]
and ecx, 0xff
imul ecx, edi
add ebx, ecx
mov ecx, dword [ebp + 0x18]
mov dword [ebp - 0x18], edi
mov dword [ebp - 0x48], esi
and ecx, 0xff
imul ecx, edx
add ebx, ecx
mov ecx, dword [ebp - 0x50]
mov edi, dword [ebp - 0x3c]
shr ebx, 8
imul ebx, dword [ebp - 0x80]
shr ebx, cl
mov ecx, dword [ebp - 0x60]
shl ebx, cl
mov ecx, dword [ebp - 0x10]
and ecx, edi
imul ecx, dword [ebp - 0x2c]
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 - 0xc]
add edi, ecx
mov ecx, dword [ebp + 0xc]
and ecx, 0xff0000
imul ecx, dword [ebp - 0x18]
add edi, ecx
mov ecx, dword [ebp + 0x18]
and ecx, 0xff0000
imul ecx, edx
add edi, ecx
mov ecx, dword [ebp - 0x68]
mov esi, dword [ebp - 0x34]
shr edi, 8
imul edi, dword [ebp - 0x1c]
shr edi, cl
mov ecx, dword [ebp - 0x64]
and eax, 0xff00
imul eax, dword [ebp - 0xc]
shl edi, cl
mov ecx, dword [ebp - 0x10]
and ecx, esi
imul ecx, dword [ebp - 0x2c]
shr ecx, 8
and ecx, esi
add edi, ecx
mov ecx, dword [ebp + 0x30]
and ecx, 0xff00
imul ecx, dword [ebp - 0x48]
add eax, ecx
mov ecx, dword [ebp + 0xc]
and ecx, 0xff00
imul ecx, dword [ebp - 0x18]
add eax, ecx
mov ecx, dword [ebp + 0x18]
and ecx, 0xff00
imul ecx, edx
add eax, ecx
mov ecx, dword [ebp - 0x58]
mov edx, dword [ebp - 0x54]
shr eax, 8
imul eax, dword [ebp - 0x4c]
shr eax, cl
mov ecx, dword [ebp - 0x5c]
mov esi, dword [ebp - 0x24]
or ebx, edi
shl eax, cl
mov ecx, dword [ebp - 0x10]
mov edi, dword [ebp - 0x14]
and ecx, edx
imul ecx, dword [ebp - 0x2c]
shr ecx, 8
and ecx, edx
add eax, ecx
mov ecx, dword [ebp + 0x1c]
or ebx, eax
mov eax, dword [ebp - 0x20]
mov dword [eax], ebx
add eax, 4
add edi, esi
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x14], edi
mov ebx, dword [ebp + 0x20]
mov edx, dword [ebp - 8]
add ecx, ebx
mov ebx, dword [ebp + 8]
dec edx
mov dword [ebp + 0x1c], ecx
mov dword [ebp - 8], edx
jne 0x4b5818
mov edx, dword [ebp - 0x30]
mov eax, dword [edx + 0x6c]
mov ecx, dword [ebp + 0x28]
cdq
and edx, 3
add eax, edx
sar eax, 2
lea edx, [ecx + eax*4]
mov ecx, dword [ebp - 0x38]
mov eax, dword [ebp - 0x28]
inc ecx
mov dword [ebp - 0x38], ecx
inc eax
fild dword [ebp - 0x38]
mov dword [ebp - 0x28], eax
mov dword [ebp + 0x28], edx
fcomp qword [ebp - 0xa4]
fnstsw ax
test ah, 5
jnp 0x4b56e0
fstp st(0)
fstp st(0)
mov ecx, dword [ebp - 0x30]
mov eax, dword [ecx]
call dword [eax + 0xa0]
mov ecx, dword [ebp - 0x30]
call fcn.004964e0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x2c
cmp eax, 1
jl 0x4b5ab9
mov eax, 0x10000
sub eax, ecx
cdq
idiv dword [ebp + 0x20]
cmp eax, dword [ebp + 0xc]
jle 0x4b5a9d
mov dword [ebp + 0xc], eax
mov ecx, dword [ebp + 0x14]
mov eax, dword [ecx + 0xc]
mov ecx, dword [ebp + 0x1c]
shl eax, 0x10
sub eax, ecx
sub eax, 0x17fff
cdq
idiv dword [ebp + 0x20]
jmp 0x4b57d2
test ecx, ecx
jl 0x4b5ad3
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 0xc]
shl eax, 0x10
sub eax, 0x10000
cmp ecx, eax
jl 0x4b57dd
mov edx, dword [ebp + 0xc]
dec edx
mov dword [ebp + 0x30], edx
jmp 0x4b57dd
fld qword [ebp + 0x24]
mov ecx, dword [ebp + 0x14]
fcos
imul eax, dword [ecx + 4]
add eax, dword [edi + 0x2c]
add eax, dword [ecx]
mov dword [ebp - 0x54], eax
fstp qword [ebp - 0x9c]
fld qword [ebp + 0x24]
fsin
fstp qword [ebp - 0x70]
fld qword [ebp - 0x9c]
fmul qword [0x55abc0]
call fcn.00527ae0
fld qword [ebp - 0x70]
fmul qword [0x55abc0]
mov edi, eax
mov dword [ebp - 0x2c], edi
call fcn.00527ae0
mov ecx, dword [ebp - 0x30]
mov edx, dword [ecx]
mov dword [ebp + 0x20], eax
call dword [edx + 0x9c]
test al, al
je 0x4b846e
mov edx, dword [ebp - 0x30]
mov eax, dword [edx + 0x48]
mov ecx, dword [eax + 0x20]
mov dword [ebp - 0x68], ecx
mov ecx, dword [eax + 0x24]
mov dword [ebp - 0x50], ecx
mov ecx, dword [eax + 0x28]
mov dword [ebp - 0x58], ecx
mov ecx, 0x20
sub ecx, dword [eax + 0x14]
mov dword [ebp - 0x64], ecx
mov ecx, 0x18
sub ecx, dword [eax + 0x18]
mov dword [ebp - 0x60], ecx
mov ecx, 0x10
sub ecx, dword [eax + 0x1c]
mov eax, dword [edx + 0xb4]
mov dword [ebp - 0x5c], ecx
mov ecx, dword [edx + 0xb8]
mov dword [ebp - 0x34], eax
mov eax, dword [edx + 0xbc]
mov edx, dword [edx + 0xb0]
cmp edx, 0x10
mov dword [ebp - 0x28], ecx
mov dword [ebp - 0x38], eax
jne 0x4b653e
fld qword [ebp - 0xb4]
call fcn.00527ae0
fld qword [ebp - 0xbc]
mov dword [ebp + 0x28], eax
call fcn.00527ae0
mov edx, dword [ebp - 0x30]
mov ecx, eax
mov eax, dword [edx + 0x6c]
imul eax, dword [ebp + 0x28]
cdq
sub eax, edx
sar eax, 1
add eax, ecx
mov dword [ebp + 0x18], ecx
mov ecx, dword [ebp - 0x30]
mov edx, dword [ecx + 0x80]
mov ecx, dword [ebp + 0x1c]
lea eax, [edx + eax*2]
push 0x5c3540
push ecx
mov dword [ebp - 0x44], eax
call fcn.00494f90
add esp, 8
test al, al
fld qword [0x546448]
fcomp qword [ebp - 0xa4]
je 0x4b607e
fnstsw ax
mov dword [ebp - 8], 0
test ah, 5
jp 0x4b6eac
mov edx, dword [ebp + 0x2c]
mov eax, dword [ebp + 0x18]
sub eax, edx
mov dword [ebp + 0x1c], eax
fild dword [ebp + 0x1c]
fsub dword [ebp + 0xc]
fld qword [ebp - 0x9c]
fmul st(1)
fstp qword [ebp - 0x7c]
fild dword [ebp + 0x2c]
fstp qword [ebp - 0x88]
fmul qword [ebp - 0x70]
fild dword [ebp + 0x30]
fld qword [ebp - 0xac]
fsub qword [0x546438]
call fcn.00527ae0
mov ecx, dword [ebp + 0x30]
mov dword [ebp + 0x2c], eax
mov eax, dword [ebp + 0x28]
sub eax, ecx
mov dword [ebp - 0x1c], eax
lea ecx, [ecx]
fild dword [ebp - 0x1c]
fsub dword [ebp + 0x10]
fld qword [ebp - 0x70]
fmul st(1)
fsubr qword [ebp - 0x7c]
fadd qword [ebp - 0x88]
fmul qword [0x55abc0]
call fcn.00527ae0
fmul qword [ebp - 0x9c]
mov dword [ebp + 0x1c], eax
fadd st(1)
fadd st(2)
fmul qword [0x55abc0]
call fcn.00527ae0
cmp edi, 0xffffffff
mov edx, dword [ebp + 0x2c]
mov ecx, eax
mov dword [ebp + 0x18], ecx
mov dword [ebp + 0x30], 0
mov dword [ebp + 0xc], edx
jge 0x4b5ce2
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 8]
mov edx, dword [ebp + 0x1c]
shl eax, 0x10
sub eax, edx
sub eax, 0x27fff
cdq
idiv edi
test eax, eax
jl 0x4b5ccb
mov dword [ebp + 0x30], eax
mov edx, dword [ebp + 0x1c]
mov eax, 0x7fff
sub eax, edx
cdq
idiv edi
cmp eax, dword [ebp + 0xc]
jge 0x4b5d31
mov dword [ebp + 0xc], eax
jmp 0x4b5d31
cmp edi, 1
jl 0x4b5d10
mov edx, dword [ebp + 0x1c]
mov eax, 0x10000
sub eax, edx
cdq
idiv edi
test eax, eax
jle 0x4b5cfb
mov dword [ebp + 0x30], eax
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 8]
mov edx, dword [ebp + 0x1c]
shl eax, 0x10
sub eax, edx
sub eax, 0x17fff
jmp 0x4b5cd5
mov eax, dword [ebp + 0x1c]
test eax, eax
jl 0x4b5d2a
mov edx, dword [ebp + 0x14]
mov edx, dword [edx + 8]
shl edx, 0x10
sub edx, 0x10000
cmp eax, edx
jl 0x4b5d31
mov dword [ebp + 0xc], 0xffffffff
mov eax, dword [ebp + 0x20]
cmp eax, 0xffffffff
jg 0x4b6024
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 0xc]
shl eax, 0x10
sub eax, ecx
sub eax, 0x27fff
cdq
idiv dword [ebp + 0x20]
cmp eax, dword [ebp + 0x30]
jle 0x4b5d59
mov dword [ebp + 0x30], eax
mov eax, dword [ebp + 0x18]
cdq
idiv dword [ebp + 0x20]
neg eax
cmp eax, dword [ebp + 0xc]
jge 0x4b5d6a
mov dword [ebp + 0xc], eax
mov ecx, dword [ebp + 0x18]
mov eax, dword [ebp + 0x30]
mov edx, dword [ebp + 0x1c]
imul eax, edi
add edx, eax
mov eax, dword [ebp - 0x44]
mov dword [ebp + 0x1c], edx
mov edx, dword [ebp + 0x30]
imul edx, dword [ebp + 0x20]
add ecx, edx
mov edx, dword [ebp + 0x30]
lea eax, [eax + edx*2]
mov edx, dword [ebx + 4]
mov dword [ebp - 0x4c], edx
mov edx, dword [ebp + 0xc]
cmp dword [ebp + 0x30], edx
mov dword [ebp + 0x18], ecx
mov dword [ebp - 0x18], eax
jg 0x4b5fce
sub edx, dword [ebp + 0x30]
inc edx
mov dword [ebp - 0x20], edx
lea esp, [esp]
mov ax, word [eax]
mov edi, dword [ebp - 0x54]
mov edx, ecx
sar edx, 0x10
imul edx, dword [ebp - 0x4c]
add edi, edx
mov word [ebp - 0x80], ax
mov eax, dword [ebp + 0x1c]
sar eax, 0x10
movzx edx, byte [eax + edi]
mov edx, dword [esi + edx*4]
add eax, edi
mov dword [ebp + 0x28], edx
movzx edx, byte [eax + 1]
mov edx, dword [esi + edx*4]
mov edi, dword [ebp + 0x1c]
mov dword [ebp + 0xc], edx
mov edx, dword [ebx + 4]
add eax, edx
movzx edx, byte [eax]
mov edx, dword [esi + edx*4]
mov dword [ebp + 0x30], edx
and ecx, 0xfffe
and edi, 0xfffe
inc edi
inc ecx
mov edx, 0x10000
sub edx, edi
mov dword [ebp - 0x48], edx
mov ebx, 0x10000
sub ebx, ecx
imul edx, ebx
mov dword [ebp - 0x40], ebx
mov ebx, dword [ebp + 0x28]
shr ebx, 0x18
shr edx, 0x10
imul edx, ebx
movzx eax, byte [eax + 1]
mov ebx, dword [ebp + 0x30]
mov dword [ebp - 0x94], edi
imul edi, dword [ebp - 0x40]
mov eax, dword [esi + eax*4]
shr edx, 0x10
mov dword [ebp - 0x24], edx
mov edx, dword [ebp + 0xc]
shr edx, 0x18
shr edi, 0x10
imul edi, edx
mov edx, ecx
imul ecx, dword [ebp - 0x94]
imul edx, dword [ebp - 0x48]
shr ebx, 0x18
shr ecx, 0x10
shr edx, 0x10
imul edx, ebx
mov ebx, eax
shr ebx, 0x18
imul ecx, ebx
shr ecx, 0x10
shr edx, 0x10
mov dword [ebp - 4], ecx
mov ebx, pe_nt_image_headers32
sub ebx, ecx
mov ecx, dword [ebp - 0x24]
sub ebx, edx
shr edi, 0x10
sub ebx, edi
sub ebx, ecx
movzx ecx, word [ebp - 0x80]
mov dword [ebp - 0x3c], ebx
mov dword [ebp - 0x10], ecx
mov ecx, dword [ebp + 0x30]
mov ebx, eax
and ecx, 0xff
and ebx, 0xff
imul ecx, edx
imul ebx, dword [ebp - 4]
add ebx, ecx
mov ecx, dword [ebp + 0xc]
mov dword [ebp - 0xc], edi
mov dword [ebp - 0x40], edx
and ecx, 0xff
imul ecx, edi
add ebx, ecx
mov ecx, dword [ebp + 0x28]
and ecx, 0xff
imul ecx, dword [ebp - 0x24]
add ebx, ecx
mov ecx, dword [ebp - 0x5c]
shr ebx, cl
mov ecx, dword [ebp - 0x58]
mov edi, dword [ebp - 0x10]
shl ebx, cl
mov ecx, dword [ebp - 0x38]
and ecx, edi
imul ecx, dword [ebp - 0x3c]
mov edi, dword [ebp - 0x38]
shr ecx, 8
and ecx, edi
add ebx, ecx
mov ecx, dword [ebp + 0x30]
and ecx, 0xff0000
imul ecx, edx
mov edx, dword [ebp + 0xc]
mov edi, eax
and edi, 0xff0000
imul edi, dword [ebp - 4]
add edi, ecx
mov ecx, dword [ebp + 0x28]
and ecx, 0xff0000
imul ecx, dword [ebp - 0x24]
and edx, 0xff0000
imul edx, dword [ebp - 0xc]
add edi, edx
mov edx, dword [ebp - 0x34]
add edi, ecx
mov ecx, dword [ebp - 0x64]
shr edi, cl
mov ecx, dword [ebp - 0x68]
and eax, 0xff00
imul eax, dword [ebp - 4]
shl edi, cl
and edx, dword [ebp - 0x10]
imul edx, dword [ebp - 0x3c]
mov ecx, dword [ebp - 0x34]
shr edx, 8
and edx, ecx
mov ecx, dword [ebp + 0x30]
and ecx, 0xff00
imul ecx, dword [ebp - 0x40]
add eax, ecx
mov ecx, dword [ebp + 0xc]
and ecx, 0xff00
imul ecx, dword [ebp - 0xc]
add eax, ecx
mov ecx, dword [ebp + 0x28]
and ecx, 0xff00
imul ecx, dword [ebp - 0x24]
add eax, ecx
mov ecx, dword [ebp - 0x60]
shr eax, cl
mov ecx, dword [ebp - 0x50]
add edi, edx
or ebx, edi
mov edi, dword [ebp - 0x10]
shl eax, cl
mov ecx, dword [ebp - 0x28]
mov edx, ecx
and edx, edi
imul edx, dword [ebp - 0x3c]
mov edi, dword [ebp - 0x2c]
shr edx, 8
and edx, ecx
mov ecx, dword [ebp + 0x1c]
add eax, edx
or ebx, eax
mov eax, dword [ebp - 0x18]
mov word [eax], bx
add eax, 2
mov dword [ebp - 0x18], eax
add ecx, edi
mov ebx, dword [ebp + 0x20]
mov edx, dword [ebp - 0x20]
mov dword [ebp + 0x1c], ecx
mov ecx, dword [ebp + 0x18]
add ecx, ebx
mov ebx, dword [ebp + 8]
dec edx
mov dword [ebp + 0x18], ecx
mov dword [ebp - 0x20], edx
jne 0x4b5db0
mov eax, dword [ebp - 0x30]
mov eax, dword [eax + 0x6c]
mov ecx, dword [ebp - 0x44]
cdq
sub eax, edx
sar eax, 1
lea edx, [ecx + eax*2]
mov ecx, dword [ebp - 8]
mov eax, dword [ebp - 0x1c]
inc ecx
mov dword [ebp - 8], ecx
inc eax
fild dword [ebp - 8]
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x44], edx
fcomp qword [ebp - 0xa4]
fnstsw ax
test ah, 5
jnp 0x4b5c60
mov ecx, dword [ebp - 0x30]
fstp st(0)
mov eax, dword [ecx]
fstp st(0)
call dword [eax + 0xa0]
mov ecx, dword [ebp - 0x30]
call fcn.004964e0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x2c
cmp eax, 1
jl 0x4b6058
mov eax, 0x10000
sub eax, ecx
cdq
idiv dword [ebp + 0x20]
cmp eax, dword [ebp + 0x30]
jle 0x4b603c
mov dword [ebp + 0x30], eax
mov ecx, dword [ebp + 0x14]
mov eax, dword [ecx + 0xc]
mov ecx, dword [ebp + 0x18]
shl eax, 0x10
sub eax, ecx
sub eax, 0x17fff
cdq
idiv dword [ebp + 0x20]
jmp 0x4b5d62
test ecx, ecx
jl 0x4b6072
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 0xc]
shl eax, 0x10
sub eax, 0x10000
cmp ecx, eax
jl 0x4b5d6d
mov edx, dword [ebp + 0x30]
dec edx
mov dword [ebp + 0xc], edx
jmp 0x4b5d6d
mov ecx, dword [ebp + 0x1c]
mov eax, dword [ecx + 0xc]
mov dword [ebp - 8], eax
mov eax, dword [ecx]
inc eax
mov dword [ebp - 0x74], eax
mov eax, dword [ecx + 4]
inc eax
mov dword [ebp - 0x8c], eax
mov eax, dword [ecx + 8]
inc eax
mov dword [ebp - 0x80], eax
fnstsw ax
mov dword [ebp - 0x24], 0
test ah, 5
jp 0x4b6eac
mov edx, dword [ebp + 0x2c]
mov eax, dword [ebp + 0x18]
sub eax, edx
mov dword [ebp + 0x1c], eax
fild dword [ebp + 0x1c]
fsub dword [ebp + 0xc]
fld qword [ebp - 0x9c]
fmul st(1)
fstp qword [ebp - 0x7c]
fild dword [ebp + 0x2c]
fstp qword [ebp - 0x88]
fmul qword [ebp - 0x70]
fild dword [ebp + 0x30]
fld qword [ebp - 0xac]
fsub qword [0x546438]
call fcn.00527ae0
mov ecx, dword [ebp + 0x30]
mov dword [ebp + 0x2c], eax
mov eax, dword [ebp + 0x28]
sub eax, ecx
mov dword [ebp - 0x10], eax
lea ebx, [ebx]
fild dword [ebp - 0x10]
fsub dword [ebp + 0x10]
fld qword [ebp - 0x70]
fmul st(1)
fsubr qword [ebp - 0x7c]
fadd qword [ebp - 0x88]
fmul qword [0x55abc0]
call fcn.00527ae0
fmul qword [ebp - 0x9c]
mov dword [ebp + 0x1c], eax
fadd st(1)
fadd st(2)
fmul qword [0x55abc0]
call fcn.00527ae0
cmp edi, 0xffffffff
mov edx, dword [ebp + 0x2c]
mov ecx, eax
mov dword [ebp + 0x18], ecx
mov dword [ebp + 0x30], 0
mov dword [ebp + 0xc], edx
jge 0x4b6182
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 8]
mov edx, dword [ebp + 0x1c]
shl eax, 0x10
sub eax, edx
sub eax, 0x27fff
cdq
idiv edi
test eax, eax
jl 0x4b616b
mov dword [ebp + 0x30], eax
mov edx, dword [ebp + 0x1c]
mov eax, 0x7fff
sub eax, edx
cdq
idiv edi
cmp eax, dword [ebp + 0xc]
jge 0x4b61d1
mov dword [ebp + 0xc], eax
jmp 0x4b61d1
cmp edi, 1
jl 0x4b61b0
mov edx, dword [ebp + 0x1c]
mov eax, 0x10000
sub eax, edx
cdq
idiv edi
test eax, eax
jle 0x4b619b
mov dword [ebp + 0x30], eax
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 8]
mov edx, dword [ebp + 0x1c]
shl eax, 0x10
sub eax, edx
sub eax, 0x17fff
jmp 0x4b6175
mov eax, dword [ebp + 0x1c]
test eax, eax
jl 0x4b61ca
mov edx, dword [ebp + 0x14]
mov edx, dword [edx + 8]
shl edx, 0x10
sub edx, 0x10000
cmp eax, edx
jl 0x4b61d1
mov dword [ebp + 0xc], 0xffffffff
mov eax, dword [ebp + 0x20]
cmp eax, 0xffffffff
jg 0x4b64e4
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 0xc]
shl eax, 0x10
sub eax, ecx
sub eax, 0x27fff
cdq
idiv dword [ebp + 0x20]
cmp eax, dword [ebp + 0x30]
jle 0x4b61f9
mov dword [ebp + 0x30], eax
mov eax, dword [ebp + 0x18]
cdq
idiv dword [ebp + 0x20]
neg eax
cmp eax, dword [ebp + 0xc]
jge 0x4b620a
mov dword [ebp + 0xc], eax
mov ecx, dword [ebp + 0x18]
mov eax, dword [ebp + 0x30]
mov edx, dword [ebp + 0x1c]
imul eax, edi
add edx, eax
mov eax, dword [ebp - 0x44]
mov dword [ebp + 0x1c], edx
mov edx, dword [ebp + 0x30]
imul edx, dword [ebp + 0x20]
add ecx, edx
mov edx, dword [ebp + 0x30]
lea eax, [eax + edx*2]
mov edx, dword [ebx + 4]
mov dword [ebp - 0x4c], edx
mov edx, dword [ebp + 0xc]
cmp dword [ebp + 0x30], edx
mov dword [ebp + 0x18], ecx
mov dword [ebp - 0x20], eax
jg 0x4b648e
sub edx, dword [ebp + 0x30]
inc edx
mov dword [ebp - 0x14], edx
lea esp, [esp]
mov ax, word [eax]
mov edi, dword [ebp - 0x54]
mov edx, ecx
sar edx, 0x10
imul edx, dword [ebp - 0x4c]
add edi, edx
mov word [ebp - 0x94], ax
mov eax, dword [ebp + 0x1c]
sar eax, 0x10
movzx edx, byte [eax + edi]
mov edx, dword [esi + edx*4]
add eax, edi
mov edi, dword [ebp + 0x1c]
mov dword [ebp + 0x28], edx
movzx edx, byte [eax + 1]
mov edx, dword [esi + edx*4]
mov dword [ebp + 0xc], edx
mov edx, dword [ebx + 4]
add eax, edx
movzx edx, byte [eax]
mov edx, dword [esi + edx*4]
movzx eax, byte [eax + 1]
mov eax, dword [esi + eax*4]
mov ebx, dword [ebp + 0x28]
and edi, 0xfffe
and ecx, 0xfffe
mov dword [ebp + 0x30], edx
inc edi
inc ecx
mov dword [ebp - 0x48], edi
mov edx, 0x10000
sub edx, edi
mov dword [ebp - 0x40], edx
mov esi, 0x10000
sub esi, ecx
imul edx, esi
imul edi, esi
mov esi, dword [ebp + 0xc]
shr ebx, 0x18
shr esi, 0x18
shr edx, 0x10
imul edx, ebx
mov ebx, dword [ebp - 8]
shr edi, 0x10
imul edx, ebx
imul edi, esi
mov esi, ecx
imul ecx, dword [ebp - 0x48]
imul edi, ebx
imul esi, dword [ebp - 0x40]
mov ebx, dword [ebp + 0x30]
shr ebx, 0x18
shr esi, 0x10
imul esi, ebx
imul esi, dword [ebp - 8]
shr ecx, 0x10
mov ebx, eax
shr ebx, 0x18
imul ecx, ebx
imul ecx, dword [ebp - 8]
shr ecx, 0x18
shr esi, 0x18
mov ebx, pe_nt_image_headers32
sub ebx, ecx
sub ebx, esi
shr edi, 0x18
sub ebx, edi
shr edx, 0x18
sub ebx, edx
mov dword [ebp - 4], ebx
movzx ebx, word [ebp - 0x94]
mov dword [ebp - 0x1c], ebx
mov ebx, eax
and ebx, 0xff
mov dword [ebp - 0xc], ecx
imul ebx, ecx
mov ecx, dword [ebp + 0x30]
and ecx, 0xff
mov dword [ebp - 0x18], edi
imul ecx, esi
mov dword [ebp - 0x40], esi
add ebx, ecx
mov ecx, dword [ebp + 0xc]
and ecx, 0xff
imul ecx, edi
add ebx, ecx
mov ecx, dword [ebp + 0x28]
and ecx, 0xff
imul ecx, edx
add ebx, ecx
mov ecx, dword [ebp - 0x5c]
mov edi, dword [ebp - 0x1c]
shr ebx, 8
imul ebx, dword [ebp - 0x80]
shr ebx, cl
mov ecx, dword [ebp - 0x58]
shl ebx, cl
mov ecx, dword [ebp - 0x38]
and ecx, edi
imul ecx, dword [ebp - 4]
mov edi, dword [ebp - 0x38]
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 - 0xc]
add edi, ecx
mov ecx, dword [ebp + 0xc]
and ecx, 0xff0000
imul ecx, dword [ebp - 0x18]
add edi, ecx
mov ecx, dword [ebp + 0x28]
and ecx, 0xff0000
imul ecx, edx
add edi, ecx
mov ecx, dword [ebp - 0x64]
mov esi, dword [ebp - 0x1c]
shr edi, 8
imul edi, dword [ebp - 0x74]
shr edi, cl
mov ecx, dword [ebp - 0x68]
and eax, 0xff00
imul eax, dword [ebp - 0xc]
shl edi, cl
mov ecx, dword [ebp - 0x34]
and ecx, esi
imul ecx, dword [ebp - 4]
mov esi, dword [ebp - 0x34]
shr ecx, 8
and ecx, esi
add edi, ecx
mov ecx, dword [ebp + 0x30]
and ecx, 0xff00
imul ecx, dword [ebp - 0x40]
add eax, ecx
mov ecx, dword [ebp + 0xc]
and ecx, 0xff00
imul ecx, dword [ebp - 0x18]
add eax, ecx
mov ecx, dword [ebp + 0x28]
and ecx, 0xff00
imul ecx, edx
add eax, ecx
mov ecx, dword [ebp - 0x60]
shr eax, 8
imul eax, dword [ebp - 0x8c]
shr eax, cl
mov ecx, dword [ebp - 0x50]
or ebx, edi
mov edi, dword [ebp - 0x1c]
shl eax, cl
mov ecx, dword [ebp - 0x28]
mov edx, ecx
and edx, edi
imul edx, dword [ebp - 4]
shr edx, 8
and edx, ecx
add eax, edx
mov ecx, dword [ebp + 0x18]
mov esi, dword [ebp + 0x20]
mov edi, dword [ebp - 0x2c]
mov edx, dword [ebp - 0x14]
or ebx, eax
mov eax, dword [ebp - 0x20]
mov word [eax], bx
mov ebx, dword [ebp + 0x1c]
add ebx, edi
add ecx, esi
mov esi, dword [ebp - 0x3c]
add eax, 2
dec edx
mov dword [ebp + 0x1c], ebx
mov ebx, dword [ebp + 8]
mov dword [ebp - 0x20], eax
mov dword [ebp + 0x18], ecx
mov dword [ebp - 0x14], edx
jne 0x4b6250
mov eax, dword [ebp - 0x30]
mov eax, dword [eax + 0x6c]
mov ecx, dword [ebp - 0x44]
cdq
sub eax, edx
sar eax, 1
lea edx, [ecx + eax*2]
mov ecx, dword [ebp - 0x24]
mov eax, dword [ebp - 0x10]
inc ecx
mov dword [ebp - 0x24], ecx
inc eax
fild dword [ebp - 0x24]
mov dword [ebp - 0x10], eax
mov dword [ebp - 0x44], edx
fcomp qword [ebp - 0xa4]
fnstsw ax
test ah, 5
jnp 0x4b6100
mov ecx, dword [ebp - 0x30]
fstp st(0)
mov eax, dword [ecx]
fstp st(0)
call dword [eax + 0xa0]
mov ecx, dword [ebp - 0x30]
call fcn.004964e0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x2c
cmp eax, 1
jl 0x4b6518
mov eax, 0x10000
sub eax, ecx
cdq
idiv dword [ebp + 0x20]
cmp eax, dword [ebp + 0x30]
jle 0x4b64fc
mov dword [ebp + 0x30], eax
mov ecx, dword [ebp + 0x14]
mov eax, dword [ecx + 0xc]
mov ecx, dword [ebp + 0x18]
shl eax, 0x10
sub eax, ecx
sub eax, 0x17fff
cdq
idiv dword [ebp + 0x20]
jmp 0x4b6202
test ecx, ecx
jl 0x4b6532
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 0xc]
shl eax, 0x10
sub eax, 0x10000
cmp ecx, eax
jl 0x4b620d
mov edx, dword [ebp + 0x30]
dec edx
mov dword [ebp + 0xc], edx
jmp 0x4b620d
cmp edx, 0x20
jne 0x4b6eac
fld qword [ebp - 0xb4]
call fcn.00527ae0
fld qword [ebp - 0xbc]
mov dword [ebp + 0x28], eax
call fcn.00527ae0
mov ecx, eax
mov eax, dword [ebp - 0x30]
mov eax, dword [eax + 0x6c]
imul eax, dword [ebp + 0x28]
cdq
and edx, 3
add eax, edx
sar eax, 2
add eax, ecx
mov dword [ebp + 0x18], ecx
mov ecx, dword [ebp - 0x30]
mov edx, dword [ecx + 0x80]
mov ecx, dword [ebp + 0x1c]
lea eax, [edx + eax*4]
push 0x5c3540
push ecx
mov dword [ebp - 0x44], eax
call fcn.00494f90
add esp, 8
test al, al
fld qword [0x546448]
fcomp qword [ebp - 0xa4]
je 0x4b6a1b
fnstsw ax
mov dword [ebp - 0x14], 0
test ah, 5
jp 0x4b6eac
mov edx, dword [ebp + 0x2c]
mov eax, dword [ebp + 0x18]
sub eax, edx
mov dword [ebp + 0x1c], eax
fild dword [ebp + 0x1c]
fsub dword [ebp + 0xc]
fld qword [ebp - 0x9c]
fmul st(1)
fstp qword [ebp - 0x7c]
fild dword [ebp + 0x2c]
fstp qword [ebp - 0x88]
fmul qword [ebp - 0x70]
fild dword [ebp + 0x30]
fld qword [ebp - 0xac]
fsub qword [0x546438]
call fcn.00527ae0
mov ecx, dword [ebp + 0x30]
mov dword [ebp + 0x2c], eax
mov eax, dword [ebp + 0x28]
sub eax, ecx
mov dword [ebp - 0x3c], eax
lea ebx, [ebx]
fild dword [ebp - 0x3c]
fsub dword [ebp + 0x10]
fld qword [ebp - 0x70]
fmul st(1)
fsubr qword [ebp - 0x7c]
fadd qword [ebp - 0x88]
fmul qword [0x55abc0]
call fcn.00527ae0
fmul qword [ebp - 0x9c]
mov dword [ebp + 0xc], eax
fadd st(2)
fadd st(1)
fmul qword [0x55abc0]
call fcn.00527ae0
cmp edi, 0xffffffff
mov edx, dword [ebp + 0x2c]
mov ecx, eax
mov dword [ebp + 0x18], ecx
mov dword [ebp + 0x1c], 0
mov dword [ebp + 0x30], edx
jge 0x4b6692
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 8]
mov edx, dword [ebp + 0xc]
shl eax, 0x10
sub eax, edx
sub eax, 0x27fff
cdq
idiv edi
test eax, eax
jl 0x4b667b
mov dword [ebp + 0x1c], eax
mov edx, dword [ebp + 0xc]
mov eax, 0x7fff
sub eax, edx
cdq
idiv edi
cmp eax, dword [ebp + 0x30]
jge 0x4b66e1
mov dword [ebp + 0x30], eax
jmp 0x4b66e1
cmp edi, 1
jl 0x4b66c0
mov edx, dword [ebp + 0xc]
mov eax, 0x10000
sub eax, edx
cdq
idiv edi
test eax, eax
jle 0x4b66ab
mov dword [ebp + 0x1c], eax
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 8]
mov edx, dword [ebp + 0xc]
shl eax, 0x10
sub eax, edx
sub eax, 0x17fff
jmp 0x4b6685
mov eax, dword [ebp + 0xc]
test eax, eax
jl 0x4b66da
mov edx, dword [ebp + 0x14]
mov edx, dword [edx + 8]
shl edx, 0x10
sub edx, 0x10000
cmp eax, edx
jl 0x4b66e1
mov dword [ebp + 0x30], 0xffffffff
mov eax, dword [ebp + 0x20]
cmp eax, 0xffffffff
jg 0x4b69c1
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 0xc]
shl eax, 0x10
sub eax, ecx
sub eax, 0x27fff
cdq
idiv dword [ebp + 0x20]
cmp eax, dword [ebp + 0x1c]
jle 0x4b6709
mov dword [ebp + 0x1c], eax
mov eax, dword [ebp + 0x18]
cdq
idiv dword [ebp + 0x20]
neg eax
cmp eax, dword [ebp + 0x30]
jge 0x4b671a
mov dword [ebp + 0x30], eax
mov ecx, dword [ebp + 0x18]
mov eax, dword [ebp + 0x1c]
mov edx, dword [ebp + 0xc]
imul eax, edi
add edx, eax
mov eax, dword [ebp + 0x1c]
mov dword [ebp + 0xc], edx
mov edx, dword [ebp + 0x1c]
imul edx, dword [ebp + 0x20]
add ecx, edx
mov edx, dword [ebp - 0x44]
lea edx, [edx + eax*4]
mov dword [ebp - 0x10], edx
mov edx, dword [ebx + 4]
mov dword [ebp - 0x8c], edx
mov edx, dword [ebp + 0x30]
cmp eax, edx
mov dword [ebp + 0x18], ecx
jg 0x4b6967
sub edx, eax
mov eax, dword [ebp - 0x10]
inc edx
mov dword [ebp - 0x18], edx
mov eax, dword [eax]
mov edi, dword [ebp - 0x54]
mov edx, ecx
sar edx, 0x10
imul edx, dword [ebp - 0x8c]
add edi, edx
mov dword [ebp - 0x1c], eax
mov eax, dword [ebp + 0xc]
sar eax, 0x10
movzx edx, byte [eax + edi]
mov edx, dword [esi + edx*4]
add eax, edi
mov edi, dword [ebp + 0xc]
mov dword [ebp - 0x24], edx
movzx edx, byte [eax + 1]
mov edx, dword [esi + edx*4]
mov dword [ebp + 0x1c], edx
mov edx, dword [ebx + 4]
add eax, edx
movzx edx, byte [eax]
mov edx, dword [esi + edx*4]
and edi, 0xffff
and ecx, 0xffff
mov dword [ebp + 0x30], edx
mov dword [ebp - 0x4c], edi
mov edx, 0xffff
sub edx, edi
mov dword [ebp - 0x74], edx
mov ebx, 0xffff
sub ebx, ecx
imul edx, ebx
mov dword [ebp + 0x28], ebx
imul edi, dword [ebp + 0x28]
mov ebx, dword [ebp - 0x24]
shr ebx, 0x18
shr edi, 0x10
shr edx, 0x10
imul edx, ebx
mov ebx, dword [ebp + 0x1c]
shr ebx, 0x18
imul edi, ebx
movzx eax, byte [eax + 1]
mov ebx, dword [ebp + 0x30]
mov eax, dword [esi + eax*4]
shr edi, 0x10
mov dword [ebp + 0x28], edi
mov edi, ecx
imul ecx, dword [ebp - 0x4c]
imul edi, dword [ebp - 0x74]
shr ebx, 0x18
shr edi, 0x10
imul edi, ebx
shr ecx, 0x10
mov ebx, eax
shr ebx, 0x18
imul ecx, ebx
shr ecx, 0x10
shr edi, 0x10
mov dword [ebp - 8], edi
mov ebx, pe_nt_image_headers32
sub ebx, ecx
sub ebx, edi
sub ebx, dword [ebp + 0x28]
mov edi, dword [ebp - 0x24]
shr edx, 0x10
sub ebx, edx
mov dword [ebp - 4], ebx
mov ebx, eax
mov dword [ebp - 0xc], ecx
and ebx, 0xff
imul ebx, ecx
mov ecx, dword [ebp + 0x30]
and edi, 0xff
and ecx, 0xff
imul edi, edx
imul ecx, dword [ebp - 8]
add edi, ebx
add edi, ecx
mov ecx, dword [ebp + 0x1c]
mov dword [ebp - 0x40], edx
and ecx, 0xff
imul ecx, dword [ebp + 0x28]
add edi, ecx
mov ecx, dword [ebp - 0x5c]
shr edi, cl
mov ecx, dword [ebp - 0x58]
mov ebx, dword [ebp - 0x38]
shl edi, cl
mov ecx, dword [ebp - 0x1c]
and ecx, ebx
imul ecx, dword [ebp - 4]
shr ecx, 8
and ecx, ebx
mov ebx, dword [ebp - 0x24]
add edi, ecx
mov ecx, dword [ebp + 0x30]
and ecx, 0xff0000
imul ecx, dword [ebp - 8]
and ebx, 0xff0000
imul ebx, edx
mov edx, eax
and edx, 0xff0000
imul edx, dword [ebp - 0xc]
add ebx, edx
mov edx, dword [ebp + 0x1c]
add ebx, ecx
mov ecx, dword [ebp - 0x64]
and edx, 0xff0000
imul edx, dword [ebp + 0x28]
add ebx, edx
shr ebx, cl
mov ecx, dword [ebp - 0x68]
mov edx, dword [ebp - 0x34]
and eax, 0xff00
shl ebx, cl
imul eax, dword [ebp - 0xc]
mov ecx, dword [ebp - 0x1c]
and ecx, edx
imul ecx, dword [ebp - 4]
shr ecx, 8
and ecx, edx
add ebx, ecx
mov ecx, dword [ebp + 0x30]
and ecx, 0xff00
imul ecx, dword [ebp - 8]
add eax, ecx
mov ecx, dword [ebp + 0x1c]
and ecx, 0xff00
imul ecx, dword [ebp + 0x28]
add eax, ecx
mov ecx, dword [ebp - 0x24]
and ecx, 0xff00
imul ecx, dword [ebp - 0x40]
mov edx, dword [ebp - 0x28]
add eax, ecx
mov ecx, dword [ebp - 0x60]
shr eax, cl
mov ecx, dword [ebp - 0x50]
or edi, ebx
mov ebx, dword [ebp + 0x20]
shl eax, cl
mov ecx, dword [ebp - 0x1c]
and ecx, edx
imul ecx, dword [ebp - 4]
shr ecx, 8
and ecx, edx
mov edx, dword [ebp - 0x18]
add eax, ecx
mov ecx, dword [ebp + 0xc]
or edi, eax
mov eax, dword [ebp - 0x10]
mov dword [eax], edi
mov edi, dword [ebp - 0x2c]
add ecx, edi
mov dword [ebp + 0xc], ecx
mov ecx, dword [ebp + 0x18]
add eax, 4
add ecx, ebx
mov dword [ebp - 0x10], eax
mov dword [ebp + 0x18], ecx
dec edx
mov ebx, dword [ebp + 8]
mov dword [ebp - 0x18], edx
jne 0x4b6760
mov edx, dword [ebp - 0x30]
mov eax, dword [edx + 0x6c]
mov ecx, dword [ebp - 0x44]
cdq
and edx, 3
add eax, edx
sar eax, 2
lea edx, [ecx + eax*4]
mov ecx, dword [ebp - 0x14]
mov eax, dword [ebp - 0x3c]
inc ecx
mov dword [ebp - 0x14], ecx
inc eax
fild dword [ebp - 0x14]
mov dword [ebp - 0x3c], eax
mov dword [ebp - 0x44], edx
fcomp qword [ebp - 0xa4]
fnstsw ax
test ah, 5
jnp 0x4b6610
mov ecx, dword [ebp - 0x30]
fstp st(0)
mov eax, dword [ecx]
fstp st(0)
call dword [eax + 0xa0]
mov ecx, dword [ebp - 0x30]
call fcn.004964e0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x2c
cmp eax, 1
jl 0x4b69f5
mov eax, 0x10000
sub eax, ecx
cdq
idiv dword [ebp + 0x20]
cmp eax, dword [ebp + 0x1c]
jle 0x4b69d9
mov dword [ebp + 0x1c], eax
mov ecx, dword [ebp + 0x14]
mov eax, dword [ecx + 0xc]
mov ecx, dword [ebp + 0x18]
shl eax, 0x10
sub eax, ecx
sub eax, 0x17fff
cdq
idiv dword [ebp + 0x20]
jmp 0x4b6712
test ecx, ecx
jl 0x4b6a0f
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 0xc]
shl eax, 0x10
sub eax, 0x10000
cmp ecx, eax
jl 0x4b671d
mov edx, dword [ebp + 0x1c]
dec edx
mov dword [ebp + 0x30], edx
jmp 0x4b671d
mov ecx, dword [ebp + 0x1c]
mov eax, dword [ecx + 0xc]
mov dword [ebp - 0xc], eax
mov eax, dword [ecx]
inc eax
mov dword [ebp - 0x40], eax
mov eax, dword [ecx + 4]
inc eax
mov dword [ebp - 0x48], eax
mov eax, dword [ecx + 8]
inc eax
mov dword [ebp - 0x74], eax
fnstsw ax
mov dword [ebp - 0x1c], 0
test ah, 5
jp 0x4b6eac
mov edx, dword [ebp + 0x2c]
mov eax, dword [ebp + 0x18]
sub eax, edx
mov dword [ebp + 0x1c], eax
fild dword [ebp + 0x1c]
fsub dword [ebp + 0xc]
fld qword [ebp - 0x9c]
fmul st(1)
fstp qword [ebp - 0x7c]
fild dword [ebp + 0x2c]
fstp qword [ebp - 0x88]
fmul qword [ebp - 0x70]
fild dword [ebp + 0x30]
fld qword [ebp - 0xac]
fsub qword [0x546438]
call fcn.00527ae0
mov ecx, dword [ebp + 0x30]
mov dword [ebp + 0x2c], eax
mov eax, dword [ebp + 0x28]
sub eax, ecx
mov dword [ebp - 8], eax
fild dword [ebp - 8]
fsub dword [ebp + 0x10]
fld qword [ebp - 0x70]
fmul st(1)
fsubr qword [ebp - 0x7c]
fadd qword [ebp - 0x88]
fmul qword [0x55abc0]
call fcn.00527ae0
fmul qword [ebp - 0x9c]
mov dword [ebp + 0xc], eax
fadd st(2)
fadd st(1)
fmul qword [0x55abc0]
call fcn.00527ae0
cmp edi, 0xffffffff
mov ecx, dword [ebp + 0x2c]
mov dword [ebp + 0x1c], eax
mov dword [ebp + 0x30], 0
mov dword [ebp + 0x18], ecx
jge 0x4b6b12
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 8]
mov edx, dword [ebp + 0xc]
shl eax, 0x10
sub eax, edx
sub eax, 0x27fff
cdq
idiv edi
test eax, eax
jl 0x4b6afd
mov dword [ebp + 0x30], eax
mov edx, dword [ebp + 0xc]
mov eax, 0x7fff
sub eax, edx
cdq
idiv edi
cmp eax, ecx
jge 0x4b6b69
mov ecx, eax
jmp 0x4b6b66
cmp edi, 1
jl 0x4b6b49
mov edx, dword [ebp + 0xc]
mov eax, 0x10000
sub eax, edx
cdq
idiv edi
test eax, eax
jle 0x4b6b2b
mov dword [ebp + 0x30], eax
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 8]
mov edx, dword [ebp + 0xc]
shl eax, 0x10
sub eax, edx
sub eax, 0x17fff
cdq
idiv edi
cmp eax, ecx
jge 0x4b6b69
mov ecx, eax
jmp 0x4b6b66
mov eax, dword [ebp + 0xc]
test eax, eax
jl 0x4b6b63
mov edx, dword [ebp + 0x14]
mov edx, dword [edx + 8]
shl edx, 0x10
sub edx, 0x10000
cmp eax, edx
jl 0x4b6b69
or ecx, 0xffffffff
mov dword [ebp + 0x18], ecx
mov eax, dword [ebp + 0x20]
cmp eax, 0xffffffff
jg 0x4b6ba4
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 0xc]
mov ecx, dword [ebp + 0x1c]
shl eax, 0x10
sub eax, ecx
sub eax, 0x27fff
cdq
idiv dword [ebp + 0x20]
cmp eax, dword [ebp + 0x30]
jle 0x4b6b90
mov dword [ebp + 0x30], eax
mov eax, dword [ebp + 0x1c]
cdq
idiv dword [ebp + 0x20]
mov ecx, dword [ebp + 0x18]
neg eax
cmp eax, ecx
jge 0x4b6bff
mov ecx, eax
jmp 0x4b6bff
cmp eax, 1
jl 0x4b6be1
mov edx, dword [ebp + 0x1c]
mov eax, 0x10000
sub eax, edx
cdq
idiv dword [ebp + 0x20]
cmp eax, dword [ebp + 0x30]
jle 0x4b6bbf
mov dword [ebp + 0x30], eax
mov ecx, dword [ebp + 0x14]
mov eax, dword [ecx + 0xc]
mov edx, dword [ebp + 0x1c]
shl eax, 0x10
sub eax, edx
sub eax, 0x17fff
cdq
idiv dword [ebp + 0x20]
mov ecx, dword [ebp + 0x18]
cmp eax, ecx
jge 0x4b6bff
mov ecx, eax
jmp 0x4b6bff
mov eax, dword [ebp + 0x1c]
test eax, eax
jl 0x4b6bfb
mov edx, dword [ebp + 0x14]
mov edx, dword [edx + 0xc]
shl edx, 0x10
sub edx, 0x10000
cmp eax, edx
jl 0x4b6bff
mov ecx, dword [ebp + 0x30]
dec ecx
mov edx, dword [ebp + 0xc]
mov eax, edi
imul eax, dword [ebp + 0x30]
add edx, eax
mov eax, dword [ebp + 0x1c]
mov dword [ebp + 0xc], edx
mov edx, dword [ebp + 0x20]
imul edx, dword [ebp + 0x30]
add eax, edx
mov edx, dword [ebp + 0x30]
mov dword [ebp + 0x1c], eax
mov eax, dword [ebp - 0x44]
lea edx, [eax + edx*4]
mov eax, dword [ebx + 4]
mov dword [ebp - 0x8c], eax
mov eax, dword [ebp + 0x30]
cmp eax, ecx
mov dword [ebp - 0x14], edx
jg 0x4b6e6e
sub ecx, eax
inc ecx
mov dword [ebp - 0x10], ecx
mov ecx, dword [ebp + 0x1c]
mov edx, dword [edx]
mov eax, dword [ebp + 0xc]
mov edi, dword [ebp - 0x54]
mov dword [ebp - 0x4c], edx
mov edx, ecx
sar edx, 0x10
imul edx, dword [ebp - 0x8c]
add edi, edx
mov edx, dword [ebp + 0xc]
sar eax, 0x10
add eax, edi
movzx edi, byte [eax]
mov edi, dword [esi + edi*4]
mov dword [ebp - 0x24], 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 - 0x24]
and edx, 0xfffe
and ecx, 0xfffe
inc edx
inc ecx
mov dword [ebp + 0x30], edi
mov dword [ebp - 0x18], edx
mov edi, 0x10000
sub edi, edx
mov edx, edi
imul edi, ecx
mov esi, 0x10000
sub esi, ecx
imul ecx, dword [ebp - 0x18]
imul edx, esi
imul esi, dword [ebp - 0x18]
shr ebx, 0x18
shr esi, 0x10
shr edx, 0x10
imul edx, ebx
mov ebx, dword [ebp + 0x18]
imul edx, dword [ebp - 0xc]
shr ebx, 0x18
imul esi, ebx
mov ebx, dword [ebp - 0xc]
imul esi, ebx
shr esi, 0x18
mov dword [ebp + 0x28], esi
mov esi, dword [ebp + 0x30]
shr esi, 0x18
shr edi, 0x10
imul edi, esi
shr ecx, 0x10
imul edi, ebx
mov esi, eax
shr esi, 0x18
imul ecx, esi
mov esi, dword [ebp + 0x28]
imul ecx, ebx
shr ecx, 0x18
shr edi, 0x18
mov ebx, pe_nt_image_headers32
sub ebx, ecx
sub ebx, edi
sub ebx, esi
mov esi, eax
mov dword [ebp - 0x18], ecx
and esi, 0xff
imul esi, ecx
mov ecx, dword [ebp + 0x30]
and ecx, 0xff
imul ecx, edi
shr edx, 0x18
sub ebx, edx
add esi, ecx
mov ecx, dword [ebp + 0x18]
mov dword [ebp - 0x20], edi
mov dword [ebp - 4], ebx
and ecx, 0xff
imul ecx, dword [ebp + 0x28]
add esi, ecx
mov ecx, dword [ebp - 0x24]
and ecx, 0xff
imul ecx, edx
add esi, ecx
mov ecx, dword [ebp - 0x5c]
shr esi, 8
imul esi, dword [ebp - 0x74]
shr esi, cl
mov ecx, dword [ebp - 0x58]
shl esi, cl
mov ecx, dword [ebp - 0x38]
mov edi, ecx
and edi, dword [ebp - 0x4c]
imul edi, ebx
shr edi, 8
and edi, ecx
mov ecx, dword [ebp + 0x30]
and ecx, 0xff0000
imul ecx, dword [ebp - 0x20]
add esi, edi
mov edi, eax
and edi, 0xff0000
imul edi, dword [ebp - 0x18]
add edi, ecx
mov ecx, dword [ebp + 0x18]
and ecx, 0xff0000
imul ecx, dword [ebp + 0x28]
add edi, ecx
mov ecx, dword [ebp - 0x24]
and ecx, 0xff0000
imul ecx, edx
add edi, ecx
mov ecx, dword [ebp - 0x64]
mov ebx, dword [ebp - 0x14]
shr edi, 8
imul edi, dword [ebp - 0x40]
shr edi, cl
mov ecx, dword [ebp - 0x68]
and eax, 0xff00
imul eax, dword [ebp - 0x18]
shl edi, cl
mov ecx, dword [ebp - 0x34]
and ecx, dword [ebx]
mov ebx, dword [ebp - 0x34]
imul ecx, dword [ebp - 4]
shr ecx, 8
and ecx, ebx
add edi, ecx
mov ecx, dword [ebp + 0x30]
and ecx, 0xff00
imul ecx, dword [ebp - 0x20]
add eax, ecx
mov ecx, dword [ebp + 0x18]
and ecx, 0xff00
imul ecx, dword [ebp + 0x28]
add eax, ecx
mov ecx, dword [ebp - 0x24]
and ecx, 0xff00
imul ecx, edx
mov edx, dword [ebp - 0x14]
mov ebx, dword [edx]
add eax, ecx
mov ecx, dword [ebp - 0x60]
shr eax, 8
imul eax, dword [ebp - 0x48]
shr eax, cl
mov ecx, dword [ebp - 0x50]
or esi, edi
shl eax, cl
mov ecx, dword [ebp - 0x28]
mov edi, ecx
and edi, ebx
imul edi, dword [ebp - 4]
shr edi, 8
and edi, ecx
add eax, edi
or esi, eax
mov dword [edx], esi
mov ebx, dword [ebp + 0xc]
mov ecx, dword [ebp + 0x1c]
mov esi, dword [ebp + 0x20]
mov edi, dword [ebp - 0x2c]
mov eax, dword [ebp - 0x10]
add ebx, edi
add ecx, esi
mov esi, dword [ebp - 0x3c]
add edx, 4
dec eax
mov dword [ebp + 0xc], ebx
mov ebx, dword [ebp + 8]
mov dword [ebp - 0x14], edx
mov dword [ebp + 0x1c], ecx
mov dword [ebp - 0x10], eax
jne 0x4b6c45
mov edx, dword [ebp - 0x30]
mov eax, dword [edx + 0x6c]
mov ecx, dword [ebp - 0x44]
cdq
and edx, 3
add eax, edx
sar eax, 2
lea edx, [ecx + eax*4]
mov ecx, dword [ebp - 0x1c]
mov eax, dword [ebp - 8]
inc ecx
mov dword [ebp - 0x1c], ecx
inc eax
fild dword [ebp - 0x1c]
mov dword [ebp - 8], eax
mov dword [ebp - 0x44], edx
fcomp qword [ebp - 0xa4]
fnstsw ax
test ah, 5
jnp 0x4b6a94
fstp st(0)
fstp st(0)
mov ecx, dword [ebp - 0x30]
mov eax, dword [ecx]
call dword [eax + 0xa0]
mov ecx, dword [ebp - 0x30]
call fcn.004964e0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x2c
call fcn.004e4ad0
test esi, esi
jne 0x4b794a
mov esi, eax
mov eax, dword [ebp + 0x14]
imul esi, dword [eax + 4]
add esi, dword [eax]
mov edx, dword [edi]
mov ecx, edi
call dword [edx + 0x64]
lea eax, [eax + esi*4]
fld qword [ebp + 0x24]
mov dword [ebp - 0x24], eax
fcos
fstp qword [ebp - 0x70]
fld qword [ebp + 0x24]
fsin
fstp qword [ebp - 0x9c]
fld qword [ebp - 0x70]
fmul qword [0x55abc0]
call fcn.00527ae0
fld qword [ebp - 0x9c]
fmul qword [0x55abc0]
mov dword [ebp + 0x20], eax
call fcn.00527ae0
mov esi, dword [ebp - 0x30]
mov edx, dword [esi]
mov edi, eax
mov ecx, esi
mov dword [ebp - 0x34], edi
call dword [edx + 0x9c]
test al, al
je 0x4b846e
mov eax, dword [esi + 0x48]
mov ecx, dword [eax + 0x7c]
mov edx, dword [eax + 0x80]
mov dword [ebp - 0x58], ecx
mov ecx, dword [eax + 0x84]
mov dword [ebp - 0x3c], edx
mov edx, dword [eax + 0x20]
mov dword [ebp - 0x60], ecx
mov ecx, dword [eax + 0x24]
mov dword [ebp - 0x2c], edx
mov edx, dword [eax + 0x28]
mov dword [ebp - 0x38], ecx
mov dword [ebp - 0x28], edx
mov edx, dword [eax + 0x14]
mov ecx, 0x20
sub ecx, edx
mov edx, dword [eax + 0x18]
mov dword [ebp - 0x54], ecx
mov ecx, 0x18
sub ecx, edx
mov edx, dword [eax + 0x1c]
mov eax, dword [esi + 0xb4]
mov dword [ebp - 0x50], ecx
mov ecx, 0x10
sub ecx, edx
mov edx, dword [esi + 0xbc]
mov dword [ebp - 0x5c], eax
mov eax, dword [esi + 0xb0]
cmp eax, 0x10
mov dword [ebp - 0x64], ecx
mov ecx, dword [esi + 0xb8]
mov dword [ebp - 0x44], ecx
mov dword [ebp - 0x68], edx
jne 0x4b7483
fld qword [ebp - 0xb4]
call fcn.00527ae0
fld qword [ebp - 0xbc]
mov dword [ebp + 0x28], eax
call fcn.00527ae0
fld qword [0x546448]
mov ecx, eax
fcomp qword [ebp - 0xa4]
mov eax, dword [esi + 0x6c]
imul eax, dword [ebp + 0x28]
cdq
sub eax, edx
sar eax, 1
add eax, ecx
mov dword [ebp + 0x18], ecx
mov ecx, dword [esi + 0x80]
mov esi, dword [ebp + 0x1c]
lea edx, [ecx + eax*2]
mov eax, dword [esi + 0xc]
mov ecx, dword [esi]
imul ecx, eax
mov dword [ebp + 0x1c], eax
mov dword [ebp - 0x14], edx
mov eax, 0x80808081
imul ecx
add edx, ecx
mov ecx, dword [esi + 4]
imul ecx, dword [ebp + 0x1c]
sar edx, 7
mov eax, edx
shr eax, 0x1f
add edx, eax
mov dword [ebp - 0x4c], edx
mov eax, 0x80808081
imul ecx
add edx, ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add edx, ecx
mov ecx, dword [esi + 8]
imul ecx, dword [ebp + 0x1c]
mov dword [ebp - 0x94], edx
mov eax, 0x80808081
imul ecx
add edx, ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add edx, eax
mov dword [ebp - 0x40], edx
fnstsw ax
test ah, 5
mov dword [ebp - 8], 0
jp 0x4b841f
mov edx, dword [ebp + 0x2c]
mov eax, dword [ebp + 0x18]
sub eax, edx
mov dword [ebp + 0x1c], eax
fild dword [ebp + 0x1c]
fsub dword [ebp + 0xc]
fld qword [ebp - 0x70]
fmul st(1)
fstp qword [ebp - 0x7c]
fild dword [ebp + 0x2c]
fstp qword [ebp - 0x88]
fmul qword [ebp - 0x9c]
fild dword [ebp + 0x30]
fld qword [ebp - 0xac]
fsub qword [0x546438]
call fcn.00527ae0
mov ecx, dword [ebp + 0x30]
mov dword [ebp + 0x2c], eax
mov eax, dword [ebp + 0x28]
sub eax, ecx
mov dword [ebp + 0x28], eax
jmp 0x4b70c0
fild dword [ebp + 0x28]
fsub dword [ebp + 0x10]
fld qword [ebp - 0x9c]
fmul st(1)
fsubr qword [ebp - 0x7c]
fadd qword [ebp - 0x88]
fmul qword [0x55abc0]
call fcn.00527ae0
fmul qword [ebp - 0x70]
mov esi, eax
fadd st(2)
fadd st(1)
fmul qword [0x55abc0]
call fcn.00527ae0
mov edx, dword [ebp + 0x2c]
mov ecx, eax
cmp dword [ebp + 0x20], 0xffffffff
mov dword [ebp + 0xc], 0
mov dword [ebp + 0x30], edx
jge 0x4b7131
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 8]
mov edi, dword [ebp + 0x20]
shl eax, 0x10
sub eax, esi
sub eax, 0x27fff
cdq
idiv edi
test eax, eax
jl 0x4b7128
mov dword [ebp + 0xc], eax
mov eax, 0x7fff
sub eax, esi
jmp 0x4b715b
cmp dword [ebp + 0x20], 1
jl 0x4b7199
mov edi, dword [ebp + 0x20]
mov eax, 0x10000
sub eax, esi
cdq
idiv edi
test eax, eax
jle 0x4b714b
mov dword [ebp + 0xc], eax
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 8]
shl eax, 0x10
sub eax, esi
sub eax, 0x17fff
cdq
idiv edi
cmp eax, dword [ebp + 0x30]
jge 0x4b7166
mov dword [ebp + 0x30], eax
mov edi, dword [ebp - 0x34]
cmp edi, 0xffffffff
jg 0x4b71b9
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 0xc]
shl eax, 0x10
sub eax, ecx
sub eax, 0x27fff
cdq
idiv edi
cmp eax, dword [ebp + 0xc]
jle 0x4b7189
mov dword [ebp + 0xc], eax
mov eax, ecx
cdq
idiv edi
mov edx, dword [ebp + 0x30]
neg eax
cmp eax, edx
jge 0x4b7208
jmp 0x4b7205
test esi, esi
jl 0x4b71b0
mov eax, dword [ebp + 0x14]
mov edx, dword [eax + 8]
shl edx, 0x10
sub edx, 0x10000
cmp esi, edx
jl 0x4b7169
mov dword [ebp + 0x30], 0xffffffff
jmp 0x4b7169
cmp edi, 1
jl 0x4b71ea
mov eax, 0x10000
sub eax, ecx
cdq
idiv edi
cmp eax, dword [ebp + 0xc]
jle 0x4b71d0
mov dword [ebp + 0xc], eax
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 0xc]
shl eax, 0x10
sub eax, ecx
sub eax, 0x17fff
cdq
idiv edi
cmp eax, dword [ebp + 0x30]
jge 0x4b7208
jmp 0x4b7205
test ecx, ecx
jl 0x4b7201
mov eax, dword [ebp + 0x14]
mov edx, dword [eax + 0xc]
shl edx, 0x10
sub edx, 0x10000
cmp ecx, edx
jl 0x4b7208
mov eax, dword [ebp + 0xc]
dec eax
mov dword [ebp + 0x30], eax
mov edx, dword [ebp + 0xc]
imul edx, dword [ebp + 0x20]
mov eax, dword [ebp + 0xc]
add esi, edx
mov edx, eax
imul edx, edi
add ecx, edx
mov edx, dword [ebp - 0x14]
lea eax, [edx + eax*2]
mov edx, dword [ebx + 4]
mov dword [ebp - 0x8c], edx
mov edx, dword [ebp + 0x30]
cmp dword [ebp + 0xc], edx
mov dword [ebp - 0x1c], esi
mov dword [ebp - 4], ecx
mov dword [ebp - 0x20], eax
jg 0x4b7448
sub edx, dword [ebp + 0xc]
inc edx
mov dword [ebp - 0x10], edx
mov ax, word [eax]
mov edx, ecx
sar edx, 0x10
imul edx, dword [ebp - 0x8c]
mov word [ebp - 0x74], ax
mov eax, esi
sar eax, 0x10
add edx, eax
mov eax, dword [ebp - 0x24]
lea eax, [eax + edx*4]
mov edx, esi
mov esi, dword [eax]
mov dword [ebp + 0xc], esi
mov esi, dword [eax + 4]
mov dword [ebp + 0x30], esi
mov esi, dword [ebx + 4]
mov ebx, dword [ebp + 0xc]
lea esi, [eax + esi*4]
mov eax, dword [esi]
mov esi, dword [esi + 4]
and edx, 0xfffe
inc edx
and ecx, 0xfffe
inc ecx
mov dword [ebp + 0x1c], esi
mov dword [ebp + 0x18], edx
mov edi, 0x10000
sub edi, edx
mov edx, edi
imul edi, ecx
shr ebx, 0x18
mov esi, 0x10000
sub esi, ecx
imul ecx, dword [ebp + 0x18]
imul edx, esi
imul esi, dword [ebp + 0x18]
shr edx, 0x10
imul edx, ebx
mov ebx, dword [ebp + 0x30]
shr ebx, 0x18
shr edi, 0x10
shr esi, 0x10
imul esi, ebx
mov ebx, eax
shr ebx, 0x18
imul edi, ebx
mov ebx, dword [ebp + 0x1c]
shr ebx, 0x18
shr ecx, 0x10
imul ecx, ebx
movzx ebx, word [ebp - 0x74]
shr edi, 0x10
mov dword [ebp + 0x18], ebx
mov dword [ebp - 0xc], edi
mov ebx, eax
and ebx, 0xff0000
imul ebx, edi
mov edi, dword [ebp + 0x30]
and edi, 0xff0000
shr esi, 0x10
imul edi, esi
add ebx, edi
mov edi, dword [ebp + 0xc]
and edi, 0xff0000
shr edx, 0x10
imul edi, edx
add ebx, edi
mov edi, dword [ebp + 0x1c]
shr ecx, 0x10
and edi, 0xff0000
imul edi, ecx
add ebx, edi
mov edi, dword [ebp - 0x5c]
mov dword [ebp - 0x18], ecx
mov ecx, dword [ebp - 0x54]
shr ebx, cl
mov ecx, dword [ebp + 0x18]
mov dword [ebp - 0x48], esi
imul ebx, dword [ebp - 0x4c]
shr ebx, 8
and edi, ecx
mov ecx, dword [ebp - 0x2c]
shr edi, cl
mov ecx, dword [ebp - 0x58]
add ebx, edi
xor edi, edi
mov di, word [ecx + ebx*4]
mov ecx, dword [ebp - 0x2c]
shl di, cl
mov ecx, dword [ebp + 0x30]
and ecx, 0xff
imul ecx, esi
mov ebx, eax
and ebx, 0xff
imul ebx, dword [ebp - 0xc]
add ebx, ecx
mov ecx, dword [ebp + 0xc]
and ecx, 0xff
imul ecx, edx
add ebx, ecx
mov ecx, dword [ebp + 0x1c]
and ecx, 0xff
imul ecx, dword [ebp - 0x18]
add ebx, ecx
imul ebx, dword [ebp - 0x40]
mov ecx, dword [ebp - 0x64]
mov esi, dword [ebp - 0x68]
add ecx, 8
shr ebx, cl
and esi, dword [ebp + 0x18]
mov ecx, dword [ebp - 0x28]
shr esi, cl
mov ecx, dword [ebp - 0x60]
and eax, 0xff00
imul eax, dword [ebp - 0xc]
add ebx, esi
xor esi, esi
mov si, word [ecx + ebx*4]
mov ecx, dword [ebp - 0x28]
shl si, cl
mov ecx, dword [ebp + 0x30]
and ecx, 0xff00
imul ecx, dword [ebp - 0x48]
add eax, ecx
mov ecx, dword [ebp + 0xc]
and ecx, 0xff00
imul ecx, edx
add eax, ecx
mov ecx, dword [ebp + 0x1c]
and ecx, 0xff00
imul ecx, dword [ebp - 0x18]
mov edx, dword [ebp - 0x44]
add eax, ecx
imul eax, dword [ebp - 0x94]
mov ecx, dword [ebp - 0x50]
add ecx, 8
shr eax, cl
and edx, dword [ebp + 0x18]
mov ecx, dword [ebp - 0x38]
shr edx, cl
or edi, esi
mov esi, dword [ebp - 0x1c]
add eax, edx
mov edx, dword [ebp - 0x3c]
movzx eax, word [edx + eax*4]
mov edx, dword [ebp - 0x10]
shl ax, cl
add esi, dword [ebp + 0x20]
mov ecx, dword [ebp - 4]
mov dword [ebp - 0x1c], esi
or edi, eax
mov eax, dword [ebp - 0x20]
mov word [eax], di
mov edi, dword [ebp - 0x34]
add eax, 2
add ecx, edi
mov dword [ebp - 0x20], eax
mov dword [ebp - 4], ecx
dec edx
mov ebx, dword [ebp + 8]
mov dword [ebp - 0x10], edx
jne 0x4b7246
mov ecx, dword [ebp - 0x30]
mov eax, dword [ecx + 0x6c]
mov ecx, dword [ebp - 8]
cdq
sub eax, edx
mov edx, dword [ebp - 0x14]
sar eax, 1
inc ecx
lea eax, [edx + eax*2]
mov dword [ebp - 8], ecx
mov dword [ebp - 0x14], eax
fild dword [ebp - 8]
mov eax, dword [ebp + 0x28]
inc eax
mov dword [ebp + 0x28], eax
fcomp qword [ebp - 0xa4]
fnstsw ax
test ah, 5
jnp 0x4b70c0
jmp 0x4b841b
cmp eax, 0x20
jne 0x4b841f
fld qword [ebp - 0xb4]
call fcn.00527ae0
fld qword [ebp - 0xbc]
mov esi, eax
mov dword [ebp + 0x28], esi
call fcn.00527ae0
fld qword [0x546448]
mov ecx, dword [ebp - 0x30]
fcomp qword [ebp - 0xa4]
mov dword [ebp + 0x18], eax
mov eax, dword [ecx + 0x6c]
mov ecx, dword [ecx + 0x80]
imul eax, esi
mov esi, dword [ebp + 0x1c]
cdq
and edx, 3
add eax, edx
mov edx, dword [ebp + 0x18]
sar eax, 2
add eax, edx
lea edx, [ecx + eax*4]
mov eax, dword [esi + 0xc]
mov ecx, dword [esi]
imul ecx, eax
mov dword [ebp + 0x1c], eax
mov dword [ebp - 0x14], edx
mov eax, 0x80808081
imul ecx
add edx, ecx
mov ecx, dword [esi + 4]
imul ecx, dword [ebp + 0x1c]
sar edx, 7
mov eax, edx
shr eax, 0x1f
add edx, eax
mov dword [ebp - 0x74], edx
mov eax, 0x80808081
imul ecx
add edx, ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add edx, ecx
mov ecx, dword [esi + 8]
imul ecx, dword [ebp + 0x1c]
mov dword [ebp - 0x48], edx
mov eax, 0x80808081
imul ecx
add edx, ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add edx, eax
mov dword [ebp - 0x4c], edx
fnstsw ax
test ah, 5
mov dword [ebp - 8], 0
jp 0x4b841f
mov edx, dword [ebp + 0x2c]
mov eax, dword [ebp + 0x18]
sub eax, edx
mov dword [ebp + 0x1c], eax
fild dword [ebp + 0x1c]
fsub dword [ebp + 0xc]
fld qword [ebp - 0x70]
fmul st(1)
fstp qword [ebp - 0x7c]
fild dword [ebp + 0x2c]
fstp qword [ebp - 0x88]
fmul qword [ebp - 0x9c]
fild dword [ebp + 0x30]
fld qword [ebp - 0xac]
fsub qword [0x546438]
call fcn.00527ae0
mov ecx, dword [ebp + 0x30]
mov dword [ebp + 0x2c], eax
mov eax, dword [ebp + 0x28]
sub eax, ecx
mov dword [ebp + 0x28], eax
fild dword [ebp + 0x28]
fsub dword [ebp + 0x10]
fld qword [ebp - 0x9c]
fmul st(1)
fsubr qword [ebp - 0x7c]
fadd qword [ebp - 0x88]
fmul qword [0x55abc0]
call fcn.00527ae0
fmul qword [ebp - 0x70]
mov esi, eax
fadd st(1)
fadd st(2)
fmul qword [0x55abc0]
call fcn.00527ae0
mov edx, dword [ebp + 0x2c]
mov ecx, eax
cmp dword [ebp + 0x20], 0xffffffff
mov dword [ebp + 0xc], 0
mov dword [ebp + 0x30], edx
jge 0x4b7604
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 8]
mov edi, dword [ebp + 0x20]
shl eax, 0x10
sub eax, esi
sub eax, 0x27fff
cdq
idiv edi
test eax, eax
jl 0x4b75fb
mov dword [ebp + 0xc], eax
mov eax, 0x7fff
sub eax, esi
jmp 0x4b762e
cmp dword [ebp + 0x20], 1
jl 0x4b766c
mov edi, dword [ebp + 0x20]
mov eax, 0x10000
sub eax, esi
cdq
idiv edi
test eax, eax
jle 0x4b761e
mov dword [ebp + 0xc], eax
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 8]
shl eax, 0x10
sub eax, esi
sub eax, 0x17fff
cdq
idiv edi
cmp eax, dword [ebp + 0x30]
jge 0x4b7639
mov dword [ebp + 0x30], eax
mov edi, dword [ebp - 0x34]
cmp edi, 0xffffffff
jg 0x4b768c
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 0xc]
shl eax, 0x10
sub eax, ecx
sub eax, 0x27fff
cdq
idiv edi
cmp eax, dword [ebp + 0xc]
jle 0x4b765c
mov dword [ebp + 0xc], eax
mov eax, ecx
cdq
idiv edi
mov edx, dword [ebp + 0x30]
neg eax
cmp eax, edx
jge 0x4b76db
jmp 0x4b76d8
test esi, esi
jl 0x4b7683
mov eax, dword [ebp + 0x14]
mov edx, dword [eax + 8]
shl edx, 0x10
sub edx, 0x10000
cmp esi, edx
jl 0x4b763c
mov dword [ebp + 0x30], 0xffffffff
jmp 0x4b763c
cmp edi, 1
jl 0x4b76bd
mov eax, 0x10000
sub eax, ecx
cdq
idiv edi
cmp eax, dword [ebp + 0xc]
jle 0x4b76a3
mov dword [ebp + 0xc], eax
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 0xc]
shl eax, 0x10
sub eax, ecx
sub eax, 0x17fff
cdq
idiv edi
cmp eax, dword [ebp + 0x30]
jge 0x4b76db
jmp 0x4b76d8
test ecx, ecx
jl 0x4b76d4
mov eax, dword [ebp + 0x14]
mov edx, dword [eax + 0xc]
shl edx, 0x10
sub edx, 0x10000
cmp ecx, edx
jl 0x4b76db
mov eax, dword [ebp + 0xc]
dec eax
mov dword [ebp + 0x30], eax
mov edx, dword [ebp + 0xc]
imul edx, dword [ebp + 0x20]
mov eax, dword [ebp + 0xc]
add esi, edx
mov edx, eax
imul edx, edi
add ecx, edx
mov edx, dword [ebp - 0x14]
lea eax, [edx + eax*4]
mov edx, dword [ebx + 4]
mov dword [ebp - 0x8c], edx
mov edx, dword [ebp + 0x30]
cmp dword [ebp + 0xc], edx
mov dword [ebp - 0x1c], esi
mov dword [ebp - 4], ecx
mov dword [ebp - 0x20], eax
jg 0x4b790b
sub edx, dword [ebp + 0xc]
inc edx
mov dword [ebp - 0x10], edx
lea esp, [esp]
mov eax, dword [eax]
mov edx, ecx
sar edx, 0x10
imul edx, dword [ebp - 0x8c]
mov dword [ebp + 0x18], eax
mov eax, esi
sar eax, 0x10
add edx, eax
mov eax, dword [ebp - 0x24]
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 + 0x30], esi
and edx, 0xffff
mov dword [ebp - 0xc], edx
mov ebx, 0x10000
sub ebx, edx
mov edx, ebx
mov esi, 0x10000
sub esi, ecx
imul edx, esi
mov dword [ebp + 0x1c], edi
shr edi, 0x18
shr edx, 0x10
imul edx, edi
mov edi, dword [ebp - 0xc]
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 - 0xc]
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
mov dword [ebp - 0xc], ecx
mov ebx, eax
and ebx, 0xff0000
imul ebx, ecx
mov ecx, dword [ebp + 0x30]
and ecx, 0xff0000
shr esi, 0x10
imul ecx, esi
add ebx, ecx
mov ecx, dword [ebp + 0xc]
and ecx, 0xff0000
shr edi, 0x10
imul ecx, edi
add ebx, ecx
mov ecx, dword [ebp + 0x1c]
and ecx, 0xff0000
shr edx, 0x10
imul ecx, edx
add ebx, ecx
mov ecx, dword [ebp - 0x54]
shr ebx, cl
mov ecx, dword [ebp - 0x5c]
mov dword [ebp - 0x18], edi
mov edi, dword [ebp + 0x18]
imul ebx, dword [ebp - 0x74]
and edi, ecx
mov ecx, dword [ebp - 0x2c]
shr edi, cl
shr ebx, 8
mov dword [ebp - 0x40], esi
add ebx, edi
mov ecx, dword [ebp - 0x58]
mov edi, dword [ecx + ebx*4]
mov ecx, dword [ebp - 0x2c]
shl edi, cl
mov ecx, dword [ebp + 0x30]
and ecx, 0xff
imul ecx, esi
mov ebx, eax
and ebx, 0xff
imul ebx, dword [ebp - 0xc]
add ebx, ecx
mov ecx, dword [ebp + 0xc]
and ecx, 0xff
imul ecx, dword [ebp - 0x18]
add ebx, ecx
mov ecx, dword [ebp + 0x1c]
and ecx, 0xff
imul ecx, edx
add ebx, ecx
imul ebx, dword [ebp - 0x4c]
mov ecx, dword [ebp - 0x64]
mov esi, dword [ebp + 0x18]
add ecx, 8
shr ebx, cl
and esi, dword [ebp - 0x68]
mov ecx, dword [ebp - 0x28]
shr esi, cl
mov ecx, dword [ebp - 0x60]
and eax, 0xff00
imul eax, dword [ebp - 0xc]
add ebx, esi
mov esi, dword [ecx + ebx*4]
mov ecx, dword [ebp - 0x28]
shl esi, cl
mov ecx, dword [ebp + 0x30]
and ecx, 0xff00
imul ecx, dword [ebp - 0x40]
add eax, ecx
mov ecx, dword [ebp + 0xc]
and ecx, 0xff00
imul ecx, dword [ebp - 0x18]
add eax, ecx
mov ecx, dword [ebp + 0x1c]
and ecx, 0xff00
imul ecx, edx
mov edx, dword [ebp + 0x18]
add eax, ecx
imul eax, dword [ebp - 0x48]
mov ecx, dword [ebp - 0x50]
add ecx, 8
shr eax, cl
and edx, dword [ebp - 0x44]
mov ecx, dword [ebp - 0x38]
mov ebx, dword [ebp + 8]
shr edx, cl
or edi, esi
mov esi, dword [ebp - 0x1c]
add eax, edx
mov edx, dword [ebp - 0x3c]
mov eax, dword [edx + eax*4]
mov edx, dword [ebp - 0x10]
shl eax, cl
add esi, dword [ebp + 0x20]
mov ecx, dword [ebp - 4]
or edi, eax
mov eax, dword [ebp - 0x20]
mov dword [eax], edi
mov edi, dword [ebp - 0x34]
add eax, 4
add ecx, edi
dec edx
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x1c], esi
mov dword [ebp - 4], ecx
mov dword [ebp - 0x10], edx
jne 0x4b7720
mov ecx, dword [ebp - 0x30]
mov eax, dword [ecx + 0x6c]
mov ecx, dword [ebp - 8]
cdq
and edx, 3
add eax, edx
mov edx, dword [ebp - 0x14]
sar eax, 2
inc ecx
lea eax, [edx + eax*4]
mov dword [ebp - 8], ecx
mov dword [ebp - 0x14], eax
fild dword [ebp - 8]
mov eax, dword [ebp + 0x28]
inc eax
mov dword [ebp + 0x28], eax
fcomp qword [ebp - 0xa4]
fnstsw ax
test ah, 5
jnp 0x4b7593
jmp 0x4b841b
fld qword [ebp + 0x24]
mov ecx, dword [ebp + 0x14]
fcos
imul eax, dword [ecx + 4]
add eax, dword [edi + 0x2c]
add eax, dword [ecx]
mov dword [ebp - 0x54], eax
fstp qword [ebp - 0x7c]
fld qword [ebp + 0x24]
fsin
fstp qword [ebp - 0x9c]
fld qword [ebp - 0x7c]
fmul qword [0x55abc0]
call fcn.00527ae0
fld qword [ebp - 0x9c]
fmul qword [0x55abc0]
mov dword [ebp + 0x20], eax
call fcn.00527ae0
mov edi, dword [ebp - 0x30]
mov dword [ebp - 0x24], eax
mov eax, dword [edi]
mov ecx, edi
call dword [eax + 0x9c]
test al, al
je 0x4b846e
mov eax, dword [edi + 0x48]
mov ecx, dword [eax + 0x7c]
mov edx, dword [eax + 0x80]
mov dword [ebp - 0x64], ecx
mov ecx, dword [eax + 0x84]
mov dword [ebp - 0x80], edx
mov edx, dword [eax + 0x20]
mov dword [ebp - 0x50], ecx
mov ecx, dword [eax + 0x24]
mov dword [ebp - 0x2c], edx
mov edx, dword [eax + 0x28]
mov dword [ebp - 0x34], ecx
mov dword [ebp - 0x28], edx
mov edx, dword [eax + 0x14]
mov ecx, 0x20
sub ecx, edx
mov edx, dword [eax + 0x18]
mov dword [ebp - 0x5c], ecx
mov ecx, 0x18
sub ecx, edx
mov edx, dword [eax + 0x1c]
mov eax, dword [edi + 0xb4]
mov dword [ebp - 0x44], ecx
mov ecx, 0x10
sub ecx, edx
mov edx, dword [edi + 0xbc]
mov dword [ebp - 0x58], eax
mov eax, dword [edi + 0xb0]
cmp eax, 0x10
mov dword [ebp - 0x68], ecx
mov ecx, dword [edi + 0xb8]
mov dword [ebp - 0x38], ecx
mov dword [ebp - 0x60], edx
jne 0x4b7f27
fld qword [ebp - 0xb4]
call fcn.00527ae0
fld qword [ebp - 0xbc]
mov dword [ebp + 0x28], eax
call fcn.00527ae0
fld qword [0x546448]
mov ecx, eax
fcomp qword [ebp - 0xa4]
mov eax, dword [edi + 0x6c]
imul eax, dword [ebp + 0x28]
cdq
sub eax, edx
sar eax, 1
add eax, ecx
mov dword [ebp + 0x18], ecx
mov ecx, dword [edi + 0x80]
mov edi, dword [ebp + 0x1c]
lea edx, [ecx + eax*2]
mov eax, dword [edi + 0xc]
mov ecx, dword [edi]
imul ecx, eax
mov dword [ebp + 0x1c], eax
mov dword [ebp - 0x14], edx
mov eax, 0x80808081
imul ecx
add edx, ecx
mov ecx, dword [edi + 4]
imul ecx, dword [ebp + 0x1c]
sar edx, 7
mov eax, edx
shr eax, 0x1f
add edx, eax
mov dword [ebp - 0x40], edx
mov eax, 0x80808081
imul ecx
add edx, ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add edx, ecx
mov ecx, dword [edi + 8]
imul ecx, dword [ebp + 0x1c]
mov dword [ebp - 0x6c], edx
mov eax, 0x80808081
imul ecx
add edx, ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add edx, eax
mov dword [ebp - 0x48], edx
fnstsw ax
test ah, 5
mov dword [ebp - 0x1c], 0
jp 0x4b841f
mov edx, dword [ebp + 0x2c]
mov eax, dword [ebp + 0x18]
sub eax, edx
mov dword [ebp + 0x1c], eax
fild dword [ebp + 0x1c]
fsub dword [ebp + 0xc]
fld qword [ebp - 0x7c]
fmul st(1)
fstp qword [ebp - 0xc4]
fild dword [ebp + 0x2c]
fstp qword [ebp - 0x88]
fmul qword [ebp - 0x9c]
fild dword [ebp + 0x30]
fld qword [ebp - 0xac]
fsub qword [0x546438]
call fcn.00527ae0
mov ecx, dword [ebp + 0x30]
mov dword [ebp + 0x2c], eax
mov eax, dword [ebp + 0x28]
sub eax, ecx
mov dword [ebp - 8], eax
jmp 0x4b7b30
fild dword [ebp - 8]
fsub dword [ebp + 0x10]
fld qword [ebp - 0x9c]
fmul st(1)
fsubr qword [ebp - 0xc4]
fadd qword [ebp - 0x88]
fmul qword [0x55abc0]
call fcn.00527ae0
fmul qword [ebp - 0x7c]
mov edi, eax
fadd st(1)
fadd st(2)
fmul qword [0x55abc0]
call fcn.00527ae0
mov edx, dword [ebp + 0x2c]
mov dword [ebp + 0x30], eax
cmp dword [ebp + 0x20], 0xffffffff
mov dword [ebp + 0xc], 0
mov dword [ebp + 0x1c], edx
jge 0x4b7ba5
mov ecx, dword [ebp + 0x14]
mov eax, dword [ecx + 8]
mov ecx, dword [ebp + 0x20]
shl eax, 0x10
sub eax, edi
sub eax, 0x27fff
cdq
idiv ecx
test eax, eax
jl 0x4b7b9c
mov dword [ebp + 0xc], eax
mov eax, 0x7fff
sub eax, edi
jmp 0x4b7bce
mov ecx, dword [ebp + 0x20]
cmp ecx, 1
jl 0x4b7bdc
mov eax, 0x10000
sub eax, edi
cdq
idiv ecx
test eax, eax
jle 0x4b7bbe
mov dword [ebp + 0xc], eax
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 8]
shl eax, 0x10
sub eax, edi
sub eax, 0x17fff
cdq
idiv ecx
mov edx, dword [ebp + 0x1c]
cmp eax, edx
jge 0x4b7bf9
mov edx, eax
jmp 0x4b7bf6
test edi, edi
jl 0x4b7bf3
mov eax, dword [ebp + 0x14]
mov ecx, dword [eax + 8]
shl ecx, 0x10
sub ecx, 0x10000
cmp edi, ecx
jl 0x4b7bf9
or edx, 0xffffffff
mov dword [ebp + 0x1c], edx
mov ecx, dword [ebp - 0x24]
cmp ecx, 0xffffffff
jg 0x4b7c32
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 0xc]
mov edx, dword [ebp + 0x30]
shl eax, 0x10
sub eax, edx
sub eax, 0x27fff
cdq
idiv ecx
cmp eax, dword [ebp + 0xc]
jle 0x4b7c1f
mov dword [ebp + 0xc], eax
mov eax, dword [ebp + 0x30]
cdq
idiv ecx
mov edx, dword [ebp + 0x1c]
neg eax
cmp eax, edx
jge 0x4b7c8b
mov edx, eax
jmp 0x4b7c8b
cmp ecx, 1
jl 0x4b7c6d
mov edx, dword [ebp + 0x30]
mov eax, 0x10000
sub eax, edx
cdq
idiv ecx
cmp eax, dword [ebp + 0xc]
jle 0x4b7c4c
mov dword [ebp + 0xc], eax
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 0xc]
mov edx, dword [ebp + 0x30]
shl eax, 0x10
sub eax, edx
sub eax, 0x17fff
cdq
idiv ecx
mov edx, dword [ebp + 0x1c]
cmp eax, edx
jge 0x4b7c8b
mov edx, eax
jmp 0x4b7c8b
mov eax, dword [ebp + 0x30]
test eax, eax
jl 0x4b7c87
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 0xc]
shl eax, 0x10
sub eax, 0x10000
cmp dword [ebp + 0x30], eax
jl 0x4b7c8b
mov edx, dword [ebp + 0xc]
dec edx
mov eax, dword [ebp + 0xc]
imul eax, dword [ebp + 0x20]
add edi, eax
mov eax, dword [ebp + 0xc]
imul eax, ecx
mov ecx, dword [ebp + 0x30]
add ecx, eax
mov eax, dword [ebp + 0xc]
mov dword [ebp + 0x30], ecx
mov ecx, dword [ebp - 0x14]
lea eax, [ecx + eax*2]
mov ecx, dword [ebx + 4]
mov dword [ebp - 0x8c], ecx
mov ecx, dword [ebp + 0xc]
cmp ecx, edx
mov dword [ebp - 4], edi
mov dword [ebp - 0x20], eax
jg 0x4b7eec
sub edx, ecx
mov ecx, dword [ebp + 0x30]
inc edx
mov dword [ebp - 0x10], edx
mov edi, edi
mov dx, word [eax]
sar ecx, 0x10
imul ecx, dword [ebp - 0x8c]
mov word [ebp - 0x4c], dx
mov edx, dword [ebp - 0x54]
add edx, ecx
mov eax, edi
mov ecx, dword [ebp + 0x30]
sar eax, 0x10
add eax, edx
movzx edx, byte [eax]
mov edx, dword [esi + edx*4]
mov dword [ebp + 0x18], edx
movzx edx, byte [eax + 1]
mov edx, dword [esi + edx*4]
mov dword [ebp + 0x1c], edx
mov edx, dword [ebx + 4]
add eax, edx
movzx edx, byte [eax]
mov edx, dword [esi + edx*4]
movzx eax, byte [eax + 1]
mov eax, dword [esi + eax*4]
and ecx, 0xfffe
and edi, 0xfffe
inc edi
inc ecx
mov ebx, dword [ebp + 0x18]
mov dword [ebp + 0xc], edx
mov dword [ebp - 0x74], edi
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 + 0x1c]
shr esi, 0x18
shr ebx, 0x18
shr edi, 0x10
imul edi, esi
mov esi, ecx
imul ecx, dword [ebp - 0x74]
imul esi, dword [ebp + 0x28]
shr edx, 0x10
imul edx, 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
movzx ebx, word [ebp - 0x4c]
shr ecx, 0x10
mov dword [ebp + 0x28], ebx
mov dword [ebp - 0xc], ecx
mov ebx, eax
and ebx, 0xff0000
imul ebx, ecx
mov ecx, dword [ebp + 0xc]
and ecx, 0xff0000
shr esi, 0x10
imul ecx, esi
add ebx, ecx
mov ecx, dword [ebp + 0x1c]
and ecx, 0xff0000
shr edi, 0x10
imul ecx, edi
add ebx, ecx
mov ecx, dword [ebp + 0x18]
and ecx, 0xff0000
shr edx, 0x10
imul ecx, edx
add ebx, ecx
mov ecx, dword [ebp - 0x5c]
shr ebx, cl
mov dword [ebp - 0x18], edi
mov dword [ebp - 0x94], esi
imul ebx, dword [ebp - 0x40]
mov ecx, dword [ebp + 0x28]
mov edi, dword [ebp - 0x58]
and edi, ecx
mov ecx, dword [ebp - 0x2c]
shr edi, cl
mov ecx, dword [ebp - 0x64]
shr ebx, 8
add ebx, edi
xor edi, edi
mov di, word [ecx + ebx*4]
mov ecx, dword [ebp - 0x2c]
shl di, cl
mov ecx, dword [ebp + 0xc]
and ecx, 0xff
imul ecx, esi
mov ebx, eax
and ebx, 0xff
imul ebx, dword [ebp - 0xc]
add ebx, ecx
mov ecx, dword [ebp + 0x1c]
and ecx, 0xff
imul ecx, dword [ebp - 0x18]
add ebx, ecx
mov ecx, dword [ebp + 0x18]
and ecx, 0xff
imul ecx, edx
add ebx, ecx
imul ebx, dword [ebp - 0x48]
mov ecx, dword [ebp - 0x68]
mov esi, dword [ebp - 0x60]
add ecx, 8
shr ebx, cl
and esi, dword [ebp + 0x28]
mov ecx, dword [ebp - 0x28]
shr esi, cl
mov ecx, dword [ebp - 0x50]
and eax, 0xff00
imul eax, dword [ebp - 0xc]
add ebx, esi
xor esi, esi
mov si, word [ecx + ebx*4]
mov ecx, dword [ebp - 0x28]
shl si, cl
mov ecx, dword [ebp + 0xc]
and ecx, 0xff00
imul ecx, dword [ebp - 0x94]
add eax, ecx
mov ecx, dword [ebp + 0x1c]
and ecx, 0xff00
imul ecx, dword [ebp - 0x18]
add eax, ecx
mov ecx, dword [ebp + 0x18]
mov ebx, dword [ebp + 0x28]
and ecx, 0xff00
imul ecx, edx
mov edx, dword [ebp - 0x38]
add eax, ecx
imul eax, dword [ebp - 0x6c]
mov ecx, dword [ebp - 0x44]
add ecx, 8
shr eax, cl
mov ecx, dword [ebp - 0x34]
and edx, ebx
mov ebx, dword [ebp + 0x20]
shr edx, cl
or edi, esi
mov esi, dword [ebp - 0x24]
add eax, edx
mov edx, dword [ebp - 0x80]
movzx eax, word [edx + eax*4]
shl ax, cl
mov ecx, dword [ebp + 0x30]
or edi, eax
mov eax, dword [ebp - 0x20]
mov word [eax], di
mov edi, dword [ebp - 4]
add eax, 2
add edi, ebx
mov dword [ebp - 0x20], eax
mov dword [ebp - 4], edi
mov edx, dword [ebp - 0x10]
mov ebx, dword [ebp + 8]
add ecx, esi
mov esi, dword [ebp - 0x3c]
dec edx
mov dword [ebp + 0x30], ecx
mov dword [ebp - 0x10], edx
jne 0x4b7cd0
mov ecx, dword [ebp - 0x30]
mov eax, dword [ecx + 0x6c]
mov ecx, dword [ebp - 0x1c]
cdq
sub eax, edx
mov edx, dword [ebp - 0x14]
sar eax, 1
inc ecx
lea eax, [edx + eax*2]
mov dword [ebp - 0x1c], ecx
mov dword [ebp - 0x14], eax
fild dword [ebp - 0x1c]
mov eax, dword [ebp - 8]
inc eax
mov dword [ebp - 8], eax
fcomp qword [ebp - 0xa4]
fnstsw ax
test ah, 5
jnp 0x4b7b30
jmp 0x4b841b
cmp eax, 0x20
jne 0x4b841f
fld qword [ebp - 0xb4]
call fcn.00527ae0
fld qword [ebp - 0xbc]
mov edi, eax
mov dword [ebp + 0x28], edi
call fcn.00527ae0
fld qword [0x546448]
mov ecx, dword [ebp - 0x30]
fcomp qword [ebp - 0xa4]
mov dword [ebp + 0x18], eax
mov eax, dword [ecx + 0x6c]
mov ecx, dword [ecx + 0x80]
imul eax, edi
mov edi, dword [ebp + 0x1c]
cdq
and edx, 3
add eax, edx
mov edx, dword [ebp + 0x18]
sar eax, 2
add eax, edx
lea edx, [ecx + eax*4]
mov eax, dword [edi + 0xc]
mov ecx, dword [edi]
imul ecx, eax
mov dword [ebp + 0x1c], eax
mov dword [ebp - 0x14], edx
mov eax, 0x80808081
imul ecx
add edx, ecx
mov ecx, dword [edi + 4]
imul ecx, dword [ebp + 0x1c]
sar edx, 7
mov eax, edx
shr eax, 0x1f
add edx, eax
mov dword [ebp - 0x8c], edx
mov eax, 0x80808081
imul ecx
add edx, ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add edx, ecx
mov ecx, dword [edi + 8]
imul ecx, dword [ebp + 0x1c]
mov dword [ebp - 0x40], edx
mov eax, 0x80808081
imul ecx
add edx, ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add edx, eax
mov dword [ebp - 0x74], edx
fnstsw ax
test ah, 5
mov dword [ebp - 0x1c], 0
jp 0x4b841f
mov edx, dword [ebp + 0x2c]
mov eax, dword [ebp + 0x18]
sub eax, edx
mov dword [ebp + 0x1c], eax
fild dword [ebp + 0x1c]
fsub dword [ebp + 0xc]
fld qword [ebp - 0x7c]
fmul st(1)
fstp qword [ebp - 0xc4]
fild dword [ebp + 0x2c]
fstp qword [ebp - 0x88]
fmul qword [ebp - 0x9c]
fild dword [ebp + 0x30]
fld qword [ebp - 0xac]
fsub qword [0x546438]
call fcn.00527ae0
mov ecx, dword [ebp + 0x30]
mov dword [ebp + 0x2c], eax
mov eax, dword [ebp + 0x28]
sub eax, ecx
mov dword [ebp - 8], eax
lea ecx, [ecx]
fild dword [ebp - 8]
fsub dword [ebp + 0x10]
fld qword [ebp - 0x9c]
fmul st(1)
fsubr qword [ebp - 0xc4]
fadd qword [ebp - 0x88]
fmul qword [0x55abc0]
call fcn.00527ae0
fmul qword [ebp - 0x7c]
mov edi, eax
fadd st(2)
fadd st(1)
fmul qword [0x55abc0]
call fcn.00527ae0
mov edx, dword [ebp + 0x2c]
mov dword [ebp + 0x30], eax
cmp dword [ebp + 0x20], 0xffffffff
mov dword [ebp + 0xc], 0
mov dword [ebp + 0x1c], edx
jge 0x4b80b5
mov ecx, dword [ebp + 0x14]
mov eax, dword [ecx + 8]
mov ecx, dword [ebp + 0x20]
shl eax, 0x10
sub eax, edi
sub eax, 0x27fff
cdq
idiv ecx
test eax, eax
jl 0x4b80ac
mov dword [ebp + 0xc], eax
mov eax, 0x7fff
sub eax, edi
jmp 0x4b80de
mov ecx, dword [ebp + 0x20]
cmp ecx, 1
jl 0x4b80ec
mov eax, 0x10000
sub eax, edi
cdq
idiv ecx
test eax, eax
jle 0x4b80ce
mov dword [ebp + 0xc], eax
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 8]
shl eax, 0x10
sub eax, edi
sub eax, 0x17fff
cdq
idiv ecx
mov edx, dword [ebp + 0x1c]
cmp eax, edx
jge 0x4b8109
mov edx, eax
jmp 0x4b8106
test edi, edi
jl 0x4b8103
mov eax, dword [ebp + 0x14]
mov ecx, dword [eax + 8]
shl ecx, 0x10
sub ecx, 0x10000
cmp edi, ecx
jl 0x4b8109
or edx, 0xffffffff
mov dword [ebp + 0x1c], edx
mov ecx, dword [ebp - 0x24]
cmp ecx, 0xffffffff
jg 0x4b8142
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 0xc]
mov edx, dword [ebp + 0x30]
shl eax, 0x10
sub eax, edx
sub eax, 0x27fff
cdq
idiv ecx
cmp eax, dword [ebp + 0xc]
jle 0x4b812f
mov dword [ebp + 0xc], eax
mov eax, dword [ebp + 0x30]
cdq
idiv ecx
mov edx, dword [ebp + 0x1c]
neg eax
cmp eax, edx
jge 0x4b819b
mov edx, eax
jmp 0x4b819b
cmp ecx, 1
jl 0x4b817d
mov edx, dword [ebp + 0x30]
mov eax, 0x10000
sub eax, edx
cdq
idiv ecx
cmp eax, dword [ebp + 0xc]
jle 0x4b815c
mov dword [ebp + 0xc], eax
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 0xc]
mov edx, dword [ebp + 0x30]
shl eax, 0x10
sub eax, edx
sub eax, 0x17fff
cdq
idiv ecx
mov edx, dword [ebp + 0x1c]
cmp eax, edx
jge 0x4b819b
mov edx, eax
jmp 0x4b819b
mov eax, dword [ebp + 0x30]
test eax, eax
jl 0x4b8197
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 0xc]
shl eax, 0x10
sub eax, 0x10000
cmp dword [ebp + 0x30], eax
jl 0x4b819b
mov edx, dword [ebp + 0xc]
dec edx
mov eax, dword [ebp + 0xc]
imul eax, dword [ebp + 0x20]
add edi, eax
mov eax, dword [ebp + 0xc]
imul eax, ecx
mov ecx, dword [ebp + 0x30]
add ecx, eax
mov eax, dword [ebp + 0xc]
mov dword [ebp + 0x30], ecx
mov ecx, dword [ebp - 0x14]
lea eax, [ecx + eax*4]
mov ecx, dword [ebx + 4]
mov dword [ebp - 0x6c], ecx
mov ecx, dword [ebp + 0xc]
cmp ecx, edx
mov dword [ebp - 4], edi
mov dword [ebp - 0x20], eax
jg 0x4b83e1
sub edx, ecx
mov ecx, dword [ebp + 0x30]
inc edx
mov dword [ebp - 0x10], edx
jmp 0x4b81e0
mov edx, dword [eax]
sar ecx, 0x10
imul ecx, dword [ebp - 0x6c]
mov eax, edi
mov dword [ebp + 0x28], edx
mov edx, dword [ebp - 0x54]
add edx, ecx
mov ecx, dword [ebp + 0x30]
sar eax, 0x10
add eax, edx
mov edx, edi
movzx edi, byte [eax]
mov edi, dword [esi + edi*4]
mov dword [ebp + 0x18], edi
movzx edi, byte [eax + 1]
mov edi, dword [esi + edi*4]
mov dword [ebp + 0x1c], 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 - 0xc], 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 + 0x18]
shr edi, 0x18
shr edx, 0x10
imul edx, edi
mov edi, dword [ebp - 0xc]
imul edi, esi
mov esi, dword [ebp + 0x1c]
shr esi, 0x18
shr edi, 0x10
imul edi, esi
mov esi, ecx
imul ecx, dword [ebp - 0xc]
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
mov dword [ebp - 0xc], ecx
mov ebx, eax
and ebx, 0xff0000
imul ebx, ecx
mov ecx, dword [ebp + 0xc]
and ecx, 0xff0000
shr esi, 0x10
imul ecx, esi
add ebx, ecx
mov ecx, dword [ebp + 0x1c]
and ecx, 0xff0000
shr edi, 0x10
imul ecx, edi
add ebx, ecx
mov ecx, dword [ebp + 0x18]
and ecx, 0xff0000
shr edx, 0x10
imul ecx, edx
add ebx, ecx
mov ecx, dword [ebp - 0x5c]
shr ebx, cl
mov dword [ebp - 0x18], edi
mov edi, dword [ebp + 0x28]
mov dword [ebp - 0x4c], esi
imul ebx, dword [ebp - 0x8c]
shr ebx, 8
and edi, dword [ebp - 0x58]
mov ecx, dword [ebp - 0x2c]
shr edi, cl
mov ecx, dword [ebp - 0x64]
add ebx, edi
mov edi, dword [ecx + ebx*4]
mov ecx, dword [ebp - 0x2c]
shl edi, cl
mov ecx, dword [ebp + 0xc]
and ecx, 0xff
imul ecx, esi
mov ebx, eax
and ebx, 0xff
imul ebx, dword [ebp - 0xc]
add ebx, ecx
mov ecx, dword [ebp + 0x1c]
and ecx, 0xff
imul ecx, dword [ebp - 0x18]
add ebx, ecx
mov ecx, dword [ebp + 0x18]
and ecx, 0xff
imul ecx, edx
add ebx, ecx
imul ebx, dword [ebp - 0x74]
mov ecx, dword [ebp - 0x68]
mov esi, dword [ebp + 0x28]
add ecx, 8
shr ebx, cl
and esi, dword [ebp - 0x60]
mov ecx, dword [ebp - 0x28]
shr esi, cl
mov ecx, dword [ebp - 0x50]
and eax, 0xff00
imul eax, dword [ebp - 0xc]
add ebx, esi
mov esi, dword [ecx + ebx*4]
mov ecx, dword [ebp - 0x28]
shl esi, cl
mov ecx, dword [ebp + 0xc]
and ecx, 0xff00
imul ecx, dword [ebp - 0x4c]
add eax, ecx
mov ecx, dword [ebp + 0x1c]
and ecx, 0xff00
imul ecx, dword [ebp - 0x18]
add eax, ecx
mov ecx, dword [ebp + 0x18]
mov ebx, dword [ebp - 0x38]
and ecx, 0xff00
imul ecx, edx
mov edx, dword [ebp + 0x28]
add eax, ecx
imul eax, dword [ebp - 0x40]
mov ecx, dword [ebp - 0x44]
add ecx, 8
shr eax, cl
mov ecx, dword [ebp - 0x34]
and edx, ebx
mov ebx, dword [ebp + 0x20]
shr edx, cl
or edi, esi
mov esi, dword [ebp - 0x24]
add eax, edx
mov edx, dword [ebp - 0x80]
mov eax, dword [edx + eax*4]
mov edx, dword [ebp - 0x10]
shl eax, cl
mov ecx, dword [ebp + 0x30]
add ecx, esi
mov dword [ebp + 0x30], ecx
or edi, eax
mov eax, dword [ebp - 0x20]
mov dword [eax], edi
mov edi, dword [ebp - 4]
add eax, 4
add edi, ebx
mov dword [ebp - 0x20], eax
mov dword [ebp - 4], edi
dec edx
mov esi, dword [ebp - 0x3c]
mov ebx, dword [ebp + 8]
mov dword [ebp - 0x10], edx
jne 0x4b81e0
mov ecx, dword [ebp - 0x30]
mov eax, dword [ecx + 0x6c]
mov ecx, dword [ebp - 0x1c]
cdq
and edx, 3
add eax, edx
mov edx, dword [ebp - 0x14]
sar eax, 2
inc ecx
lea eax, [edx + eax*4]
mov dword [ebp - 0x1c], ecx
mov dword [ebp - 0x14], eax
fild dword [ebp - 0x1c]
mov eax, dword [ebp - 8]
inc eax
mov dword [ebp - 8], eax
fcomp qword [ebp - 0xa4]
fnstsw ax
test ah, 5
jnp 0x4b8040
fstp st(0)
fstp st(0)
mov ecx, dword [ebp - 0x30]
mov edx, dword [ecx]
call dword [edx + 0xa0]
mov ecx, dword [ebp - 0x30]
call fcn.004964e0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x2c
mov eax, dword [ebp + 0x30]
mov ecx, dword [ebp + 0x2c]
mov edx, dword [ebp + 0x28]
push eax
mov eax, dword [ebp + 0x24]
push ecx
mov ecx, dword [ebp + 0x20]
push edx
mov edx, dword [ebp + 0x1c]
push eax
mov eax, dword [ebp + 0x18]
push ecx
mov ecx, dword [ebp + 0x14]
push edx
mov edx, dword [ebp + 0x10]
push eax
mov eax, dword [ebp + 0xc]
push ecx
mov ecx, dword [ebp + 8]
push edx
push eax
push ecx
mov ecx, esi
call fcn.004a4200
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x2c