Function at 0x51a410
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x1c4
mov eax, dword [0x62aabc]
xor eax, ebp
mov dword [ebp - 4], eax
mov edx, dword [ebp + 0x14]
mov eax, dword [ebp + 0xc]
mov ecx, dword [ebp + 0x10]
push esi
mov esi, dword [ebp + 0x20]
mov dword [ebp - 0x134], edx
mov dword [ebp - 0x128], edx
mov edx, dword [ebp + 0x18]
cmp edx, 0x4fc
push edi
mov edi, dword [ebp + 8]
mov dword [ebp - 0x104], 0x4fc
cmovg edx, dword [ebp - 0x104]
mov dword [ebp - 0xf0], eax
mov eax, dword [ebp + 0x34]
mov dword [ebp - 0x140], edi
mov dword [ebp - 0xcc], ecx
mov dword [ebp - 0xe8], eax
mov dword [ebp - 0x160], 0
mov dword [ebp - 0xf8], 0
mov dword [ebp - 0x114], 0
mov dword [ebp - 0x120], 0
mov dword [ebp - 0x164], 0
mov dword [ebp - 0x168], 0
mov dword [ebp - 0xe0], 0xffffffff
mov dword [ebp - 0xf4], 0xffffffff
mov dword [ebp - 0x10c], 0
mov dword [ebp - 0x144], 0xffffffff
mov dword [ebp - 0xfc], edx
mov dword [edi + 0x46dc], 0
test ecx, ecx
jle 0x51d129
test edx, edx
jle 0x51d129
cmp edx, 1
jne 0x51a51d
lea eax, [ecx + ecx*4]
lea edx, [edi + 0x90]
add eax, eax
mov dword [ebp - 0xd8], edx
cmp dword [edx], eax
jne 0x51a529
mov eax, 0xfffffffe
jmp 0x51d12c
lea eax, [edi + 0x90]
mov dword [ebp - 0xd8], eax
mov eax, dword [edi + 4]
mov ecx, dword [edi]
add eax, edi
add ecx, edi
mov dword [ebp - 0x12c], eax
cmp dword [edi + 0x6c], 0x803
mov dword [ebp - 0xd4], ecx
jne 0x51a553
mov dword [ebp - 0x118], 0
jmp 0x51a55c
mov eax, dword [edi + 0x74]
mov dword [ebp - 0x118], eax
mov eax, dword [edi + 0xa8]
mov edx, dword [ebp + 0x1c]
cmp edx, eax
cmovge edx, eax
lea eax, [ebp - 0x15c]
push eax
push 0x271f
push ecx
mov dword [ebp - 0x124], edx
call fcn.00522ff0
movss xmm3, dword [0x619e48]
add esp, 0xc
cmp dword [edi + 0x2c], 7
movss xmm1, dword [0x580378]
mov dword [ebp - 0x64], 0
jl 0x51a74a
mov eax, dword [ebp - 0xd8]
mov edx, dword [eax]
cmp edx, 0x3e80
jl 0x51a74a
mov ecx, dword [edi + 0x70]
xor eax, eax
imul ecx, dword [ebp - 0xcc]
xorps xmm2, xmm2
xorps xmm1, xmm1
test ecx, ecx
jle 0x51a5f6
mov edi, dword [ebp - 0xf0]
movss xmm0, dword [edi + eax*4]
comiss xmm2, xmm0
ja 0x51a5e3
movaps xmm2, xmm0
comiss xmm0, xmm1
ja 0x51a5eb
movaps xmm1, xmm0
inc eax
cmp eax, ecx
jl 0x51a5d6
mov edi, dword [ebp - 0x140]
mov ecx, dword [ebp - 0x124]
mov eax, 1
shl eax, cl
xorps xmm1, xmmword [0x560cb0]
maxss xmm2, xmm1
movd xmm0, eax
xor eax, eax
cvtdq2ps xmm0, xmm0
divss xmm3, xmm0
comiss xmm3, xmm2
setae al
mov dword [ebp - 0x10c], eax
mov eax, dword [edi + 0x1dd8]
mov dword [ebp - 0xe0], eax
mov eax, dword [edi + 0x1ddc]
mov dword [ebp - 0xf4], eax
lea eax, [ebp - 0x64]
push eax
push dword [ebp - 0xe8]
lea eax, [edi + 0xc0]
push ecx
push edx
push dword [ebp + 0x30]
push dword [ebp + 0x2c]
push dword [ebp + 0x28]
push dword [ebp - 0xcc]
push dword [ebp + 0x24]
push esi
push dword [ebp - 0x15c]
push eax
call fcn.00531780
mov edx, dword [ebp - 0x10c]
add esp, 0x30
movss xmm1, dword [0x580378]
test edx, edx
jne 0x51a710
movss xmm0, dword [ebp - 0x40]
comiss xmm0, xmm1
jbe 0x51a70c
push dword [edi + 0xb4]
movss xmm0, dword [edi + 0x46d4]
push dword [edi + 0x70]
mulss xmm0, dword [0x60bab0]
push dword [ebp - 0xcc]
push dword [ebp - 0xf0]
movss dword [ebp - 0x104], xmm0
call fcn.00519350
movss xmm0, dword [ebp - 0x104]
add esp, 0x10
mov eax, dword [ebp - 0xe0]
fstp dword [ebp - 0xe8]
maxss xmm0, dword [ebp - 0xe8]
mov dword [ebp - 0xe0], eax
mov eax, dword [ebp - 0xf4]
mov dword [ebp - 0xf4], eax
mov eax, dword [ebp - 0x10c]
movss dword [edi + 0x46d4], xmm0
mov dword [ebp - 0x10c], eax
jmp 0x51a762
test edx, edx
je 0x51a76a
mov ecx, dword [ebp - 0xe0]
mov eax, edx
xor eax, 1
mov dword [ebp - 0xe0], ecx
mov ecx, dword [ebp - 0xf4]
mov dword [ebp - 0x144], eax
lea eax, [edi + 0x8c]
mov dword [ebp - 0x100], eax
mov dword [ebp - 0xf4], ecx
mov dword [ebp - 0x10c], edx
jmp 0x51a7ee
cmp dword [edi + 0x1de4], 0
je 0x51a76a
lea eax, [edi + 0xc0]
push eax
call fcn.00533eb0
add esp, 4
movss xmm1, dword [0x580378]
cmp dword [ebp - 0x64], 0
lea esi, [edi + 0x8c]
mov eax, esi
mov dword [esi], 0xffffffff
mov dword [ebp - 0x100], eax
je 0x51a7ee
movss xmm0, dword [ebp - 0x40]
xor ecx, ecx
comiss xmm0, xmm1
mov dword [ebp - 0x100], eax
setae cl
mov dword [ebp - 0x144], ecx
test ecx, ecx
jne 0x51a7ee
push dword [edi + 0xb4]
push dword [edi + 0x70]
push dword [ebp - 0xcc]
push dword [ebp - 0xf0]
call fcn.00519350
fstp dword [ebp - 0x104]
movss xmm0, dword [ebp - 0x104]
xor eax, eax
mulss xmm0, dword [0x60bac4]
add esp, 0x10
mov dword [ebp - 0x100], esi
comiss xmm0, dword [edi + 0x46d4]
seta al
mov dword [ebp - 0x144], eax
mov eax, esi
cmp dword [ebp - 0x64], 0
mov dword [edi + 0x46cc], 0
je 0x51a8c3
cmp dword [edi + 0x7c], 0xfffffc18
jne 0x51a87a
mov ecx, dword [edi + 0x3798]
test ecx, ecx
jne 0x51a81c
movss xmm1, dword [ebp - 0x50]
jmp 0x51a836
cmp ecx, 0x3ea
jne 0x51a831
movss xmm1, dword [ebp - 0x48]
lea esi, [edi + 0x8c]
jmp 0x51a838
movss xmm1, dword [ebp - 0x4c]
mov esi, eax
movss xmm0, dword [0x619e48]
sub esp, 8
subss xmm0, xmm1
mulss xmm0, dword [0x60bac0]
cvtps2pd xmm0, xmm0
addsd xmm0, qword [0x619e60]
movsd qword [ebp - 0x108], xmm0
fld qword [ebp - 0x108]
fstp qword [esp]
call sub.api_ms_win_crt_math_l1_1_0.dll_floor
add esp, 8
call fcn.00550640
mov dword [esi], eax
mov ecx, dword [ebp - 0x44]
cmp ecx, 0xc
jg 0x51a88e
mov dword [edi + 0x46cc], 0x44d
jmp 0x51a8c3
cmp ecx, 0xe
jg 0x51a89f
mov dword [edi + 0x46cc], 0x44e
jmp 0x51a8c3
cmp ecx, 0x10
jg 0x51a8b0
mov dword [edi + 0x46cc], 0x44f
jmp 0x51a8c3
xor eax, eax
cmp ecx, 0x12
setg al
add eax, 0x450
mov dword [edi + 0x46cc], eax
cmp dword [edi + 0x70], 2
jne 0x51a902
cmp dword [edi + 0x78], 1
je 0x51a902
lea eax, [edi + 0x37b8]
push eax
mov eax, dword [ebp - 0xd8]
push dword [eax]
push dword [ebp - 0xcc]
push dword [ebp - 0xf0]
call fcn.005194f0
fstp dword [ebp - 0x104]
movss xmm3, dword [ebp - 0x104]
add esp, 0x10
jmp 0x51a905
xorps xmm3, xmm3
push dword [ebp - 0xfc]
push dword [ebp - 0xcc]
push edi
call fcn.0051e080
mov ecx, eax
add esp, 0xc
mov eax, dword [ebp - 0xd8]
mov dword [edi + 0xa0], ecx
mov esi, dword [eax]
mov eax, esi
cdq
idiv dword [ebp - 0xcc]
mov edx, dword [edi + 0x94]
mov dword [ebp - 0x11c], eax
test edx, edx
jne 0x51a9c0
lea eax, [esi + esi*2]
shl eax, 2
cdq
idiv dword [ebp - 0xcc]
mov esi, eax
lea eax, [ecx + ecx*2]
shl eax, 2
cdq
and edx, 7
lea ecx, [edx + eax]
mov eax, esi
cdq
sub eax, edx
sar ecx, 3
sar eax, 1
add eax, ecx
mov ecx, dword [ebp - 0xfc]
cdq
idiv esi
cmp eax, ecx
cmovl ecx, eax
mov eax, 0x2aaaaaab
mov dword [ebp - 0xfc], ecx
imul ecx, esi
mov esi, dword [ebp - 0xfc]
shl ecx, 3
imul ecx
mov eax, 1
sar edx, 1
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
mov edx, dword [edi + 0x94]
cmp esi, 1
mov dword [edi + 0xa0], ecx
cmovl esi, eax
mov eax, dword [ebp - 0x11c]
mov dword [ebp - 0xfc], esi
jmp 0x51a9c6
mov esi, dword [ebp - 0xfc]
cmp esi, 3
jl 0x51cf9c
lea eax, [eax + eax*2]
shl eax, 3
cmp ecx, eax
jl 0x51cf9c
mov eax, esi
imul eax, dword [ebp - 0x11c]
cmp dword [ebp - 0x11c], 0x32
jge 0x51aa06
cmp eax, 0x12c
jl 0x51cf9c
cmp ecx, 0x960
jl 0x51cf9c
push dword [edi + 0x28]
mov esi, dword [edi + 0x70]
push dword [edi + 0x2c]
shl eax, 3
push 0
push edx
push dword [ebp - 0x11c]
mov dword [ebp - 0x16c], eax
push esi
push ecx
call fcn.00519260
mov edx, eax
add esp, 0x1c
mov eax, dword [edi + 0x7c]
mov dword [ebp - 0xe4], edx
cmp eax, 0xbb9
jne 0x51aa44
mov ecx, 0x7f
jmp 0x51aaa2
cmp eax, 0xbba
jne 0x51aa4f
xor ecx, ecx
jmp 0x51aaa2
mov eax, dword [ebp - 0x100]
mov edx, dword [edi + 0x6c]
mov eax, dword [eax]
test eax, eax
js 0x51aa89
imul ecx, eax, 0x147
sar ecx, 8
cmp edx, 0x801
mov edx, dword [ebp - 0xe4]
mov dword [ebp - 0xdc], ecx
jne 0x51aaa8
mov eax, 0x73
cmp ecx, eax
cmovl eax, ecx
mov ecx, eax
jmp 0x51aaa2
cmp edx, 0x800
mov ecx, 0x30
mov edx, dword [ebp - 0xe4]
mov eax, 0x73
cmove ecx, eax
mov dword [ebp - 0xdc], ecx
mov eax, dword [edi + 0x78]
mov dword [ebp - 0x100], eax
mov dword [ebp - 0x104], 0x3e80
cmp eax, 0xfffffc18
je 0x51aac7
cmp esi, 2
je 0x51ab19
lea eax, [edi + 0x3774]
mov dword [ebp - 0x110], eax
cmp esi, 2
jne 0x51ab11
mov eax, dword [ebp - 0x104]
mov esi, 0x4650
imul ecx, ecx
imul ecx, ecx, 0x7d0
sar ecx, 0xe
cmp dword [edi + 0x3774], 2
cmovne eax, esi
add ecx, eax
xor eax, eax
cmp edx, ecx
lea ecx, [edi + 0x3774]
setg al
inc eax
mov dword [ebp - 0x100], eax
jmp 0x51ab25
mov eax, esi
mov dword [ebp - 0x100], eax
lea ecx, [edi + 0x3774]
mov dword [ebp - 0x110], ecx
mov dword [ecx], eax
mov eax, dword [ebp - 0xd8]
push dword [edi + 0x28]
push dword [edi + 0x2c]
mov eax, dword [eax]
cdq
idiv dword [ebp - 0xcc]
push 0
push dword [edi + 0x94]
push eax
push dword [ebp - 0x100]
push dword [edi + 0xa0]
call fcn.00519260
add esp, 0x1c
mov dword [ebp - 0xe8], eax
cmp dword [edi + 0xb8], 0
je 0x51ab7e
cmp dword [ebp - 0x64], 0
jne 0x51ab7e
cmp dword [ebp - 0x10c], 0
jne 0x51ab7e
mov eax, 1
jmp 0x51ab80
xor eax, eax
cmp dword [edi + 0x6c], 0x803
mov dword [ebp - 0xe4], eax
mov dword [edi + 0x38], eax
jne 0x51aba3
lea ecx, [edi + 0x3794]
mov dword [ebp - 0xd0], ecx
jmp 0x51ad22
mov esi, dword [edi + 0x88]
cmp esi, 0xfffffc18
jne 0x51aceb
movss xmm2, dword [0x619e48]
movss xmm1, dword [0x60bac8]
subss xmm2, xmm3
mov edx, dword [ebp - 0xdc]
movaps xmm0, xmm1
mulss xmm0, xmm3
mulss xmm3, dword [0x60bacc]
mulss xmm1, xmm2
mulss xmm2, dword [0x60bad0]
addss xmm0, xmm1
addss xmm2, xmm3
cvttss2si ecx, xmm0
cvttss2si eax, xmm2
sub eax, ecx
imul eax, edx
imul eax, edx
sar eax, 0xe
add eax, ecx
cmp dword [edi + 0x6c], 0x800
lea esi, [eax + 0x1f40]
cmovne esi, eax
mov eax, dword [edi + 0x3798]
cmp eax, 0x3ea
jne 0x51ac2c
add esi, 0xfffff060
jmp 0x51ac36
test eax, eax
jle 0x51ac36
add esi, 0xfa0
xor ecx, ecx
lea eax, [edi + 0x3794]
cmp dword [ebp - 0xe8], esi
setge cl
cmp dword [edi + 0x30], 0
lea ecx, [ecx*2 + 0x3e8]
mov dword [eax], ecx
mov esi, ecx
je 0x51ac8e
mov eax, 0x80
sub eax, edx
sar eax, 4
cmp dword [edi + 0x28], eax
jle 0x51ac88
cmp dword [edi + 0xbc], 2
jne 0x51ac75
cmp edx, 0x19
jle 0x51ac88
lea eax, [edi + 0x3794]
mov esi, 0x3e8
mov dword [eax], 0x3e8
jmp 0x51ac8e
lea eax, [edi + 0x3794]
cmp dword [ebp - 0xe4], 0
je 0x51aca7
cmp edx, 0x64
jle 0x51aca7
mov dword [eax], 0x3e8
mov esi, 0x3e8
cmp dword [ebp - 0x11c], 0x32
mov ecx, 0x2328
mov edx, dword [ebp - 0xd8]
mov eax, 0x1770
cmovg eax, ecx
imul eax, dword [ebp - 0xcc]
mov ecx, dword [edx]
shl ecx, 3
cdq
idiv ecx
cmp dword [ebp - 0xfc], eax
lea eax, [edi + 0x3794]
jge 0x51acf3
mov dword [eax], 0x3ea
mov esi, 0x3ea
jmp 0x51acf3
lea eax, [edi + 0x3794]
mov dword [eax], esi
mov ecx, eax
mov dword [ebp - 0xd0], ecx
cmp esi, 0x3ea
je 0x51ad29
mov edx, dword [ebp - 0xd8]
mov eax, 0x51eb851f
imul dword [edx]
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp dword [ebp - 0xcc], eax
jge 0x51ad29
mov esi, 0x3ea
mov dword [ecx], esi
cmp dword [edi + 0xb0], 0
je 0x51ad3d
mov dword [ecx], 0x3ea
mov esi, 0x3ea
mov edx, dword [edi + 0x3798]
mov eax, esi
test edx, edx
jle 0x51adfb
cmp esi, 0x3ea
je 0x51ad81
cmp edx, 0x3ea
je 0x51ad62
jmp 0x51adfb
xor eax, eax
mov dword [ebp - 0xf8], 1
cmp esi, 0x3ea
setne al
mov dword [ebp - 0x120], eax
mov eax, esi
jmp 0x51adfb
mov eax, 0x3ea
cmp edx, eax
je 0x51adfb
mov edx, dword [ebp - 0xd8]
xor eax, eax
cmp esi, 0x3ea
mov dword [ebp - 0xf8], 1
setne al
mov dword [ebp - 0x120], eax
mov eax, 0x51eb851f
imul dword [edx]
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp dword [ebp - 0xcc], eax
jl 0x51adda
mov edx, dword [edi + 0x3798]
mov eax, edx
mov dword [ecx], edx
mov dword [ebp - 0x164], 1
jmp 0x51adfb
mov edx, dword [ebp - 0x120]
mov eax, 0x3ea
mov dword [ebp - 0x120], edx
mov edx, dword [edi + 0x3798]
mov dword [ebp - 0xf8], 0
cmp dword [ebp - 0x100], 1
jne 0x51ae35
cmp dword [edi + 0x379c], 2
jne 0x51ae35
cmp dword [edi + 0x44], 0
jne 0x51ae35
cmp eax, 0x3ea
je 0x51ae35
cmp edx, 0x3ea
je 0x51ae35
mov eax, dword [ebp - 0x110]
mov dword [eax], 2
mov eax, 1
jmp 0x51ae37
xor eax, eax
mov dword [edi + 0x44], eax
mov eax, dword [ebp - 0xd8]
push dword [edi + 0x28]
mov esi, dword [ecx]
push dword [edi + 0x2c]
mov eax, dword [eax]
cdq
idiv dword [ebp - 0xcc]
push esi
push dword [edi + 0x94]
push eax
mov eax, dword [ebp - 0x110]
push dword [eax]
push dword [edi + 0xa0]
call fcn.00519260
add esp, 0x1c
mov dword [ebp - 0x100], eax
cmp esi, 0x3ea
je 0x51aeae
cmp dword [edi + 0x3798], 0x3ea
jne 0x51aeae
lea eax, [ebp - 0xc8]
push eax
push dword [edi + 0xb4]
push dword [ebp - 0x12c]
call fcn.00531420
add esp, 0xc
mov dword [ebp - 0x160], 1
mov ecx, dword [ebp - 0xd0]
mov esi, 0x44f
mov edx, dword [ecx]
mov dword [ebp - 0xe4], edx
cmp edx, 0x3ea
je 0x51aedc
cmp dword [edi + 0x37b0], 0
jne 0x51aedc
cmp dword [edi + 0x54], 0
je 0x51b190
cmp dword [edi + 0x70], 2
mov edx, 0x451
jne 0x51af91
cmp dword [edi + 0x78], 1
je 0x51af91
mov ecx, dword [0x60b970]
mov eax, dword [0x60b950]
mov dword [ebp - 0x178], 0x60b954
mov dword [ebp - 0x170], 0x60b958
mov dword [ebp - 0x180], 0x60b95c
mov dword [ebp - 0x158], 0x60b960
mov dword [ebp - 0x14c], 0x60b964
mov dword [ebp - 0x130], 0x60b968
mov dword [ebp - 0xe8], 0x60b96c
mov dword [ebp - 0x17c], 0x60b974
mov dword [ebp - 0x174], 0x60b978
mov dword [ebp - 0x184], 0x60b97c
mov dword [ebp - 0x154], 0x60b980
mov dword [ebp - 0x150], 0x60b984
mov dword [ebp - 0x148], 0x60b988
mov dword [ebp - 0x138], 0x60b98c
jmp 0x51b028
mov ecx, dword [0x60b930]
mov eax, dword [0x60b910]
mov dword [ebp - 0x178], 0x60b914
mov dword [ebp - 0x170], 0x60b918
mov dword [ebp - 0x180], 0x60b91c
mov dword [ebp - 0x158], 0x60b920
mov dword [ebp - 0x14c], 0x60b924
mov dword [ebp - 0x130], 0x60b928
mov dword [ebp - 0xe8], 0x60b92c
mov dword [ebp - 0x17c], 0x60b934
mov dword [ebp - 0x174], 0x60b938
mov dword [ebp - 0x184], 0x60b93c
mov dword [ebp - 0x154], 0x60b940
mov dword [ebp - 0x150], 0x60b944
mov dword [ebp - 0x148], 0x60b948
mov dword [ebp - 0x138], 0x60b94c
sub eax, ecx
mov esi, dword [ebp - 0xdc]
imul eax, esi
imul eax, esi
sar eax, 0xe
add eax, ecx
mov ecx, dword [ebp - 0x178]
mov dword [ebp - 0x24], eax
mov eax, dword [ebp - 0x17c]
mov ecx, dword [ecx]
sub ecx, dword [eax]
imul ecx, esi
imul ecx, esi
sar ecx, 0xe
add ecx, dword [eax]
mov dword [ebp - 0x20], ecx
mov eax, dword [ebp - 0x174]
mov ecx, dword [ebp - 0x170]
mov ecx, dword [ecx]
sub ecx, dword [eax]
imul ecx, esi
imul ecx, esi
sar ecx, 0xe
add ecx, dword [eax]
mov dword [ebp - 0x1c], ecx
mov eax, dword [ebp - 0x184]
mov ecx, dword [ebp - 0x180]
mov ecx, dword [ecx]
sub ecx, dword [eax]
imul ecx, esi
imul ecx, esi
sar ecx, 0xe
add ecx, dword [eax]
mov eax, dword [ebp - 0x154]
mov dword [ebp - 0x18], ecx
mov ecx, dword [ebp - 0x158]
mov ecx, dword [ecx]
sub ecx, dword [eax]
imul ecx, esi
imul ecx, esi
sar ecx, 0xe
add ecx, dword [eax]
mov eax, dword [ebp - 0x150]
mov dword [ebp - 0x14], ecx
mov ecx, dword [ebp - 0x14c]
mov ecx, dword [ecx]
sub ecx, dword [eax]
imul ecx, esi
imul ecx, esi
sar ecx, 0xe
add ecx, dword [eax]
mov eax, dword [ebp - 0x148]
mov dword [ebp - 0x10], ecx
mov ecx, dword [ebp - 0x130]
mov ecx, dword [ecx]
sub ecx, dword [eax]
imul ecx, esi
imul ecx, esi
sar ecx, 0xe
add ecx, dword [eax]
mov eax, dword [ebp - 0x138]
mov dword [ebp - 0xc], ecx
mov ecx, dword [ebp - 0xe8]
mov ecx, dword [ecx]
sub ecx, dword [eax]
imul ecx, esi
imul ecx, esi
sar ecx, 0xe
add ecx, dword [eax]
mov dword [ebp - 8], ecx
lea ecx, [ebp - 8]
cmp dword [edi + 0x37b0], 0
mov eax, dword [ecx - 4]
mov esi, dword [ecx]
jne 0x51b12f
cmp dword [edi + 0x37a8], edx
jl 0x51b12d
sub eax, esi
jmp 0x51b12f
add eax, esi
cmp dword [ebp - 0x100], eax
jge 0x51b143
dec edx
sub ecx, 8
cmp edx, 0x44d
jg 0x51b113
cmp edx, 0x44e
mov esi, 0x44f
cmove edx, esi
cmp dword [edi + 0x37b0], 0
mov dword [edi + 0x37a8], edx
mov dword [edi + 0x37a4], edx
jne 0x51b18a
cmp dword [ebp - 0xe4], 0x3ea
je 0x51b18a
cmp dword [edi + 0x58], 0
jne 0x51b18a
cmp edx, esi
mov edx, dword [ebp - 0xe4]
jle 0x51b190
mov dword [edi + 0x37a4], esi
jmp 0x51b190
mov edx, dword [ebp - 0xe4]
mov ecx, dword [edi + 0x37a4]
mov eax, dword [edi + 0x84]
cmp ecx, eax
jle 0x51b1a8
mov dword [edi + 0x37a4], eax
mov ecx, eax
mov eax, dword [edi + 0x80]
cmp eax, 0xfffffc18
je 0x51b1bd
mov dword [edi + 0x37a4], eax
mov ecx, eax
mov eax, ecx
cmp edx, 0x3ea
je 0x51b1e4
cmp dword [ebp - 0x16c], 0x3a98
jge 0x51b1e4
cmp ecx, 0x44f
mov eax, esi
cmovl eax, ecx
mov dword [edi + 0x37a4], eax
mov ecx, dword [ebp - 0xd8]
mov esi, dword [ecx]
mov ecx, eax
cmp esi, 0x5dc0
jg 0x51b20c
cmp eax, 0x450
jle 0x51b20c
mov dword [edi + 0x37a4], 0x450
mov ecx, 0x450
mov edx, ecx
cmp esi, 0x3e80
jg 0x51b22d
cmp ecx, 0x44f
jle 0x51b22d
mov dword [edi + 0x37a4], 0x44f
mov edx, 0x44f
mov eax, edx
cmp esi, 0x2ee0
jg 0x51b24e
cmp edx, 0x44e
jle 0x51b24e
mov dword [edi + 0x37a4], 0x44e
mov eax, 0x44e
mov edx, eax
mov dword [ebp - 0xdc], edx
cmp esi, 0x1f40
jg 0x51b280
mov dword [ebp - 0xdc], eax
cmp eax, 0x44d
jle 0x51b280
mov edx, 0x44d
mov dword [edi + 0x37a4], 0x44d
mov dword [ebp - 0xdc], edx
mov esi, dword [edi + 0x46cc]
test esi, esi
je 0x51b334
cmp dword [edi + 0x80], 0xfffffc18
mov dword [ebp - 0xdc], edx
jne 0x51b334
mov eax, dword [ebp - 0x110]
mov edx, dword [ebp - 0xe4]
mov ecx, dword [eax]
imul eax, ecx, 0x4650
cmp dword [ebp - 0x100], eax
jg 0x51b2cd
cmp edx, 0x3ea
jne 0x51b2cd
lea ecx, [edx + 0x63]
jmp 0x51b312
imul eax, ecx, 0x5dc0
cmp dword [ebp - 0x100], eax
jg 0x51b2e8
cmp edx, 0x3ea
jne 0x51b2e8
lea ecx, [edx + 0x64]
jmp 0x51b312
mov edx, dword [ebp - 0x100]
imul eax, ecx, 0x7530
cmp edx, eax
jg 0x51b2ff
mov ecx, 0x44f
jmp 0x51b312
imul eax, ecx, 0xabe0
xor ecx, ecx
cmp edx, eax
setg cl
add ecx, 0x450
mov edx, dword [edi + 0x37a4]
cmp esi, ecx
cmovg ecx, esi
cmp edx, ecx
mov dword [edi + 0x46cc], ecx
cmovge edx, ecx
mov dword [ebp - 0xdc], edx
mov dword [edi + 0x37a4], edx
cmp dword [edi + 0x30], 0
mov eax, dword [edi + 0x34]
mov ecx, dword [edi + 0x28]
mov dword [ebp - 0xe8], eax
mov dword [ebp - 0x14c], ecx
je 0x51b4b2
test ecx, ecx
je 0x51b4b2
cmp dword [ebp - 0xe4], 0x3ea
je 0x51b4b2
mov eax, 0x19
mov dword [ebp - 0x138], edx
cmp ecx, eax
cmovl eax, ecx
mov ecx, 0x7d
sub ecx, eax
mov dword [ebp - 0x148], ecx
lea ecx, [edx*8 + 0x60972c]
mov eax, dword [ecx - 4]
mov esi, eax
mov dword [ebp - 0x130], ecx
mov ecx, dword [ecx]
sub esi, ecx
cmp dword [ebp - 0xe8], 1
cmovne esi, eax
cmp dword [ebp - 0xe8], 0
mov eax, dword [ebp - 0x10c]
mov dword [ebp - 0x10c], eax
mov eax, dword [ebp - 0xf4]
lea edx, [ecx + esi]
mov dword [ebp - 0xf4], eax
mov eax, dword [ebp - 0xe0]
cmovne edx, esi
imul edx, dword [ebp - 0x148]
mov dword [ebp - 0xe0], eax
movzx eax, dx
imul ecx, eax, 0x28f
sar edx, 0x10
imul eax, edx, 0x28f
sar ecx, 0x10
add ecx, eax
cmp dword [ebp - 0x100], ecx
jg 0x51b47b
cmp dword [ebp - 0x14c], 5
jle 0x51b449
mov eax, dword [ebp - 0x138]
cmp eax, 0x44d
jle 0x51b43d
mov ecx, dword [ebp - 0x130]
dec eax
mov dword [ebp - 0x138], eax
sub ecx, 8
mov dword [edi + 0x37a4], eax
mov eax, dword [ebp - 0xd0]
mov dword [ebp - 0xd0], eax
jmp 0x51b38c
mov eax, dword [ebp - 0xdc]
mov dword [edi + 0x37a4], eax
mov ecx, dword [ebp - 0xe0]
mov esi, dword [ebp - 0xd0]
mov dword [ebp - 0xe0], ecx
mov ecx, dword [ebp - 0xf4]
mov dword [ebp - 0xf4], ecx
mov ecx, dword [ebp - 0x10c]
mov dword [ebp - 0xd0], esi
mov dword [ebp - 0x10c], ecx
jmp 0x51b4b8
mov ecx, dword [ebp - 0xe0]
mov eax, 1
mov esi, dword [ebp - 0xd0]
mov dword [ebp - 0xe0], ecx
mov ecx, dword [ebp - 0xf4]
mov dword [ebp - 0xf4], ecx
mov ecx, dword [ebp - 0x10c]
mov dword [ebp - 0xd0], esi
mov dword [ebp - 0x10c], ecx
jmp 0x51b4ba
mov esi, dword [ebp - 0xd0]
xor eax, eax
push dword [ebp - 0x124]
mov dword [edi + 0x34], eax
push 0xfc4
push dword [ebp - 0xd4]
call fcn.00522ff0
mov ecx, dword [esi]
add esp, 0xc
cmp ecx, 0x3ea
jne 0x51b4f6
cmp dword [edi + 0x37a4], 0x44e
jne 0x51b4f6
mov dword [edi + 0x37a4], 0x44f
cmp dword [edi + 0xb0], 0
je 0x51b509
mov dword [edi + 0x37a4], 0x44d
mov eax, dword [edi + 0x37a4]
mov dword [ebp - 0xdc], eax
cmp ecx, 0x3e8
jne 0x51b531
cmp eax, 0x44f
jle 0x51b531
mov dword [esi], 0x3e9
mov ecx, 0x3e9
jmp 0x51b54b
cmp ecx, 0x3e9
jne 0x51b54b
cmp eax, 0x44f
jg 0x51b54b
mov dword [esi], 0x3e8
mov ecx, 0x3e8
mov eax, dword [ebp - 0xd8]
mov edx, dword [eax]
mov eax, 0x51eb851f
imul edx
sar edx, 4
mov esi, edx
shr esi, 0x1f
add esi, edx
cmp dword [ebp - 0xcc], esi
jle 0x51b578
cmp ecx, 0x3e8
jne 0x51b60c
mov edx, dword [ebp - 0xd8]
mov eax, dword [edx]
lea edx, [eax + eax*2]
mov eax, 0x51eb851f
mov dword [ebp - 0xe8], edx
imul edx
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [ebp - 0x138], eax
cmp dword [ebp - 0xcc], eax
jle 0x51b661
cmp ecx, 0x3e8
jne 0x51b60c
mov ecx, dword [ebp - 0xd8]
mov eax, dword [ecx]
lea ecx, [eax + eax]
mov eax, 0x51eb851f
imul ecx
mov ecx, dword [ebp - 0xcc]
sar edx, 3
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp ecx, eax
mov eax, 0x51eb851f
jne 0x51b5f3
mov edx, dword [ebp - 0xd8]
imul dword [edx]
sar edx, 3
mov esi, edx
shr esi, 0x1f
add esi, edx
jmp 0x51b60c
imul dword [ebp - 0xe8]
sar edx, 3
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp ecx, eax
cmove esi, dword [ebp - 0x138]
mov eax, dword [ebp - 0xcc]
mov ecx, dword [ebp - 0xe0]
cdq
idiv esi
cmp ecx, 0xffffffff
je 0x51b632
mov dword [edi + 0x1dd8], ecx
mov ecx, dword [ebp - 0xf4]
mov dword [edi + 0x1ddc], ecx
push dword [ebp + 0x38]
mov ecx, dword [ebp - 0x128]
push dword [ebp - 0x124]
push dword [ebp - 0x164]
push dword [ebp + 0x18]
push ecx
push esi
push eax
push dword [ebp - 0xf0]
push edi
call fcn.00519e00
add esp, 0x24
jmp 0x51d12c
cmp dword [edi + 0x37ac], 0
je 0x51b692
mov dword [ebp - 0xf8], 1
mov dword [ebp - 0x120], 1
mov dword [edi + 0x37ac], 0
mov dword [ebp - 0x160], 2
xor eax, eax
cmp ecx, 0x3ea
cmovne eax, dword [ebp - 0xf8]
mov dword [ebp - 0xe0], eax
test eax, eax
je 0x51b6e8
mov eax, dword [ebp - 0x110]
push dword [eax]
push dword [ebp - 0x11c]
push dword [edi + 0xa0]
push dword [ebp - 0xfc]
call fcn.00519390
mov ecx, eax
xor edx, edx
mov eax, dword [ebp - 0xe0]
add esp, 0x10
test ecx, ecx
mov dword [ebp - 0x114], ecx
cmove eax, edx
mov dword [ebp - 0xe0], eax
mov eax, dword [edi + 0xa0]
imul eax, dword [ebp - 0xcc]
mov edx, dword [ebp - 0xd8]
mov ecx, dword [edx]
shl ecx, 3
cdq
idiv ecx
mov edx, dword [ebp - 0xfc]
mov ecx, edx
sub ecx, dword [ebp - 0x114]
cmp ecx, eax
cmovge ecx, eax
lea eax, [edx - 1]
mov dword [ebp - 0x158], ecx
mov ecx, dword [ebp - 0x128]
push eax
inc ecx
lea eax, [ebp - 0x1b8]
push ecx
push eax
mov dword [ebp - 0x128], ecx
call fcn.00530090
mov ecx, dword [ebp - 0x118]
add esp, 0xc
add ecx, dword [ebp - 0xcc]
mov esi, dword [edi + 0x70]
mov eax, esi
imul eax, ecx
mov dword [ebp - 0x154], ecx
shl eax, 2
call fcn.00550610
mov eax, esi
mov ecx, esp
imul eax, dword [ebp - 0x118]
mov dword [ebp - 0xe4], ecx
shl eax, 2
push eax
mov eax, dword [edi + 0xac]
sub eax, dword [ebp - 0x118]
imul eax, esi
add eax, 0xdf3
lea eax, [edi + eax*4]
push eax
push ecx
call sub.VCRUNTIME140.dll_memcpy
mov ecx, dword [ebp - 0xd0]
add esp, 0xc
cmp dword [ecx], 0x3ea
jne 0x51b7b4
push 0x3c
call fcn.00534290
mov esi, eax
add esp, 4
shl esi, 8
jmp 0x51b7bd
mov eax, dword [ebp - 0x12c]
mov esi, dword [eax + 8]
mov edx, dword [edi + 0x377c]
sub esi, edx
movzx eax, si
imul ecx, eax, 0x3d7
sar esi, 0x10
imul eax, esi, 0x3d7
sar ecx, 0x10
add ecx, edx
add eax, ecx
mov dword [edi + 0x377c], eax
sar eax, 8
push eax
call fcn.00534330
mov edx, eax
lea esi, [edi + 0x3784]
mov eax, dword [ebp - 0xd8]
add esp, 4
cmp dword [edi + 0x6c], 0x800
mov dword [ebp - 0xf8], esi
mov ecx, dword [eax]
mov eax, dword [edi + 0x70]
mov dword [ebp - 0x14c], eax
jne 0x51bb58
imul eax, dword [ebp - 0x118]
mov esi, dword [ebp - 0xe4]
lea eax, [esi + eax*4]
mov dword [ebp - 0x150], eax
movsx eax, dx
imul esi, eax, 0x9a7
mov eax, 0x10624dd3
imul ecx
mov eax, esi
sar edx, 6
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
cdq
idiv ecx
mov edx, eax
mov eax, 0x10000000
imul ecx, edx, 0x1d7
mov esi, edx
mov dword [ebp - 0x138], edx
sar esi, 0x10
sub eax, ecx
mov ecx, eax
mov dword [ebp - 0x1c4], eax
mov dword [ebp - 0x1bc], eax
neg ecx
sar eax, 6
add ecx, ecx
mov dword [ebp - 0x124], eax
mov eax, edx
sar eax, 0xf
inc eax
mov dword [ebp - 0x1c0], ecx
sar eax, 1
mov dword [ebp - 0xe8], eax
add eax, esi
movzx ecx, dx
imul eax, ecx
movsx edi, cx
mov ecx, dword [ebp - 0x124]
movzx edx, dx
imul edx, edi
sar ecx, 0x10
mov dword [ebp - 0x148], ecx
imul edi, esi
sar edx, 0x10
add eax, edx
cwde
mov dword [ebp - 0x130], eax
mov eax, dword [ebp - 0xe8]
imul eax, dword [ebp - 0x138]
lea ecx, [edx + edi]
add eax, 0xff800000
add ecx, eax
mov eax, dword [ebp - 0x124]
sar ecx, 0xf
inc ecx
movzx esi, ax
sar ecx, 1
imul ecx, eax
mov eax, esi
imul eax, dword [ebp - 0x130]
sar eax, 0x10
add ecx, eax
mov eax, dword [ebp - 0x148]
imul eax, dword [ebp - 0x130]
add ecx, eax
mov eax, dword [ebp - 0x124]
mov dword [ebp - 0xec], ecx
mov ecx, eax
sar ecx, 0xf
inc ecx
movsx edx, ax
sar ecx, 1
imul ecx, eax
mov eax, edx
imul edx, dword [ebp - 0x148]
imul eax, esi
sar eax, 0x10
add ecx, eax
add ecx, edx
mov esi, dword [ebp - 0x14c]
lea eax, [ebp - 0xec]
mov edi, dword [ebp - 0x150]
push esi
push dword [ebp - 0xcc]
mov dword [ebp - 0xe8], ecx
push edi
push dword [ebp - 0xf8]
push eax
lea eax, [ebp - 0x1c4]
push eax
push dword [ebp - 0xf0]
call fcn.0051de80
add esp, 0x1c
cmp esi, 2
mov esi, dword [ebp - 0xf8]
jne 0x51b9b3
push 2
push dword [ebp - 0xcc]
lea eax, [edi + 4]
push eax
lea eax, [esi + 8]
push eax
lea eax, [ebp - 0xec]
push eax
lea eax, [ebp - 0x1c4]
push eax
mov eax, dword [ebp - 0xf0]
add eax, 4
push eax
call fcn.0051de80
add esp, 0x1c
mov edi, dword [ebp - 0x140]
cmp dword [ebp + 0x38], 0
je 0x51ba6a
mov edx, dword [edi + 0x70]
mov eax, edx
imul eax, dword [ebp - 0x118]
mov ecx, dword [ebp - 0xe4]
imul edx, dword [ebp - 0xcc]
push edx
lea eax, [ecx + eax*4]
mov ecx, dword [edi + 0xb4]
and ecx, 7
push eax
push eax
mov eax, dword [ecx*4 + 0x60c218]
call eax
movss xmm0, dword [0x60bad4]
add esp, 0xc
fstp dword [ebp - 0xe8]
movss xmm1, dword [ebp - 0xe8]
comiss xmm0, xmm1
jbe 0x51ba1b
ucomiss xmm1, xmm1
lahf
test ah, 0x44
jnp 0x51ba6a
mov ecx, dword [edi + 0x70]
mov eax, ecx
imul eax, dword [ebp - 0xcc]
imul ecx, dword [ebp - 0x118]
shl eax, 2
push eax
mov eax, dword [ebp - 0xe4]
push 0
lea eax, [eax + ecx*4]
push eax
call sub.VCRUNTIME140.dll_memset
add esp, 0xc
mov dword [edi + 0x3790], 0
mov dword [edi + 0x378c], 0
mov dword [edi + 0x3788], 0
mov dword [esi], 0
mov eax, dword [ebp - 0xd0]
movss xmm0, dword [0x619e48]
movss dword [ebp - 0xf4], xmm0
mov eax, dword [eax]
mov dword [ebp - 0xe8], eax
cmp eax, 0x3ea
je 0x51c2c3
mov eax, dword [edi + 0x70]
mov dword [ebp - 0x130], eax
imul eax, dword [ebp - 0xcc]
add eax, eax
call fcn.00550610
mov esi, dword [ebp - 0x158]
mov eax, dword [edi + 0x94]
mov dword [ebp - 0xf0], esp
lea esi, [esi*8 - 8]
imul esi, dword [ebp - 0x11c]
cmp dword [ebp - 0xe8], 0x3e9
jne 0x51bb87
mov ecx, dword [ebp - 0x110]
mov edx, dword [ebp - 0xd8]
push dword [ecx]
xor ecx, ecx
push dword [edi + 0x34]
push eax
imul eax, dword [ebp - 0xcc], 0x32
cmp dword [edx], eax
mov eax, dword [ebp - 0xdc]
sete cl
push ecx
push eax
push esi
call fcn.00519420
add esp, 0x18
mov dword [edi + 0x24], eax
cmp dword [edi + 0x37b4], 0
jne 0x51bb50
sub eax, esi
movd xmm0, eax
cvtdq2ps xmm0, xmm0
mulss xmm0, dword [0x60baa8]
cvtps2pd xmm0, xmm0
mulsd xmm0, qword [0x5fb4c0]
call sub.api_ms_win_crt_math_l1_1_0.dll__libm_sse2_exp_precise
movss xmm1, dword [0x619e48]
cvtsd2ss xmm0, xmm0
subss xmm1, xmm0
movss dword [ebp - 0xf4], xmm1
mov eax, dword [edi + 0x94]
jmp 0x51bb8a
push ecx
mov ecx, dword [ebp - 0xe4]
push eax
imul eax, dword [ebp - 0x118]
push dword [ebp - 0xcc]
push esi
lea eax, [ecx + eax*4]
push eax
push 3
push dword [ebp - 0xf0]
call fcn.00519860
add esp, 0x1c
jmp 0x51b9b9
mov dword [edi + 0x24], esi
mov ecx, dword [edi + 0x37b4]
mov dword [ebp - 0x138], ecx
test ecx, ecx
je 0x51bcf3
test eax, eax
je 0x51bcf3
cmp dword [edi + 0xb0], 0
jne 0x51bcf3
mov edx, dword [edi + 0x37a4]
mov eax, 0x11
mov dword [ebp - 0xf8], eax
xorps xmm4, xmm4
xorps xmm3, xmm3
cmp edx, 0x44d
jne 0x51bbe3
mov eax, 0xd
mov dword [ebp - 0x124], 0x1f40
jmp 0x51bc04
mov dword [ebp - 0x124], 0x3e80
cmp edx, 0x44e
jne 0x51bc0a
mov eax, 0xf
mov dword [ebp - 0x124], 0x2ee0
mov dword [ebp - 0xf8], eax
mov esi, dword [edi + 0x70]
test esi, esi
jle 0x51bc7c
movss xmm2, dword [0x619e40]
xor edx, edx
movss xmm1, dword [0x60bad8]
mov edi, dword [ebp - 0xf8]
nop dword [eax]
lea eax, [edx + ecx]
mov ecx, edi
movss xmm0, dword [eax]
minss xmm0, xmm2
comiss xmm0, xmm1
jbe 0x51bc4d
comiss xmm0, xmm4
jbe 0x51bc50
mulss xmm0, xmm2
jmp 0x51bc50
movaps xmm0, xmm1
add eax, 4
addss xmm3, xmm0
sub ecx, 1
jne 0x51bc35
mov ecx, dword [ebp - 0x138]
add edx, 0x54
sub esi, 1
jne 0x51bc30
mov edi, dword [ebp - 0x140]
mov eax, dword [ebp - 0xf8]
mov esi, dword [ebp - 0x130]
movd xmm0, eax
mov eax, 0x55555556
cvtdq2ps xmm0, xmm0
mov ecx, dword [edi + 0x24]
neg ecx
add ecx, ecx
imul ecx
divss xmm3, xmm0
mov ecx, dword [edi + 0x37a4]
mov eax, edx
shr eax, 0x1f
add eax, edx
movd xmm0, esi
cvtdq2ps xmm0, xmm0
mulss xmm3, xmm0
movd xmm0, dword [ebp - 0x124]
cvtdq2ps xmm0, xmm0
addss xmm3, dword [0x58037c]
mulss xmm3, xmm0
cvttss2si esi, xmm3
cmp esi, eax
cmovg eax, esi
cmp ecx, 0x450
je 0x51bcdd
cmp ecx, 0x451
jne 0x51bcf0
lea ecx, [eax + eax*2]
mov eax, 0x66666667
imul ecx
sar edx, 1
mov eax, edx
shr eax, 0x1f
add eax, edx
add dword [edi + 0x24], eax
imul eax, dword [ebp - 0xcc], 0x3e8
mov ecx, dword [ebp - 0xd8]
cdq
idiv dword [ecx]
mov ecx, dword [edi + 0x70]
mov dword [edi + 0x20], eax
mov eax, dword [ebp - 0x110]
mov dword [edi + 8], ecx
mov eax, dword [eax]
mov dword [edi + 0xc], eax
mov eax, dword [ebp - 0xdc]
cmp eax, 0x44d
jne 0x51bd35
mov dword [edi + 0x1c], 0x1f40
mov esi, 0x1f40
jmp 0x51bd80
cmp eax, 0x44e
jne 0x51bd4a
mov dword [edi + 0x1c], 0x2ee0
mov esi, 0x2ee0
jmp 0x51bd80
cmp dword [ebp - 0xe8], 0x3e9
je 0x51bd74
cmp eax, 0x44f
je 0x51bd74
push 0x6d9
push str.D:UsersphiliDropboxDevelopmentlibcodecsopus_srcopus_encoder.c
push str.assertion_failed:_st__mode__MODE_HYBRID__curr_bandwidth__OPUS_BANDWIDTH_WIDEBAND
call fcn.00504d50
add esp, 0xc
mov dword [edi + 0x1c], 0x3e80
mov esi, 0x3e80
mov eax, dword [ebp - 0xd0]
mov edx, 0x1f40
mov ecx, dword [ebp - 0x104]
mov eax, dword [eax]
cmp eax, 0x3e9
mov dword [ebp - 0xe8], eax
cmovne ecx, edx
mov dword [edi + 0x18], ecx
mov dword [edi + 0x14], 0x3e80
cmp eax, 0x3e8
jne 0x51be0c
cmp dword [ebp - 0x11c], 0x32
mov eax, dword [ebp - 0x16c]
jle 0x51bdd7
lea ecx, [eax + eax]
mov eax, 0x55555556
imul ecx
mov eax, edx
shr eax, 0x1f
add eax, edx
mov edx, 0x1f40
cmp eax, 0x1f40
jge 0x51bdf2
mov ecx, 0x2ee0
mov dword [edi + 0x14], 0x2ee0
cmp esi, ecx
cmova esi, ecx
mov dword [edi + 0x1c], esi
cmp eax, 0x1b58
jge 0x51be0c
cmp esi, 0x1f40
mov dword [edi + 0x14], 0x1f40
cmova esi, edx
mov dword [edi + 0x1c], esi
mov esi, dword [edi + 0x94]
xor eax, eax
test esi, esi
sete al
cmp dword [ebp - 0xe0], 0
mov dword [edi + 0x3c], eax
mov eax, dword [ebp - 0xfc]
lea edx, [eax*8 - 8]
mov ecx, edx
mov dword [edi + 0x40], edx
mov dword [ebp - 0xf8], ecx
je 0x51be77
mov eax, dword [ebp - 0x114]
mov dword [ebp - 0xf8], ecx
cmp eax, 2
jl 0x51be77
shl eax, 3
sub edx, eax
cmp dword [ebp - 0xe8], 0x3e9
lea ecx, [edx - 1]
mov dword [ebp - 0xf8], ecx
mov dword [edi + 0x40], ecx
jne 0x51be77
add ecx, 0xffffffec
mov dword [ebp - 0xf8], ecx
mov dword [edi + 0x40], ecx
mov eax, dword [ebp - 0xd0]
cmp dword [eax], 0x3e9
jne 0x51beff
test esi, esi
jne 0x51beaa
mov eax, dword [edi + 0x24]
imul eax, dword [ebp - 0xcc]
mov esi, dword [ebp - 0xd8]
cdq
idiv dword [esi]
cmp ecx, eax
cmovl eax, ecx
mov dword [edi + 0x40], eax
jmp 0x51bf05
mov eax, dword [ebp - 0xd8]
xor edx, edx
imul ecx, dword [ebp - 0xcc], 0x32
mov esi, dword [eax]
mov eax, dword [ebp - 0x110]
cmp esi, ecx
sete dl
push dword [eax]
mov eax, dword [ebp - 0xdc]
push dword [edi + 0x34]
push dword [edi + 0x94]
push edx
push eax
mov eax, dword [ebp - 0xf8]
imul eax, esi
cdq
idiv dword [ebp - 0xcc]
push eax
call fcn.00519420
imul eax, dword [ebp - 0xcc]
add esp, 0x18
cdq
idiv esi
mov dword [edi + 0x40], eax
mov esi, dword [ebp - 0xd8]
cmp dword [ebp - 0x160], 0
movss xmm2, dword [0x5fa5f4]
movss xmm0, dword [0x60badc]
je 0x51c061
mov edi, dword [esi]
mov eax, 0x51eb851f
imul edi
push edi
sar edx, 7
mov esi, edx
mov dword [ebp - 0xe8], 0
shr esi, 0x1f
add esi, edx
mov edx, dword [ebp - 0x140]
mov eax, dword [edx + 0xac]
sub eax, dword [edx + 0x74]
mov ecx, dword [edx + 0x70]
sub eax, esi
imul eax, ecx
add edx, 0x37cc
shl eax, 2
add edx, eax
mov dword [ebp - 0x104], eax
mov eax, dword [ebp - 0x15c]
push dword [eax + 0x3c]
push ecx
push esi
push dword [eax + 4]
sub esp, 8
mov dword [esp + 4], 0x3f800000
mov dword [esp], 0
push edx
push edx
call fcn.0051a0e0
mov edi, dword [ebp - 0x140]
push dword [ebp - 0x104]
push 0
lea esi, [edi + 0x37cc]
push esi
call sub.VCRUNTIME140.dll_memset
mov eax, dword [edi + 0x70]
add esp, 0x30
mov edx, dword [edi + 0xac]
xor ecx, ecx
imul eax, edx
test eax, eax
jle 0x51c01c
movss xmm2, dword [0x55aab0]
movss xmm3, dword [0x60badc]
movss xmm4, dword [0x5fa5f4]
nop word [eax + eax]
movss xmm1, dword [esi]
mulss xmm1, xmm4
comiss xmm1, xmm3
ja 0x51bff2
movaps xmm1, xmm3
jmp 0x51bffa
comiss xmm2, xmm1
ja 0x51bffa
movaps xmm1, xmm2
mov edx, dword [ebp - 0xf0]
add esi, 4
cvtss2si eax, xmm1
mov word [edx + ecx*2], ax
inc ecx
mov eax, dword [edi + 0x70]
mov edx, dword [edi + 0xac]
imul eax, edx
cmp ecx, eax
jl 0x51bfe0
push dword [ebp - 0x144]
lea eax, [ebp - 0xe8]
push dword [ebp - 0x160]
push eax
push 0
push edx
push dword [ebp - 0xf0]
lea eax, [edi + 8]
push eax
push dword [ebp - 0x12c]
call fcn.005304e0
movss xmm0, dword [0x60badc]
add esp, 0x20
movss xmm2, dword [0x5fa5f4]
mov dword [edi + 0x48], 0
mov ecx, dword [edi + 0x70]
xor edx, edx
mov esi, dword [ebp - 0xcc]
mov eax, ecx
imul eax, esi
test eax, eax
jle 0x51c0d0
nop word [eax + eax]
imul ecx, dword [ebp - 0x118]
mov eax, dword [ebp - 0xe4]
add ecx, edx
movss xmm1, dword [eax + ecx*4]
mulss xmm1, xmm2
comiss xmm1, xmm0
jbe 0x51c0aa
movss xmm0, dword [0x55aab0]
comiss xmm0, xmm1
ja 0x51c0ad
movaps xmm1, xmm0
mov ecx, dword [ebp - 0xf0]
movss xmm0, dword [0x60badc]
cvtss2si eax, xmm1
mov word [ecx + edx*2], ax
inc edx
mov ecx, dword [edi + 0x70]
mov eax, ecx
imul eax, esi
cmp edx, eax
jl 0x51c080
push dword [ebp - 0x144]
lea eax, [ebp - 0x188]
push 0
push eax
lea eax, [ebp - 0x1b8]
push eax
push esi
push dword [ebp - 0xf0]
lea eax, [edi + 8]
push eax
push dword [ebp - 0x12c]
call fcn.005304e0
mov esi, eax
add esp, 0x20
test esi, esi
jne 0x51cf61
mov eax, dword [ebp - 0xd0]
mov ecx, dword [edi + 0x50]
cmp dword [eax], 0x3e8
jne 0x51c159
cmp ecx, 0x1f40
jne 0x51c12f
mov ecx, 0x44d
mov dword [ebp - 0xdc], ecx
jmp 0x51c17e
cmp ecx, 0x2ee0
jne 0x51c144
mov ecx, 0x44e
mov dword [ebp - 0xdc], ecx
jmp 0x51c17e
cmp ecx, 0x3e80
jne 0x51c178
mov ecx, 0x44f
mov dword [ebp - 0xdc], ecx
jmp 0x51c17e
cmp ecx, 0x3e80
je 0x51c178
push 0x745
push str.D:UsersphiliDropboxDevelopmentlibcodecsopus_srcopus_encoder.c
push str.assertion_failed:_st__silk_mode.internalSampleRate__16000
call fcn.00504d50
add esp, 0xc
mov ecx, dword [ebp - 0xdc]
cmp dword [edi + 0x60], 0
je 0x51c194
cmp dword [edi + 0x46d8], 0
jne 0x51c194
mov eax, 1
jmp 0x51c196
xor eax, eax
cmp dword [ebp - 0x188], 0
mov dword [edi + 0x48], eax
jne 0x51c272
mov eax, dword [ebp - 0xd8]
mov dword [edi + 0x46dc], 0
mov eax, dword [eax]
cdq
idiv dword [ebp - 0xcc]
mov edx, eax
mov eax, dword [ebp - 0xd0]
mov esi, dword [eax]
xor eax, eax
mov dword [ebp - 0x104], eax
cmp edx, 0x190
jge 0x51c1f1
nop dword [eax]
add edx, edx
inc eax
cmp edx, 0x190
jl 0x51c1e0
mov dword [ebp - 0x104], eax
cmp esi, 0x3e8
jne 0x51c208
add cl, 3
sub al, 2
shl cl, 5
shl al, 3
or cl, al
jmp 0x51c241
cmp esi, 0x3ea
jne 0x51c235
xor edx, edx
add ecx, 0xfffffbb2
movzx eax, cl
cmovns edx, eax
or dl, 0xfc
shl dl, 2
or dl, byte [ebp - 0x104]
shl dl, 3
mov byte [ebp - 0xdc], dl
jmp 0x51c247
or cl, 6
sub al, 2
add cl, cl
or cl, al
shl cl, 3
mov dword [ebp - 0xdc], ecx
mov eax, dword [ebp - 0x110]
cmp dword [eax], 2
mov eax, dword [ebp - 0xdc]
setne cl
dec cl
and cl, 4
or cl, al
mov eax, dword [ebp - 0x134]
mov byte [eax], cl
mov eax, 1
jmp 0x51d12c
test eax, eax
je 0x51c2c5
mov eax, dword [ebp - 0x110]
push dword [eax]
push dword [ebp - 0x11c]
push dword [edi + 0xa0]
push dword [ebp - 0xfc]
call fcn.00519390
mov ecx, eax
mov dword [ebp - 0x120], 0
xor eax, eax
mov dword [ebp - 0x114], ecx
add esp, 0x10
mov dword [edi + 0x37ac], 1
test ecx, ecx
setne al
mov dword [ebp - 0xe0], eax
jmp 0x51c2c5
xor esi, esi
mov eax, dword [ebp - 0xdc]
mov ecx, 0x15
add eax, 0xfffffbb3
cmp eax, 4
ja case.0x51c2da.1105
jmp dword [eax*4 + 0x51d144]
mov ecx, 0xd
jmp case.0x51c2da.1105
mov ecx, 0x11
jmp case.0x51c2da.1105
mov ecx, 0x13
push ecx
push 0x271c
push dword [ebp - 0xd4]
call fcn.00522ff0
mov eax, dword [ebp - 0x110]
push dword [eax]
push 0x2718
push dword [ebp - 0xd4]
call fcn.00522ff0
push 0xffffffffffffffff
push 0xfa2
push dword [ebp - 0xd4]
call fcn.00522ff0
mov eax, dword [ebp - 0xd0]
add esp, 0x24
cmp dword [eax], 0x3e8
je 0x51c40d
push 0
push 0xfa6
push dword [ebp - 0xd4]
call fcn.00522ff0
add esp, 0xc
cmp dword [edi + 0x4c], 0
je 0x51c364
xorps xmm0, xmm0
jmp 0x51c36c
movss xmm0, dword [0x5fb584]
cvttss2si eax, xmm0
push eax
push 0x2712
push dword [ebp - 0xd4]
call fcn.00522ff0
mov eax, dword [ebp - 0xd0]
add esp, 0xc
cmp dword [edi + 0x94], 0
je 0x51c40d
cmp dword [eax], 0x3e9
jne 0x51c3cc
mov eax, dword [edi + 0xa0]
sub eax, dword [edi + 0x24]
push eax
push 0xfa2
push dword [ebp - 0xd4]
call fcn.00522ff0
push 0
push 0xfb4
push dword [ebp - 0xd4]
call fcn.00522ff0
add esp, 0x18
jmp 0x51c40d
push 1
push 0xfa6
push dword [ebp - 0xd4]
call fcn.00522ff0
push dword [edi + 0x98]
push 0xfb4
push dword [ebp - 0xd4]
call fcn.00522ff0
push dword [edi + 0xa0]
push 0xfa2
push dword [ebp - 0xd4]
call fcn.00522ff0
add esp, 0x24
mov eax, dword [ebp - 0xd8]
mov ecx, dword [edi + 0x70]
imul ecx, dword [eax]
mov eax, 0x51eb851f
imul ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add eax, edx
shl eax, 2
mov dword [ebp - 0xe8], eax
call fcn.00550610
mov eax, dword [ebp - 0xd0]
mov dword [ebp - 0x104], esp
mov ecx, dword [eax]
cmp ecx, 0x3e8
je 0x51c4a3
mov eax, dword [edi + 0x3798]
cmp ecx, eax
je 0x51c4a3
test eax, eax
jle 0x51c4a3
mov ecx, dword [ebp - 0xd8]
mov eax, 0x51eb851f
push dword [ebp - 0xe8]
imul dword [ecx]
mov ecx, dword [edi + 0xac]
sar edx, 7
mov eax, edx
shr eax, 0x1f
add eax, edx
sub ecx, eax
sub ecx, dword [ebp - 0x118]
imul ecx, dword [edi + 0x70]
add ecx, 0xdf3
lea eax, [edi + ecx*4]
push eax
push dword [ebp - 0x104]
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
mov edx, dword [edi + 0xac]
mov eax, edx
sub eax, dword [ebp - 0xcc]
sub eax, dword [ebp - 0x118]
mov ecx, dword [edi + 0x70]
imul eax, ecx
test eax, eax
jle 0x51c51f
imul ecx, dword [ebp - 0xcc]
shl eax, 2
push eax
add ecx, 0xdf3
lea eax, [edi + ecx*4]
push eax
lea eax, [edi + 0x37cc]
push eax
call sub.VCRUNTIME140.dll_memmove
mov eax, dword [edi + 0x70]
imul eax, dword [ebp - 0x154]
shl eax, 2
push eax
mov eax, dword [edi + 0xac]
sub eax, dword [ebp - 0xcc]
sub eax, dword [ebp - 0x118]
imul eax, dword [edi + 0x70]
push dword [ebp - 0xe4]
add eax, 0xdf3
lea eax, [edi + eax*4]
push eax
call sub.VCRUNTIME140.dll_memcpy
add esp, 0x18
jmp 0x51c552
mov eax, edx
imul eax, ecx
shl eax, 2
push eax
mov eax, dword [ebp - 0xcc]
sub eax, edx
add eax, dword [ebp - 0x118]
imul eax, ecx
mov ecx, dword [ebp - 0xe4]
lea eax, [ecx + eax*4]
push eax
lea eax, [edi + 0x37cc]
push eax
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
movss xmm0, dword [edi + 0x3780]
movss xmm1, dword [0x619e48]
comiss xmm1, xmm0
movss xmm5, dword [ebp - 0xf4]
ja 0x51c574
comiss xmm1, xmm5
jbe 0x51c5af
mov eax, dword [ebp - 0xd8]
push dword [eax]
mov eax, dword [ebp - 0x15c]
push dword [eax + 0x3c]
push dword [edi + 0x70]
push dword [ebp - 0xcc]
push dword [eax + 4]
mov eax, dword [ebp - 0xe4]
sub esp, 8
movss dword [esp + 4], xmm5
movss dword [esp], xmm0
push eax
push eax
call fcn.0051a0e0
add esp, 0x24
mov eax, dword [ebp - 0xd0]
movss dword [edi + 0x3780], xmm5
cmp dword [eax], 0x3e9
jne 0x51c5d0
mov eax, dword [ebp - 0x110]
cmp dword [eax], 1
jne 0x51c612
mov ecx, dword [ebp - 0x100]
cmp ecx, 0x7d00
jle 0x51c5e7
mov dword [edi + 0x5c], 0x4000
jmp 0x51c612
cmp ecx, 0x3e80
jge 0x51c5f8
mov dword [edi + 0x5c], 0
jmp 0x51c612
lea eax, [ecx - 0x7d00]
add ecx, 0xffffc950
shl eax, 0xb
cdq
idiv ecx
add eax, 0x4000
mov dword [edi + 0x5c], eax
cmp dword [edi + 0x37b4], 0
jne 0x51c6a2
cmp dword [edi + 0x70], 2
jne 0x51c6a2
movzx ecx, word [edi + 0x3778]
mov eax, 0x4000
cmp cx, ax
jl 0x51c63b
cmp dword [edi + 0x5c], eax
jge 0x51c6a2
mov eax, dword [ebp - 0xd8]
movd xmm0, dword [edi + 0x5c]
cvtdq2ps xmm0, xmm0
push dword [eax]
mov eax, dword [ebp - 0x15c]
mulss xmm0, dword [0x60baa0]
push dword [eax + 0x3c]
push 2
push dword [ebp - 0xcc]
push dword [eax + 4]
movsx eax, cx
sub esp, 8
movss dword [esp + 4], xmm0
movd xmm0, eax
mov eax, dword [ebp - 0xe4]
cvtdq2ps xmm0, xmm0
mulss xmm0, dword [0x60baa0]
movss dword [esp], xmm0
push eax
push eax
call fcn.0051df50
mov ax, word [edi + 0x5c]
add esp, 0x24
mov word [edi + 0x3778], ax
mov eax, dword [ebp - 0xd0]
mov edx, dword [eax]
cmp edx, 0x3ea
je 0x51c7de
bsr eax, dword [ebp - 0x19c]
xor ecx, ecx
mov dword [ebp - 0xe8], 0x14
cmp edx, 0x3e9
cmove ecx, dword [ebp - 0xe8]
sub ecx, eax
mov eax, dword [ebp - 0x1a4]
add eax, 0x10
add ecx, eax
mov eax, dword [ebp - 0xfc]
lea eax, [eax*8 - 8]
cmp ecx, eax
jg 0x51c7de
cmp edx, 0x3e9
jne 0x51c71f
push 0xc
push dword [ebp - 0xe0]
lea eax, [ebp - 0x1b8]
push eax
call fcn.0052fd50
mov eax, dword [ebp - 0xd0]
add esp, 0xc
mov edx, dword [eax]
mov eax, dword [ebp - 0xe0]
test eax, eax
je 0x51c7ca
push 1
push dword [ebp - 0x120]
lea eax, [ebp - 0x1b8]
push eax
call fcn.0052fd50
mov eax, dword [ebp - 0xd0]
add esp, 0xc
mov ecx, dword [ebp - 0x1a4]
mov edx, dword [eax]
bsr eax, dword [ebp - 0x19c]
sub ecx, eax
mov eax, dword [ebp - 0xfc]
cmp edx, 0x3e9
jne 0x51c76e
add ecx, 0x11
jmp 0x51c771
add ecx, 6
sar ecx, 3
sub eax, ecx
mov ecx, dword [ebp - 0x114]
dec eax
cmp eax, ecx
cmovl ecx, eax
mov eax, 2
cmp ecx, eax
cmovl ecx, eax
mov eax, 0x101
cmp ecx, eax
cmovg ecx, eax
mov dword [ebp - 0x114], ecx
cmp edx, 0x3e9
jne 0x51c7d6
lea eax, [ecx - 2]
push 0x100
push eax
lea eax, [ebp - 0x1b8]
push eax
call fcn.005302d0
mov eax, dword [ebp - 0xd0]
add esp, 0xc
mov edx, dword [eax]
mov eax, dword [ebp - 0xe0]
mov ecx, dword [ebp - 0x114]
test eax, eax
jne 0x51c7fa
jmp 0x51c7e8
mov eax, dword [ebp - 0xe0]
jmp 0x51c7d0
mov dword [ebp - 0xe0], 0
xor ecx, ecx
mov dword [edi + 0x37ac], 0
mov dword [ebp - 0x114], ecx
cmp edx, 0x3ea
mov dword [ebp - 0xe8], 0
mov eax, 0x11
cmove eax, dword [ebp - 0xe8]
mov dword [ebp - 0xe8], eax
cmp edx, 0x3e8
jne 0x51c850
bsr eax, dword [ebp - 0x19c]
mov esi, dword [ebp - 0x1a4]
sub esi, eax
lea eax, [ebp - 0x1b8]
add esi, 6
push eax
sar esi, 3
call fcn.0052feb0
add esp, 4
mov dword [ebp - 0xf0], esi
jmp 0x51c86f
mov eax, dword [ebp - 0xfc]
sub eax, ecx
dec eax
push eax
mov dword [ebp - 0xf0], eax
lea eax, [ebp - 0x1b8]
push eax
call fcn.00530280
add esp, 8
cmp dword [ebp - 0xe0], 0
jne 0x51c886
mov eax, dword [ebp - 0xd0]
cmp dword [eax], 0x3e8
je 0x51c8a3
lea eax, [ebp - 0x64]
push eax
push 0x2726
push dword [ebp - 0xd4]
call fcn.00522ff0
mov eax, dword [ebp - 0xd0]
add esp, 0xc
cmp dword [eax], 0x3e9
jne 0x51c8d7
mov eax, dword [edi + 0x64]
mov dword [ebp - 0x13c], eax
mov eax, dword [edi + 0x68]
mov dword [ebp - 0x138], eax
lea eax, [ebp - 0x13c]
push eax
push 0x272c
push dword [ebp - 0xd4]
call fcn.00522ff0
add esp, 0xc
cmp dword [ebp - 0xe0], 0
je 0x51c99a
cmp dword [ebp - 0x120], 0
je 0x51c99a
push 0
push 0x271a
push dword [ebp - 0xd4]
call fcn.00522ff0
push 0
push 0xfa6
push dword [ebp - 0xd4]
call fcn.00522ff0
push 0xffffffffffffffff
push 0xfa2
push dword [ebp - 0xd4]
call fcn.00522ff0
mov eax, dword [ebp - 0xf0]
add eax, dword [ebp - 0x128]
mov ecx, dword [ebp - 0xd8]
push 0
push dword [ebp - 0x114]
push eax
mov eax, 0x51eb851f
imul dword [ecx]
sar edx, 6
mov eax, edx
shr eax, 0x1f
add eax, edx
push eax
push dword [ebp - 0xe4]
push dword [ebp - 0xd4]
call fcn.0051e9b0
add esp, 0x3c
test eax, eax
js 0x51cf61
lea eax, [ebp - 0x168]
push eax
push 0xfbf
push dword [ebp - 0xd4]
call fcn.00522ff0
push 0xfbc
push dword [ebp - 0xd4]
call fcn.00522ff0
add esp, 0x14
push dword [ebp - 0xe8]
push 0x271a
push dword [ebp - 0xd4]
call fcn.00522ff0
mov edx, dword [ebp - 0xd0]
add esp, 0xc
mov ecx, dword [edx]
cmp ecx, 0x3e8
je 0x51cb36
mov eax, dword [edi + 0x3798]
cmp ecx, eax
je 0x51ca34
test eax, eax
jle 0x51ca34
push 0xfbc
push dword [ebp - 0xd4]
call fcn.00522ff0
mov ecx, dword [ebp - 0xd8]
lea eax, [ebp - 0xf4]
push 0
push 2
push eax
mov eax, 0x51eb851f
imul dword [ecx]
sar edx, 7
mov eax, edx
shr eax, 0x1f
add eax, edx
push eax
push dword [ebp - 0x104]
push dword [ebp - 0xd4]
call fcn.0051e9b0
push 0
push 0x2712
push dword [ebp - 0xd4]
call fcn.00522ff0
mov edx, dword [ebp - 0xd0]
add esp, 0x2c
bsr eax, dword [ebp - 0x19c]
mov ecx, dword [ebp - 0x1a4]
sub ecx, eax
mov eax, dword [ebp - 0xf0]
dec ecx
shl eax, 3
cmp ecx, eax
jg 0x51cb36
cmp dword [ebp - 0xe0], 0
je 0x51ca95
cmp dword [ebp - 0x120], 0
je 0x51ca95
cmp dword [edx], 0x3e9
jne 0x51ca95
cmp dword [edi + 0x94], 0
je 0x51ca95
mov eax, dword [edi + 0xa0]
sub eax, dword [edi + 0x24]
push eax
push 0xfa2
push dword [ebp - 0xd4]
call fcn.00522ff0
add esp, 0xc
push dword [edi + 0x94]
push 0xfa6
push dword [ebp - 0xd4]
call fcn.00522ff0
lea eax, [ebp - 0x1b8]
push eax
push dword [ebp - 0xf0]
push 0
push dword [ebp - 0xcc]
push dword [ebp - 0xe4]
push dword [ebp - 0xd4]
call fcn.0051e9b0
mov esi, eax
add esp, 0x24
test esi, esi
js 0x51cf61
cmp dword [ebp - 0xe0], 0
je 0x51cca0
cmp dword [ebp - 0x120], 0
je 0x51cb50
mov eax, dword [ebp - 0xd0]
cmp dword [eax], 0x3e9
jne 0x51cca0
cmp dword [edi + 0x94], 0
je 0x51cca0
mov ecx, dword [ebp - 0x128]
push dword [ebp - 0x114]
mov eax, dword [ebp - 0xf0]
add eax, ecx
push eax
lea eax, [ecx + esi]
push eax
call sub.VCRUNTIME140.dll_memmove
jmp 0x51cc9d
cmp dword [ebp - 0xe0], 0
je 0x51cca0
cmp dword [ebp - 0x120], 0
jne 0x51cca0
mov eax, dword [ebp - 0xd8]
push 0xfbc
push dword [ebp - 0xd4]
mov ecx, dword [eax]
mov eax, 0x51eb851f
imul ecx
sar edx, 6
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [ebp - 0x104], eax
mov eax, 0x51eb851f
imul ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [ebp - 0xe8], eax
call fcn.00522ff0
push 0
push 0x271a
push dword [ebp - 0xd4]
call fcn.00522ff0
push 0
push 0x2712
push dword [ebp - 0xd4]
call fcn.00522ff0
push 0
push 0xfa6
push dword [ebp - 0xd4]
call fcn.00522ff0
push 0xffffffffffffffff
push 0xfa2
push dword [ebp - 0xd4]
call fcn.00522ff0
mov eax, dword [ebp - 0xd0]
add esp, 0x38
cmp dword [eax], 0x3e9
jne 0x51cc05
lea eax, [ebp - 0x1b8]
mov dword [ebp - 0xf0], esi
push esi
push eax
call fcn.00530280
add esp, 8
mov ecx, dword [ebp - 0xe8]
lea eax, [ebp - 0xf4]
push 0
push 2
push eax
mov eax, dword [ebp - 0xcc]
sub eax, ecx
sub eax, dword [ebp - 0x104]
imul eax, dword [edi + 0x70]
push ecx
mov ecx, dword [ebp - 0xe4]
lea eax, [ecx + eax*4]
push eax
push dword [ebp - 0xd4]
call fcn.0051e9b0
mov eax, dword [ebp - 0xf0]
add eax, dword [ebp - 0x128]
mov ecx, dword [ebp - 0x104]
push 0
push dword [ebp - 0x114]
push eax
mov eax, dword [ebp - 0xcc]
sub eax, ecx
imul eax, dword [edi + 0x70]
push ecx
mov ecx, dword [ebp - 0xe4]
lea eax, [ecx + eax*4]
push eax
push dword [ebp - 0xd4]
call fcn.0051e9b0
add esp, 0x30
test eax, eax
js 0x51cf61
lea eax, [ebp - 0x168]
push eax
push 0xfbf
push dword [ebp - 0xd4]
call fcn.00522ff0
add esp, 0xc
mov eax, dword [ebp - 0xd8]
mov ecx, dword [ebp - 0xd0]
mov eax, dword [eax]
cdq
idiv dword [ebp - 0xcc]
mov edx, dword [ecx]
xor ecx, ecx
mov dword [ebp - 0x104], ecx
cmp eax, 0x190
jge 0x51ccd6
add eax, eax
inc ecx
cmp eax, 0x190
jl 0x51ccc6
mov dword [ebp - 0x104], ecx
cmp edx, 0x3e8
jne 0x51ccf4
mov dl, byte [ebp - 0xdc]
sub cl, 2
add dl, 3
shl cl, 3
shl dl, 5
or dl, cl
jmp 0x51cd31
cmp edx, 0x3ea
jne 0x51cd1e
mov ecx, dword [ebp - 0xdc]
xor edx, edx
add ecx, 0xfffffbb2
movzx eax, cl
cmovns edx, eax
or dl, 0xfc
shl dl, 2
or dl, byte [ebp - 0x104]
jmp 0x51cd2e
mov dl, byte [ebp - 0xdc]
sub cl, 2
or dl, 6
add dl, dl
or dl, cl
shl dl, 3
mov ecx, dword [ebp - 0x110]
cmp dword [ecx], 2
setne al
dec al
and al, 4
or al, dl
mov edx, dword [ebp - 0x134]
mov byte [edx], al
mov eax, dword [ebp - 0x19c]
xor eax, dword [ebp - 0x168]
cmp dword [ebp - 0x164], 0
mov edx, dword [ebp - 0xd0]
mov dword [edi + 0x46dc], eax
mov eax, 0x3ea
jne 0x51cd73
mov eax, dword [edx]
mov dword [edi + 0x3798], eax
cmp dword [edi + 0xb8], 0
mov eax, dword [ecx]
mov dword [ebp - 0xe8], eax
mov dword [edi + 0x379c], eax
mov eax, dword [ebp - 0xcc]
mov dword [edi + 0x37a0], eax
mov dword [edi + 0x37b0], 0
je 0x51ceed
cmp dword [ebp - 0x64], 0
jne 0x51cdbd
cmp dword [ebp - 0x10c], 0
je 0x51ceed
cmp dword [ebp - 0x144], 0
jne 0x51ced5
mov ecx, dword [ebp - 0xd8]
imul eax, eax, 0x7d0
cdq
idiv dword [ecx]
add eax, dword [edi + 0x46d0]
mov dword [edi + 0x46d0], eax
cmp eax, 0x190
jle 0x51cec1
cmp eax, 0x4b0
jg 0x51ceb7
mov eax, ecx
mov dword [edi + 0x46dc], 0
mov ecx, dword [ebp - 0xd0]
mov eax, dword [eax]
cdq
idiv dword [ebp - 0xcc]
mov edx, dword [ecx]
xor ecx, ecx
mov dword [ebp - 0x104], ecx
cmp eax, 0x190
jge 0x51ce37
add eax, eax
inc ecx
cmp eax, 0x190
jl 0x51ce27
mov dword [ebp - 0x104], ecx
cmp edx, 0x3e8
jne 0x51ce54
mov eax, dword [ebp - 0xdc]
sub cl, 2
add al, 3
shl cl, 3
shl al, 5
or cl, al
jmp 0x51ce95
cmp edx, 0x3ea
jne 0x51ce83
mov ecx, dword [ebp - 0xdc]
xor edx, edx
add ecx, 0xfffffbb2
movzx eax, cl
cmovns edx, eax
or dl, 0xfc
shl dl, 2
or dl, byte [ebp - 0x104]
shl dl, 3
mov cl, dl
jmp 0x51ce95
mov eax, dword [ebp - 0xdc]
sub cl, 2
or al, 6
add al, al
or cl, al
shl cl, 3
cmp dword [ebp - 0xe8], 2
setne al
dec al
and al, 4
or al, cl
mov ecx, dword [ebp - 0x134]
mov byte [ecx], al
mov eax, 1
jmp 0x51d12c
mov dword [edi + 0x46d0], 0x190
mov eax, dword [ebp - 0xe0]
mov edx, dword [ebp - 0xd0]
mov dword [ebp - 0xe0], eax
jmp 0x51cef7
mov eax, dword [ebp - 0xe0]
mov dword [edi + 0x46d0], 0
mov dword [ebp - 0xe0], eax
jmp 0x51cef7
mov dword [edi + 0x46d0], 0
bsr eax, dword [ebp - 0x19c]
mov ecx, dword [ebp - 0x1a4]
sub ecx, eax
mov eax, dword [ebp - 0xfc]
dec ecx
lea eax, [eax*8 - 8]
cmp ecx, eax
jle 0x51cf6b
mov eax, dword [ebp - 0x128]
mov esi, 1
mov byte [eax], 0
mov dword [edi + 0x46dc], 0
mov ecx, dword [ebp - 0x134]
mov eax, dword [ebp - 0x114]
inc eax
add eax, esi
cmp dword [edi + 0x94], 0
jne 0x51d12c
mov esi, dword [ebp - 0xfc]
push esi
push eax
push ecx
call fcn.0051e0f0
add esp, 0xc
test eax, eax
je 0x51cf95
mov eax, 0xfffffffd
jmp 0x51d12c
cmp dword [edx], 0x3e8
jne 0x51cf30
cmp dword [ebp - 0xe0], 0
jne 0x51cf30
cmp esi, 2
jle 0x51cf30
mov ecx, dword [ebp - 0x134]
cmp byte [ecx + esi], 0
jne 0x51cf36
dec esi
cmp esi, 2
jg 0x51cf87
jmp 0x51cf36
mov eax, esi
jmp 0x51d12c
mov esi, dword [edi + 0x37a4]
mov eax, 0x44d
mov ecx, dword [edi + 0x3794]
test esi, esi
mov edx, dword [ebp - 0x11c]
cmove esi, eax
mov dword [ebp - 0x12c], 0
test ecx, ecx
mov dword [ebp - 0x104], 0
mov eax, 0x3e8
cmove ecx, eax
cmp edx, 0x64
jle 0x51cfe0
lea ecx, [eax + 2]
jmp 0x51d010
mov eax, ecx
mov dword [ebp - 0xe8], eax
cmp edx, 0x19
jne 0x51d026
cmp ecx, 0x3e8
je 0x51d06e
mov edx, 0x32
mov dword [ebp - 0x12c], 1
cmp ecx, 0x3ea
jne 0x51d0a5
cmp esi, 0x44e
jne 0x51d0b7
mov esi, 0x44d
jmp 0x51d0b7
mov ecx, eax
cmp edx, 0x10
jg 0x51d066
cmp dword [ebp + 0x18], 1
je 0x51d07d
cmp eax, 0x3e8
jne 0x51d03f
cmp edx, 0xa
jne 0x51d07d
mov eax, 0x32
mov ecx, dword [ebp - 0xe8]
cdq
idiv dword [ebp - 0x11c]
mov edx, 0x32
mov dword [ebp - 0x12c], 3
mov dword [ebp - 0x104], eax
cmp ecx, 0x3e8
jne 0x51d004
cmp esi, 0x44f
jle 0x51d0b7
mov esi, 0x44f
jmp 0x51d0b7
xor edx, edx
mov eax, 0x10
cmp dword [ebp - 0x11c], 0xc
mov ecx, 0x3e8
setle dl
mov dword [ebp - 0x12c], edx
mov edx, 0x19
cmove eax, edx
mov edx, eax
jmp 0x51d06e
cmp ecx, 0x3e9
jne 0x51d0b7
mov eax, 0x450
cmp esi, eax
cmovle esi, eax
push dword [edi + 0x3774]
push esi
push edx
push ecx
call fcn.0051a310
mov edx, dword [ebp - 0x12c]
add esp, 0x10
mov ecx, dword [ebp - 0x128]
or al, dl
mov byte [ecx], al
mov eax, 1
cmp eax, edx
sbb ecx, ecx
neg ecx
inc ecx
cmp dword [ebp - 0xfc], ecx
mov esi, ecx
cmovg esi, dword [ebp - 0xfc]
cmp edx, 3
mov edx, dword [ebp - 0x128]
jne 0x51d107
mov eax, dword [ebp - 0x104]
mov byte [edx + 1], al
cmp dword [edi + 0x94], 0
jne 0x51d125
push esi
push ecx
push edx
call fcn.0051e0f0
add esp, 0xc
mov ecx, 0xfffffffd
test eax, eax
cmove ecx, esi
mov eax, ecx
jmp 0x51d12c
or eax, 0xffffffff
lea esp, [ebp - 0x1cc]
pop edi
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0054f742
mov esp, ebp
pop ebp
ret