Function at 0x406780
Capabilities:
Encrypt data using speck
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0x26c
mov eax, dword [ebp + 8]
mov ecx, dword [ebp + 8]
mov dword [ebp - 0xc4], 0
mov dword [ebp - 0xc0], 0
mov esi, dword [ebp + 0xc]
mov eax, dword [eax + 4]
mov ecx, dword [ecx + 0x24]
mov dword [ebp - 0xb8], 0
mov dword [ebp - 0xbc], 0
mov dword [ebp - 0xfc], eax
mov eax, dword [ebp + 8]
mov dword [ebp - 0xd8], ecx
mov eax, dword [eax + 8]
mov dword [ebp - 0xec], eax
mov eax, dword [ebp + 8]
mov edi, dword [eax]
mov eax, dword [edi + 8]
mov ebx, dword [edi + 4]
mov dword [ebp - 0x10c], edi
mov dword [ebp - 0xf8], eax
mov eax, dword [edi + 0x20]
mov dword [ebp - 0x12c], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x20]
test eax, eax
mov dword [ebp - 0xf4], eax
setne al
setne byte [ebp - 0x15c]
movzx eax, al
mov dword [ebp - 0x144], eax
cmp dword [ebp + 0x18], 1
setle dl
test esi, esi
sete al
or dl, al
mov byte [ebp - 0x191], dl
jne 0x406877
mov eax, dword [ebp + 8]
mov edx, dword [ebp + 0x10]
imul edx, dword [eax + 0x1c]
mov eax, dword [edi + 0x24]
test eax, eax
js 0x406877
mov edi, dword [edi + 0x2c]
mov dword [ebp - 0x160], edi
cmp edx, edi
je 0x40b3e9
mov dword [ebp - 0xd0], ebx
xor ecx, ecx
mov ebx, edi
mov edi, dword [ebp + 0x18]
jmp 0x406870
mov esi, ebx
shl esi, cl
cmp esi, edx
je 0x40688f
add ecx, 1
cmp ecx, eax
jle 0x406868
mov dword [ebp - 0x128], 0xffffffff
mov eax, dword [ebp - 0x128]
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, 1
mov dword [ebp + 0x18], edi
mov ebx, dword [ebp - 0xd0]
shl eax, cl
mov dword [ebp - 0xf0], ecx
mov dword [ebp - 0x190], eax
mov dword [ebp - 0x108], esi
mov esi, dword [ebp + 0xc]
mov ecx, dword [ebp - 0xfc]
mov eax, dword [ebp + 8]
lea edi, [eax + 0xf4]
mov eax, ecx
imul eax, ebx
mov dword [ebp - 0x110], edi
lea edi, [edi + eax*4]
mov dword [ebp - 0x104], edi
mov edi, ecx
imul ecx, dword [ebp - 0xf8]
shl edi, 0xa
add eax, edi
mov dword [ebp - 0x150], edi
mov edi, dword [ebp - 0x110]
mov dword [ebp - 0x1e0], ecx
lea eax, [edi + eax*4]
lea edi, [ecx*4]
mov dword [ebp - 0x138], eax
add eax, edi
mov dword [ebp - 0x1bc], eax
add eax, edi
mov dword [ebp - 0x1dc], eax
add eax, edi
mov dword [ebp - 0x124], eax
mov eax, dword [ebp + 0x1c]
mov dword [ebp - 0x18c], edi
test eax, eax
je 0x4094a0
mov eax, dword [ebp + 0x1c]
mov dword [ebp - 0xd4], edx
mov dword [esp], eax
call dbg.ec_tell_frac
mov edi, dword [ebp + 0x1c]
mov edx, dword [ebp - 0xd4]
mov dword [ebp - 0x204], eax
mov eax, dword [ebp + 0x1c]
mov ecx, dword [edi + 0x14]
bsr eax, dword [eax + 0x1c]
xor eax, 0x1f
lea eax, [eax + ecx - 0x20]
mov dword [ebp - 0x11c], eax
add eax, 4
sar eax, 3
mov dword [ebp - 0xd0], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x30]
mov dword [ebp - 0x1cc], eax
test eax, eax
jne 0x40b9d4
mov eax, 0x4fb
cmp dword [ebp + 0x18], eax
cmovle eax, dword [ebp + 0x18]
mov ecx, dword [ebp + 8]
mov edi, eax
sub edi, dword [ebp - 0xd0]
mov dword [ebp - 0x128], eax
mov dword [ebp - 0x148], edi
mov edi, dword [ecx + 0x28]
mov ecx, 3
sub ecx, dword [ebp - 0xf0]
mov dword [ebp - 0x1b4], ecx
mov ecx, dword [ebp - 0xec]
imul edx, edi
lea eax, [ecx + ecx*4]
lea ecx, [eax*8 + 0x14]
mov eax, 0x190
mov dword [ebp - 0x1c8], ecx
movzx ecx, byte [ebp - 0xf0]
sar eax, cl
mov ecx, dword [ebp + 8]
sub eax, 0x32
imul eax, dword [ebp - 0x1c8]
mov dword [ebp - 0xd4], eax
mov eax, dword [ecx + 0x2c]
test eax, eax
je 0x4090db
cmp edi, 0xffffffff
je 0x409f76
mov ecx, dword [ebp - 0x10c]
mov ecx, dword [ecx]
mov eax, ecx
sar ecx, 3
sar eax, 4
add eax, edx
cdq
idiv ecx
movzx ecx, byte [ebp - 0x1b4]
mov edx, eax
mov dword [ebp - 0x188], eax
imul eax, dword [ebp - 0x128], 0x190
sar edx, 6
mov dword [ebp - 0x17c], edx
sar eax, cl
sub eax, dword [ebp - 0xd4]
sub edi, dword [ebp - 0xd4]
mov ecx, dword [ebp + 0x1c]
cmp edi, eax
cmovle eax, edi
mov dword [ebp - 0x1d8], eax
test ecx, ecx
je 0x409fc3
mov eax, dword [ebp - 0x188]
test eax, eax
jle 0x406ab0
mov edi, dword [ebp + 8]
mov edx, dword [edi + 0x34]
test edx, edx
je 0x406ab0
lea edi, [eax + eax]
mov eax, dword [ebp + 8]
sub edi, dword [eax + 0xd0]
xor eax, eax
sar edi, 6
cmp dword [ebp - 0x11c], 1
sete al
add eax, eax
cmp edi, eax
cmovl edi, eax
mov eax, dword [ebp - 0x148]
cmp edi, eax
cmovg edi, eax
cmp eax, edi
jg 0x40a913
mov eax, dword [ebp - 0x128]
mov edi, dword [ebp - 0xd8]
shl eax, 3
mov dword [ebp - 0x158], eax
mov eax, dword [ebp - 0x10c]
mov eax, dword [eax + 0xc]
cmp edi, eax
cmovle eax, edi
mov edi, dword [ebp - 0x108]
mov dword [ebp - 0x118], eax
lea eax, [ebx + edi]
mov dword [ebp - 0x134], eax
imul eax, dword [ebp - 0xfc]
lea eax, [eax*4 + 0xf]
shr eax, 4
shl eax, 4
call fcn.004166d0
sub esp, eax
lea eax, [esp + 0x5c]
mov dword [ebp - 0xdc], eax
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 0x1c]
fld dword [eax + 0xe0]
mov eax, edi
sub eax, ebx
imul eax, dword [ebp - 0xec]
mov dword [ebp - 0xd4], ecx
fstp dword [ebp - 0x100]
cdq
idiv ecx
mov ecx, eax
test eax, eax
jle 0x40afcd
fldz
mov eax, esi
lea edx, [esi + ecx*4]
fld st(0)
lea esi, [esi]
lea esi, [esi]
fld dword [eax]
fxch st(1)
fcomi st(1)
fcmovbe st(0), st(1)
fxch st(1)
fcomi st(2)
fcmovnbe st(0), st(2)
fstp st(2)
add eax, 4
cmp edx, eax
jne 0x406b50
fxch st(1)
fchs
fxch st(1)
fcomi st(1)
fcmovbe st(0), st(1)
fstp st(1)
fld dword [ebp - 0x100]
mov eax, dword [ebp - 0xec]
fcomi st(1)
fcmovbe st(0), st(1)
fstp st(1)
imul eax, ebx
fstp dword [ebp - 0x100]
cdq
idiv dword [ebp - 0xd4]
test eax, eax
jle 0x40afa4
add eax, ecx
fldz
lea edx, [esi + ecx*4]
lea eax, [esi + eax*4]
fld st(0)
lea esi, [esi]
fld dword [edx]
fxch st(1)
fcomi st(1)
fcmovbe st(0), st(1)
fxch st(1)
fcomi st(2)
fcmovnbe st(0), st(2)
fstp st(2)
add edx, 4
cmp eax, edx
jne 0x406bb0
fxch st(1)
fchs
fxch st(1)
fcomi st(1)
fcmovbe st(0), st(1)
fstp st(1)
mov eax, dword [ebp + 8]
fst dword [eax + 0xe0]
fld dword [ebp - 0x100]
fcomi st(1)
fcmovbe st(0), st(1)
fstp st(1)
cmp dword [ebp - 0x11c], 1
fstp dword [ebp - 0x100]
je 0x40af23
mov dword [ebp - 0x184], 0
cmp dword [ebp - 0x148], 3
setg byte [ebp - 0x114]
mov eax, dword [ebp + 8]
mov edx, esi
mov eax, dword [eax + 0x10]
mov dword [ebp - 0xe4], eax
mov eax, dword [ebp - 0x10c]
add eax, 0x10
mov dword [ebp - 0xe8], eax
mov eax, dword [ebp - 0x134]
shl eax, 2
mov dword [ebp - 0xe0], eax
mov eax, dword [ebp - 0xdc]
lea edi, [eax + ebx*4]
mov eax, dword [ebp + 8]
xor ebx, ebx
lea esi, [eax + 0xc0]
lea esi, [esi]
nop
mov eax, dword [ebp - 0xe4]
xor ecx, ecx
test eax, eax
je 0x406c79
fld dword [0x41e78c]
fld dword [ebp - 0x100]
xor ecx, ecx
fcompi st(1)
fstp st(0)
seta cl
mov dword [esp + 0x18], esi
add ebx, 1
add esi, 4
mov dword [esp + 0x1c], ecx
mov eax, dword [ebp - 0xe8]
mov dword [esp + 0x14], eax
mov eax, dword [ebp - 0xd4]
mov dword [esp + 0x10], eax
mov eax, dword [ebp - 0xfc]
mov dword [esp + 0xc], eax
mov ecx, dword [ebp - 0x108]
mov dword [esp + 4], edi
mov dword [esp], edx
mov dword [esp + 8], ecx
mov dword [ebp - 0xd0], edx
call dbg.celt_preemphasis
mov edx, dword [ebp - 0xd0]
add edi, dword [ebp - 0xe0]
add edx, 4
cmp dword [ebp - 0xfc], ebx
jg 0x406c58
mov eax, dword [ebp + 8]
mov edi, dword [eax + 0x40]
test edi, edi
je 0x406ceb
cmp byte [ebp - 0x114], 0
jne 0x406d09
mov dword [ebp - 0x100], 0
mov eax, dword [ebp - 0xec]
lea eax, [eax + eax*2]
shl eax, 2
cmp eax, dword [ebp - 0x148]
jge 0x406d2f
mov eax, dword [ebp - 0x144]
or eax, dword [ebp - 0x184]
mov dword [ebp - 0x100], eax
jne 0x40a011
mov eax, dword [ebp + 8]
mov esi, dword [eax + 0x14]
test esi, esi
je 0x40a82a
mov eax, dword [ebp + 8]
mov edi, dword [ebp - 0x108]
mov dword [ebp - 0x13c], esp
mov eax, dword [eax + 0x64]
lea esi, [edi + 0x400]
mov dword [ebp - 0x114], esi
mov dword [ebp - 0x178], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax]
mov ebx, dword [eax + 4]
mov dword [ebp - 0xd4], eax
mov eax, dword [ebp - 0xfc]
mov dword [ebp - 0xd0], ebx
imul eax, esi
mov dword [ebp - 0x14c], eax
lea eax, [eax*4 + 0xf]
shr eax, 4
shl eax, 4
call fcn.004166d0
lea edx, [esi*4]
sub esp, eax
lea esi, [edx - 0x1000]
lea eax, [esp + 0x5c]
mov dword [ebp - 0x154], esi
mov esi, ebx
lea ecx, [eax + edx]
mov edx, dword [ebp - 0xdc]
add esi, edi
mov dword [ebp - 0x80], eax
shl ebx, 2
mov dword [ebp - 0x120], esi
shl esi, 2
add edx, ebx
mov dword [ebp - 0x7c], ecx
mov dword [ebp - 0xe8], esi
mov dword [ebp - 0xe0], ebx
xor ebx, ebx
mov esi, ebx
lea edi, [eax + 4]
shl esi, 0xc
add esi, dword [ebp - 0x104]
and edi, 0xfffffffc
mov ecx, dword [esi]
mov dword [eax], ecx
mov ecx, dword [esi + 0xffc]
mov dword [eax + 0xffc], ecx
sub eax, edi
lea ecx, [eax + 0x1000]
sub esi, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov eax, dword [ebp + ebx*4 - 0x80]
mov esi, dword [ebp - 0x154]
mov dword [esp + 4], edx
add ebx, 1
add eax, 0x1000
mov dword [esp + 8], esi
mov dword [ebp - 0xe4], edx
mov dword [esp], eax
call sym._memcpy
mov edx, dword [ebp - 0xe4]
add edx, dword [ebp - 0xe8]
cmp dword [ebp - 0xfc], ebx
jle 0x406e42
mov eax, dword [ebp + ebx*4 - 0x80]
jmp 0x406dd0
mov ebx, dword [ebp - 0x100]
test ebx, ebx
jne 0x409e49
mov dword [ebp - 0xb4], 0xf
mov edx, 0xf
fldz
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 0x78]
test ecx, ecx
je 0x406e71
fmul dword [eax + 0xa0]
mov eax, dword [ebp + 8]
mov ecx, edx
fld dword [0x41e794]
mov esi, dword [eax + 0x68]
sub ecx, esi
mov eax, ecx
neg eax
cmovs eax, ecx
lea eax, [eax + eax*4]
add eax, eax
cmp eax, edx
jle 0x406e99
fstp st(0)
fld dword [0x41e798]
cmp dword [ebp - 0x148], 0x18
jg 0x40948b
fadd dword [0x41e7f8]
fadd dword [0x41e7f8]
mov eax, dword [ebp + 8]
fld dword [0x41e798]
fld dword [eax + 0x6c]
fcomi st(1)
fstp st(1)
jbe 0x406ece
fxch st(1)
fsub dword [0x41e7f8]
fxch st(1)
fld dword [0x41e7fc]
fxch st(1)
fcomi st(1)
fstp st(1)
jbe 0x406ee6
fxch st(1)
fsub dword [0x41e7f8]
fxch st(1)
fld dword [0x41e794]
fxch st(2)
fcomi st(2)
fcmovbe st(0), st(2)
fstp st(2)
fxch st(1)
fcompi st(2)
ja 0x40902c
fld st(1)
fsub st(1)
fabs
fld dword [0x41e7f8]
fucompi st(1)
fstp st(0)
fxch st(1)
fcmovnbe st(0), st(1)
fxch st(1)
fstp dword [ebp - 0xe8]
fmul dword [0x41e800]
fld dword [0x41e7b0]
fdivp st(1)
fadd dword [0x41e748]
fstp dword [esp]
call sym._floorf
mov dword [ebp - 0x1d0], 1
fnstcw word [ebp - 0xca]
movzx eax, word [ebp - 0xca]
or ah, 0xc
mov word [ebp - 0xcc], ax
fldcw word [ebp - 0xcc]
fistp dword [ebp - 0xe4]
fldcw word [ebp - 0xca]
mov eax, dword [ebp - 0xe4]
lea ebx, [eax - 1]
mov eax, 7
cmp ebx, eax
cmovle eax, ebx
mov ebx, eax
xor eax, eax
test ebx, ebx
cmovns eax, ebx
mov dword [ebp - 0x164], eax
add eax, 1
mov dword [ebp - 0xe4], eax
fild dword [ebp - 0xe4]
fmul dword [0x41e804]
fst dword [ebp - 0x1a8]
fchs
fstp dword [ebp - 0x130]
fld dword [ebp - 0xe8]
mov eax, 0x400
sub eax, dword [ebp - 0x108]
mov edx, dword [ebp + 8]
xor ebx, ebx
shl eax, 2
mov dword [ebp - 0x140], eax
mov eax, dword [ebp - 0xd4]
mov edi, dword [ebp - 0xd0]
mov dword [ebp + 8], edx
fstp dword [ebp - 0x114]
mov eax, dword [eax + 0x2c]
mov dword [ebp - 0xe4], eax
mov ecx, eax
mov eax, 0xf
sub ecx, edi
cmp esi, eax
cmovl esi, eax
mov eax, edi
mov edi, dword [ebp - 0x110]
mov dword [ebp - 0x100], ecx
imul eax, ebx
mov dword [edx + 0x68], esi
mov edx, dword [ebp - 0xe0]
lea ecx, [edi + eax*4]
mov edi, dword [ebp - 0x120]
mov eax, dword [ebp - 0xdc]
mov dword [ebp - 0xe8], ecx
imul edi, ebx
mov dword [esp + 8], edx
mov dword [esp + 4], ecx
lea eax, [eax + edi*4]
mov dword [esp], eax
call sym._memcpy
mov ecx, dword [ebp - 0x100]
mov edx, dword [ebp + 8]
fld dword [ebp - 0x114]
test ecx, ecx
jne 0x407759
mov eax, dword [edx + 0x48]
mov dword [esp + 0x2c], eax
mov eax, dword [ebp - 0xd0]
mov dword [esp + 0x28], eax
mov eax, dword [ebp - 0xd4]
mov eax, dword [eax + 0x3c]
mov dword [esp + 0x24], eax
mov eax, dword [ebp - 0x178]
mov dword [esp + 0x20], eax
mov eax, dword [edx + 0x70]
mov dword [ebp + 8], edx
mov dword [esp + 0x1c], eax
fld dword [ebp - 0x130]
fstp dword [esp + 0x18]
fchs
fstp dword [esp + 0x14]
mov eax, dword [ebp - 0x108]
sub eax, ecx
mov dword [esp + 0x10], eax
mov eax, dword [ebp - 0xb4]
mov dword [esp + 8], esi
mov dword [esp + 0xc], eax
mov eax, dword [ebp + ebx*4 - 0x80]
lea eax, [eax + ecx*4 + 0x1000]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0xe4]
mov ecx, dword [ebp - 0xdc]
add eax, edi
lea eax, [ecx + eax*4]
mov dword [esp], eax
call dbg.comb_filter
mov esi, dword [ebp - 0x108]
mov ecx, dword [ebp - 0xdc]
add edi, esi
lea eax, [ecx + edi*4]
mov edi, dword [ebp - 0xe0]
mov dword [esp + 4], eax
mov dword [esp + 8], edi
mov eax, dword [ebp - 0xe8]
mov dword [esp], eax
call sym._memcpy
mov eax, ebx
mov edx, dword [ebp + 8]
shl eax, 0xc
add eax, dword [ebp - 0x104]
cmp esi, 0x400
jle 0x407166
mov esi, dword [ebp - 0x154]
add esi, dword [ebp + ebx*4 - 0x80]
lea edi, [eax + 4]
add ebx, 1
mov ecx, dword [esi]
and edi, 0xfffffffc
mov dword [eax], ecx
mov ecx, dword [esi + 0xffc]
mov dword [eax + 0xffc], ecx
sub eax, edi
lea ecx, [eax + 0x1000]
sub esi, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
cmp dword [ebp - 0xfc], ebx
jle 0x4071d2
fld dword [edx + 0x6c]
mov esi, dword [edx + 0x68]
mov ebx, 1
jmp 0x406fcd
mov edi, dword [ebp - 0x140]
mov dword [ebp + 8], edx
mov esi, ebx
shl esi, 0xa
mov dword [esp + 8], edi
mov edi, dword [ebp - 0x108]
mov edx, dword [ebp - 0x104]
mov dword [esp], eax
lea ecx, [edi + esi]
sub esi, edi
lea ecx, [edx + ecx*4]
mov dword [esp + 4], ecx
call sym._memmove
mov edx, dword [ebp - 0x104]
mov eax, dword [ebp + ebx*4 - 0x80]
add ebx, 1
lea ecx, [edx + esi*4 + 0x1000]
mov esi, dword [ebp - 0x154]
add eax, 0x1000
mov dword [esp + 4], eax
mov dword [esp + 8], esi
mov dword [esp], ecx
call sym._memcpy
mov edx, dword [ebp + 8]
cmp dword [ebp - 0xfc], ebx
jg 0x407156
mov eax, dword [ebp - 0xb4]
mov dword [ebp - 0x1c0], eax
fld dword [0x41e798]
fld dword [ebp - 0x1a8]
mov esp, dword [ebp - 0x13c]
fcompi st(1)
ja 0x407637
mov eax, dword [ebp + 8]
fld dword [eax + 0x6c]
fcompi st(1)
fstp st(0)
ja 0x407639
mov dword [ebp - 0x1f4], 0
jmp 0x407218
fstp st(0)
fstp st(0)
mov eax, dword [ebp - 0x1d0]
test eax, eax
jne 0x4076a3
mov eax, dword [ebp - 0xf4]
test eax, eax
jne 0x407245
mov eax, dword [ebp - 0x11c]
add eax, 0xf
cmp eax, dword [ebp - 0x158]
jl 0x40afad
mov dword [ebp - 0x120], 0
mov eax, dword [ebp + 8]
mov ebx, dword [eax + 0x18]
test ebx, ebx
jle 0x4072c0
mov eax, dword [eax + 0x40]
test eax, eax
jne 0x4072c0
cmp dword [ebp - 0x17c], 0xe
jg 0x407282
cmp byte [ebp - 0x15c], 0
je 0x407282
mov eax, dword [ebp + 8]
cmp dword [eax + 0xb8], 2
setne al
movzx eax, al
mov dword [esp + 8], eax
lea eax, [ebp - 0xc0]
lea edx, [ebp - 0xb8]
mov dword [esp + 4], eax
lea eax, [ebp - 0xbc]
mov dword [esp + 0xc], edx
mov dword [esp], eax
mov ecx, dword [ebp - 0xfc]
mov edx, dword [ebp - 0x134]
mov eax, dword [ebp - 0xdc]
call dbg.transient_analysis
mov dword [ebp - 0x120], eax
mov eax, dword [ebp - 0xec]
imul eax, dword [ebp - 0xf8]
mov edi, dword [ebp - 0xf0]
mov dword [ebp - 0x1a4], eax
shl eax, 2
mov dword [ebp - 0x1c4], eax
test edi, edi
jne 0x40907c
mov eax, dword [ebp - 0x160]
imul eax, dword [ebp - 0xfc]
lea eax, [eax*4 + 0xf]
shr eax, 4
shl eax, 4
call fcn.004166d0
sub esp, eax
lea eax, [esp + 0x5c]
mov dword [ebp - 0xe4], eax
mov eax, dword [ebp - 0x18c]
lea edx, [eax + 0xf]
shr edx, 4
shl edx, 4
mov eax, edx
call fcn.004166d0
sub esp, eax
lea eax, [esp + 0x5c]
mov dword [ebp - 0x150], eax
mov eax, edx
call fcn.004166d0
mov dword [ebp - 0x120], 0
sub esp, eax
mov dword [ebp - 0x174], 0
lea eax, [esp + 0x5c]
mov dword [ebp - 0x114], eax
mov dword [ebp - 0x170], 1
mov eax, dword [ebp - 0x1c4]
add eax, 0xf
mov dword [ebp - 0x180], eax
shr eax, 4
shl eax, 4
call fcn.004166d0
mov dword [ebp - 0x104], 0
sub esp, eax
lea eax, [esp + 0x5c]
mov dword [ebp - 0x198], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x48]
mov dword [esp + 0x14], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x1c]
mov dword [esp + 0x10], eax
mov eax, dword [ebp - 0xf0]
mov dword [esp + 0xc], eax
mov eax, dword [ebp - 0xfc]
mov dword [esp + 8], eax
mov esi, dword [ebp - 0xec]
mov dword [esp + 4], esi
mov ebx, dword [ebp - 0xe4]
mov dword [esp], ebx
mov eax, dword [ebp - 0x10c]
mov ecx, dword [ebp - 0xdc]
mov edx, dword [ebp - 0x174]
call dbg.compute_mdcts
fld dword [ebx]
mov eax, ebx
fucompi st(0)
jp 0x40b9b8
cmp esi, 1
je 0x409059
mov ebx, dword [ebp - 0x108]
fld dword [eax + ebx*4]
fucompi st(0)
jp 0x40b9b8
mov byte [ebp - 0x192], 0
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x48]
mov dword [esp + 0x18], eax
mov eax, dword [ebp - 0xf0]
mov dword [esp + 0x14], eax
mov eax, dword [ebp - 0xec]
mov dword [esp + 0x10], eax
mov eax, dword [ebp - 0x118]
mov dword [esp + 0xc], eax
mov eax, dword [ebp - 0x150]
mov dword [esp + 8], eax
mov eax, dword [ebp - 0xe4]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x10c]
mov dword [esp], eax
call dbg.compute_band_energies
mov eax, dword [ebp + 8]
mov ebx, dword [eax + 0x40]
test ebx, ebx
je 0x4074b5
mov ecx, dword [ebp - 0xd8]
cmp ecx, 2
jle 0x4074b5
mov edx, dword [ebp - 0x150]
fld dword [0x41e820]
mov eax, 2
fmul dword [edx]
lea esi, [esi]
fld dword [edx + eax*4]
fxch st(1)
fcomi st(1)
fxch st(1)
fcmovbe st(0), st(1)
fld dword [0x41e764]
fxch st(1)
fcomi st(1)
fcmovbe st(0), st(1)
fstp st(1)
fstp dword [edx + eax*4]
add eax, 1
cmp ecx, eax
jne 0x407490
fstp st(0)
mov eax, dword [ebp - 0xec]
mov dword [esp + 0x14], eax
mov eax, dword [ebp - 0x114]
mov dword [esp + 0x10], eax
mov eax, dword [ebp - 0x150]
mov dword [esp + 0xc], eax
mov ebx, dword [ebp - 0xd8]
mov dword [esp + 8], ebx
mov eax, dword [ebp - 0x118]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x10c]
mov dword [esp], eax
call dbg.amp2Log2
mov eax, dword [ebp - 0x180]
shr eax, 4
shl eax, 4
call fcn.004166d0
sub esp, eax
shl ebx, 2
lea eax, [esp + 0x5c]
mov dword [ebp - 0x134], ebx
mov dword [ebp - 0x168], eax
mov dword [esp + 8], ebx
mov dword [esp + 4], 0
mov dword [esp], eax
call sym._memset
mov ecx, dword [ebp - 0xf4]
test ecx, ecx
jne 0x4077dd
mov eax, dword [ebp + 8]
mov ebx, dword [eax + 0xec]
mov dword [ebp - 0x11c], ebx
test ebx, ebx
je 0x4077dd
mov eax, dword [eax + 0x40]
mov dword [ebp - 0x100], eax
test eax, eax
jne 0x40a7f2
mov eax, dword [ebp + 8]
mov edx, dword [eax + 0x5c]
mov eax, 2
cmp edx, eax
cmovge eax, edx
mov edx, dword [ebp - 0xec]
mov dword [ebp - 0xe8], eax
test edx, edx
jle 0x40b99c
mov edi, dword [ebp - 0xf8]
fldz
xor ecx, ecx
mov dword [ebp - 0xe0], 0
fld st(0)
lea esi, [edi*4]
lea edi, [ebx + eax*2]
lea ebx, [eax + 1]
mov dword [ebp - 0x110], esi
mov dword [ebp - 0xd4], ebx
mov ebx, dword [ebp - 0x12c]
add ebx, eax
mov eax, 1
sub eax, dword [ebp - 0xe8]
jmp 0x40761f
fld dword [0x41e79c]
fxch st(1)
fcomi st(1)
ja 0x40ab60
fstp st(0)
movsx edx, word [ebx + eax + 1]
movsx esi, word [ebx + eax - 1]
sub edx, esi
mov dword [ebp - 0xd0], edx
fild dword [ebp - 0xd0]
add ecx, edx
mov dword [ebp - 0xd0], eax
add eax, 2
fmul st(1)
faddp st(2)
fild dword [ebp - 0xd0]
fmulp st(1)
faddp st(2)
cmp dword [ebp - 0xd4], eax
je 0x409151
fld dword [edi + eax*2 - 2]
fld dword [0x41e824]
fcompi st(1)
ja 0x4075d0
fstp st(0)
fld dword [0x41e760]
jmp 0x4075e2
fstp st(0)
mov eax, dword [ebp + 8]
mov edx, dword [eax + 0x78]
test edx, edx
je 0x407656
fld qword [0x41e808]
fld dword [eax + 0x7c]
fcompi st(1)
fstp st(0)
jbe 0x407208
mov eax, dword [ebp + 8]
fild dword [ebp - 0x1c0]
mov dword [ebp - 0x1f4], 1
fild dword [eax + 0x68]
fld qword [0x41e810]
fmul st(1)
fxch st(2)
fcomi st(2)
fstp st(2)
ja 0x407214
fmul qword [0x41e818]
xor eax, eax
fcompi st(1)
fstp st(0)
seta al
mov dword [ebp - 0x1f4], eax
mov eax, dword [ebp - 0x1d0]
test eax, eax
je 0x407226
mov dword [esp + 8], 1
mov dword [esp + 4], 1
mov eax, dword [ebp + 0x1c]
mov dword [esp], eax
call dbg.ec_enc_bit_logp
mov eax, dword [ebp - 0x1c0]
mov dword [esp + 8], 6
lea ebx, [eax + 1]
mov eax, 0x1b
bsr esi, ebx
xor esi, 0x1f
sub eax, esi
mov dword [esp + 4], eax
mov edi, eax
mov eax, dword [ebp + 0x1c]
mov dword [esp], eax
call dbg.ec_enc_uint
mov eax, 0x1f
mov ecx, edi
sub eax, esi
mov dword [esp + 8], eax
mov eax, 0x10
shl eax, cl
sub ebx, eax
mov dword [esp + 4], ebx
mov eax, dword [ebp + 0x1c]
mov dword [esp], eax
call dbg.ec_enc_bits
mov dword [esp + 8], 3
mov eax, dword [ebp - 0x164]
mov dword [esp + 4], eax
mov eax, dword [ebp + 0x1c]
mov dword [esp], eax
call dbg.ec_enc_bits
mov dword [esp + 0xc], 2
mov dword [esp + 8], 0x41e734
mov eax, dword [ebp - 0x178]
mov dword [esp + 4], eax
mov eax, dword [ebp + 0x1c]
mov dword [esp], eax
call dbg.ec_enc_icdf
jmp 0x407245
mov eax, dword [edx + 0x70]
fchs
mov dword [ebp - 0x100], eax
mov eax, dword [edx + 0x48]
mov dword [esp + 0x28], 0
mov dword [esp + 0x2c], eax
mov dword [esp + 0x24], 0
mov eax, dword [ebp - 0x100]
fst dword [esp + 0x18]
mov dword [esp + 0x10], ecx
fstp dword [esp + 0x14]
mov dword [esp + 0x20], eax
mov dword [esp + 0x1c], eax
mov dword [ebp - 0x100], ecx
mov dword [esp + 0xc], esi
mov dword [esp + 8], esi
mov eax, dword [ebp + ebx*4 - 0x80]
add eax, 0x1000
mov dword [esp + 4], eax
mov eax, dword [ebp - 0xd0]
mov esi, dword [ebp - 0xdc]
add eax, edi
lea eax, [esi + eax*4]
mov dword [esp], eax
call dbg.comb_filter
mov edx, dword [ebp + 8]
mov ecx, dword [ebp - 0x100]
fld dword [edx + 0x6c]
mov esi, dword [edx + 0x68]
jmp 0x407055
mov eax, dword [ebp + 8]
fldz
fst dword [ebp - 0x1ec]
mov eax, dword [eax + 0x40]
fst dword [ebp - 0x1e4]
mov dword [ebp - 0x100], eax
test eax, eax
je 0x4092f8
fstp dword [ebp - 0x1e8]
mov edi, dword [ebp - 0x104]
test edi, edi
je 0x409fea
mov eax, dword [ebp - 0xf0]
mov esi, dword [ebp - 0xf8]
cmp eax, 1
setg bl
shl esi, 2
mov dword [ebp - 0x104], esi
mov esi, dword [ebp - 0xd8]
lea edi, [esi - 2]
sub esi, 1
mov dword [ebp - 0xe8], edi
mov dword [ebp - 0x1a0], esi
test eax, eax
jne 0x4093dc
mov ebx, dword [ebp - 0x120]
test ebx, ebx
setne byte [ebp - 0xe0]
or dword [ebp - 0x170], ebx
mov ebx, dword [ebp - 0xec]
mov eax, dword [ebp - 0x108]
imul eax, ebx
lea eax, [eax*4 + 0xf]
shr eax, 4
shl eax, 4
call fcn.004166d0
mov esi, dword [ebp - 0x190]
sub esp, eax
lea eax, [esp + 0x5c]
mov dword [ebp - 0x14c], eax
mov dword [esp + 0x18], esi
mov dword [esp + 0x14], ebx
mov esi, dword [ebp - 0x118]
mov dword [esp + 0x10], esi
mov esi, dword [ebp - 0x150]
mov dword [esp + 8], eax
mov dword [esp + 0xc], esi
mov eax, dword [ebp - 0xe4]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x10c]
mov dword [esp], eax
call dbg.normalise_bands
mov eax, ebx
shl eax, 4
sub eax, ebx
cmp eax, dword [ebp - 0x17c]
jg 0x4078eb
mov eax, dword [ebp - 0xf4]
test eax, eax
je 0x40a5d8
mov dword [ebp - 0x140], 0
mov eax, dword [ebp - 0x104]
add eax, 0xf
mov dword [ebp - 0x16c], eax
shr eax, 4
mov edx, eax
shl edx, 4
mov eax, edx
call fcn.004166d0
sub esp, eax
lea eax, [esp + 0x5f]
mov ebx, eax
and eax, 0xfffffffc
mov dword [ebp - 0x15c], eax
shr ebx, 2
mov ecx, eax
mov eax, edx
mov dword [ebp - 0x1f0], ebx
call fcn.004166d0
sub esp, eax
lea eax, [esp + 0x5f]
mov ebx, eax
shr ebx, 2
mov dword [ebp - 0x1fc], ebx
mov ebx, eax
mov eax, edx
and ebx, 0xfffffffc
mov dword [ebp - 0x164], ebx
call fcn.004166d0
sub esp, eax
lea ebx, [esp + 0x5c]
mov dword [ebp - 0x160], esp
mov dword [ebp - 0x130], ebx
mov ebx, dword [ebp + 8]
mov ebx, dword [ebx + 0x40]
mov dword [ebp - 0xdc], ebx
mov ebx, dword [ebp + 8]
mov ebx, dword [ebx + 0x34]
mov dword [ebp - 0x19c], ebx
mov ebx, dword [ebp + 8]
mov ebx, dword [ebx + 0x2c]
mov dword [ebp - 0x1ac], ebx
mov ebx, dword [ebp - 0x10c]
mov edi, dword [ebx + 0x38]
mov ebx, dword [ebp + 8]
mov esi, dword [ebx + 0x3c]
mov ebx, dword [ebp - 0x180]
shr ebx, 4
mov edx, ebx
shl edx, 4
mov eax, edx
call fcn.004166d0
sub esp, eax
mov eax, edx
lea ebx, [esp + 0x5c]
mov dword [ebp - 0x110], ebx
call fcn.004166d0
sub esp, eax
mov eax, dword [ebp - 0x104]
mov dword [esp + 4], 0
lea ebx, [esp + 0x5c]
mov dword [esp + 8], eax
mov dword [esp], ecx
call sym._memset
mov eax, dword [ebp - 0xd8]
test eax, eax
jle 0x407a57
mov eax, 9
sub eax, esi
mov dword [ebp - 0xd0], eax
mov eax, dword [ebp - 0xd8]
fild dword [ebp - 0xd0]
lea ecx, [eax + 5]
mov eax, 5
lea esi, [esi]
fild word [edi + eax*2 - 0xa]
fmul dword [0x41e74c]
mov edx, eax
fadd dword [0x41e748]
imul edx, eax
fadd st(1)
mov dword [ebp - 0xd0], edx
fsub dword [eax*4 + 0x42420c]
fild dword [ebp - 0xd0]
fmul dword [0x41e830]
faddp st(1)
fstp dword [ebx + eax*4 - 0x14]
add eax, 1
cmp ecx, eax
jne 0x407a18
fstp st(0)
mov eax, dword [ebp - 0x134]
add eax, dword [ebp - 0x114]
xor esi, esi
xor edi, edi
mov dword [ebp - 0x1b0], eax
fld dword [0x41e7bc]
mov ecx, eax
lea esi, [esi]
mov eax, dword [ebp - 0xd8]
test eax, eax
jle 0x407aa6
mov eax, dword [ebp - 0x114]
mov edx, ebx
lea eax, [eax + edi*4]
lea esi, [esi]
fld dword [eax]
fsub dword [edx]
fxch st(1)
fcomi st(1)
fcmovbe st(0), st(1)
fstp st(1)
add eax, 4
add edx, 4
cmp ecx, eax
jne 0x407a90
add esi, 1
add ecx, dword [ebp - 0x104]
add edi, dword [ebp - 0xf8]
cmp dword [ebp - 0xec], esi
jg 0x407a78
mov eax, dword [ebp - 0x16c]
fstp dword [ebp - 0x1d4]
mov dword [ebp - 0xe4], esp
shr eax, 4
shl eax, 4
mov edx, eax
call fcn.004166d0
sub esp, eax
mov eax, edx
lea esi, [esp + 0x5c]
call fcn.004166d0
mov edx, dword [ebp - 0xd8]
sub esp, eax
lea eax, [esp + 0x5c]
mov dword [ebp - 0xd0], eax
xor eax, eax
test edx, edx
jle 0x40b170
mov edx, dword [ebp - 0x114]
mov ecx, dword [ebp - 0xd8]
lea esi, [esi]
fld dword [edx + eax*4]
fsub dword [ebx + eax*4]
fstp dword [esi + eax*4]
add eax, 1
cmp ecx, eax
jne 0x407b18
cmp dword [ebp - 0xec], 2
je 0x40a088
mov eax, dword [ebp - 0x134]
mov dword [esp + 4], esi
mov dword [esp + 8], eax
mov eax, dword [ebp - 0xd0]
mov dword [esp], eax
call sym._memcpy
cmp dword [ebp - 0xd8], 1
jle 0x40b18c
mov edi, dword [ebp - 0x134]
lea eax, [esi + 4]
lea edx, [esi + edi]
lea esi, [esi]
fld dword [eax]
fld dword [0x41e7dc]
fsubr dword [eax - 4]
fxch st(1)
fcomi st(1)
fcmovbe st(0), st(1)
fstp st(1)
add eax, 4
fstp dword [eax - 4]
cmp edx, eax
jne 0x407b70
mov eax, dword [ebp - 0xe8]
lea esi, [esi]
nop
fld dword [esi + eax*4]
fld dword [0x41e7b0]
fsubr dword [esi + eax*4 + 4]
fxch st(1)
fcomi st(1)
fcmovbe st(0), st(1)
fstp st(1)
fstp dword [esi + eax*4]
sub eax, 1
jae 0x407b98
mov eax, dword [ebp - 0xd8]
test eax, eax
jle 0x407c8a
fldz
fld dword [ebp - 0x1d4]
fsub dword [0x41e834]
fxch st(1)
mov dword [ebp - 0x100], ebx
fcomi st(1)
fcmovbe st(0), st(1)
fstp st(1)
xor edi, edi
mov ebx, edi
mov edi, dword [ebp - 0xd0]
lea esi, [esi]
fld dword [esi + ebx*4]
fxch st(1)
fucomi st(1)
fxch st(1)
fcmovnbe st(0), st(1)
fxch st(1)
fstp dword [ebp - 0xd4]
fsubr dword [edi + ebx*4]
fadd dword [0x41e748]
fstp dword [esp]
call sym._floorf
mov ecx, 1
fnstcw word [ebp - 0xca]
movzx edx, word [ebp - 0xca]
or dh, 0xc
mov word [ebp - 0xcc], dx
fldcw word [ebp - 0xcc]
fistp dword [ebp - 0xd0]
fldcw word [ebp - 0xca]
mov edx, dword [ebp - 0xd0]
fld dword [ebp - 0xd4]
cmp edx, 0xfffffffb
jl 0x407c6a
mov ecx, edx
mov eax, 0x20
neg ecx
sar eax, cl
test edx, edx
mov edx, 0x20
mov ecx, eax
cmovg ecx, edx
mov eax, dword [ebp - 0x130]
mov dword [eax + ebx*4], ecx
add ebx, 1
cmp dword [ebp - 0xd8], ebx
jne 0x407bf0
fstp st(0)
mov ebx, dword [ebp - 0x100]
mov esi, dword [ebp - 0xdc]
mov edi, dword [ebp - 0xf0]
mov esp, dword [ebp - 0xe4]
test esi, esi
sete dl
test edi, edi
setg al
test dl, al
je 0x407cb7
cmp dword [ebp - 0x17c], 0x32
jg 0x40a0cf
mov ebx, dword [ebp - 0x164]
mov esi, dword [ebp - 0xf4]
lea eax, [ebx + esi*4]
add ebx, dword [ebp - 0x134]
mov edx, ebx
cmp esi, dword [ebp - 0xd8]
jge 0x407ced
lea esi, [esi]
lea esi, [esi]
mov dword [eax], 0xd
add eax, 4
cmp edx, eax
jne 0x407ce0
mov dword [ebp - 0x1f8], 0
mov eax, dword [ebp - 0x16c]
mov esp, dword [ebp - 0x160]
shr eax, 4
shl eax, 4
call fcn.004166d0
mov esi, dword [ebp - 0x140]
sub esp, eax
lea eax, [esp + 0x5c]
mov dword [ebp - 0x168], eax
test esi, esi
jne 0x40958e
mov eax, dword [ebp - 0xf4]
test eax, eax
je 0x408728
mov eax, dword [ebp - 0xb8]
test eax, eax
je 0x4086d4
mov edx, dword [ebp - 0x168]
mov edi, dword [ebp - 0xd8]
mov eax, edx
add edx, dword [ebp - 0x134]
test edi, edi
jle 0x407d69
mov dword [eax], 1
add eax, 4
cmp edx, eax
jne 0x407d5c
mov dword [ebp - 0xe4], 0
mov eax, dword [ebp - 0x180]
shr eax, 4
shl eax, 4
call fcn.004166d0
xor ecx, ecx
mov ebx, dword [ebp - 0xf4]
sub ebx, dword [ebp - 0xd8]
shl ebx, 2
mov edx, dword [ebp - 0x134]
mov esi, dword [ebp - 0x138]
mov edi, dword [ebp - 0x124]
sub esp, eax
mov dword [ebp - 0xd4], ebx
mov ebx, dword [ebp - 0x114]
lea eax, [esp + 0x5c]
mov dword [ebp - 0x11c], eax
nop
mov eax, dword [ebp - 0xd4]
add eax, edx
mov dword [ebp - 0xd0], eax
mov eax, dword [ebp - 0xd8]
cmp dword [ebp - 0xf4], eax
jge 0x407e19
mov eax, dword [ebp - 0xd0]
lea esi, [esi]
fld dword [ebx + eax]
fld dword [esi + eax]
fsubr st(1)
fabs
fld dword [0x41e7dc]
fcompi st(1)
fstp st(0)
jbe 0x407e10
fld dword [0x41e824]
fmul dword [edi + eax]
fsubp st(1)
fstp dword [ebx + eax]
jmp 0x407e12
fstp st(0)
add eax, 4
cmp edx, eax
jne 0x407de8
add ecx, 1
add edx, dword [ebp - 0x104]
cmp dword [ebp - 0xec], ecx
jg 0x407dc0
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x40]
mov dword [esp + 0x40], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x38]
mov dword [esp + 0x3c], eax
mov eax, dword [ebp + 8]
cmp dword [eax + 0x18], 3
setg al
movzx eax, al
mov dword [esp + 0x38], eax
mov eax, dword [ebp + 8]
add eax, 0x54
mov dword [esp + 0x34], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0xc]
mov dword [esp + 0x30], eax
mov eax, dword [ebp - 0x148]
mov dword [esp + 0x2c], eax
mov ebx, dword [ebp - 0xf0]
mov dword [esp + 0x28], ebx
mov eax, dword [ebp - 0xec]
mov dword [esp + 0x24], eax
mov eax, dword [ebp + 0x1c]
mov dword [esp + 0x20], eax
mov eax, dword [ebp - 0x11c]
mov dword [esp + 0x1c], eax
mov eax, dword [ebp - 0x158]
mov dword [esp + 0x18], eax
mov eax, dword [ebp - 0x138]
mov dword [esp + 0x14], eax
mov eax, dword [ebp - 0x114]
mov dword [esp + 0x10], eax
mov eax, dword [ebp - 0x118]
mov dword [esp + 0xc], eax
mov eax, dword [ebp - 0xd8]
mov dword [esp + 8], eax
mov ecx, dword [ebp - 0xf4]
mov dword [esp + 4], ecx
mov esi, dword [ebp - 0x10c]
mov dword [esp], esi
call dbg.quant_coarse_energy
mov esi, dword [ebp + 0x1c]
mov esi, dword [esi + 4]
lea ecx, [esi*8]
mov dword [ebp - 0xd0], esi
mov esi, dword [ebp + 0x1c]
mov dword [ebp - 0xd4], ecx
bsr eax, dword [esi + 0x1c]
mov edi, dword [esi + 0x14]
xor eax, 0x1f
cmp dword [ebp - 0x120], 1
lea edx, [eax + edi - 0x20]
sbb eax, eax
and eax, 2
mov esi, edx
add eax, 2
test ebx, ebx
jle 0x4094c3
mov ecx, dword [ebp - 0xd4]
lea ebx, [eax + edx + 1]
mov dword [ebp - 0xdc], ebx
cmp ecx, ebx
setae bl
movzx ebx, bl
sub ecx, ebx
mov dword [ebp - 0xe8], ebx
mov dword [ebp - 0xd0], ecx
mov ecx, dword [ebp - 0xd8]
cmp dword [ebp - 0xf4], ecx
jge 0x40b387
mov ebx, dword [ebp - 0x120]
mov dword [ebp - 0xdc], edi
mov dword [ebp - 0xe0], 0
mov edi, dword [ebp - 0x168]
neg ebx
sbb ebx, ebx
xor edx, edx
add ebx, 5
mov dword [ebp - 0xd4], ebx
mov ebx, dword [ebp - 0xf4]
jmp 0x407fa4
mov dword [edi + ebx*4], edx
add ebx, 1
cmp dword [ebp - 0xd8], ebx
jle 0x407ff3
mov eax, dword [ebp - 0xd4]
lea ecx, [eax + esi]
cmp ecx, dword [ebp - 0xd0]
ja 0x407f90
mov dword [esp + 8], eax
xor edx, dword [edi + ebx*4]
mov dword [esp + 4], edx
mov eax, dword [ebp + 0x1c]
mov dword [esp], eax
call dbg.ec_enc_bit_logp
mov eax, dword [ebp + 0x1c]
mov esi, dword [ebp + 0x1c]
mov edx, dword [edi + ebx*4]
bsr eax, dword [eax + 0x1c]
mov esi, dword [esi + 0x14]
add ebx, 1
or dword [ebp - 0xe0], edx
mov dword [ebp - 0xdc], esi
xor eax, 0x1f
lea esi, [eax + esi - 0x20]
cmp dword [ebp - 0xd8], ebx
jg 0x407f9e
mov ecx, dword [ebp - 0xe8]
mov edi, dword [ebp - 0xdc]
test ecx, ecx
je 0x40901d
mov eax, dword [ebp - 0xf0]
mov ebx, dword [ebp - 0x120]
lea eax, [eax*8 + 0x41e3c0]
lea eax, [eax + ebx*4]
add eax, dword [ebp - 0xe0]
movzx ecx, byte [eax + 2]
cmp byte [eax], cl
je 0x40901d
mov dword [esp + 8], 1
mov eax, dword [ebp - 0xe4]
mov dword [esp + 4], eax
mov eax, dword [ebp + 0x1c]
mov dword [esp], eax
call dbg.ec_enc_bit_logp
mov eax, dword [ebp + 0x1c]
mov edi, dword [eax + 0x14]
mov eax, dword [ebp + 0x1c]
mov ebx, dword [ebp - 0xd8]
bsr eax, dword [eax + 0x1c]
xor eax, 0x1f
lea edx, [eax + edi - 0x20]
mov eax, dword [ebp - 0xf4]
cmp eax, ebx
jge 0x4080b1
mov esi, dword [ebp - 0x120]
mov ebx, dword [ebp - 0xe4]
mov edi, dword [ebp - 0xf0]
lea ebx, [ebx + esi*2]
mov esi, dword [ebp - 0x168]
lea ecx, [edi*8 + 0x41e3c0]
lea eax, [esi + eax*4]
lea ebx, [ecx + ebx*2]
add esi, dword [ebp - 0x134]
nop
mov ecx, dword [eax]
add eax, 4
add ecx, ebx
movsx ecx, byte [ecx]
mov dword [eax - 4], ecx
cmp esi, eax
jne 0x4080a0
add edx, 3
cmp edx, dword [ebp - 0x158]
jge 0x4080fb
mov eax, dword [ebp + 8]
mov edx, dword [eax + 0x40]
test edx, edx
je 0x40a496
mov dword [eax + 0x64], 0
mov eax, 2
mov ebx, dword [ebp + 8]
mov dword [ebx + 0x50], eax
mov dword [esp + 0xc], 5
mov dword [esp + 8], 0x41e738
mov dword [esp + 4], eax
mov eax, dword [ebp + 0x1c]
mov dword [esp], eax
call dbg.ec_enc_icdf
mov eax, dword [ebp + 8]
mov ebx, dword [eax + 0x40]
test ebx, ebx
je 0x408136
mov esi, dword [ebp - 0x17c]
mov eax, 8
cmp esi, 0x1a
jg 0x408129
mov eax, esi
mov edx, 0x55555556
imul edx
mov eax, esi
sar eax, 0x1f
mov ecx, eax
mov eax, edx
sub eax, ecx
mov ebx, dword [ebp - 0x1f0]
mov dword [ebx*4], eax
mov eax, dword [ebp - 0x16c]
shr eax, 4
shl eax, 4
call fcn.004166d0
sub esp, eax
mov eax, dword [ebp - 0xec]
lea ebx, [esp + 0x5c]
mov dword [ebp - 0x130], ebx
mov dword [esp + 0xc], eax
mov eax, dword [ebp - 0xf0]
mov dword [esp + 4], ebx
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x10c]
mov dword [esp], eax
call dbg.init_caps
mov eax, dword [ebp - 0x158]
shl eax, 3
mov dword [ebp - 0x118], eax
mov eax, dword [ebp + 0x1c]
mov dword [esp], eax
call dbg.ec_tell_frac
mov esi, dword [ebp - 0xf4]
mov dword [ebp - 0xe8], eax
mov eax, dword [ebp - 0xd8]
cmp esi, eax
jge 0x40b1a0
mov edi, dword [ebp - 0x15c]
lea eax, [esi*4]
mov dword [ebp - 0xe0], 0
mov dword [ebp - 0x100], esi
mov dword [ebp - 0x110], 6
add edi, eax
add eax, ebx
mov dword [ebp - 0xdc], edi
mov dword [ebp - 0xe4], eax
lea esi, [esi]
mov esi, dword [ebp - 0x12c]
mov ebx, dword [ebp - 0x100]
movzx ecx, byte [ebp - 0xf0]
movsx edx, word [esi + ebx*2]
movsx eax, word [esi + ebx*2 + 2]
mov ebx, 0x30
mov esi, dword [ebp - 0x118]
sub eax, edx
imul eax, dword [ebp - 0xec]
mov edx, dword [ebp - 0xe0]
mov edi, esi
shl eax, cl
mov ecx, dword [ebp - 0x110]
cmp eax, ebx
cmovge ebx, eax
shl eax, 3
cmp ebx, eax
cmovg ebx, eax
mov eax, dword [ebp - 0xe8]
sub edi, edx
mov dword [ebp - 0xd0], edi
lea eax, [eax + ecx*8]
cmp eax, edi
jge 0x40a0c0
mov dword [ebp - 0xd4], 0
lea eax, [ebx + edx]
sub esi, eax
mov eax, ecx
mov edi, esi
xor esi, esi
mov dword [ebp - 0xd0], esi
mov esi, edi
jmp 0x4082df
mov edi, dword [ebp - 0xdc]
mov edi, dword [edi]
mov dword [esp + 8], eax
xor eax, eax
cmp edi, dword [ebp - 0xd0]
setg al
mov dword [esp + 4], eax
mov eax, dword [ebp + 0x1c]
mov dword [esp], eax
call dbg.ec_enc_bit_logp
mov eax, dword [ebp + 0x1c]
mov dword [esp], eax
call dbg.ec_tell_frac
mov ecx, dword [ebp - 0xd0]
mov dword [ebp - 0xe8], eax
mov edx, eax
cmp edi, ecx
jle 0x4082ef
add ecx, 1
mov edi, esi
sub esi, ebx
add dword [ebp - 0xd4], ebx
mov dword [ebp - 0xd0], ecx
lea ecx, [edx + 8]
lea edx, [ebx + esi]
mov eax, 1
add dword [ebp - 0xe0], ebx
cmp ecx, edx
jge 0x408760
mov edi, dword [ebp - 0xe4]
mov ecx, dword [ebp - 0xd4]
cmp dword [edi], ecx
jg 0x408270
mov esi, dword [ebp - 0xd0]
mov eax, dword [ebp - 0x118]
sub eax, dword [ebp - 0xe0]
mov dword [ebp - 0xd0], eax
test esi, esi
jne 0x408766
mov eax, dword [ebp - 0xdc]
mov esi, dword [ebp - 0xd4]
add dword [ebp - 0x100], 1
mov dword [eax], esi
add eax, 4
mov esi, dword [ebp - 0x100]
add dword [ebp - 0xe4], 4
mov dword [ebp - 0xdc], eax
cmp dword [ebp - 0xd8], esi
jne 0x4081e8
cmp dword [ebp - 0xec], 2
je 0x409cf0
mov dword [ebp - 0xd4], 5
mov eax, dword [ebp - 0xe8]
add eax, 0x2f
cmp eax, dword [ebp - 0xd0]
jge 0x4083c9
mov ecx, dword [ebp - 0xf4]
test ecx, ecx
jle 0x40a62f
mov dword [ebp - 0xd4], 5
mov eax, dword [ebp + 8]
mov dword [eax + 0xe4], 0
mov dword [esp + 0xc], 7
mov dword [esp + 8], 0x41e73c
mov eax, dword [ebp - 0xd4]
mov dword [esp + 4], eax
mov eax, dword [ebp + 0x1c]
mov dword [esp], eax
call dbg.ec_enc_icdf
mov eax, dword [ebp + 0x1c]
mov dword [esp], eax
call dbg.ec_tell_frac
mov dword [ebp - 0xe8], eax
mov esi, dword [ebp - 0x188]
test esi, esi
jle 0x408992
mov eax, dword [ebp - 0x10c]
movzx ecx, byte [ebp - 0x1b4]
mov edi, dword [ebp - 0x128]
mov eax, dword [eax + 0x24]
sub eax, dword [ebp - 0xf0]
mov dword [ebp - 0xe4], eax
mov eax, 0x4fb
sar eax, cl
cmp eax, edi
cmovle edi, eax
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 0x34]
mov eax, dword [ebp - 0xf4]
mov dword [ebp - 0xd0], ecx
test eax, eax
jne 0x408784
mov eax, dword [ebp - 0x1c8]
shl eax, 3
sub esi, eax
test ecx, ecx
jne 0x40a80b
mov eax, dword [ebp + 8]
fld dword [ebp - 0xbc]
mov eax, dword [eax + 0xec]
test eax, eax
mov dword [ebp - 0x114], eax
mov eax, dword [ebp + 8]
setne byte [ebp - 0x128]
mov eax, dword [eax + 0x40]
mov dword [ebp - 0x100], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0xe8]
mov dword [ebp - 0x118], eax
mov eax, dword [ebp + 8]
mov edx, dword [eax + 0x5c]
mov eax, dword [ebp - 0x10c]
mov ecx, dword [eax + 8]
test edx, edx
mov eax, dword [eax + 0x20]
cmove edx, ecx
mov dword [ebp - 0x12c], ecx
movzx ecx, byte [ebp - 0xf0]
mov dword [ebp - 0x108], eax
movsx eax, word [eax + edx*2]
shl eax, cl
cmp dword [ebp - 0xec], 2
mov dword [ebp - 0xdc], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x78]
mov dword [ebp - 0x110], eax
je 0x40a93b
mov eax, dword [ebp - 0x110]
test eax, eax
je 0x4084e1
mov eax, dword [ebp + 8]
fld dword [eax + 0x88]
fld st(0)
fld qword [0x41e8a0]
fcompi st(1)
fstp st(0)
ja 0x40aaf2
fstp st(0)
fnstcw word [ebp - 0xca]
mov ebx, esi
movzx eax, word [ebp - 0xca]
or ah, 0xc
mov word [ebp - 0xcc], ax
movzx ecx, byte [ebp - 0xf0]
mov edx, dword [ebp - 0x1f8]
mov eax, 0x13
shl eax, cl
mov ecx, dword [ebp - 0x108]
sub edx, eax
mov eax, ebx
add eax, edx
mov edx, dword [ebp - 0x12c]
mov dword [ebp - 0x118], eax
fild dword [ebp - 0x118]
fld dword [0x41e87c]
movsx edx, word [ecx + edx*2 - 4]
movzx ecx, byte [ebp - 0xf0]
fsubr st(2)
shl edx, cl
imul edx, dword [ebp - 0xec]
fmulp st(1)
fldcw word [ebp - 0xcc]
fistp dword [ebp - 0x118]
fldcw word [ebp - 0xca]
shl edx, 3
mov dword [ebp - 0x108], edx
mov edx, dword [ebp - 0x110]
fild dword [ebp - 0x108]
fmul dword [ebp - 0x1d4]
fldcw word [ebp - 0xcc]
fistp dword [ebp - 0x108]
fldcw word [ebp - 0xca]
add eax, dword [ebp - 0x118]
mov ecx, dword [ebp - 0x108]
test edx, edx
je 0x408617
mov ebx, dword [ebp - 0x100]
test ebx, ebx
jne 0x40b267
mov edx, dword [ebp + 8]
fld dword [0x41e880]
fsubr dword [edx + 0x7c]
fld dword [0x41e7e4]
fldz
fcompi st(2)
ja 0x4085cc
fstp st(0)
fld dword [0x41e884]
fsubp st(1)
jmp 0x4085ce
fstp st(1)
mov edx, dword [ebp - 0xdc]
shl edx, 3
mov dword [ebp - 0x108], edx
fild dword [ebp - 0x108]
fld dword [0x41e888]
mov edx, dword [ebp - 0x1f4]
fmul st(1)
fmulp st(2)
fxch st(1)
fldcw word [ebp - 0xcc]
fistp dword [ebp - 0x108]
fldcw word [ebp - 0xca]
add eax, dword [ebp - 0x108]
test edx, edx
jne 0x40b443
fstp st(0)
mov ebx, dword [ebp - 0x100]
test ebx, ebx
jne 0x40b347
cmp byte [ebp - 0x128], 0
je 0x40b347
fstp st(0)
mov edx, dword [ebp - 0xdc]
lea ebx, [eax + 3]
shl edx, 3
mov dword [ebp - 0xdc], edx
fild dword [ebp - 0xdc]
fmul dword [ebp - 0x1e4]
fldcw word [ebp - 0xcc]
fistp dword [ebp - 0xdc]
fldcw word [ebp - 0xca]
mov edx, dword [ebp - 0xdc]
add edx, eax
test eax, eax
cmovs eax, ebx
sar eax, 2
cmp edx, eax
cmovge eax, edx
mov edx, eax
sar edx, 2
cmp edx, ecx
cmovl edx, ecx
cmp eax, edx
cmovle edx, eax
jmp 0x40868c
fstp st(0)
lea eax, [esi + esi]
mov ebx, dword [ebp - 0xe0]
mov esi, dword [ebp - 0xe8]
cmp eax, edx
cmovg eax, edx
mov edx, dword [ebp - 0x184]
lea ecx, [eax + esi]
lea eax, [esi + ebx + 0x3f]
sar eax, 6
add eax, 2
test edx, edx
je 0x408888
mov dword [ebp - 0xdc], 0
mov ecx, pe_nt_image_headers32
mov esi, 2
jmp 0x4088ab
cmp dword [ebp - 0x17c], 0xe
jg 0x408728
mov eax, dword [ebp + 8]
cmp dword [eax + 0xb8], 2
je 0x408728
mov esi, dword [ebp - 0xd8]
test esi, esi
jle 0x40b8bb
mov eax, dword [ebp - 0x134]
mov dword [esp + 4], 0
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x168]
mov dword [esp], eax
call sym._memset
mov eax, dword [ebp - 0x120]
mov dword [ebp - 0xe4], eax
jmp 0x407d73
mov edx, dword [ebp - 0x168]
mov ebx, dword [ebp - 0xd8]
mov ecx, dword [ebp - 0x120]
mov eax, edx
add edx, dword [ebp - 0x134]
test ebx, ebx
jle 0x407d69
lea esi, [esi]
mov dword [eax], ecx
add eax, 4
cmp edx, eax
jne 0x408750
jmp 0x407d69
mov dword [ebp - 0xd0], edi
mov esi, dword [ebp - 0x110]
mov eax, 3
cmp esi, eax
cmovge eax, esi
sub eax, 1
mov dword [ebp - 0x110], eax
jmp 0x40830f
mov eax, dword [ebp - 0xec]
mov edx, dword [ebp - 0x188]
mov ebx, dword [ebp - 0xd0]
lea eax, [eax + eax*8 + 4]
shl eax, 3
sub edx, eax
mov eax, 0
cmovs edx, eax
test ebx, ebx
je 0x4087c5
mov eax, dword [ebp + 8]
movzx ecx, byte [ebp - 0xe4]
mov eax, dword [eax + 0xd8]
mov dword [ebp - 0xdc], eax
sar eax, cl
add edx, eax
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0xbc]
cmp eax, 0x63
jle 0x40a83f
cmp eax, 0x64
je 0x4087ec
movzx ecx, byte [ebp - 0x1b4]
mov eax, 0x90
sar eax, cl
sub edx, eax
fnstcw word [ebp - 0xca]
fld dword [ebp - 0xbc]
fld dword [0x41e824]
mov esi, dword [ebp - 0xe8]
movzx eax, word [ebp - 0xca]
fsubr st(1)
fmul dword [0x41e894]
or ah, 0xc
mov word [ebp - 0xcc], ax
fldcw word [ebp - 0xcc]
fistp dword [ebp - 0xdc]
fldcw word [ebp - 0xca]
mov eax, dword [ebp - 0xdc]
fld dword [str.333_]
fxch st(1)
add eax, edx
mov edx, 0x190
cmp eax, edx
cmovge edx, eax
fcompi st(1)
fstp st(0)
cmova eax, edx
lea ecx, [esi + eax]
mov eax, esi
mov esi, dword [ebp - 0xe0]
lea edx, [eax + esi + 0x3f]
mov eax, dword [ebp - 0x204]
sar edx, 6
lea eax, [eax + esi + 0x167]
add edx, 2
sar eax, 6
cmp eax, edx
cmovl eax, edx
mov edx, dword [ebp - 0x184]
test edx, edx
jne 0x4086bb
lea edx, [ecx + 0x20]
sar edx, 6
cmp eax, edx
cmovl eax, edx
cmp edi, eax
cmovle eax, edi
sub ecx, dword [ebp - 0x188]
mov dword [ebp - 0xdc], ecx
mov ecx, eax
mov esi, eax
shl ecx, 6
mov eax, dword [ebp + 8]
fld dword [0x41e7ec]
mov eax, dword [eax + 0xdc]
cmp eax, 0x3c9
jg 0x4088e4
fstp st(0)
lea edx, [eax + 1]
add eax, 0x15
mov ebx, dword [ebp + 8]
mov dword [ebp - 0xe0], eax
fild dword [ebp - 0xe0]
fdivr dword [0x41e7d4]
mov dword [ebx + 0xdc], edx
mov eax, dword [ebp - 0xd0]
test eax, eax
je 0x408976
mov ebx, dword [ebp + 8]
mov eax, ecx
sub eax, dword [ebp - 0x188]
movzx ecx, byte [ebp - 0xe4]
add eax, dword [ebx + 0xd0]
mov dword [ebx + 0xd0], eax
mov edx, eax
mov eax, dword [ebx + 0xd4]
mov dword [ebp - 0xd0], eax
mov eax, dword [ebp - 0xdc]
shl eax, cl
sub eax, dword [ebx + 0xd8]
sub eax, dword [ebp - 0xd0]
mov dword [ebp - 0xdc], eax
fild dword [ebp - 0xdc]
fmulp st(1)
fldcw word [ebp - 0xcc]
fistp dword [ebp - 0xdc]
fldcw word [ebp - 0xca]
mov eax, dword [ebp - 0xdc]
add eax, dword [ebp - 0xd0]
mov dword [ebx + 0xd4], eax
neg eax
mov dword [ebx + 0xd8], eax
test edx, edx
js 0x40afd6
jmp 0x408978
fstp st(0)
cmp esi, edi
cmovle edi, esi
mov dword [ebp - 0x128], edi
mov dword [esp + 4], edi
mov eax, dword [ebp + 0x1c]
mov dword [esp], eax
call dbg.ec_enc_shrink
mov eax, dword [ebp - 0x16c]
shr eax, 4
shl eax, 4
mov edx, eax
call fcn.004166d0
sub esp, eax
mov eax, edx
lea edi, [esp + 0x5c]
call fcn.004166d0
sub esp, eax
lea eax, [esp + 0x5c]
mov dword [ebp - 0xdc], eax
mov eax, edx
call fcn.004166d0
mov esi, dword [ebp - 0x128]
sub esp, eax
lea eax, [esp + 0x5c]
mov dword [ebp - 0xe0], eax
lea eax, [esi*8]
mov dword [ebp - 0xe4], eax
mov eax, dword [ebp + 0x1c]
mov dword [esp], eax
call dbg.ec_tell_frac
mov dword [ebp - 0xd0], 0
mov edx, eax
mov eax, esi
shl eax, 6
sub eax, edx
sub eax, 1
cmp byte [ebp - 0x191], 0
je 0x408a32
mov esi, dword [ebp - 0xf0]
lea edx, [esi*8 + 0x10]
cmp edx, eax
setle dl
movzx edx, dl
lea ebx, [edx*8]
mov dword [ebp - 0xd0], ebx
sub eax, ebx
mov ecx, dword [ebp + 8]
mov ecx, dword [ecx + 0x78]
test ecx, ecx
je 0x408a7e
mov esi, dword [ebp - 0xec]
mov ebx, dword [ebp - 0x1d8]
mov edx, 0xd
imul ecx, esi, 0x7d00
cmp ecx, ebx
jg 0x408a6a
imul ecx, esi, 0xbb80
mov edx, 0x10
cmp ecx, ebx
jle 0x40a872
mov esi, dword [ebp + 8]
mov ecx, dword [esi + 0x98]
cmp edx, ecx
cmovge ecx, edx
mov dword [ebp - 0x1a0], ecx
mov ecx, dword [ebp + 8]
mov edx, dword [ecx + 0x40]
test edx, edx
mov edx, 1
cmove edx, dword [ebp - 0x1a0]
mov dword [esp + 0x48], edx
mov ecx, dword [ebp + 8]
mov edx, dword [ecx + 0x5c]
mov dword [esp + 0x40], 1
mov dword [esp + 0x44], edx
mov ecx, dword [ebp + 0x1c]
mov dword [esp + 0x3c], ecx
mov ecx, dword [ebp - 0xf0]
mov dword [esp + 0x38], ecx
mov ecx, dword [ebp - 0xec]
mov dword [esp + 0x34], ecx
mov ecx, dword [ebp - 0xe0]
mov dword [esp + 0x2c], edi
mov dword [esp + 0x30], ecx
mov ecx, dword [ebp - 0xdc]
mov dword [esp + 0x20], eax
lea eax, [ebp - 0xc4]
mov dword [esp + 0x28], ecx
lea ecx, [ebp - 0x80]
mov dword [esp + 0x24], ecx
mov dword [esp + 0x1c], eax
mov eax, dword [ebp + 8]
add eax, 0xe8
mov dword [esp + 0x18], eax
mov eax, dword [ebp - 0xd4]
mov dword [esp + 0x14], eax
mov eax, dword [ebp - 0x130]
mov dword [esp + 0x10], eax
mov eax, dword [ebp - 0x15c]
mov dword [esp + 0xc], eax
mov eax, dword [ebp - 0xd8]
mov dword [esp + 8], eax
mov eax, dword [ebp - 0xf4]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x10c]
mov dword [esp], eax
call dbg.clt_compute_allocation
mov ebx, eax
mov eax, dword [ebp + 8]
mov edx, ebx
mov eax, dword [eax + 0x5c]
test eax, eax
je 0x408b5a
lea edx, [eax - 1]
cmp edx, ebx
cmovl edx, ebx
add eax, 1
cmp edx, eax
cmovg edx, eax
mov eax, dword [ebp + 8]
mov dword [eax + 0x5c], edx
mov eax, dword [ebp - 0xec]
mov dword [esp + 0x1c], eax
mov ecx, dword [ebp + 0x1c]
mov dword [esp + 0x14], edi
mov dword [esp + 0x18], ecx
mov ecx, dword [ebp - 0x11c]
mov dword [esp + 0x10], ecx
mov ecx, dword [ebp - 0x138]
mov dword [esp + 0xc], ecx
mov ecx, dword [ebp - 0xd8]
mov dword [esp + 8], ecx
mov edx, dword [ebp - 0xf4]
mov dword [esp + 4], edx
mov eax, dword [ebp - 0x10c]
mov dword [esp], eax
call dbg.quant_fine_energy
mov ecx, dword [ebp - 0x1a4]
lea eax, [ecx + 0xf]
shr eax, 4
shl eax, 4
call fcn.004166d0
mov esi, dword [ebp + 8]
mov edx, dword [ebp + 8]
mov esi, dword [esi + 0x48]
mov edx, dword [edx + 0x44]
sub esp, eax
mov eax, dword [ebp - 0x128]
mov dword [ebp - 0xe8], esi
mov esi, dword [ebp + 8]
lea ecx, [esp + 0x5c]
mov dword [ebp - 0xd4], edx
shl eax, 6
sub eax, dword [ebp - 0xd0]
mov dword [ebp - 0x12c], ecx
mov dword [ebp - 0x108], eax
mov eax, dword [ebp + 8]
lea edx, [esi + 0x4c]
mov ecx, dword [esi + 0x18]
mov esi, dword [ebp - 0x80]
mov eax, dword [eax + 0xe8]
mov dword [ebp - 0x100], esi
mov dword [ebp - 0x110], eax
mov eax, dword [ebp - 0xc4]
mov dword [ebp - 0x114], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x50]
mov dword [ebp - 0x118], eax
mov eax, dword [ebp - 0x154]
add eax, dword [ebp - 0x14c]
mov esi, eax
xor eax, eax
cmp dword [ebp - 0xec], 2
cmove eax, esi
mov esi, dword [ebp - 0xd4]
mov dword [esp + 0x58], esi
mov esi, dword [ebp - 0xe8]
mov dword [esp + 0x50], ecx
mov dword [esp + 0x54], esi
mov dword [esp + 0x48], ebx
mov dword [esp + 0x4c], edx
mov edx, dword [ebp - 0xf0]
mov dword [esp + 0x44], edx
mov edx, dword [ebp + 0x1c]
mov dword [esp + 0x40], edx
mov esi, dword [ebp - 0x100]
mov dword [esp + 0x3c], esi
mov ebx, dword [ebp - 0x108]
mov dword [esp + 0x38], ebx
mov ebx, dword [ebp - 0x168]
mov dword [esp + 0x34], ebx
mov esi, dword [ebp - 0x110]
mov dword [esp + 0x30], esi
mov esi, dword [ebp - 0x114]
mov dword [esp + 0x2c], esi
mov esi, dword [ebp - 0x118]
mov dword [esp + 0x28], esi
mov esi, dword [ebp - 0x174]
mov dword [esp + 0x24], esi
mov esi, dword [ebp - 0xdc]
mov dword [esp + 0x20], esi
mov esi, dword [ebp - 0x150]
mov dword [esp + 0x1c], esi
mov ebx, dword [ebp - 0x12c]
mov dword [esp + 0x14], eax
mov dword [esp + 0x18], ebx
mov ebx, dword [ebp - 0x14c]
mov dword [esp + 0x10], ebx
mov ecx, dword [ebp - 0xd8]
mov dword [esp + 0xc], ecx
mov edx, dword [ebp - 0xf4]
mov dword [esp + 8], edx
mov eax, dword [ebp - 0x10c]
mov dword [esp + 4], eax
mov dword [esp], 1
call dbg.quant_all_bands
mov eax, dword [ebp - 0xd0]
test eax, eax
jne 0x409565
mov eax, dword [ebp + 0x1c]
mov ebx, dword [ebp - 0xec]
bsr eax, dword [eax + 0x1c]
mov dword [esp + 0x24], ebx
mov ebx, dword [ebp + 0x1c]
mov dword [esp + 0x20], ebx
mov ebx, dword [ebp + 0x1c]
xor eax, 0x1f
mov edx, dword [ebx + 0x14]
lea edx, [eax + edx - 0x20]
mov eax, dword [ebp - 0xe4]
sub eax, edx
mov dword [esp + 0x1c], eax
mov eax, dword [ebp - 0xe0]
mov dword [esp + 0x14], edi
mov dword [esp + 0x18], eax
mov ebx, dword [ebp - 0x11c]
mov dword [esp + 0x10], ebx
mov eax, dword [ebp - 0x138]
mov dword [esp + 0xc], eax
mov eax, dword [ebp - 0xd8]
mov dword [esp + 8], eax
mov esi, dword [ebp - 0xf4]
mov dword [esp + 4], esi
mov eax, dword [ebp - 0x10c]
mov dword [esp], eax
call dbg.quant_energy_finalise
mov eax, dword [ebp - 0x18c]
mov dword [esp + 4], 0
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x124]
mov dword [esp], eax
call sym._memset
mov ecx, dword [ebp - 0x134]
mov edi, dword [ebp - 0x104]
add ecx, ebx
lea ebx, [esi*4]
xor esi, esi
lea esi, [esi]
mov eax, dword [ebp - 0x11c]
mov edx, dword [ebp - 0x124]
add eax, ebx
add edx, ebx
mov dword [ebp - 0xd0], eax
mov eax, dword [ebp - 0xd8]
cmp dword [ebp - 0xf4], eax
jge 0x408e3e
mov eax, dword [ebp - 0xd0]
jmp 0x408e23
fstp st(1)
fld dword [0x41e7f0]
fucomi st(1)
fcmovbe st(0), st(1)
fstp st(1)
add eax, 4
add edx, 4
fstp dword [edx - 4]
cmp eax, ecx
je 0x408e3e
fld dword [0x41e748]
fld dword [eax]
fcomi st(1)
jbe 0x408e08
fstp st(0)
add eax, 4
add edx, 4
fstp dword [edx - 4]
cmp eax, ecx
jne 0x408e23
add esi, 1
add ecx, edi
add ebx, edi
cmp dword [ebp - 0xec], esi
jg 0x408dd8
mov edi, dword [ebp - 0x184]
test edi, edi
je 0x408e85
mov esi, dword [ebp - 0x1a4]
test esi, esi
jle 0x408e85
mov ebx, dword [ebp - 0x138]
mov edx, dword [ebp - 0x1c4]
mov eax, ebx
add edx, ebx
lea esi, [esi]
mov dword [eax], 0xc1e00000
add eax, 4
cmp edx, eax
jne 0x408e78
mov eax, dword [ebp + 8]
mov ebx, dword [ebp - 0x1c0]
fld dword [ebp - 0x1a8]
cmp byte [ebp - 0x192], 0
mov dword [eax + 0x68], ebx
mov ebx, dword [ebp - 0x178]
fstp dword [eax + 0x6c]
mov dword [eax + 0x70], ebx
jne 0x4094ea
mov ebx, dword [ebp - 0x120]
test ebx, ebx
je 0x409518
mov ecx, dword [ebp - 0x1e0]
mov eax, dword [ebp - 0x1bc]
mov edx, dword [ebp - 0x138]
test ecx, ecx
jle 0x40b334
mov ecx, dword [ebp - 0x1dc]
nop
fld dword [eax]
fld dword [edx]
fcomi st(1)
fcmovnbe st(0), st(1)
fstp st(1)
add eax, 4
add edx, 4
fstp dword [eax - 4]
cmp eax, ecx
jne 0x408ee0
mov ebx, ecx
mov esi, dword [ebp - 0x1cc]
mov edx, dword [ebp - 0x138]
mov ecx, dword [ebp - 0x1bc]
lea esi, [esi]
nop
mov edi, dword [ebp - 0xf4]
test edi, edi
jle 0x408f52
mov edi, dword [ebp - 0xf8]
imul edi, esi
lea eax, [edi*4]
add edi, dword [ebp - 0xf4]
shl edi, 2
lea esi, [esi]
nop
fld dword [0x41e898]
mov dword [edx + eax], 0
fst dword [ebx + eax]
fstp dword [ecx + eax]
add eax, 4
cmp eax, edi
jne 0x408f38
mov edi, dword [ebp - 0xd8]
cmp dword [ebp - 0xf8], edi
jle 0x408f9a
mov edi, dword [ebp - 0xf8]
mov eax, dword [ebp - 0xd8]
imul edi, esi
add eax, edi
add edi, dword [ebp - 0xf8]
shl eax, 2
shl edi, 2
lea esi, [esi]
fld dword [0x41e898]
mov dword [edx + eax], 0
fst dword [ebx + eax]
fstp dword [ecx + eax]
add eax, 4
cmp edi, eax
jne 0x408f80
cmp esi, 1
mov esi, 1
sbb eax, eax
add eax, 2
cmp dword [ebp - 0xfc], eax
jg 0x408f10
mov ecx, dword [ebp - 0x170]
test ecx, ecx
je 0x408fd2
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x74]
mov dword [ebp - 0xd0], eax
add eax, 1
mov dword [ebp - 0x170], eax
mov eax, dword [ebp + 8]
mov ebx, dword [ebp - 0x170]
mov dword [eax + 0x74], ebx
mov eax, dword [ebp + 0x1c]
mov ebx, dword [ebp + 8]
mov eax, dword [eax + 0x1c]
mov dword [ebx + 0x4c], eax
mov eax, dword [ebp + 0x1c]
mov dword [esp], eax
call dbg.ec_enc_done
mov eax, dword [ebp + 0x1c]
mov edx, dword [eax + 0x2c]
mov eax, 0xfffffffd
test edx, edx
cmove eax, dword [ebp - 0x128]
mov dword [ebp - 0x128], eax
mov eax, dword [ebp - 0x128]
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret
mov dword [ebp - 0xe4], 0
jmp 0x408052
fstp st(1)
mov dword [ebp - 0x164], 0
fldz
mov dword [ebp - 0x1d0], 0
fchs
fstp dword [ebp - 0x130]
fldz
fstp dword [ebp - 0x1a8]
jmp 0x406fb4
cmp dword [ebp - 0xfc], 2
jne 0x407410
mov dword [ebp - 0xc0], 0
mov byte [ebp - 0x192], 1
jmp 0x407417
mov eax, dword [ebp + 0x1c]
mov esi, dword [ebp + 0x1c]
bsr edx, dword [eax + 0x1c]
mov eax, dword [ebp - 0x14c]
sub eax, dword [ebp - 0x150]
mov ecx, dword [esi + 0x14]
shl eax, 2
add eax, 0xf
xor edx, 0x1f
shr eax, 4
lea edx, [edx + ecx - 0x1e]
shl eax, 4
cmp edx, dword [ebp - 0x158]
jl 0x40a558
call fcn.004166d0
sub esp, eax
lea eax, [esp + 0x5c]
mov dword [ebp - 0xe4], eax
mov eax, dword [ebp - 0x18c]
add eax, 0xf
shr eax, 4
shl eax, 4
mov edx, eax
jmp 0x407326
cmp dword [ebp - 0x11c], 1
jle 0x4090ea
add edx, dword [ebp - 0x11c]
cmp edi, 0xffffffff
je 0x409f83
mov dword [ebp - 0x188], 0
mov eax, dword [ebp - 0x10c]
mov ecx, dword [eax]
lea eax, [edx + ecx*4]
shl ecx, 3
cdq
idiv ecx
mov ecx, dword [ebp - 0x128]
mov edx, 2
cmp eax, ecx
cmovg eax, ecx
cmp eax, edx
cmovge edx, eax
imul eax, edx, 0x190
mov ecx, edx
sub ecx, dword [ebp - 0xd0]
mov dword [ebp - 0x128], edx
mov dword [ebp - 0x17c], ecx
movzx ecx, byte [ebp - 0x1b4]
sar eax, cl
sub eax, dword [ebp - 0xd4]
jmp 0x406a4b
add dword [ebp - 0xe0], 1
add edi, dword [ebp - 0x110]
mov eax, dword [ebp - 0xe0]
cmp dword [ebp - 0xec], eax
jne 0x4075c0
test ecx, ecx
jle 0x40b998
mov dword [ebp - 0xd0], ecx
fild dword [ebp - 0xd0]
mov esi, dword [ebp - 0xe8]
fdivp st(1)
lea eax, [esi - 1]
imul eax, dword [ebp - 0xec]
imul eax, dword [ebp - 0xd4]
imul eax, esi
mov dword [ebp - 0xd0], eax
fadd dword [0x41e794]
fxch st(1)
fmul dword [0x41e828]
fild dword [ebp - 0xd0]
fdivp st(1)
fmul dword [0x41e748]
fld dword [0x41e7a0]
fcomi st(1)
jbe 0x40b380
fstp st(0)
fld dword [0x41e7a4]
fxch st(1)
fcomi st(1)
fcmovbe st(0), st(1)
fstp st(1)
mov eax, dword [ebp - 0xe8]
mov ecx, dword [ebp - 0x12c]
movzx edx, word [ebx + eax]
mov eax, edx
shr ax, 0xf
add eax, edx
xor edx, edx
sar ax, 1
cmp ax, word [ecx + 2]
jle 0x40920d
add edx, 1
cmp word [ecx + edx*2 + 2], ax
jl 0x409203
mov esi, dword [ebp - 0xe8]
mov edi, dword [ebp - 0x11c]
lea ecx, [edx*4]
mov eax, edx
neg eax
sub esi, edx
add edx, dword [ebp - 0xf8]
lea ebx, [edi + ecx]
add ecx, dword [ebp - 0x168]
lea edx, [edi + edx*4]
mov edi, dword [ebp - 0xec]
mov dword [ebp - 0xd0], eax
fild dword [ebp - 0xd0]
fmul st(1)
fadd st(2)
fld dword [ebx + eax*4]
cmp edi, 2
jne 0x409261
fld dword [edx + eax*4]
fxch st(1)
fcomi st(1)
fcmovbe st(0), st(1)
fstp st(1)
fldz
fcomi st(1)
fcmovnbe st(0), st(1)
fstp st(1)
fsubrp st(1)
fld dword [0x41e824]
fxch st(1)
fcomi st(1)
jbe 0x409285
fsubrp st(1)
add dword [ebp - 0x100], 1
fstp dword [ecx + eax*4]
jmp 0x409289
fstp st(0)
fstp st(0)
add eax, 1
cmp esi, eax
jne 0x40923e
cmp dword [ebp - 0x100], 2
jle 0x4092dc
fxch st(1)
fadd dword [0x41e824]
fldz
fxch st(1)
fcomi st(1)
fstp st(1)
ja 0x40b6e0
mov ebx, dword [ebp - 0x168]
mov esi, dword [ebp - 0xe8]
mov eax, ebx
lea edx, [ebx + esi*4]
fld dword [0x41e824]
fsubr dword [eax]
fldz
fucomi st(1)
fcmovbe st(0), st(1)
fstp st(1)
add eax, 4
fstp dword [eax - 4]
cmp edx, eax
jne 0x4092c0
jmp 0x4092de
fxch st(1)
fadd dword [0x41e794]
fstp dword [ebp - 0x1e4]
fmul dword [0x41e768]
fstp dword [ebp - 0x1ec]
jmp 0x4092fa
fstp st(0)
mov eax, dword [ebp - 0x174]
fldz
test eax, eax
je 0x409314
fstp st(0)
fild dword [ebp - 0xf0]
fmul dword [0x41e748]
mov eax, dword [ebp - 0xf4]
mov esi, dword [ebp - 0xd8]
cmp eax, esi
jge 0x40b3e0
mov ebx, dword [ebp - 0xf8]
mov ecx, dword [ebp - 0x114]
fldz
fld dword [0x41e7a8]
lea edx, [ecx + ebx*4]
mov ebx, dword [ebp - 0xec]
lea esi, [esi]
fsub dword [0x41e7d4]
fld dword [ecx + eax*4]
fsub st(3)
fxch st(1)
fcomi st(1)
fcmovbe st(0), st(1)
fstp st(1)
cmp ebx, 2
jne 0x40936d
fld dword [edx + eax*4]
fsub st(3)
fxch st(1)
fcomi st(1)
fcmovbe st(0), st(1)
fstp st(1)
fadd st(1), st(0)
add eax, 1
cmp esi, eax
jne 0x409348
fstp st(0)
fstp st(1)
mov eax, dword [ebp + 8]
fld dword [eax + 0xf0]
mov eax, dword [ebp - 0xd8]
sub eax, dword [ebp - 0xf4]
mov dword [ebp - 0xd0], eax
fild dword [ebp - 0xd0]
fdivp st(2)
fsub st(1), st(0)
fxch st(1)
fst dword [ebp - 0x1e8]
fld dword [0x41e7b8]
fcomi st(1)
ja 0x40a605
fstp st(0)
fld dword [0x41e7b0]
fxch st(1)
fcomi st(1)
jbe 0x40a865
fstp st(0)
fld dword [0x41e7ac]
fxch st(1)
fstp dword [ebp - 0x1e8]
jmp 0x40a615
mov eax, dword [ebp + 0x1c]
mov esi, dword [ebp + 0x1c]
bsr eax, dword [eax + 0x1c]
mov edi, dword [esi + 0x14]
mov esi, dword [ebp - 0x120]
xor eax, 0x1f
lea eax, [eax + edi - 0x1e]
cmp eax, dword [ebp - 0x158]
setl cl
test esi, esi
sete dl
and cl, dl
mov byte [ebp - 0xe0], cl
jne 0x40affb
mov esi, dword [ebp - 0x120]
test esi, esi
setne byte [ebp - 0xe0]
movzx ecx, byte [ebp - 0xe0]
or dword [ebp - 0x170], esi
and ebx, ecx
mov byte [ebp - 0x191], bl
cmp dword [ebp - 0x158], eax
jle 0x407863
movzx eax, byte [ebp - 0xe0]
movzx ebx, byte [ebp - 0x191]
mov byte [ebp - 0x191], al
mov dword [esp + 8], 3
mov eax, dword [ebp - 0x120]
mov dword [esp + 4], eax
mov eax, dword [ebp + 0x1c]
mov dword [esp], eax
call dbg.ec_enc_bit_logp
movzx eax, byte [ebp - 0x191]
mov byte [ebp - 0x191], bl
mov byte [ebp - 0xe0], al
jmp 0x407863
cmp dword [ebp - 0x148], 0x22
jg 0x406eb2
jmp 0x406eac
mov dword [ebp - 0x204], 1
mov dword [ebp - 0x11c], 1
mov dword [ebp - 0xd0], 0
jmp 0x406973
mov dword [ebp - 0xd0], ecx
mov ebx, dword [ebp - 0xd8]
mov dword [ebp - 0xe8], 0
cmp dword [ebp - 0xf4], ebx
jl 0x407f57
jmp 0x4080b1
mov ebx, dword [ebp - 0x138]
mov edi, dword [ebp - 0x104]
mov eax, ebx
mov dword [esp + 4], ebx
add eax, edi
mov dword [esp + 8], edi
mov dword [esp], eax
call sym._memcpy
mov ebx, dword [ebp - 0x120]
test ebx, ebx
jne 0x408ebe
mov edi, dword [ebp - 0x18c]
mov dword [esp + 8], edi
mov esi, dword [ebp - 0x1bc]
mov dword [esp + 4], esi
mov ebx, dword [ebp - 0x1dc]
mov dword [esp], ebx
call sym._memcpy
mov dword [esp + 8], edi
mov eax, dword [ebp - 0x138]
mov edi, esi
mov dword [esp], esi
mov dword [esp + 4], eax
call sym._memcpy
mov esi, dword [ebp - 0x1cc]
mov edx, dword [ebp - 0x138]
mov ecx, edi
jmp 0x408f10
mov dword [esp + 8], 1
mov eax, dword [ebp + 8]
cmp dword [eax + 0x74], 1
setle al
movzx eax, al
mov dword [esp + 4], eax
mov eax, dword [ebp + 0x1c]
mov dword [esp], eax
call dbg.ec_enc_bits
jmp 0x408d26
mov eax, 0x5000
fld dword [0x41e748]
fsub dword [ebp - 0xbc]
mov dword [ebp - 0x214], esp
cdq
fld dword [0x41e7cc]
mov esi, dword [ebp - 0xc0]
idiv dword [ebp - 0x17c]
fstp dword [ebp - 0xe4]
fld dword [0x41e854]
mov edx, 0x4e
cmp eax, edx
cmovl eax, edx
add eax, 2
fcompi st(1)
mov dword [ebp - 0x110], eax
jbe 0x40a854
fstp st(0)
mov edi, dword [ebp - 0x118]
lea eax, [edi*4]
mov dword [ebp - 0x208], eax
add eax, 0xf
shr eax, 4
shl eax, 4
mov ebx, eax
call fcn.004166d0
sub esp, eax
lea eax, [esp + 0x5f]
mov ecx, eax
and eax, 0xfffffffc
mov dword [ebp - 0x144], eax
mov eax, dword [ebp - 0x10c]
shr ecx, 2
mov dword [ebp - 0x218], ecx
mov edx, dword [eax + 0x20]
lea eax, [edi + edi]
mov dword [ebp - 0x1ac], eax
movsx ecx, word [edx + edi*2 - 2]
movsx eax, word [edx + edi*2]
sub eax, ecx
movzx ecx, byte [ebp - 0xf0]
shl eax, cl
lea eax, [eax*4 + 0xf]
shr eax, 4
mov ecx, eax
shl ecx, 4
mov eax, ecx
call fcn.004166d0
sub esp, eax
mov eax, ecx
lea edi, [esp + 0x5c]
call fcn.004166d0
sub esp, eax
mov eax, ebx
lea ecx, [esp + 0x5c]
mov dword [ebp - 0x200], ecx
call fcn.004166d0
sub esp, eax
mov eax, ebx
lea ecx, [esp + 0x5c]
mov dword [ebp - 0x198], ecx
call fcn.004166d0
mov ebx, dword [ebp - 0x118]
sub esp, eax
lea ecx, [esp + 0x5c]
mov dword [ebp - 0x19c], ecx
test ebx, ebx
jle 0x409923
mov ecx, dword [ebp - 0x120]
mov ebx, dword [ebp - 0xf0]
xor eax, eax
mov dword [ebp - 0x11c], 0
imul esi, dword [ebp - 0x108]
test ecx, ecx
mov ecx, ebx
cmovne eax, ebx
neg ecx
mov dword [ebp - 0x1b0], esi
lea esi, [ecx + ecx]
mov dword [ebp - 0xd0], eax
lea eax, [ebx + 1]
fild dword [ebp - 0xd0]
mov dword [ebp - 0x20c], esi
mov dword [ebp - 0x210], eax
fstp dword [ebp - 0x1b8]
lea esi, [esi]
mov esi, dword [ebp - 0x11c]
movsx eax, word [edx + esi]
movsx edx, word [edx + esi + 2]
lea ebx, [esi + 2]
mov dword [ebp - 0x160], ebx
sub edx, eax
mov esi, edx
mov ebx, edx
mov edx, dword [ebp - 0xf0]
mov dword [ebp - 0x13c], esi
mov ecx, edx
shl ebx, cl
xor ecx, ecx
cmp esi, 1
sete cl
mov dword [ebp - 0xd0], ebx
shl ebx, 2
mov esi, ecx
mov ecx, edx
shl eax, cl
mov ecx, dword [ebp - 0x14c]
add eax, dword [ebp - 0x1b0]
mov dword [esp + 8], ebx
mov dword [esp], edi
lea eax, [ecx + eax*4]
mov dword [esp + 4], eax
call sym._memcpy
mov eax, dword [ebp - 0xd0]
cmp dword [ebp - 0x13c], 1
setne cl
and cl, byte [ebp - 0xe0]
test eax, eax
jle 0x40a020
mov eax, edi
fldz
lea edx, [edi + ebx]
lea esi, [esi]
fld dword [eax]
add eax, 4
fabs
faddp st(1)
cmp edx, eax
jne 0x409790
fld dword [ebp - 0x1b8]
fmul dword [ebp - 0xe4]
fmul st(1)
faddp st(1)
fstp dword [ebp - 0xdc]
test cl, cl
jne 0x409c62
jmp 0x4097c0
fstp st(0)
nop
mov dword [ebp - 0x100], 0
mov eax, dword [ebp - 0x120]
or eax, esi
mov esi, dword [ebp - 0xf0]
cmp eax, 1
adc esi, 0
add ebx, edi
xor eax, eax
mov dword [ebp - 0xe8], esi
test esi, esi
je 0x409896
mov esi, eax
lea esi, [esi]
mov edx, dword [ebp - 0xf0]
mov ecx, esi
add esi, 1
sub edx, esi
cmp byte [ebp - 0xe0], 0
cmove edx, esi
mov dword [ebp - 0xd4], edx
mov edx, 1
shl edx, cl
mov dword [esp + 8], edx
mov edx, dword [ebp - 0xd0]
mov dword [esp], edi
sar edx, cl
mov dword [esp + 4], edx
call dbg.haar1
mov ecx, dword [ebp - 0xd0]
test ecx, ecx
jle 0x4098f0
mov edx, edi
fldz
lea esi, [esi]
lea esi, [esi]
fld dword [edx]
add edx, 4
fabs
faddp st(1)
cmp ebx, edx
jne 0x409850
fild dword [ebp - 0xd4]
fmul dword [ebp - 0xe4]
fmul st(1)
faddp st(1)
fld dword [ebp - 0xdc]
fcompi st(1)
jbe 0x409888
mov dword [ebp - 0x100], esi
fstp dword [ebp - 0xdc]
jmp 0x40988a
fstp st(0)
cmp dword [ebp - 0xe8], esi
jne 0x4097f8
mov eax, dword [ebp - 0x100]
mov ebx, dword [ebp - 0x144]
mov esi, dword [ebp - 0x11c]
mov edx, eax
add eax, eax
neg edx
add edx, edx
cmp byte [ebp - 0xe0], 0
cmove eax, edx
cmp dword [ebp - 0x13c], 1
mov dword [ebx + esi*2], eax
je 0x4098f7
mov eax, dword [ebp - 0x160]
cmp dword [ebp - 0x1ac], eax
je 0x409923
mov esi, dword [ebp - 0x10c]
mov dword [ebp - 0x11c], eax
mov edx, dword [esi + 0x20]
jmp 0x409700
fldz
jmp 0x40985d
test eax, eax
je 0x409903
cmp dword [ebp - 0x20c], eax
jne 0x4098c6
mov ebx, dword [ebp - 0x144]
mov esi, dword [ebp - 0x11c]
sub eax, 1
mov dword [ebx + esi*2], eax
mov eax, dword [ebp - 0x160]
cmp dword [ebp - 0x1ac], eax
jne 0x4098d4
mov eax, dword [ebp - 0x1fc]
mov eax, dword [eax*4]
mov dword [ebp - 0x100], eax
mov eax, dword [ebp - 0x218]
mov eax, dword [eax*4]
mov dword [ebp - 0x11c], eax
mov eax, dword [ebp - 0x120]
test eax, eax
lea ebx, [eax + eax]
mov eax, 0
cmove eax, dword [ebp - 0x110]
mov dword [ebp - 0x160], ebx
mov dword [ebp - 0x13c], eax
lea eax, [ebp - 0x80]
mov dword [ebp - 0xe8], eax
mov eax, dword [ebp - 0xf0]
lea eax, [ebx + eax*4]
add eax, eax
mov dword [ebp - 0xe4], eax
mov eax, dword [ebp - 0x164]
add eax, dword [ebp - 0x208]
mov dword [ebp - 0xdc], eax
mov edi, dword [ebp - 0xe4]
mov ebx, dword [ebp - 0x11c]
mov ecx, dword [ebp - 0x100]
movsx eax, byte [edi + 0x41e3c0]
mov edx, ebx
add eax, eax
sub edx, eax
mov dword [ebp - 0xd0], eax
mov eax, edx
neg eax
cmovs eax, edx
imul eax, ecx
mov esi, eax
movsx eax, byte [edi + 0x41e3c1]
add eax, eax
sub ebx, eax
mov dword [ebp - 0xd4], eax
mov eax, ebx
mov edx, ebx
neg eax
cmovns edx, eax
imul edx, ecx
add edx, dword [ebp - 0x13c]
cmp dword [ebp - 0x118], 1
jle 0x409a5f
mov eax, dword [ebp - 0x164]
lea edi, [eax + 4]
mov eax, dword [ebp - 0x144]
lea ebx, [eax + 4]
mov eax, esi
lea esi, [esi]
mov esi, dword [ebp - 0x110]
lea ecx, [esi + edx]
cmp ecx, eax
cmovg ecx, eax
add eax, esi
mov esi, edx
cmp eax, edx
mov edx, dword [ebx]
cmovle esi, eax
sub edx, dword [ebp - 0xd0]
mov eax, edx
neg eax
cmovs eax, edx
imul eax, dword [edi]
add eax, ecx
mov ecx, dword [ebx]
sub ecx, dword [ebp - 0xd4]
mov edx, ecx
neg edx
cmovs edx, ecx
imul edx, dword [edi]
add ebx, 4
add edi, 4
add edx, esi
cmp dword [ebp - 0xdc], edi
jne 0x409a10
mov esi, eax
cmp esi, edx
mov eax, dword [ebp - 0xe8]
lea ebx, [ebp - 0x78]
cmovg esi, edx
add dword [ebp - 0xe4], 2
add eax, 4
mov dword [eax - 4], esi
mov dword [ebp - 0xe8], eax
cmp ebx, eax
jne 0x409998
mov eax, dword [ebp - 0x80]
cmp dword [ebp - 0x7c], eax
setl al
mov esi, dword [ebp - 0x11c]
mov edi, dword [ebp - 0x100]
movzx eax, al
and eax, dword [ebp - 0xe0]
mov ebx, eax
mov dword [ebp - 0xe4], eax
mov eax, dword [ebp - 0x160]
mov ecx, esi
add eax, ebx
mov ebx, dword [ebp - 0xf0]
lea edx, [ebx*8 + 0x41e3c0]
lea edx, [edx + eax*2]
movsx eax, byte [edx]
add eax, eax
sub ecx, eax
mov dword [ebp - 0xd4], eax
mov eax, ecx
neg eax
cmovs eax, ecx
imul eax, edi
mov ebx, eax
movsx eax, byte [edx + 1]
lea ecx, [eax + eax]
mov eax, esi
mov esi, dword [ebp - 0x208]
sub eax, ecx
mov dword [ebp - 0xdc], ecx
mov edx, eax
neg edx
cmovs edx, eax
mov eax, dword [ebp - 0x110]
imul edi, edx
mov edx, dword [ebp - 0x120]
add eax, edi
test edx, edx
cmove edi, eax
mov eax, dword [ebp - 0x168]
lea eax, [eax + esi - 4]
mov dword [ebp - 0xe0], eax
mov eax, dword [ebp - 0x118]
lea esi, [eax - 2]
cmp eax, 1
jle 0x40b6ad
mov dword [ebp - 0xe8], esi
mov eax, dword [ebp - 0x140]
lea esi, [esi]
nop
mov esi, dword [ebp - 0x110]
mov edx, dword [ebp - 0x140]
add esi, edi
cmp esi, ebx
jle 0x409b5e
xor edx, edx
mov esi, ebx
mov ecx, dword [ebp - 0x198]
add ebx, dword [ebp - 0x110]
mov dword [ecx + eax*4], edx
mov edx, dword [ebp - 0x140]
cmp ebx, edi
jge 0x409b7b
xor edx, edx
mov edi, ebx
mov ebx, dword [ebp - 0x19c]
mov ecx, dword [ebp - 0x144]
mov dword [ebx + eax*4], edx
mov ebx, dword [ebp - 0x164]
mov ecx, dword [ecx + eax*4]
mov ebx, dword [ebx + eax*4]
mov edx, ecx
sub edx, dword [ebp - 0xd4]
mov dword [ebp - 0xd0], ebx
mov ebx, edx
neg edx
cmovs edx, ebx
imul edx, dword [ebp - 0xd0]
sub ecx, dword [ebp - 0xdc]
lea ebx, [edx + esi]
mov edx, ecx
neg edx
cmovs edx, ecx
imul edx, dword [ebp - 0xd0]
add eax, 1
add edi, edx
cmp dword [ebp - 0x118], eax
jne 0x409b48
xor eax, eax
cmp ebx, edi
mov edi, dword [ebp - 0xe0]
mov esi, dword [ebp - 0xe8]
setge al
mov ecx, dword [ebp - 0x198]
mov ebx, dword [ebp - 0x19c]
mov dword [edi], eax
mov eax, dword [ebp - 0x168]
jmp 0x409c0f
mov edx, dword [ecx + esi*4 + 4]
mov dword [eax + esi*4], edx
sub esi, 1
jb 0x409c22
cmp dword [eax + esi*4 + 4], 1
jne 0x409c03
mov edx, dword [ebx + esi*4 + 4]
mov dword [eax + esi*4], edx
sub esi, 1
jae 0x409c0f
mov ebx, dword [ebp - 0x118]
mov esp, dword [ebp - 0x214]
mov eax, ebx
lea ecx, [ebx - 1]
cmp ebx, dword [ebp - 0xd8]
jge 0x407d73
mov esi, dword [ebp - 0xd8]
mov edx, dword [ebp - 0x168]
lea esi, [esi]
nop
mov ebx, dword [edx + ecx*4]
mov dword [edx + eax*4], ebx
add eax, 1
cmp esi, eax
jne 0x409c50
jmp 0x407d73
mov dword [esp + 8], ebx
mov dword [esp + 4], edi
mov eax, dword [ebp - 0x200]
mov dword [esp], eax
call sym._memcpy
mov edx, dword [ebp - 0x190]
mov dword [esp + 8], edx
movzx ecx, byte [ebp - 0xf0]
mov edx, dword [ebp - 0xd0]
sar edx, cl
mov dword [esp + 4], edx
mov eax, dword [ebp - 0x200]
mov dword [esp], eax
call dbg.haar1
mov ecx, dword [ebp - 0x200]
fldz
mov eax, ecx
lea edx, [ecx + ebx]
fld dword [eax]
add eax, 4
fabs
faddp st(1)
cmp edx, eax
jne 0x409cb0
fild dword [ebp - 0x210]
fmul dword [ebp - 0xe4]
fmul st(1)
faddp st(1)
fld dword [ebp - 0xdc]
fcompi st(1)
jbe 0x4097bd
mov dword [ebp - 0x100], 0xffffffff
fstp dword [ebp - 0xdc]
jmp 0x4097ca
mov ecx, dword [ebp - 0xf0]
test ecx, ecx
je 0x409dcf
mov eax, dword [ebp - 0x10c]
fld dword [0x41e764]
mov edi, dword [eax + 0x20]
mov eax, dword [ebp - 0x108]
fld st(0)
lea esi, [edi + 0x1a]
mov dword [ebp - 0xdc], edi
mov ebx, edi
mov edi, dword [ebp - 0x14c]
mov dword [ebp - 0xd4], esi
lea esi, [esi]
movsx esi, word [ebx]
movsx edx, word [ebx + 2]
shl esi, cl
shl edx, cl
cmp edx, esi
jle 0x409d70
lea esi, [edi + esi*4]
lea edx, [edi + edx*4]
lea esi, [esi]
fld dword [esi]
fld dword [esi + eax*4]
add esi, 4
fld st(1)
fabs
fld st(1)
fabs
faddp st(1)
faddp st(3)
fld st(1)
fadd st(1)
fabs
fxch st(2)
fsubrp st(1)
fabs
faddp st(1)
faddp st(2)
cmp edx, esi
jne 0x409d48
add ebx, 2
cmp dword [ebp - 0xd4], ebx
jne 0x409d30
fxch st(1)
mov edi, dword [ebp - 0xdc]
mov ebx, dword [ebp - 0xf0]
xor eax, eax
fmul dword [0x41e85c]
movsx edx, word [edi + 0x1a]
cmp ebx, 1
lea ecx, [ebx + 1]
setne al
shl edx, cl
lea eax, [edx + eax*8 + 5]
mov dword [ebp - 0xd4], eax
fild dword [ebp - 0xd4]
xor eax, eax
mov dword [ebp - 0xd4], edx
fmulp st(1)
fild dword [ebp - 0xd4]
fmulp st(2)
fcompi st(1)
fstp st(0)
seta al
mov dword [ebp - 0xc4], eax
mov eax, dword [ebp + 8]
mov edx, 0x10624dd3
mov eax, dword [eax + 0xe8]
mov dword [esp + 0xc], 0x15
mov dword [esp + 8], global_intensity_histeresis
mov dword [esp + 0x10], eax
mov dword [esp + 4], global_intensity_thresholds
mov eax, dword [ebp - 0x1d8]
imul edx
sar edx, 6
mov eax, edx
mov edx, dword [ebp - 0x1d8]
sar edx, 0x1f
sub eax, edx
mov dword [ebp - 0xd4], eax
fild dword [ebp - 0xd4]
fstp dword [esp]
call dbg.hysteresis_decision
mov ebx, dword [ebp - 0xf4]
mov esi, dword [ebp - 0xd8]
cmp eax, ebx
cmovl eax, ebx
mov ebx, dword [ebp + 8]
cmp eax, esi
cmovg eax, esi
mov dword [ebx + 0xe8], eax
jmp 0x408353
mov edi, dword [ebp - 0x114]
mov ebx, esp
mov eax, edi
sar eax, 1
lea eax, [eax*4 + 0xf]
shr eax, 4
shl eax, 4
call fcn.004166d0
sub esp, eax
mov eax, dword [ebp + 8]
lea esi, [esp + 0x5c]
mov eax, dword [eax + 0x48]
mov dword [esp + 0x10], eax
mov eax, dword [ebp - 0xfc]
mov dword [esp + 8], edi
lea edi, [ebp - 0xb4]
mov dword [esp + 0xc], eax
lea eax, [ebp - 0x80]
mov dword [esp], eax
mov dword [esp + 4], esi
call dbg.pitch_downsample
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x48]
mov dword [esp + 0x10], edi
mov dword [esp + 0xc], 0x3d3
mov dword [esp + 0x14], eax
mov eax, dword [ebp - 0x108]
mov dword [esp + 4], esi
mov dword [esp + 8], eax
lea eax, [esp + 0x85c]
mov dword [esp], eax
call dbg.pitch_search
mov ecx, dword [ebp + 8]
mov eax, 0x400
sub eax, dword [ebp - 0xb4]
mov dword [ebp - 0xb4], eax
mov eax, dword [ecx + 0x48]
mov dword [esp + 0x1c], eax
mov ecx, dword [ebp + 8]
fld dword [ecx + 0x6c]
fstp dword [esp + 0x18]
mov ecx, dword [ebp + 8]
mov eax, dword [ecx + 0x68]
mov dword [esp + 0x10], edi
mov dword [esp + 0x14], eax
mov eax, dword [ebp - 0x108]
mov dword [esp + 8], 0xf
mov dword [esp + 0xc], eax
mov dword [esp + 4], 0x400
mov dword [esp], esi
call dbg.remove_doubling
cmp dword [ebp - 0xb4], 0x3fe
jle 0x409f38
mov dword [ebp - 0xb4], 0x3fe
mov eax, dword [ebp + 8]
fmul dword [str.333_]
mov eax, dword [eax + 0x38]
cmp eax, 2
jle 0x409f69
fld dword [0x41e748]
fmul st(1), st(0)
cmp eax, 4
jle 0x409f67
cmp eax, 8
jle 0x40b991
fstp st(0)
fstp st(0)
fldz
jmp 0x409f69
fstp st(0)
mov esp, ebx
mov edx, dword [ebp - 0xb4]
jmp 0x406e61
cmp dword [ebp - 0x11c], 1
jg 0x4090e4
imul eax, dword [ebp - 0x128], 0x190
mov edx, dword [ebp + 0x1c]
mov dword [ebp - 0x188], 0
movzx ecx, byte [ebp - 0x1b4]
sar eax, cl
sub eax, dword [ebp - 0xd4]
test edx, edx
mov dword [ebp - 0x1d8], eax
mov eax, dword [ebp - 0x148]
mov dword [ebp - 0x17c], eax
jne 0x406ab0
mov eax, dword [ebp - 0x128]
lea edi, [ebp - 0xb0]
mov dword [esp + 8], eax
mov eax, dword [ebp + 0x14]
mov dword [esp], edi
mov dword [esp + 4], eax
call dbg.ec_enc_init
mov dword [ebp + 0x1c], edi
jmp 0x406a67
mov eax, dword [ebp - 0x1c4]
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x114]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x198]
mov dword [esp], eax
call sym._memcpy
jmp 0x407813
mov dword [ebp - 0x100], 0
jmp 0x406d2f
fld dword [ebp - 0x1b8]
fmul dword [ebp - 0xe4]
fldz
fmul st(1), st(0)
faddp st(1)
fstp dword [ebp - 0xdc]
test cl, cl
je 0x4097c0
mov dword [esp + 8], ebx
mov dword [esp + 4], edi
mov eax, dword [ebp - 0x200]
mov dword [esp], eax
call sym._memcpy
mov ecx, dword [ebp - 0x190]
mov dword [esp + 8], ecx
mov edx, dword [ebp - 0xd0]
movzx ecx, byte [ebp - 0xf0]
sar edx, cl
mov dword [esp + 4], edx
mov eax, dword [ebp - 0x200]
mov dword [esp], eax
call dbg.haar1
fldz
jmp 0x409cbd
mov ecx, dword [ebp - 0xd8]
mov edx, dword [ebp - 0x114]
xor eax, eax
add edx, dword [ebp - 0x104]
lea esi, [esi]
fld dword [esi + eax*4]
fld dword [edx + eax*4]
fsub dword [ebx + eax*4]
fxch st(1)
fcomi st(1)
fcmovbe st(0), st(1)
fstp st(1)
fstp dword [esi + eax*4]
add eax, 1
cmp ecx, eax
jne 0x40a0a0
jmp 0x407b35
mov dword [ebp - 0xd4], 0
jmp 0x40830f
mov edi, dword [ebp - 0x134]
mov edx, dword [ebp - 0x110]
mov dword [ebp - 0xd0], 0
mov ecx, dword [ebp - 0x198]
mov dword [ebp - 0x144], ebx
lea eax, [edi - 8]
lea esi, [edi - 4]
mov ebx, dword [ebp - 0xd8]
mov dword [ebp - 0x11c], eax
mov eax, dword [ebp - 0x11c]
mov dword [ebp - 0x13c], esi
mov esi, edx
add esi, edi
add eax, edx
lea edi, [edi + ecx - 0xc]
mov dword [ebp - 0xd4], edi
mov dword [ebp - 0xdc], eax
mov dword [ebp - 0xe4], esi
xor esi, esi
lea esi, [esi]
fld dword [ecx]
fst dword [edx]
cmp ebx, 1
jle 0x40a172
mov eax, 1
nop
fld dword [ecx + eax*4]
fld dword [0x41e748]
fadd dword [ecx + eax*4 - 4]
fxch st(1)
fucomi st(1)
fstp st(1)
fld dword [0x41e838]
fadd dword [edx + eax*4 - 4]
fxch st(1)
cmova esi, eax
fcomi st(1)
fcmovnbe st(0), st(1)
fstp st(1)
fstp dword [edx + eax*4]
add eax, 1
cmp ebx, eax
jne 0x40a140
lea eax, [esi - 1]
test esi, esi
je 0x40a1a4
lea esi, [esi]
fld dword [edx + eax*4]
fld dword [0x41e7dc]
fadd dword [edx + eax*4 + 4]
fld dword [ecx + eax*4]
fcomi st(1)
fcmovnbe st(0), st(1)
fstp st(1)
fcomi st(1)
fcmovnbe st(0), st(1)
fstp st(1)
fstp dword [edx + eax*4]
sub eax, 1
jae 0x40a180
cmp dword [ebp - 0xe8], 2
lea edi, [edx + 8]
lea eax, [ecx + 4]
jle 0x40a286
mov dword [ebp - 0x100], edx
mov edx, dword [ebp - 0xdc]
jmp 0x40a1fb
fxch st(3)
fcomi st(1)
jbe 0x40a258
fstp st(2)
fstp st(0)
fcomi st(1)
fcmovnbe st(0), st(1)
fstp st(1)
fsub dword [0x41e7d4]
fxch st(1)
fcomi st(1)
fcmovbe st(0), st(1)
fstp st(1)
add edi, 4
add eax, 4
fstp dword [edi - 4]
cmp edx, edi
je 0x40a280
fld dword [edi]
fld dword [eax + 4]
fld dword [eax]
fld dword [eax - 4]
fcomi st(1)
ja 0x40a20b
fxch st(1)
fld dword [eax + 0xc]
fld dword [eax + 8]
fcomi st(1)
ja 0x40a220
fxch st(1)
fxch st(3)
jmp 0x40a222
fxch st(3)
fcomi st(1)
jbe 0x40a238
fstp st(1)
fxch st(3)
fxch st(1)
fxch st(2)
fxch st(1)
jmp 0x40a23c
fstp st(0)
fxch st(3)
fcomi st(1)
ja 0x40a1c8
fxch st(3)
fcomi st(3)
jbe 0x40a270
fstp st(2)
fstp st(2)
fcomi st(1)
fcmovnbe st(0), st(1)
fstp st(1)
jmp 0x40a1dc
fstp st(0)
fstp st(2)
fxch st(1)
fcomi st(1)
fcmovnbe st(0), st(1)
fstp st(1)
jmp 0x40a1dc
fstp st(0)
fstp st(0)
fcomi st(1)
fcmovnbe st(0), st(1)
fstp st(1)
jmp 0x40a1dc
mov edx, dword [ebp - 0x100]
fld dword [ecx + 4]
fxch st(1)
fcomi st(1)
ja 0x40a291
fxch st(1)
fld dword [ecx + 8]
fcomi st(1)
ja 0x40a2a2
fstp st(1)
fcomi st(1)
fcmovbe st(0), st(1)
fstp st(1)
jmp 0x40a2a6
fstp st(0)
fstp st(1)
fsub dword [0x41e7d4]
mov eax, dword [ebp - 0xd4]
fld dword [edx]
fcomi st(1)
fcmovbe st(0), st(1)
fstp dword [edx]
fld dword [edx + 4]
fucomi st(1)
fcmovbe st(0), st(1)
fstp st(1)
fstp dword [edx + 4]
fld dword [eax + 4]
fld dword [eax]
fcomi st(1)
ja 0x40a2d1
fxch st(1)
mov eax, dword [ebp - 0xd4]
fld dword [eax + 8]
fcomi st(1)
ja 0x40a2e8
fstp st(1)
fcomi st(1)
fcmovbe st(0), st(1)
fstp st(1)
jmp 0x40a2ec
fstp st(0)
fstp st(1)
mov eax, dword [ebp - 0x11c]
fsub dword [0x41e7d4]
mov edi, dword [ebp - 0x144]
fld dword [edx + eax]
fcomi st(1)
fcmovbe st(0), st(1)
fstp dword [edx + eax]
mov eax, dword [ebp - 0x13c]
fld dword [edx + eax]
fucomi st(1)
fcmovbe st(0), st(1)
fstp st(1)
fstp dword [edx + eax]
mov eax, edx
test ebx, ebx
jle 0x40a34d
mov dword [ebp - 0x100], edx
mov edx, dword [ebp - 0xe4]
lea esi, [esi]
fld dword [edi]
fld dword [eax]
fcomi st(1)
fcmovbe st(0), st(1)
fstp st(1)
add eax, 4
add edi, 4
fstp dword [eax - 4]
cmp edx, eax
jne 0x40a330
mov edx, dword [ebp - 0x100]
mov eax, dword [ebp - 0x104]
add dword [ebp - 0xd0], 1
add dword [ebp - 0xe4], eax
mov edi, dword [ebp - 0xd0]
add dword [ebp - 0xd4], eax
add ecx, eax
add edx, eax
add dword [ebp - 0xdc], eax
cmp dword [ebp - 0xec], edi
jg 0x40a130
cmp dword [ebp - 0xec], 2
je 0x40aa30
mov ebx, dword [ebp - 0xf4]
mov esi, dword [ebp - 0x114]
mov ecx, dword [ebp - 0x1b0]
lea eax, [ebx*4]
lea edx, [esi + eax]
add eax, dword [ebp - 0x110]
cmp ebx, dword [ebp - 0xd8]
jge 0x40b868
fld dword [edx]
fsub dword [eax]
fldz
fucomi st(1)
fcmovbe st(0), st(1)
fstp st(1)
add edx, 4
add eax, 4
fstp dword [eax - 4]
cmp ecx, edx
jne 0x40a3bd
mov eax, dword [ebp - 0xf4]
mov ecx, dword [ebp - 0xd8]
mov ebx, dword [ebp - 0x168]
mov edx, dword [ebp - 0x110]
nop
fld dword [ebx + eax*4]
fld dword [edx + eax*4]
fcomi st(1)
fcmovbe st(0), st(1)
fstp st(1)
fstp dword [edx + eax*4]
add eax, 1
cmp ecx, eax
jg 0x40a3f0
mov esi, dword [ebp - 0xf4]
mov edi, dword [ebp - 0x164]
mov ebx, dword [ebp - 0x110]
jmp 0x40a47f
fld qword [0x41e840]
fmulp st(1)
fstp qword [esp]
call dbg.exp
fstp dword [ebp - 0xd0]
fld dword [ebp - 0xd0]
fmul dword [0x41e848]
fadd dword [0x41e748]
fstp dword [esp]
call sym._floorf
fnstcw word [ebp - 0xca]
movzx edx, word [ebp - 0xca]
or dh, 0xc
mov word [ebp - 0xcc], dx
fldcw word [ebp - 0xcc]
fistp dword [edi + esi*4]
fldcw word [ebp - 0xca]
add esi, 1
cmp dword [ebp - 0xd8], esi
jle 0x40acae
fld dword [ebx + esi*4]
fld dword [0x41e7c8]
fcompi st(1)
ja 0x40a41a
fstp st(0)
fld qword [0x41e7c0]
jmp 0x40a422
mov eax, dword [ebp + 8]
mov edi, dword [ebp - 0xf4]
mov eax, dword [eax + 0x18]
test edi, edi
jne 0x40a89b
mov esi, dword [ebp - 0x174]
test esi, esi
jne 0x40aac8
cmp eax, 2
jle 0x40aac8
mov eax, dword [ebp - 0xec]
lea edx, [eax + eax*4]
mov eax, 2
add edx, edx
cmp edx, dword [ebp - 0x148]
jg 0x4080d6
mov eax, dword [ebp - 0x130]
mov dword [esp + 0x28], eax
mov eax, dword [ebp - 0x190]
mov dword [esp + 0x24], eax
mov eax, dword [ebp - 0xec]
mov dword [esp + 0x20], eax
mov eax, dword [ebp - 0x118]
mov dword [esp + 0x1c], eax
mov eax, dword [ebp - 0x1d0]
mov dword [esp + 0x18], eax
mov eax, dword [ebp + 8]
add eax, 0x64
mov dword [esp + 0x14], eax
mov eax, dword [ebp + 8]
add eax, 0x60
mov dword [esp + 0x10], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x50]
mov dword [esp + 0xc], eax
mov eax, dword [ebp + 8]
add eax, 0x58
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x14c]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x10c]
mov dword [esp], eax
call dbg.spreading_decision
jmp 0x4080d6
mov esi, dword [ebp - 0x120]
test esi, esi
je 0x40a8b4
call fcn.004166d0
sub esp, eax
lea eax, [esp + 0x5c]
mov dword [ebp - 0xe4], eax
mov eax, dword [ebp - 0x18c]
add eax, 0xf
shr eax, 4
shl eax, 4
mov edx, eax
call fcn.004166d0
sub esp, eax
lea eax, [esp + 0x5c]
mov dword [ebp - 0x150], eax
mov eax, edx
call fcn.004166d0
sub esp, eax
lea eax, [esp + 0x5c]
mov dword [ebp - 0x114], eax
mov eax, dword [ebp - 0x190]
test eax, eax
je 0x40b918
cmp ebx, 7
jg 0x40ab7b
mov dword [ebp - 0x170], 0
mov dword [ebp - 0x174], eax
jmp 0x407368
mov dword [ebp - 0x140], 0
mov eax, dword [ebp + 8]
cmp dword [eax + 0x18], 1
jle 0x4078f5
mov eax, dword [eax + 0x40]
test eax, eax
sete al
movzx eax, al
mov dword [ebp - 0x140], eax
jmp 0x4078f5
fstp st(1)
fld dword [0x41e7b4]
fxch st(1)
fstp dword [ebp - 0x1e8]
mov dword [ebp - 0x100], 0
faddp st(1)
mov eax, dword [ebp + 8]
fstp dword [eax + 0xf0]
jmp 0x407805
mov eax, dword [ebp + 8]
mov esi, dword [eax + 0x40]
test esi, esi
jne 0x40837c
fld dword [ebp - 0xbc]
mov eax, dword [ebp - 0x1d8]
fstp dword [ebp - 0xdc]
fld dword [0x41e7c8]
fst dword [ebp - 0xd4]
cmp eax, 0xf9ff
jle 0x40a699
fld dword [0x41e7d0]
fstp dword [ebp - 0xd4]
cmp eax, 0x1387f
jg 0x40a69d
sub eax, 0xfa00
sar eax, 0xa
mov dword [ebp - 0xd0], eax
fild dword [ebp - 0xd0]
fmul dword [0x41e74c]
faddp st(1)
fstp dword [ebp - 0xd4]
jmp 0x40a69f
fstp st(0)
jmp 0x40a69f
fstp st(0)
cmp dword [ebp - 0xec], 2
je 0x40b466
mov edi, dword [ebp - 0x1a0]
mov edx, dword [ebp - 0xd8]
fldz
test edi, edi
jle 0x40a6f9
mov ecx, dword [ebp - 0x10c]
mov eax, 2
sub eax, edx
mov ebx, dword [ecx + 8]
mov ecx, dword [ebp - 0x114]
imul ebx, esi
lea ebx, [edx + ebx*2]
lea ebx, [ecx + ebx*2]
lea esi, [esi]
mov dword [ebp - 0xd0], eax
fild dword [ebp - 0xd0]
fmul dword [ebx + eax*2 - 4]
add eax, 2
faddp st(1)
cmp edx, eax
jne 0x40a6e0
add esi, 1
cmp dword [ebp - 0xec], esi
jg 0x40a6ba
mov eax, dword [ebp - 0xec]
imul eax, dword [ebp - 0x1a0]
mov dword [ebp - 0xd0], eax
fild dword [ebp - 0xd0]
fdivp st(1)
fadd dword [0x41e7d4]
fdiv dword [0x41e828]
fld dword [0x41e7dc]
fxch st(1)
fcomi st(1)
ja 0x40b43c
fstp st(1)
fld dword [0x41e79c]
fucomi st(1)
fcmovbe st(0), st(1)
fstp st(1)
fsubr dword [ebp - 0xd4]
mov eax, dword [ebp + 8]
fsub dword [ebp - 0x1ec]
mov edx, dword [eax + 0x78]
fld dword [ebp - 0xdc]
fadd st(0)
fsubp st(1)
test edx, edx
je 0x40a797
fld dword [0x41e874]
fadd dword [eax + 0x80]
fadd st(0)
fld dword [0x41e7dc]
fxch st(1)
fcomi st(1)
ja 0x40b8cc
fstp st(1)
fld dword [0x41e79c]
fucomi st(1)
fcmovbe st(0), st(1)
fstp st(1)
fsubp st(1)
fadd dword [0x41e748]
fstp dword [esp]
call sym._floorf
fnstcw word [ebp - 0xca]
movzx eax, word [ebp - 0xca]
or ah, 0xc
mov word [ebp - 0xcc], ax
mov eax, 0xa
fldcw word [ebp - 0xcc]
fistp dword [ebp - 0xd0]
fldcw word [ebp - 0xca]
mov edx, dword [ebp - 0xd0]
cmp edx, eax
cmovle eax, edx
mov edi, eax
xor eax, eax
test edi, edi
cmovns eax, edi
mov dword [ebp - 0xd4], eax
jmp 0x408393
fldz
fst dword [ebp - 0x1ec]
fst dword [ebp - 0x1e4]
fstp dword [ebp - 0x1e8]
jmp 0x407805
mov eax, dword [ebp + 8]
movzx ecx, byte [ebp - 0xe4]
mov eax, dword [eax + 0xd8]
mov dword [ebp - 0xdc], eax
sar eax, cl
add esi, eax
jmp 0x408432
cmp dword [eax + 0x18], 4
setg al
movzx eax, al
mov dword [ebp - 0x100], eax
jmp 0x406d2f
movzx ecx, byte [ebp - 0x1b4]
mov eax, 0x60
sar eax, cl
add edx, eax
jmp 0x4087ec
fmul dword [0x41e858]
fstp dword [ebp - 0xe4]
jmp 0x4095e1
fstp st(1)
fmul dword [0x41e82c]
jmp 0x40a615
imul ecx, esi, 0xea60
mov edx, 0x12
cmp ecx, ebx
jg 0x408a6a
imul edx, esi, 0x13880
cmp edx, ebx
setle dl
movzx edx, dl
add edx, 0x13
jmp 0x408a6a
cmp dword [ebp - 0x120], 1
mov edx, 2
adc edx, 0
test eax, eax
cmovne eax, edx
jmp 0x4080d6
call fcn.004166d0
sub esp, eax
lea eax, [esp + 0x5c]
mov dword [ebp - 0xe4], eax
mov eax, dword [ebp - 0x18c]
add eax, 0xf
shr eax, 4
shl eax, 4
mov edx, eax
call fcn.004166d0
sub esp, eax
lea eax, [esp + 0x5c]
mov dword [ebp - 0x150], eax
mov eax, edx
call fcn.004166d0
mov dword [ebp - 0x170], 0
sub esp, eax
mov dword [ebp - 0x174], 0
lea eax, [esp + 0x5c]
mov dword [ebp - 0x114], eax
jmp 0x407368
mov eax, dword [ebp - 0xd0]
add eax, edi
mov dword [ebp - 0x128], eax
mov dword [esp + 4], eax
mov eax, dword [ebp + 0x1c]
mov dword [esp], eax
call dbg.ec_enc_shrink
mov dword [ebp - 0x148], edi
jmp 0x406ab0
mov ecx, dword [ebp - 0x118]
mov eax, dword [ebp - 0xdc]
cmp ecx, edx
jge 0x40a95e
mov eax, dword [ebp - 0x108]
movsx eax, word [eax + ecx*2]
movzx ecx, byte [ebp - 0xf0]
shl eax, cl
mov ecx, dword [ebp - 0x110]
add dword [ebp - 0xdc], eax
test ecx, ecx
jne 0x40aad7
jmp 0x40a976
fstp st(0)
fnstcw word [ebp - 0xca]
mov ebx, esi
movzx eax, word [ebp - 0xca]
or ah, 0xc
mov word [ebp - 0xcc], ax
mov eax, dword [ebp + 8]
movzx ecx, byte [ebp - 0xf0]
fld dword [eax + 0xe4]
mov eax, dword [ebp - 0x118]
cmp eax, edx
cmovle edx, eax
mov eax, dword [ebp - 0x108]
movsx eax, word [eax + edx*2]
shl eax, cl
sub eax, edx
mov dword [ebp - 0x118], eax
fild dword [ebp - 0x118]
fmul dword [0x41e878]
fild dword [ebp - 0xdc]
fdivp st(1)
fld1
fcompi st(2)
ja 0x40b68d
fstp st(1)
fld dword [0x41e7e0]
mov dword [ebp - 0x118], ebx
fild dword [ebp - 0x118]
shl eax, 3
mov dword [ebp - 0x118], eax
fmulp st(2)
fild dword [ebp - 0x118]
fmulp st(1)
fcomi st(1)
ja 0x40b408
fstp st(1)
fldcw word [ebp - 0xcc]
fistp dword [ebp - 0x118]
fldcw word [ebp - 0xca]
mov ecx, dword [ebp - 0x118]
mov eax, ebx
sub eax, ecx
mov ebx, eax
jmp 0x4084fa
mov eax, dword [ebp - 0xf4]
mov ebx, dword [ebp - 0xd8]
cmp eax, ebx
jge 0x40b868
mov edi, dword [ebp - 0xf8]
mov esi, dword [ebp - 0x110]
mov ecx, dword [ebp - 0x104]
add eax, edi
add ebx, edi
mov edx, eax
lea ebx, [esi + ebx*4]
neg ecx
shl edx, 2
lea eax, [esi + edx]
add edx, dword [ebp - 0x114]
fld dword [eax]
fld dword [0x41e7c8]
fld dword [eax + ecx]
fsub st(1)
fxch st(2)
fcomi st(2)
fcmovbe st(0), st(2)
fstp st(2)
fxch st(1)
fst dword [eax]
fld dword [eax + ecx]
fxch st(1)
fsubrp st(2)
fcomi st(1)
fcmovbe st(0), st(1)
fstp st(1)
fst dword [eax + ecx]
fsubr dword [edx + ecx]
fldz
fucomi st(1)
fxch st(1)
fcmovnbe st(0), st(1)
fld dword [edx]
fsub dword [eax]
fxch st(2)
fucomi st(2)
fcmovbe st(0), st(2)
fstp st(2)
add eax, 4
add edx, 4
faddp st(1)
fmul dword [0x41e748]
fstp dword [eax + ecx - 4]
cmp ebx, eax
jne 0x40aa6d
jmp 0x40a3d6
test eax, eax
setne al
movzx eax, al
add eax, eax
jmp 0x4080d6
mov eax, dword [ebp + 8]
fld dword [eax + 0x88]
fld st(0)
fld qword [0x41e8a0]
fcompi st(1)
fstp st(0)
jbe 0x40a974
fnstcw word [ebp - 0xca]
mov eax, dword [ebp - 0xdc]
shl eax, 3
mov dword [ebp - 0x13c], eax
fild dword [ebp - 0x13c]
fxch st(1)
fsubr dword [0x41e798]
movzx eax, word [ebp - 0xca]
or ah, 0xc
mov word [ebp - 0xcc], ax
mov eax, esi
fmulp st(1)
fldcw word [ebp - 0xcc]
fistp dword [ebp - 0x13c]
fldcw word [ebp - 0xca]
sub eax, dword [ebp - 0x13c]
cmp dword [ebp - 0xec], 2
mov ebx, eax
jne 0x4084fa
jmp 0x40a98f
fstp st(1)
fldz
fxch st(1)
fcomi st(1)
fstp st(1)
jbe 0x4075e2
fmul dword [0x41e748]
jmp 0x4075e2
mov eax, dword [ebp - 0x1c4]
add eax, 0xf
mov dword [ebp - 0x180], eax
shr eax, 4
shl eax, 4
call fcn.004166d0
xor edx, edx
sub esp, eax
mov eax, dword [ebp + 8]
lea ebx, [esp + 0x5c]
mov eax, dword [eax + 0x48]
mov dword [ebp - 0x198], ebx
mov dword [esp + 0x14], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x1c]
mov dword [esp + 0x10], eax
mov eax, dword [ebp - 0xf0]
mov dword [esp + 0xc], eax
mov esi, dword [ebp - 0xfc]
mov dword [esp + 8], esi
mov esi, dword [ebp - 0xec]
mov dword [esp + 4], esi
mov edi, dword [ebp - 0xe4]
mov dword [esp], edi
mov edi, dword [ebp - 0x10c]
mov ecx, dword [ebp - 0xdc]
mov eax, edi
call dbg.compute_mdcts
mov ecx, dword [ebp + 8]
mov eax, dword [ecx + 0x48]
mov dword [esp + 0x18], eax
mov eax, dword [ebp - 0xf0]
mov dword [esp + 0x10], esi
mov dword [esp + 0x14], eax
mov ecx, dword [ebp - 0x118]
mov dword [esp + 0xc], ecx
mov edx, dword [ebp - 0x150]
mov dword [esp + 8], edx
mov eax, dword [ebp - 0xe4]
mov dword [esp], edi
mov dword [esp + 4], eax
call dbg.compute_band_energies
mov dword [esp + 0x14], esi
mov dword [esp + 0x10], ebx
mov edx, dword [ebp - 0x150]
mov dword [esp + 0xc], edx
mov eax, dword [ebp - 0xd8]
mov dword [esp + 8], eax
mov ecx, dword [ebp - 0x118]
mov dword [esp], edi
mov dword [esp + 4], ecx
call dbg.amp2Log2
mov edx, dword [ebp - 0x1a4]
test edx, edx
jle 0x40ac89
fild dword [ebp - 0xf0]
fmul dword [0x41e748]
xor eax, eax
lea esi, [esi]
fld dword [ebx + eax*4]
fadd st(1)
fstp dword [ebx + eax*4]
add eax, 1
cmp eax, edx
jne 0x40ac78
fstp st(0)
mov dword [ebp - 0x170], 0
mov eax, dword [ebp - 0x190]
mov dword [ebp - 0x104], 1
mov dword [ebp - 0x174], eax
jmp 0x407398
mov edi, dword [ebp - 0x1ac]
mov edx, dword [ebp - 0x19c]
mov ebx, dword [ebp - 0x120]
test edi, edi
sete byte [ebp - 0xd4]
test edx, edx
movzx eax, byte [ebp - 0xd4]
setne byte [ebp - 0xe4]
movzx ecx, byte [ebp - 0xe4]
test ebx, ebx
sete bl
or eax, ecx
mov edi, ebx
mov edx, eax
and dl, bl
jne 0x40b3a8
mov ebx, dword [ebp - 0xd8]
cmp dword [ebp - 0xf4], ebx
jge 0x40b8a8
mov eax, dword [ebp - 0xf4]
mov ecx, dword [ebp - 0xd8]
mov edx, dword [ebp - 0x110]
jmp 0x40ad28
fld dword [edx + eax*4]
fadd st(0)
fstp dword [edx + eax*4]
add eax, 1
cmp ecx, eax
jle 0x40ad45
cmp eax, 7
jle 0x40ad19
cmp eax, 0xb
jle 0x40ad21
fld dword [0x41e748]
fmul dword [edx + eax*4]
fstp dword [edx + eax*4]
add eax, 1
cmp ecx, eax
jg 0x40ad28
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x78]
test eax, eax
je 0x40add5
mov eax, dword [ebp - 0xd8]
mov ecx, 0x13
cmp eax, ecx
cmovle ecx, eax
mov eax, dword [ebp - 0xf4]
cmp eax, ecx
jge 0x40adac
mov ebx, dword [ebp - 0x110]
lea edx, [ebx + eax*4]
mov ebx, dword [ebp + 8]
lea eax, [ebx + eax + 0xa4]
lea ebx, [ebx + ecx + 0xa4]
movzx ecx, byte [eax]
add eax, 1
add edx, 4
mov dword [ebp - 0xd0], ecx
fild dword [ebp - 0xd0]
fmul dword [0x41e84c]
fadd dword [edx - 4]
fstp dword [edx - 4]
cmp ebx, eax
jne 0x40ad87
mov ebx, dword [ebp - 0xd8]
cmp dword [ebp - 0xf4], ebx
jge 0x407ced
fnstcw word [ebp - 0xca]
movzx eax, word [ebp - 0xca]
or ah, 0xc
mov word [ebp - 0xcc], ax
mov eax, dword [ebp - 0x17c]
mov ecx, 0xaaaaaaab
mov esi, dword [ebp - 0x12c]
xor ebx, ebx
lea edx, [eax + eax]
mov eax, edx
mul ecx
mov eax, edi
mov edi, dword [ebp - 0x110]
mov byte [ebp - 0xe8], al
shr edx, 1
mov dword [ebp - 0xdc], edx
mov edx, dword [ebp - 0xf4]
jmp 0x40ae79
fldcw word [ebp - 0xcc]
fistp dword [ebp - 0xd0]
fldcw word [ebp - 0xca]
mov ecx, dword [ebp - 0xd0]
imul eax, ecx
shl eax, 3
add eax, ebx
cmp byte [ebp - 0xd4], 0
jne 0x40ae48
cmp byte [ebp - 0xe8], 0
je 0x40ae59
cmp byte [ebp - 0xe4], 0
je 0x40ae59
mov ecx, eax
sar ecx, 6
cmp ecx, dword [ebp - 0xdc]
jg 0x40b1bb
mov ebx, dword [ebp - 0x15c]
mov ecx, dword [ebp - 0xd0]
mov dword [ebx + edx*4], ecx
add edx, 1
cmp dword [ebp - 0xd8], edx
jle 0x40af99
mov ebx, eax
fld dword [edi + edx*4]
fld dword [0x41e7c8]
movsx ecx, word [esi + edx*2]
movsx eax, word [esi + edx*2 + 2]
fcomi st(1)
fcmovnbe st(0), st(1)
fstp st(1)
sub eax, ecx
movzx ecx, byte [ebp - 0xf0]
imul eax, dword [ebp - 0xec]
fst dword [edi + edx*4]
shl eax, cl
cmp eax, 5
jle 0x40ae0d
cmp eax, 0x30
jle 0x40aeec
fmul dword [0x41e850]
fldcw word [ebp - 0xcc]
fistp dword [ebp - 0xd0]
fldcw word [ebp - 0xca]
mov ecx, dword [ebp - 0xd0]
imul eax, ecx
lea ecx, [eax*8]
test ecx, ecx
lea eax, [ecx + 7]
cmovns eax, ecx
sar eax, 3
jmp 0x40ae2b
mov dword [ebp - 0xd0], eax
fild dword [ebp - 0xd0]
fmulp st(1)
fdiv dword [0x41e828]
fldcw word [ebp - 0xcc]
fistp dword [ebp - 0xd0]
fldcw word [ebp - 0xca]
mov eax, dword [ebp - 0xd0]
lea eax, [eax + eax*2]
shl eax, 4
jmp 0x40ae2b
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 0x3c]
mov eax, dword [ebp - 0x11c]
shl eax, cl
mov dword [ebp - 0xd4], eax
fild dword [ebp - 0xd4]
fdivr dword [0x41e7d4]
mov dword [esp + 8], 0xf
fld dword [ebp - 0x100]
fxch st(1)
fcomi st(1)
fstp st(1)
setae al
fstp dword [ebp - 0xd4]
movzx eax, al
mov dword [esp + 4], eax
mov eax, dword [ebp + 0x1c]
mov dword [esp], eax
call dbg.ec_enc_bit_logp
fld dword [ebp - 0x100]
fld dword [ebp - 0xd4]
fcompi st(1)
fstp st(0)
jae 0x40b1da
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x1c]
mov dword [ebp - 0xd4], eax
jmp 0x406bfb
mov dword [ebp - 0x1f8], eax
jmp 0x407cf7
fldz
fchs
jmp 0x406bd3
mov dword [esp + 8], 1
mov dword [esp + 4], 0
mov eax, dword [ebp + 0x1c]
mov dword [esp], eax
call dbg.ec_enc_bit_logp
jmp 0x407245
fldz
fchs
jmp 0x406b73
mov ebx, dword [ebp - 0x184]
test ebx, ebx
jne 0x40afe9
mov eax, edx
neg eax
sar eax, 6
add esi, eax
mov eax, dword [ebp + 8]
mov dword [eax + 0xd0], 0
jmp 0x408978
mov eax, dword [ebp + 8]
cmp dword [eax + 0x18], 4
jle 0x40b15f
mov eax, dword [ebp - 0x144]
or eax, dword [ebp - 0x100]
mov dword [ebp - 0x120], eax
jne 0x40b15f
mov eax, dword [ebp - 0x138]
cmp dword [ebp - 0xec], 1
fld dword [eax]
je 0x40b8d3
mov edx, dword [ebp - 0x138]
add edx, dword [ebp - 0x104]
fld dword [edx]
fxch st(1)
fcomi st(1)
fcmovbe st(0), st(1)
fstp st(1)
cmp dword [ebp - 0xd8], 1
fst dword [ebp - 0x80]
jle 0x40b954
mov eax, 1
jmp 0x40b069
fld dword [ebp + eax*4 - 0x84]
mov esi, dword [ebp - 0x138]
fsub dword [0x41e7d4]
fld dword [edx + eax*4]
fld dword [esi + eax*4]
fcomi st(1)
fcmovbe st(0), st(1)
fstp st(1)
fxch st(1)
fcomi st(1)
fcmovbe st(0), st(1)
fstp st(1)
fstp dword [ebp + eax*4 - 0x80]
add eax, 1
cmp dword [ebp - 0xd8], eax
jne 0x40b062
mov eax, dword [ebp - 0xe8]
fld dword [ebp + eax*4 - 0x80]
fld1
fsubr dword [ebp + eax*4 - 0x7c]
fxch st(1)
fcomi st(1)
fcmovbe st(0), st(1)
fstp st(1)
fstp dword [ebp + eax*4 - 0x80]
sub eax, 1
jae 0x40b09e
mov edx, dword [ebp - 0x114]
mov esi, dword [ebp - 0x1a0]
xor ecx, ecx
fldz
cmp esi, 2
jle 0x40b108
mov eax, 2
lea esi, [esi]
nop
fld dword [edx + eax*4]
fld dword [ebp + eax*4 - 0x80]
fldz
fcomi st(2)
ja 0x40b678
fcompi st(1)
ja 0x40b0f5
jmp 0x40b0f1
fxch st(1)
fsubp st(1)
jmp 0x40b0f7
fstp st(0)
fldz
fucomi st(1)
fcmovbe st(0), st(1)
fstp st(1)
faddp st(1)
add eax, 1
cmp eax, esi
jne 0x40b0d8
add ecx, 1
add edx, dword [ebp - 0x104]
cmp dword [ebp - 0xec], ecx
jg 0x40b0c9
mov eax, dword [ebp - 0xd8]
sub eax, 3
imul eax, dword [ebp - 0xec]
mov dword [ebp - 0xd0], eax
fild dword [ebp - 0xd0]
fdivp st(1)
fld1
fxch st(1)
fcompi st(1)
fstp st(0)
ja 0x40b722
mov eax, dword [ebp + 0x1c]
mov byte [ebp - 0xe0], 0
bsr eax, dword [eax + 0x1c]
xor eax, 0x1f
lea eax, [eax + edi - 0x1e]
jmp 0x409436
mov dword [ebp - 0x120], 0
xor ebx, ebx
jmp 0x409456
mov eax, dword [ebp - 0x134]
mov dword [esp + 4], esi
mov dword [esp + 8], eax
mov eax, dword [ebp - 0xd0]
mov dword [esp], eax
call sym._memcpy
mov eax, dword [ebp - 0xe8]
test eax, eax
js 0x407bb5
jmp 0x407b8d
mov dword [ebp - 0xe0], 0
mov eax, dword [ebp - 0x118]
mov dword [ebp - 0xd0], eax
jmp 0x408346
mov eax, dword [ebp - 0xdc]
shl eax, 6
mov dword [ebp - 0x1f8], eax
sub eax, ebx
mov ebx, dword [ebp - 0x15c]
mov dword [ebx + edx*4], eax
jmp 0x407cf7
mov eax, dword [ebp - 0x188]
test eax, eax
jle 0x40b69a
mov edi, dword [ebp - 0xd0]
lea eax, [edi + 1]
cmp eax, dword [ebp - 0x128]
jl 0x40b421
mov edi, dword [ebp - 0x128]
mov dword [esp + 4], edi
mov eax, dword [ebp + 0x1c]
mov dword [esp], eax
call dbg.ec_enc_shrink
mov byte [ebp - 0x114], 0
mov dword [ebp - 0x17c], edi
mov dword [ebp - 0x148], 2
mov eax, dword [ebp + 0x1c]
mov edi, dword [ebp - 0x158]
mov dword [ebp - 0x184], 1
mov ecx, dword [ebp + 0x1c]
bsr eax, dword [eax + 0x1c]
mov edx, edi
mov dword [ebp - 0x11c], edi
xor eax, 0x1f
sub edx, eax
lea eax, [edx + 0x20]
mov dword [ecx + 0x14], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x1c]
mov dword [ebp - 0xd4], eax
jmp 0x406c13
mov edx, eax
sar edx, 2
cmp edx, ecx
cmovl edx, ecx
cmp edx, eax
cmovg edx, eax
mov eax, dword [ebp - 0x114]
test eax, eax
sete al
mov ecx, dword [ebp - 0xd0]
test ecx, ecx
je 0x40b2b9
sub edx, esi
mov dword [ebp - 0xdc], edx
fild dword [ebp - 0xdc]
fmul dword [0x41e88c]
fldcw word [ebp - 0xcc]
fistp dword [ebp - 0xdc]
fldcw word [ebp - 0xca]
mov edx, dword [ebp - 0xdc]
add edx, esi
test al, al
je 0x40868a
fld dword [0x41e794]
fcompi st(1)
fstp st(0)
jbe 0x40868c
mov eax, 0x17700
fldz
sub eax, dword [ebp - 0x1d8]
js 0x40b303
fstp st(0)
fld dword [0x41e7e8]
cmp eax, 0x7d00
jg 0x40b303
fstp st(0)
mov dword [ebp - 0xdc], eax
fild dword [ebp - 0xdc]
fmul dword [0x41e890]
mov dword [ebp - 0xdc], edx
fmul dword [ebp - 0x1e8]
fild dword [ebp - 0xdc]
fmulp st(1)
fldcw word [ebp - 0xcc]
fistp dword [ebp - 0xdc]
fldcw word [ebp - 0xca]
add edx, dword [ebp - 0xdc]
jmp 0x40868c
mov esi, dword [ebp - 0x1cc]
mov ebx, dword [ebp - 0x1dc]
mov ecx, eax
jmp 0x408f10
mov edx, eax
mov ebx, dword [ebp - 0x114]
sar edx, 2
cmp edx, ecx
cmovl edx, ecx
mov ecx, dword [ebp - 0x100]
cmp eax, edx
cmovle edx, eax
test ebx, ebx
sete al
test ecx, ecx
jne 0x40b281
test al, al
jne 0x40b281
fstp st(0)
jmp 0x40868c
fstp st(1)
jmp 0x4091e0
mov dword [ebp - 0xe0], 0
mov ebx, dword [ebp - 0xdc]
cmp dword [ebp - 0xd4], ebx
jae 0x408007
jmp 0x4080b1
mov eax, dword [ebp - 0xf4]
mov ebx, dword [ebp - 0xd8]
cmp eax, ebx
jge 0x40b931
mov ecx, dword [ebp - 0x110]
fld dword [0x41e748]
fmul dword [ecx + eax*4]
fstp dword [ecx + eax*4]
add eax, 1
cmp dword [ebp - 0xd8], eax
jne 0x40b3c2
mov edi, edx
jmp 0x40ad05
fstp st(0)
fldz
jmp 0x40937a
mov dword [ebp - 0x108], edx
mov dword [ebp - 0x190], 1
mov dword [ebp - 0xf0], 0
jmp 0x4068b4
fstp st(0)
fldcw word [ebp - 0xcc]
fistp dword [ebp - 0x118]
fldcw word [ebp - 0xca]
jmp 0x40aa1f
add edi, 2
lea eax, [edi*8]
mov dword [ebp - 0x128], edi
mov dword [ebp - 0x158], eax
jmp 0x40b1fd
fstp st(0)
jmp 0x40a749
fmul dword [0x41e878]
fldcw word [ebp - 0xcc]
fistp dword [ebp - 0x108]
fldcw word [ebp - 0xca]
add eax, dword [ebp - 0x108]
jmp 0x408617
mov eax, dword [ebp + 8]
mov edi, 2
fldz
mov ebx, dword [eax + 0xe8]
mov eax, dword [eax + 0x48]
and eax, 7
mov dword [ebp - 0xe4], ebx
mov eax, dword [eax*4 + 0x424580]
mov dword [ebp - 0xd0], eax
mov eax, dword [ebp - 0x10c]
movzx ecx, byte [ebp - 0xf0]
fstp dword [ebp - 0xe8]
mov eax, dword [eax + 0x20]
movsx edx, word [eax + edi - 2]
movsx eax, word [eax + edi]
add edi, 2
sub eax, edx
mov ebx, edx
shl eax, cl
shl ebx, cl
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x108]
mov ecx, dword [ebp - 0x14c]
add eax, ebx
lea eax, [ecx + eax*4]
mov dword [esp + 4], eax
lea eax, [ecx + ebx*4]
mov dword [esp], eax
mov eax, dword [ebp - 0xd0]
call eax
fld dword [ebp - 0xe8]
faddp st(1)
cmp edi, 0x12
jne 0x40b48f
fmul dword [0x41e760]
mov ebx, dword [ebp - 0xe4]
fabs
fld1
fxch st(1)
fcomi st(1)
jbe 0x40b940
fstp st(0)
fld st(0)
cmp ebx, 8
jle 0x40b5ab
fstp st(1)
lea eax, [ebx + ebx + 2]
fld st(0)
mov dword [ebp - 0xe4], eax
jmp 0x40b526
fxch st(1)
mov eax, dword [ebp - 0x10c]
movzx ecx, byte [ebp - 0xf0]
fstp dword [ebp - 0x100]
fstp dword [ebp - 0xe8]
mov eax, dword [eax + 0x20]
movsx ebx, word [eax + edi - 2]
movsx eax, word [eax + edi]
sub eax, ebx
mov edx, ebx
shl eax, cl
shl edx, cl
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x108]
mov ebx, dword [ebp - 0x14c]
add eax, edx
lea eax, [ebx + eax*4]
mov dword [esp + 4], eax
lea eax, [ebx + edx*4]
mov dword [esp], eax
mov eax, dword [ebp - 0xd0]
call eax
fabs
fld dword [ebp - 0x100]
fxch st(1)
fcomi st(1)
fcmovnbe st(0), st(1)
fstp st(1)
add edi, 2
cmp dword [ebp - 0xe4], edi
fld dword [ebp - 0xe8]
jne 0x40b524
fld st(1)
fabs
fld1
fxch st(1)
fucompi st(1)
fcmovbe st(0), st(2)
fstp st(2)
fxch st(1)
fstp dword [ebp - 0xe4]
fmul st(0)
fsubr dword [0x41e860]
fstp qword [esp]
call dbg.log
fmul qword [0x41e868]
fstp dword [ebp - 0xd0]
fld dword [ebp - 0xd0]
fmul dword [0x41e748]
fstp dword [ebp - 0x100]
fld dword [ebp - 0xe4]
fmul st(0)
fsubr dword [0x41e860]
fst qword [esp]
fstp dword [ebp - 0xe8]
call dbg.log
fmul qword [0x41e868]
fstp dword [ebp - 0xe4]
fld dword [ebp - 0xe4]
fld dword [ebp - 0x100]
fcomi st(1)
fstp st(1)
fld dword [ebp - 0xe8]
jbe 0x40b970
fstp st(0)
fld dword [ebp - 0xd0]
fmul dword [0x41e870]
fld dword [0x41e7d8]
mov eax, dword [ebp + 8]
fucomi st(1)
fcmovbe st(0), st(1)
fstp st(1)
fadd dword [ebp - 0xd4]
fstp dword [ebp - 0xd4]
fld dword [0x41e824]
fadd dword [eax + 0xe4]
fxch st(1)
fmul dword [0x41e748]
fchs
fcomi st(1)
fcmovnbe st(0), st(1)
fstp st(1)
fstp dword [eax + 0xe4]
jmp 0x40a6ac
fstp st(2)
fxch st(1)
fld st(0)
fcompi st(2)
jbe 0x40b0ef
fstp st(1)
jmp 0x40b0ff
fxch st(1)
fsub dword [0x41e7f8]
jmp 0x40a9e4
cmp dword [ebp - 0x148], 3
setg byte [ebp - 0x114]
jmp 0x40b229
xor eax, eax
cmp ebx, edi
mov ebx, dword [ebp - 0xe0]
setge al
mov dword [ebx], eax
test esi, esi
js 0x409c22
mov eax, dword [ebp - 0x168]
mov ecx, dword [ebp - 0x198]
mov ebx, dword [ebp - 0x19c]
jmp 0x409c0f
fstp st(0)
fstp st(0)
mov eax, dword [ebp - 0xe8]
mov dword [esp + 4], 0
shl eax, 2
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x168]
mov dword [esp], eax
call sym._memset
fld dword [0x41e794]
mov dword [ebp - 0x1ec], 0
fstp dword [ebp - 0x1e4]
jmp 0x4092fa
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x48]
mov dword [esp + 0x14], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x1c]
mov dword [esp + 0x10], eax
mov eax, dword [ebp - 0xf0]
mov dword [esp + 0xc], eax
mov edi, dword [ebp - 0xfc]
mov dword [esp + 8], edi
mov esi, dword [ebp - 0xec]
mov dword [esp + 4], esi
mov edi, dword [ebp - 0xe4]
mov dword [esp], edi
mov edi, dword [ebp - 0x10c]
mov ecx, dword [ebp - 0xdc]
mov edx, dword [ebp - 0x190]
mov eax, edi
call dbg.compute_mdcts
mov ecx, dword [ebp + 8]
mov eax, dword [ecx + 0x48]
mov dword [esp + 0x18], eax
mov eax, dword [ebp - 0xf0]
mov dword [esp + 0x10], esi
mov dword [esp + 0x14], eax
mov ecx, dword [ebp - 0x118]
mov dword [esp + 0xc], ecx
mov edx, dword [ebp - 0x150]
mov dword [esp + 8], edx
mov eax, dword [ebp - 0xe4]
mov dword [esp], edi
mov dword [esp + 4], eax
call dbg.compute_band_energies
mov dword [esp + 0x14], esi
mov eax, dword [ebp - 0x114]
mov dword [esp + 0x10], eax
mov edx, dword [ebp - 0x150]
mov dword [esp + 0xc], edx
mov eax, dword [ebp - 0xd8]
mov dword [esp + 8], eax
mov ecx, dword [ebp - 0x118]
mov dword [esp], edi
mov dword [esp + 4], ecx
call dbg.amp2Log2
mov eax, dword [ebp - 0x1a4]
test eax, eax
jle 0x40b81f
fild dword [ebp - 0xf0]
fmul dword [0x41e748]
mov edx, dword [ebp - 0x198]
mov eax, dword [ebp - 0x120]
fld dword [edx + eax*4]
fadd st(1)
fstp dword [edx + eax*4]
add eax, 1
cmp eax, dword [ebp - 0x1a4]
jne 0x40b80a
fstp st(0)
mov eax, dword [ebp + 0x1c]
mov edi, dword [ebp + 0x1c]
mov byte [ebp - 0x191], bl
mov dword [ebp - 0xbc], 0x3e4ccccd
mov ebx, dword [ebp - 0x190]
bsr eax, dword [eax + 0x1c]
mov edx, dword [edi + 0x14]
mov dword [ebp - 0x174], ebx
mov dword [ebp - 0x170], 1
mov dword [ebp - 0x120], 1
xor eax, 0x1f
lea eax, [eax + edx - 0x1e]
jmp 0x409436
mov ecx, dword [ebp - 0x1ac]
mov ebx, dword [ebp - 0x19c]
mov esi, dword [ebp - 0x120]
test ecx, ecx
sete byte [ebp - 0xd4]
test ebx, ebx
movzx ecx, byte [ebp - 0xd4]
setne byte [ebp - 0xe4]
movzx eax, byte [ebp - 0xe4]
test esi, esi
sete bl
or eax, ecx
mov edi, ebx
and al, bl
cmovne edi, eax
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x78]
test eax, eax
jne 0x40ad53
jmp 0x407ced
mov eax, dword [ebp - 0x120]
mov dword [ebp - 0xe4], eax
jmp 0x407d73
fstp st(0)
jmp 0x40a795
cmp dword [ebp - 0xd8], 1
fst dword [ebp - 0x80]
jle 0x40b958
mov edx, dword [ebp - 0x138]
mov eax, 1
jmp 0x40b8f3
fld dword [ebp + eax*4 - 0x84]
fsub dword [0x41e7d4]
fld dword [edx + eax*4]
fxch st(1)
fcomi st(1)
fcmovbe st(0), st(1)
fstp st(1)
fstp dword [ebp + eax*4 - 0x80]
add eax, 1
cmp dword [ebp - 0xd8], eax
jne 0x40b8ec
jmp 0x40b098
mov dword [ebp - 0x170], 0
mov dword [ebp - 0x174], 0
jmp 0x407368
mov edi, edx
jmp 0x40b8a8
fstp st(1)
cmp ebx, 8
jg 0x40b516
fld st(0)
fld st(1)
jmp 0x40b59f
fstp st(0)
jmp 0x40b95a
fstp st(0)
mov edx, dword [ebp - 0xe8]
test edx, edx
js 0x40b0b9
jmp 0x40b098
fstp st(1)
fstp qword [esp]
call dbg.log
fmul qword [0x41e868]
fstp dword [ebp - 0xe4]
fld dword [ebp - 0xe4]
jmp 0x40b625
fmulp st(1)
jmp 0x409f69
fstp st(0)
fstp st(0)
mov dword [esp + 8], 0x6ea
mov dword [esp + 4], str.celt_celt_encoder.c
mov dword [esp], str.assertion_failed:_count_0
call dbg.celt_fatal
mov dword [esp + 8], 0x6c1
mov dword [esp + 4], str.celt_celt_encoder.c
mov dword [esp], str.assertion_failed:__celt_isnan_freq_0_____C1___celt_isnan_freq_N___
call dbg.celt_fatal
mov dword [esp + 8], 0x60b
mov dword [esp + 4], str.celt_celt_encoder.c
mov dword [esp], str.assertion_failed:_st__signalling0
call dbg.celt_fatal