Function at 0x5514a0
Capabilities:
Encrypt data using speck

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff0
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x5cc094
mov eax, dword fs:[0]
push eax
push ebx
sub esp, 0x288
mov eax, dword [0x623ec0]
xor eax, ebp
mov dword [ebp - 0x14], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov edi, ecx
mov dword [ebp - 0xd8], edi
cmp dword [0x1ff25a0], 0
je 0x5514f9
xor eax, eax
jmp 0x553781
cmp dword [edi + 0xbc], 0
je 0x55377c
mov eax, dword [0x9c25ac]
mov esi, dword [eax + 0x21a74]
mov dword [ebp - 0xe8], esi
movss xmm0, dword [esi + 0x2c]
comiss xmm0, dword [0x604d20]
ja 0x55377c
mov eax, dword [0x9c25b0]
cmp dword [eax + 0x24], 0x7531
je 0x55377c
sub esp, 0xc
lea eax, [ebp - 0x78]
xorps xmm0, xmm0
movups xmmword [ebp - 0x128], xmm0
mov dword [esp + 8], 0x40000000
mov dword [esp + 4], 0x3dcccccd
mov dword [esp], 0x40000000
push eax
movups xmmword [ebp - 0x140], xmm0
movups xmmword [ebp - 0x160], xmm0
call fcn.00402907
movss xmm0, dword [edi + 0x20a2c]
lea eax, [ebp - 0xb8]
sub esp, 0xc
movss dword [esp + 8], xmm0
movss xmm0, dword [edi + 0x20a28]
mov dword [esp + 4], 0
movss dword [esp], xmm0
push eax
call fcn.00402997
lea eax, [ebp - 0x78]
push eax
mov eax, dword [0x9c25a4]
add eax, 0x450
push eax
lea eax, [ebp - 0x78]
push eax
call fcn.00402022
lea eax, [ebp - 0xb8]
push eax
lea eax, [ebp - 0x78]
push eax
push eax
call fcn.00402022
mov eax, dword [0x9c25a4]
lea edx, [ebp - 0x78]
push edx
push 0x100
mov ecx, dword [eax + 0x10c]
push ecx
mov eax, dword [ecx]
call dword [eax + 0xb0]
cmp dword [edi + 0xc0], 1
jne 0x551606
mov ecx, dword [0x9c25a4]
push 2
push 8
call fcn.004c4050
movq xmm0, qword [esi + 0x48]
mov eax, dword [esi + 0x50]
movq qword [ebp - 0x10c], xmm0
movss xmm0, dword [ebp - 0x10c]
subss xmm0, dword [edi + 0x20a28]
mov dword [ebp - 0x104], eax
mov ecx, dword [0x9c25a4]
push 0
push 0x30
cvttss2si eax, xmm0
movss xmm0, dword [ebp - 0x104]
subss xmm0, dword [edi + 0x20a2c]
cdq
sub eax, edx
sar eax, 1
mov dword [ebp - 0xfc], eax
cvttss2si eax, xmm0
cdq
sub eax, edx
sar eax, 1
mov dword [ebp - 0xf8], eax
call fcn.004c4050
mov ecx, dword [0x9c25a4]
push 3
push 0x8c
call fcn.004c4050
mov ecx, dword [0x9c25a4]
push 1
push 0x8d
cmp dword [ecx + 0x354], 1
jne 0x5516cb
call fcn.004c4050
mov ecx, dword [0x9c25a4]
push 0
push 0xf
call fcn.004c4050
mov ecx, dword [0x9c25a4]
push 0
push 0x89
call fcn.004c4050
mov ecx, dword [0x9c25a4]
push 6
push 0x14
call fcn.004c4050
jmp 0x55177b
call fcn.004c4050
mov ecx, dword [0x9c25a4]
push 6
push 0x14
call fcn.004c4050
mov ecx, dword [0x9c25a4]
push 0
push 0xf
call fcn.004c4050
mov eax, dword [edi + 0xc4]
test eax, eax
je 0x55171f
cmp eax, 3
je 0x55171f
cmp eax, 4
je 0x55171f
mov ecx, dword [0x9c25a4]
cmp dword [ecx + 0xe70], 1
je 0x55174d
mov dword [ecx + 0xe70], 1
push 1
jmp 0x55173a
mov ecx, dword [0x9c25a4]
cmp dword [ecx + 0xe70], 4
je 0x55174d
mov dword [ecx + 0xe70], 4
push 4
mov ecx, dword [ecx + 0x10c]
push 1
push 1
push ecx
mov eax, dword [ecx]
call dword [eax + 0x10c]
mov ecx, dword [0x9c25a4]
cmp dword [ecx + 0xe98], 1
je 0x55177b
mov dword [ecx + 0xe98], 1
mov ecx, dword [ecx + 0x10c]
push 1
push 0xb
push 1
mov eax, dword [ecx]
push ecx
call dword [eax + 0x10c]
mov eax, dword [0x9c25a4]
mov edx, dword [eax + 0x10c]
mov eax, dword [edx]
mov ecx, dword [eax + 0xc4]
lea eax, [edi + 0x200cc]
push eax
push edx
call ecx
mov eax, dword [0x9c25b0]
mov ecx, 0x12
movss xmm2, dword [0x604dc4]
mov edx, 0xf
mov eax, dword [eax + 0x24]
cmp eax, 0x7535
mov dword [ebp - 0xc0], eax
mov eax, dword [0x9c25ac]
cmovne ecx, edx
mov eax, dword [eax + 0x21a74]
movss xmm1, dword [eax + 0x2c]
movaps xmm0, xmm1
andps xmm0, xmmword [0x6057c0]
comiss xmm0, xmm2
jbe 0x5517f8
movss xmm0, dword [esi + 0x34]
mulss xmm0, dword [0x604e14]
addss xmm0, dword [0x6050a4]
cvttss2si ecx, xmm0
mov eax, 0x55555556
imul ecx
mov eax, edx
shr eax, 0x1f
add eax, edx
mov edx, dword [ebp - 0xfc]
sub edx, eax
mov dword [ebp - 0x114], edx
mov edx, dword [ebp - 0xf8]
sub edx, eax
mov eax, dword [ebp - 0xfc]
add eax, ecx
mov dword [ebp - 0xbc], edx
mov dword [ebp - 0xd4], eax
mov eax, dword [ebp - 0xf8]
add eax, ecx
mov dword [ebp - 0x100], eax
mov eax, dword [0x9c2574]
test eax, eax
jns 0x551861
mov ecx, dword [ebp - 0xc0]
cmp ecx, 0x7534
je 0x551861
cmp ecx, 0x7535
jne 0x5519b5
movss xmm0, dword [esi + 0x34]
addss xmm0, xmm2
cvttss2si esi, xmm0
cmp eax, 2
je 0x551881
cmp eax, 3
je 0x551881
cmp eax, 4
je 0x551881
test eax, eax
jne 0x551891
comiss xmm1, dword [0x60537c]
jbe 0x551891
mov esi, 0x14
jmp 0x55189b
mov eax, 6
cmp esi, eax
cmovl esi, eax
cvttss2si eax, dword [ebp - 0x10c]
add esi, 2
mov dword [ebp - 0xcc], esi
sar eax, 7
cmp eax, 0x1a
jle 0x551903
cmp eax, 0x1f
jge 0x551903
cvttss2si eax, dword [ebp - 0x104]
sar eax, 7
cmp eax, 0x14
jle 0x551903
cmp eax, 0x19
jge 0x551903
mov eax, dword [0x9c25ac]
mov eax, dword [eax + 0x21a74]
movss xmm0, dword [eax + 0x2c]
comiss xmm0, dword [0x60536c]
jbe 0x5518ec
add esi, 0xa
jmp 0x55191f
comiss xmm0, dword [0x605374]
jbe 0x5518fa
add esi, 4
jmp 0x55191f
comiss xmm0, dword [0x605378]
jmp 0x55191a
mov eax, dword [0x9c25ac]
mov eax, dword [eax + 0x21a74]
movss xmm0, dword [eax + 0x2c]
comiss xmm0, dword [0x60536c]
jbe 0x551925
add esi, 3
mov dword [ebp - 0xcc], esi
mov eax, dword [ebp - 0xe8]
movss xmm0, dword [eax + 0x28]
call fcn.0045c640
mov eax, dword [ebp - 0xe8]
movss dword [ebp - 0xc0], xmm0
movss xmm0, dword [eax + 0x28]
call fcn.0044c230
mov ecx, dword [ebp - 0xfc]
movd xmm2, esi
cvtdq2ps xmm2, xmm2
movaps xmm1, xmm2
mulss xmm2, xmm0
mulss xmm1, dword [ebp - 0xc0]
cvttss2si eax, xmm1
lea eax, [eax + ecx*2]
cdq
sub eax, edx
cvttss2si ecx, xmm2
mov esi, eax
mov eax, dword [ebp - 0xf8]
sar esi, 1
lea eax, [ecx + eax*2]
mov ecx, dword [ebp - 0xcc]
cdq
sub eax, edx
mov edx, esi
sub edx, ecx
sar eax, 1
mov dword [ebp - 0x114], edx
add esi, ecx
mov edx, eax
mov dword [ebp - 0xd4], esi
sub edx, ecx
add eax, ecx
mov dword [ebp - 0xbc], edx
mov dword [ebp - 0x100], eax
jmp 0x5519bb
mov eax, dword [ebp - 0x100]
mov esi, dword [0x9c25a4]
cmp edx, eax
jge 0x553617
movss xmm4, dword [0x604c74]
movss xmm7, dword [0x604d5c]
movss xmm2, dword [0x605318]
mov eax, dword [ebp - 0xd4]
mov ecx, dword [ebp - 0x100]
mov dword [ebp - 0x118], 0x2710
cmp edx, 0x3f
ja 0x553608
mov ecx, dword [ebp - 0x114]
mov dword [ebp - 0xc4], ecx
cmp ecx, eax
jge 0x553602
mov edx, dword [ebp - 0xd4]
nop word [eax + eax]
cmp ecx, 0x3f
ja 0x5535e7
mov eax, ecx
mov dword [ebp - 0xd0], 1
sub eax, dword [ebp - 0xfc]
cdq
xor eax, edx
mov dword [ebp - 0xc8], 1
sub eax, edx
test byte [ebp - 0xfc], 1
je 0x551a62
cmp eax, 0x11
jle 0x551a79
test al, 1
jne 0x5535e1
jmp 0x551a6f
cmp eax, 0x10
jle 0x551a79
test al, 1
je 0x5535e1
mov dword [ebp - 0xd0], 2
mov eax, dword [ebp - 0xbc]
sub eax, dword [ebp - 0xf8]
cdq
xor eax, edx
sub eax, edx
test byte [ebp - 0xf8], 1
je 0x551aa9
cmp eax, 0x11
jle 0x551ac0
and eax, 0x80000001
jns 0x551aa4
dec eax
or eax, 0xfffffffe
inc eax
cmp eax, 1
jmp 0x551ab0
cmp eax, 0x10
jle 0x551ac0
test al, 1
je 0x5535e1
mov dword [ebp - 0xc8], 2
mov edx, dword [ebp - 0xbc]
mov eax, edx
shl eax, 6
add eax, ecx
mov dword [ebp - 0xe0], eax
lea eax, [eax + eax*2]
mov ch, byte [edi + eax*4 + 0xd0]
mov cl, byte [edi + eax*4 + 0xce]
movzx eax, byte [edi + eax*4 + 0xcd]
mov byte [ebp - 0xe9], ch
add eax, 0xa
movzx ecx, cl
shl ecx, 5
cmp dword [esi + 0x354], 1
mov dword [ebp - 0x110], eax
mov dword [ebp - 0xe8], eax
jne 0x5522b5
mov eax, dword [ecx + 0x5f1530]
mov esi, dword [ebp - 0xe0]
mov dword [edi + 0x201d0], eax
mov eax, dword [ecx + 0x5f1534]
mov dword [edi + 0x201d4], eax
mov eax, dword [ecx + 0x5f1538]
mov dword [edi + 0x201e8], eax
mov eax, dword [ecx + 0x5f153c]
mov dword [edi + 0x201ec], eax
mov eax, dword [ecx + 0x5f1540]
mov dword [edi + 0x20200], eax
mov eax, dword [ecx + 0x5f1544]
mov dword [edi + 0x20204], eax
mov eax, dword [ecx + 0x5f1548]
mov dword [edi + 0x20218], eax
mov eax, dword [ecx + 0x5f154c]
mov ecx, dword [ebp - 0xc4]
mov dword [edi + 0x2021c], eax
lea eax, [esi + esi*2]
mov eax, dword [edi + eax*4 + 0xd4]
mov dword [ebp - 0x128], eax
mov eax, dword [ebp - 0xc8]
add eax, edx
mov edx, dword [ebp - 0xd0]
shl eax, 6
add ecx, eax
lea eax, [ecx + ecx*2]
mov eax, dword [edi + eax*4 + 0xd4]
mov dword [ebp - 0x124], eax
lea eax, [esi + edx]
lea eax, [eax + eax*2]
mov eax, dword [edi + eax*4 + 0xd4]
mov dword [ebp - 0x120], eax
lea eax, [ecx + edx]
lea eax, [eax + eax*2]
xor ecx, ecx
mov eax, dword [edi + eax*4 + 0xd4]
mov dword [ebp - 0x11c], eax
lea eax, [edi + 0x201cc]
mov edi, dword [0x9c25a4]
mov dword [ebp - 0xdc], ecx
mov dword [ebp - 0xe4], eax
nop dword [eax]
nop word [eax + eax]
movzx eax, byte [ebp + ecx*4 - 0x126]
movss xmm6, dword [0x604d20]
movss xmm3, dword [edi + 0x560]
movss xmm5, dword [edi + 0x568]
movd xmm0, eax
movzx eax, byte [ebp + ecx*4 - 0x127]
cvtdq2ps xmm0, xmm0
movd xmm1, eax
movzx eax, byte [ebp + ecx*4 - 0x128]
mulss xmm0, xmm4
cvtdq2ps xmm1, xmm1
movd xmm2, eax
cvtdq2ps xmm2, xmm2
mulss xmm1, xmm4
mulss xmm2, xmm4
movss xmm4, dword [edi + 0x564]
mulss xmm3, xmm6
mulss xmm4, xmm6
mulss xmm5, xmm6
subss xmm3, xmm0
subss xmm4, xmm1
subss xmm5, xmm2
mulss xmm3, xmm7
mulss xmm4, xmm7
mulss xmm5, xmm7
addss xmm0, xmm3
addss xmm4, xmm1
addss xmm5, xmm2
mulss xmm0, dword [0x605228]
movss dword [ebp - 0xc0], xmm4
movss dword [ebp - 0xe0], xmm5
call fcn.005bdc60
movss xmm0, dword [ebp - 0xc0]
mov esi, eax
mulss xmm0, dword [0x605228]
shl esi, 8
call fcn.005bdc60
movss xmm0, dword [ebp - 0xe0]
or esi, eax
mulss xmm0, dword [0x605228]
shl esi, 8
call fcn.005bdc60
mov ecx, dword [ebp - 0xdc]
or esi, eax
mov eax, dword [ebp - 0xe4]
inc ecx
movss xmm4, dword [0x604c74]
movss xmm7, dword [0x604d5c]
mov dword [ebp - 0xdc], ecx
mov dword [eax], esi
add eax, 0x18
mov dword [ebp - 0xe4], eax
cmp ecx, 4
jl 0x551c00
mov edx, dword [ebp - 0xc4]
mov edi, dword [ebp - 0xd8]
mov ecx, dword [ebp - 0xbc]
cmp edx, 0x3f
jge 0x551eb3
cmp ecx, 0x3f
jge 0x552005
mov esi, dword [ebp - 0xd0]
mov eax, ecx
shl eax, 6
add eax, edx
movd xmm2, edx
cvtdq2ps xmm2, xmm2
lea eax, [eax + eax*2]
mov eax, dword [edi + eax*4 + 0xd4]
movd xmm4, ecx
mov dword [edi + 0x20128], eax
movaps xmm0, xmm2
mov eax, dword [ebp - 0xc8]
add eax, ecx
shl eax, 6
add eax, edx
cvtdq2ps xmm4, xmm4
lea eax, [eax + eax*2]
mov eax, dword [edi + eax*4 + 0xd4]
mov dword [edi + 0x20154], eax
mov eax, ecx
shl eax, 6
add eax, edx
movss dword [ebp - 0x1e8], xmm4
add eax, esi
movss dword [ebp - 0x260], xmm4
lea eax, [eax + eax*2]
mov eax, dword [edi + eax*4 + 0xd4]
mov dword [edi + 0x20180], eax
mov eax, dword [ebp - 0xc8]
add eax, ecx
shl eax, 6
add eax, edx
add eax, esi
lea eax, [eax + eax*2]
mov eax, dword [edi + eax*4 + 0xd4]
mov dword [edi + 0x201ac], eax
mov eax, ecx
shl eax, 6
add eax, 0x11
add eax, edx
lea eax, [eax + eax*2]
movsx eax, byte [edi + eax*4]
movd xmm1, eax
mov eax, dword [ebp - 0x1e8]
cvtdq2ps xmm1, xmm1
unpcklps xmm0, xmm1
movq qword [edi + 0x201c0], xmm0
mov dword [edi + 0x201c8], eax
mov eax, dword [ebp - 0xc8]
add eax, ecx
shl eax, 6
add eax, 0x11
add eax, edx
lea eax, [eax + eax*2]
movsx eax, byte [edi + eax*4]
movd xmm0, eax
mov eax, dword [ebp - 0xc8]
add eax, ecx
cvtdq2ps xmm0, xmm0
movd xmm3, eax
cvtdq2ps xmm3, xmm3
unpcklps xmm2, xmm0
movq qword [edi + 0x201d8], xmm2
movss dword [ebp - 0x254], xmm3
mov eax, dword [ebp - 0x254]
mov dword [edi + 0x201e0], eax
lea eax, [edx + esi]
movd xmm2, eax
mov eax, ecx
shl eax, 6
add eax, 0x11
add eax, edx
add eax, esi
cvtdq2ps xmm2, xmm2
lea eax, [eax + eax*2]
movsx eax, byte [edi + eax*4]
movaps xmm0, xmm2
movd xmm1, eax
cvtdq2ps xmm1, xmm1
unpcklps xmm0, xmm1
movq qword [edi + 0x201f0], xmm0
mov eax, dword [ebp - 0x260]
mov dword [edi + 0x201f8], eax
mov eax, dword [ebp - 0xc8]
add eax, ecx
movss dword [ebp - 0x26c], xmm3
shl eax, 6
add eax, 0x11
add eax, edx
add eax, esi
lea eax, [eax + eax*2]
movsx eax, byte [edi + eax*4]
movd xmm0, eax
mov eax, dword [ebp - 0x26c]
jmp 0x55213e
jne 0x552002
cmp ecx, 0x3f
jge 0x552005
mov esi, dword [ebp - 0xc8]
lea edx, [ecx + ecx*2]
add esi, ecx
shl edx, 8
movss xmm0, dword [0x605158]
mov eax, dword [edx + edi + 0x3c8]
lea ecx, [esi + esi*2]
mov dword [edi + 0x20128], eax
shl ecx, 8
mov eax, dword [ecx + edi + 0x3c8]
mov dword [edi + 0x20154], eax
mov eax, dword [edx + edi + 0x3c8]
mov dword [edi + 0x20180], eax
mov eax, dword [ecx + edi + 0x3c8]
mov ecx, dword [ebp - 0xbc]
mov dword [edi + 0x201ac], eax
lea edx, [ecx + ecx*2]
movd xmm4, ecx
shl edx, 8
lea ecx, [esi + esi*2]
cvtdq2ps xmm4, xmm4
shl ecx, 8
movsx eax, byte [edx + edi + 0x3c0]
movss dword [ebp - 0x278], xmm4
movd xmm1, eax
mov eax, dword [ebp - 0x278]
cvtdq2ps xmm1, xmm1
movss dword [ebp - 0x164], xmm4
unpcklps xmm0, xmm1
movq qword [edi + 0x201c0], xmm0
movss xmm0, dword [0x605158]
mov dword [edi + 0x201c8], eax
movsx eax, byte [ecx + edi + 0x3c0]
movd xmm1, eax
mov eax, dword [ebp - 0xbc]
add eax, dword [ebp - 0xc8]
cvtdq2ps xmm1, xmm1
movd xmm3, eax
cvtdq2ps xmm3, xmm3
unpcklps xmm0, xmm1
movq qword [edi + 0x201d8], xmm0
movss dword [ebp - 0x284], xmm3
mov eax, dword [ebp - 0x284]
mov dword [edi + 0x201e0], eax
mov eax, dword [ebp - 0xd0]
add eax, 0x3f
movss dword [ebp - 0x170], xmm3
movd xmm2, eax
movsx eax, byte [edx + edi + 0x3c0]
cvtdq2ps xmm2, xmm2
movd xmm1, eax
mov eax, dword [ebp - 0x164]
movaps xmm0, xmm2
cvtdq2ps xmm1, xmm1
unpcklps xmm0, xmm1
movq qword [edi + 0x201f0], xmm0
mov dword [edi + 0x201f8], eax
movsx eax, byte [ecx + edi + 0x3c0]
movd xmm0, eax
mov eax, dword [ebp - 0x170]
jmp 0x55213e
cmp ecx, 0x3f
jne 0x552152
cmp edx, 0x3f
jge 0x552152
lea ecx, [edx + edx*2]
mov dword [ebp - 0x17c], 0x427c0000
mov eax, dword [edi + ecx*4 + 0xbdd4]
add edx, 0xfc0
add edx, dword [ebp - 0xd0]
mov dword [edi + 0x20128], eax
mov eax, dword [edi + ecx*4 + 0xbdd4]
mov dword [edi + 0x20154], eax
lea ecx, [edx + edx*2]
mov dword [ebp - 0x194], 0x427c0000
mov eax, dword [edi + ecx*4 + 0xd4]
mov dword [edi + 0x20180], eax
mov eax, dword [edi + ecx*4 + 0xd4]
mov dword [edi + 0x201ac], eax
mov eax, dword [ebp - 0xc4]
lea ecx, [eax + eax*2]
movd xmm2, eax
movsx eax, byte [edi + ecx*4 + 0xbdcc]
cvtdq2ps xmm2, xmm2
movd xmm1, eax
mov eax, dword [ebp - 0x17c]
movaps xmm0, xmm2
cvtdq2ps xmm1, xmm1
unpcklps xmm0, xmm1
movq qword [edi + 0x201c0], xmm0
mov dword [edi + 0x201c8], eax
movsx eax, byte [edi + ecx*4 + 0xbdcc]
lea ecx, [edx + edx*2]
movd xmm0, eax
mov eax, dword [ebp - 0xc8]
add eax, 0x3f
cvtdq2ps xmm0, xmm0
movd xmm3, eax
cvtdq2ps xmm3, xmm3
unpcklps xmm2, xmm0
movq qword [edi + 0x201d8], xmm2
movss dword [ebp - 0x188], xmm3
mov eax, dword [ebp - 0x188]
mov dword [edi + 0x201e0], eax
mov eax, dword [ebp - 0xc4]
add eax, dword [ebp - 0xd0]
movss dword [ebp - 0x1a0], xmm3
movd xmm2, eax
movsx eax, byte [edi + ecx*4 + 0xcc]
cvtdq2ps xmm2, xmm2
movd xmm1, eax
mov eax, dword [ebp - 0x194]
movaps xmm0, xmm2
cvtdq2ps xmm1, xmm1
unpcklps xmm0, xmm1
movq qword [edi + 0x201f0], xmm0
mov dword [edi + 0x201f8], eax
movsx eax, byte [edi + ecx*4 + 0xcc]
movd xmm0, eax
mov eax, dword [ebp - 0x1a0]
cvtdq2ps xmm0, xmm0
unpcklps xmm2, xmm0
movq qword [edi + 0x20208], xmm2
mov dword [edi + 0x20210], eax
mov ecx, dword [edi + 0x20a6c]
test ecx, ecx
je 0x552251
mov edx, dword [edi + 0xa8]
lea eax, [ecx + 0x7d0]
cmp edx, eax
jae 0x552251
xorps xmm1, xmm1
mov dword [ebp - 0xdc], 4
xorps xmm0, xmm0
lea esi, [edi + 0x201c4]
cvtsi2sd xmm1, edx
shr edx, 0x1f
cvtsi2sd xmm0, ecx
shr ecx, 0x1f
addsd xmm1, qword [edx*8 + 0x605750]
addsd xmm0, qword [ecx*8 + 0x605750]
subsd xmm1, xmm0
movss xmm0, dword [edi + 0x20a60]
cvtps2pd xmm0, xmm0
subsd xmm1, qword [0x605028]
mulsd xmm0, qword [0x604ef0]
mulsd xmm1, xmm0
divsd xmm1, qword [0x605028]
cvtpd2ps xmm0, xmm1
movss dword [ebp - 0xc0], xmm0
mov eax, dword [edi + 0xa8]
xorps xmm1, xmm1
movss xmm2, dword [edi + 0x20a68]
movss xmm0, dword [edi + 0x20a64]
subss xmm0, dword [esi - 4]
subss xmm2, dword [esi + 4]
cvtsi2sd xmm1, eax
shr eax, 0x1f
mulss xmm0, xmm2
addsd xmm1, qword [eax*8 + 0x605750]
divss xmm0, dword [0x6050bc]
cvtpd2ps xmm1, xmm1
divss xmm1, dword [0x605240]
addss xmm0, xmm1
call fcn.0045c640
mulss xmm0, dword [ebp - 0xc0]
addss xmm0, dword [esi]
movss dword [esi], xmm0
add esi, 0x18
sub dword [ebp - 0xdc], 1
jne 0x5521e1
push ecx
push dword [ebp - 0xe8]
call fcn.004def60
mov edx, eax
mov eax, dword [0x9c25a4]
cmp dword [eax + 0x4a8], edx
je 0x552289
mov ecx, dword [eax + 0x10c]
push edx
mov dword [eax + 0x4a8], edx
push 0
mov eax, dword [ecx]
push ecx
call dword [eax + 0x104]
mov eax, dword [0x9c25a4]
mov eax, dword [eax + 0x10c]
push 0x142
push eax
mov ecx, dword [eax]
call dword [ecx + 0x164]
mov eax, dword [0x9c25a4]
push 0x18
mov ecx, dword [eax + 0x10c]
lea eax, [edi + 0x201c0]
jmp 0x5535af
lea edx, [edi + 0x20134]
mov dword [ebp - 0xdc], 0
add ecx, 0x5f1534
mov dword [ebp - 0xcc], edx
mov dword [ebp - 0xf0], ecx
nop word [eax + eax]
movss xmm1, dword [ecx - 4]
mov eax, dword [ecx]
movss dword [edx - 8], xmm1
mov dword [edx - 4], eax
mov eax, dword [edi + 0xc4]
test eax, eax
je 0x552303
cmp eax, 3
je 0x552303
cmp eax, 4
jne 0x55232c
movzx eax, byte [ebp - 0xe9]
mov ecx, dword [ebp - 0xdc]
lea ecx, [ecx + eax*4]
mov eax, dword [ecx*8 + 0x5f1130]
mov dword [edx], eax
mov eax, dword [ecx*8 + 0x5f1134]
mov ecx, dword [ebp - 0xf0]
mov dword [edx + 4], eax
mov eax, dword [edi + 0xc4]
test eax, eax
je 0x552c1a
cmp eax, 3
je 0x552c1a
cmp eax, 4
je 0x552c1a
mov eax, dword [edi + 0x20a20]
cmp eax, 0x1a
jl 0x552370
cmp eax, 0x1e
jg 0x552370
mov eax, dword [edi + 0x20a24]
cmp eax, 8
jl 0x552370
cmp eax, 0xc
jle 0x552c1a
mov eax, dword [ebp - 0x110]
cmp eax, 0xaa
je 0x552586
cmp eax, 0xab
je 0x552586
cmp eax, 0x26
je 0x55246d
cmp eax, 0x27
je 0x55246d
add eax, 0xffffffc2
cmp eax, 3
ja 0x55243c
cmp dword [esi + 0xe70], 5
je 0x5523d2
mov dword [esi + 0xe70], 5
mov eax, dword [esi + 0x10c]
push 5
push 1
push 1
mov ecx, dword [eax]
push eax
call dword [ecx + 0x10c]
mov eax, dword [ebp - 0x110]
push ecx
add eax, 0x11e
push eax
call fcn.004def60
mov esi, dword [0x9c25a4]
mov edx, eax
cmp dword [esi + 0x4ac], edx
je 0x552412
mov ecx, dword [esi + 0x10c]
push edx
mov dword [esi + 0x4ac], edx
push 1
mov eax, dword [ecx]
push ecx
call dword [eax + 0x104]
mov esi, dword [0x9c25a4]
mov edx, dword [ebp - 0xcc]
mov eax, dword [edx - 8]
mov dword [edx], eax
mov eax, dword [edx - 4]
mov dword [edx + 4], eax
mov eax, dword [ebp - 0x110]
and eax, 1
add eax, 0x82
mov dword [ebp - 0xe8], eax
jmp 0x552c0c
cmp dword [esi + 0xe70], 1
je 0x552c1a
mov eax, dword [esi + 0x10c]
push 1
push 1
mov dword [esi + 0xe70], 1
mov ecx, dword [eax]
push 1
push eax
call dword [ecx + 0x10c]
jmp 0x552c00
cmp dword [esi + 0xe70], 5
movaps xmm0, xmmword [0x605730]
movups xmmword [ebp - 0x140], xmm0
movaps xmm0, xmmword [0x6056c0]
movups xmmword [ebp - 0x160], xmm0
je 0x5524b1
mov eax, dword [esi + 0x10c]
push 5
push 1
mov dword [esi + 0xe70], 5
mov ecx, dword [eax]
push 1
push eax
call dword [ecx + 0x10c]
mov esi, dword [0x9c25bc]
cmp dword [esi + 0x1bf54c], 0
jne 0x5524d4
push 0x158
mov ecx, esi
call fcn.004defd0
test eax, eax
jne 0x5524d4
xor edx, edx
jmp 0x5524f0
call dword [sym.imp.WINMM.dll_timeGetTime]
mov edx, dword [esi + 0x1bf54c]
mov dword [esi + 0x1a460c], eax
mov dword [esi + 0x1a4610], 0x1388
mov esi, dword [0x9c25a4]
cmp dword [esi + 0x4ac], edx
je 0x55251c
mov eax, dword [esi + 0x10c]
push edx
mov dword [esi + 0x4ac], edx
push 1
mov ecx, dword [eax]
push eax
call dword [ecx + 0x104]
mov esi, dword [0x9c25a4]
mov eax, dword [edi + 0xa8]
xor edx, edx
mov ecx, 0x2710
movss xmm2, dword [0x605318]
div ecx
mov ecx, dword [ebp - 0xdc]
movd xmm0, edx
cvtdq2pd xmm0, xmm0
shr edx, 0x1f
mov eax, dword [ebp + ecx*4 - 0x140]
addsd xmm0, qword [edx*8 + 0x605750]
mov edx, dword [ebp - 0xcc]
cvtpd2ps xmm0, xmm0
mov dword [edx], eax
mov eax, dword [ebp - 0x110]
add eax, 0x5c
mov dword [ebp - 0xe8], eax
divss xmm0, xmm2
addss xmm0, dword [ebp + ecx*4 - 0x160]
movss dword [edx + 4], xmm0
jmp 0x552c14
mov eax, dword [edi + 0xa8]
xor edx, edx
div dword [ebp - 0x118]
movd xmm0, edx
cvtdq2pd xmm0, xmm0
shr edx, 0x1f
cmp dword [0x1ff1f34], 0
addsd xmm0, qword [edx*8 + 0x605750]
mov edx, dword [ebp - 0xcc]
cvtpd2ps xmm0, xmm0
divss xmm0, xmm2
addss xmm0, xmm1
movss dword [edx - 8], xmm0
jne 0x552c1a
call fcn.0046c00b
movd xmm0, dword [ebp - 0xc4]
mov ecx, eax
mov eax, dword [ebp - 0xe0]
movd xmm1, dword [ebp - 0xbc]
cvtdq2ps xmm0, xmm0
mov dword [ebp - 0xf4], ecx
lea eax, [eax + eax*2]
movsx eax, byte [edi + eax*4 + 0xcc]
cvtdq2ps xmm1, xmm1
movd xmm2, eax
addss xmm0, xmm0
mov eax, 0x51eb851f
addss xmm1, xmm1
imul ecx
cvtdq2ps xmm2, xmm2
addss xmm0, dword [edi + 0x20a28]
addss xmm1, dword [edi + 0x20a2c]
mulss xmm2, dword [0x604ccc]
sar edx, 6
mov eax, edx
addss xmm0, dword [0x604d2c]
addss xmm2, dword [0x604e14]
addss xmm1, dword [0x604d2c]
shr eax, 0x1f
add eax, edx
imul eax, eax, 0xc8
movaps xmmword [ebp - 0x140], xmm0
movss dword [ebp - 0xc0], xmm2
movss dword [ebp - 0xe4], xmm1
movss dword [ebp - 0x10c], xmm0
sub ecx, eax
movss dword [ebp - 0x108], xmm2
movss dword [ebp - 0x104], xmm1
cmp ecx, 2
jge 0x552814
call fcn.0046c00b
cdq
mov ecx, 0xa
idiv ecx
push 0x184
mov esi, edx
call fcn.0046677d
mov edi, eax
mov dword [ebp - 0x144], edi
mov dword [ebp - 4], 0
push 0x184
push 0
push edi
call fcn.00468b40
movd xmm0, esi
add esp, 0x10
cvtdq2ps xmm0, xmm0
mov ecx, edi
push 0x50
push 1
sub esp, 0xc
movaps xmm3, xmm0
mulss xmm0, dword [0x604d48]
mulss xmm3, dword [0x604ce4]
mov dword [esp + 8], 0x38d1b717
addss xmm0, dword [0x604ca4]
addss xmm3, dword [0x604ca4]
movss dword [esp + 4], xmm3
movss dword [esp], xmm0
push 0x3e8
push 0
call fcn.004eb060
mov esi, eax
mov dword [ebp - 4], 0xffffffff
test esi, esi
je 0x55280e
call fcn.0046c00b
cdq
mov edi, 0xa
idiv edi
sub edx, 5
movd xmm0, edx
cvtdq2ps xmm0, xmm0
mulss xmm0, dword [0x604ca4]
addss xmm0, dword [ebp - 0x140]
movaps xmmword [ebp - 0x140], xmm0
movss dword [ebp - 0x10c], xmm0
call fcn.0046c00b
cdq
mov ecx, esi
idiv edi
push 0xffffaa00
sub edx, 5
mov dword [esi + 0x6c], 1
mov dword [esi + 0x100], 0
mov dword [esi + 0x148], 1
mov dword [esi + 0x140], 0x3f333333
movd xmm0, edx
cvtdq2ps xmm0, xmm0
mulss xmm0, dword [0x604ca4]
addss xmm0, dword [ebp - 0xe4]
movss dword [ebp - 0x104], xmm0
mov eax, dword [ebp - 0x104]
movss dword [ebp - 0xe4], xmm0
movq xmm0, qword [ebp - 0x10c]
movq qword [esi + 0x74], xmm0
movq qword [esi + 0x14c], xmm0
mov dword [esi + 0x7c], eax
mov dword [esi + 0x154], eax
mov eax, dword [esi]
call dword [eax + 0x3c]
mov eax, dword [0x9c25b0]
mov edi, dword [ebp - 0xd8]
mov ecx, dword [eax + 0x2c]
mov dword [esi + 4], ecx
mov eax, dword [ecx + 0x10]
mov dword [esi + 0xc], eax
mov dword [ecx + 0x10], esi
mov eax, dword [esi + 0xc]
test eax, eax
je 0x552814
mov dword [eax + 8], esi
jmp 0x552814
mov edi, dword [ebp - 0xd8]
mov eax, dword [edi + 0xa8]
sub eax, dword [edi + 0xa4]
cmp eax, 0x7d0
jbe 0x552c00
test byte [ebp - 0xc4], 1
jne 0x552c00
mov ecx, dword [ebp - 0xbc]
mov eax, 0x55555556
imul ecx
mov eax, edx
shr eax, 0x1f
add eax, edx
lea eax, [eax + eax*2]
sub ecx, eax
jne 0x552c00
mov ecx, dword [ebp - 0xf4]
mov eax, 0x51eb851f
imul ecx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
imul eax, eax, 0x64
sub ecx, eax
cmp ecx, 1
jge 0x552c00
call fcn.0046c00b
cdq
mov ecx, 7
idiv ecx
push 0x184
mov dword [ebp - 0xf4], edx
call fcn.0046677d
mov esi, eax
mov dword [ebp - 0x148], esi
mov dword [ebp - 4], 1
push 0x184
push 0
push esi
call fcn.00468b40
movss xmm3, dword [0x604ce8]
add esp, 0x10
mov ecx, esi
push 0x50
push 1
sub esp, 0xc
mov dword [esp + 8], 0
mov dword [esp + 4], 0x3e4ccccd
mov dword [esp], 0x3e4ccccd
push 0x4e20
push 0x38
call fcn.004eb060
mov esi, eax
mov dword [ebp - 4], 0xffffffff
test esi, esi
je 0x5529fd
mov ecx, dword [ebp - 0xf4]
movss xmm0, dword [ebp - 0xc0]
addss xmm0, dword [0x604e14]
push 0xffffaa00
movd xmm2, ecx
cvtdq2ps xmm2, xmm2
mov dword [esi + 0x6c], 1
movaps xmm1, xmm2
mulss xmm1, xmm3
addss xmm1, xmm0
movss xmm0, dword [ebp - 0xe4]
movss dword [ebp - 0x1ac], xmm0
movss xmm0, dword [ebp - 0x140]
mov eax, dword [ebp - 0x1ac]
unpcklps xmm0, xmm1
movq qword [esi + 0x74], xmm0
mov dword [esi + 0x7c], eax
movq qword [esi + 0x14c], xmm0
movaps xmm0, xmm2
mulss xmm0, dword [0x604ccc]
mov dword [esi + 0x154], eax
mov eax, 0x55555556
imul ecx
addss xmm0, dword [0x604e14]
mov ecx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
movss dword [esi + 0x144], xmm0
sub ecx, eax
movaps xmm0, xmm2
mov eax, dword [ebp - 0xf4]
mulss xmm0, dword [0x604d04]
mulss xmm2, dword [0x604cb8]
lea eax, [eax + ecx*2]
addss xmm0, dword [0x604f80]
add eax, ecx
mov ecx, esi
addss xmm2, xmm3
mov dword [esi + 0x148], eax
mov eax, dword [esi]
movss dword [esi + 0x13c], xmm0
movss dword [esi + 0x140], xmm2
call dword [eax + 0x3c]
mov eax, dword [0x9c25b0]
mov ecx, dword [eax + 0x2c]
mov dword [esi + 4], ecx
mov eax, dword [ecx + 0x10]
mov dword [esi + 0xc], eax
mov dword [ecx + 0x10], esi
mov eax, dword [esi + 0xc]
test eax, eax
je 0x5529fd
mov dword [eax + 8], esi
push 0x184
call fcn.0046677d
mov esi, eax
mov dword [ebp - 0x14c], esi
mov dword [ebp - 4], 2
push 0x184
push 0
push esi
call fcn.00468b40
movss xmm3, dword [0x604cc0]
add esp, 0x10
mov ecx, esi
push 0x50
push 1
sub esp, 0xc
mov dword [esp + 8], 0
mov dword [esp + 4], 0x3d8f5c29
mov dword [esp], 0x3d8f5c29
push 0x4e20
push 0x3c
call fcn.004eb060
mov esi, eax
mov dword [ebp - 4], 0xffffffff
test esi, esi
je 0x552b72
mov ecx, dword [ebp - 0xf4]
movss xmm2, dword [ebp - 0xc0]
addss xmm2, dword [0x604e14]
push 0xffffff00
movd xmm1, ecx
cvtdq2ps xmm1, xmm1
mov dword [esi + 0x6c], 1
movaps xmm0, xmm1
mulss xmm0, dword [0x604ce8]
addss xmm0, xmm2
movss xmm2, dword [ebp - 0xe4]
movss dword [ebp - 0x1b8], xmm2
movaps xmm2, xmmword [ebp - 0x140]
mov eax, dword [ebp - 0x1b8]
unpcklps xmm2, xmm0
movaps xmm0, xmm1
mulss xmm0, dword [0x604ccc]
movq qword [esi + 0x74], xmm2
mov dword [esi + 0x7c], eax
addss xmm0, dword [0x604e14]
movq qword [esi + 0x14c], xmm2
mov dword [esi + 0x154], eax
mov eax, 0x55555556
imul ecx
movss dword [esi + 0x144], xmm0
movaps xmm0, xmm1
mulss xmm0, dword [0x604d04]
mulss xmm1, dword [0x604cb8]
mov ecx, 2
mov eax, edx
addss xmm0, dword [0x604f80]
shr eax, 0x1f
addss xmm1, dword [0x604ce8]
add eax, edx
sub ecx, eax
mov eax, dword [ebp - 0xf4]
movss dword [esi + 0x13c], xmm0
movss dword [esi + 0x140], xmm1
lea eax, [eax + ecx*2]
add eax, ecx
mov ecx, esi
mov dword [esi + 0x148], eax
mov eax, dword [esi]
call dword [eax + 0x3c]
mov eax, dword [0x9c25b0]
mov ecx, dword [eax + 0x2c]
mov dword [esi + 4], ecx
mov eax, dword [ecx + 0x10]
mov dword [esi + 0xc], eax
mov dword [ecx + 0x10], esi
mov eax, dword [esi + 0xc]
test eax, eax
je 0x552b72
mov dword [eax + 8], esi
cmp dword [ebp - 0xf4], 3
jge 0x552c00
push 0xa0
call fcn.0046677d
mov esi, eax
mov dword [ebp - 0x150], esi
mov dword [ebp - 4], 3
push 0xa0
push 0
push esi
call fcn.00468b40
movq xmm0, qword [ebp - 0x10c]
add esp, 0x10
mov ecx, dword [ebp - 0x104]
push 0x22331100
push 0xffffffffffffffff
push 0
push 1
sub esp, 0xc
mov eax, esp
movq qword [eax], xmm0
mov dword [eax + 8], ecx
mov ecx, esi
call fcn.005a6ed0
mov edx, eax
mov dword [ebp - 4], 0xffffffff
test edx, edx
je 0x552c00
mov ecx, dword [0x9c25b0]
mov ecx, dword [ecx + 0x2c]
mov dword [edx + 4], ecx
mov eax, dword [ecx + 0x10]
mov dword [edx + 0xc], eax
mov dword [ecx + 0x10], edx
mov eax, dword [edx + 0xc]
test eax, eax
je 0x552c00
mov dword [eax + 8], edx
mov esi, dword [0x9c25a4]
mov edx, dword [ebp - 0xcc]
movss xmm2, dword [0x605318]
mov ecx, dword [ebp - 0xf0]
mov eax, dword [ebp - 0xdc]
add ecx, 8
inc eax
mov dword [ebp - 0xf0], ecx
add edx, 0x2c
mov dword [ebp - 0xdc], eax
mov dword [ebp - 0xcc], edx
cmp eax, 4
jl 0x5522e0
mov edx, dword [ebp - 0xc4]
mov esi, dword [ebp - 0xbc]
cmp edx, 0x3f
jge 0x552e81
cmp esi, 0x3f
jge 0x553039
mov eax, esi
shl eax, 6
add eax, edx
lea eax, [eax + eax*2]
mov eax, dword [edi + eax*4 + 0xd4]
mov dword [edi + 0x20128], eax
mov edi, dword [ebp - 0xc8]
add edi, esi
mov esi, dword [ebp - 0xd8]
shl edi, 6
add edi, edx
lea ecx, [edi + edi*2]
mov eax, dword [esi + ecx*4 + 0xd4]
mov dword [esi + 0x20154], eax
mov eax, dword [ebp - 0xbc]
mov ecx, dword [ebp - 0xd0]
shl eax, 6
add eax, edx
add eax, ecx
mov dword [ebp - 0xc0], eax
lea edx, [eax + eax*2]
mov eax, dword [esi + edx*4 + 0xd4]
mov dword [esi + 0x20180], eax
lea eax, [edi + ecx]
mov ecx, dword [ebp - 0xd8]
lea esi, [eax + eax*2]
mov eax, dword [ebp - 0xd8]
mov eax, dword [eax + esi*4 + 0xd4]
mov dword [ecx + 0x201ac], eax
mov eax, dword [ebp - 0xbc]
shl eax, 6
add eax, dword [ebp - 0xc4]
lea eax, [eax + eax*2]
movq xmm0, qword [ecx + eax*4 + 0x140cc]
movq qword [ecx + 0x2011c], xmm0
mov eax, dword [ecx + eax*4 + 0x140d4]
mov dword [ecx + 0x20124], eax
lea ecx, [edi + edi*2]
mov eax, dword [ebp - 0xd8]
movq xmm0, qword [eax + ecx*4 + 0x140cc]
movq qword [eax + 0x20148], xmm0
mov eax, dword [eax + ecx*4 + 0x140d4]
mov ecx, dword [ebp - 0xd8]
mov dword [ecx + 0x20150], eax
movq xmm0, qword [ecx + edx*4 + 0x140cc]
movq qword [ecx + 0x20174], xmm0
mov eax, dword [ecx + edx*4 + 0x140d4]
mov edx, dword [ebp - 0xc4]
mov dword [ecx + 0x2017c], eax
movq xmm0, qword [ecx + esi*4 + 0x140cc]
movq qword [ecx + 0x201a0], xmm0
mov eax, dword [ecx + esi*4 + 0x140d4]
mov esi, dword [ebp - 0xbc]
mov dword [ecx + 0x201a8], eax
mov eax, esi
shl eax, 6
add eax, 0x11
movd xmm2, edx
add eax, edx
movd xmm4, esi
cvtdq2ps xmm2, xmm2
lea eax, [eax + eax*2]
movsx eax, byte [ecx + eax*4]
cvtdq2ps xmm4, xmm4
movd xmm1, eax
movaps xmm0, xmm2
cvtdq2ps xmm1, xmm1
movss dword [ebp - 0x1c4], xmm4
mov eax, dword [ebp - 0x1c4]
unpcklps xmm0, xmm1
movq qword [ecx + 0x20110], xmm0
mov dword [ecx + 0x20118], eax
lea eax, [edi + edi*2]
movsx eax, byte [ecx + eax*4 + 0xcc]
movd xmm0, eax
mov eax, dword [ebp - 0xc8]
add eax, esi
cvtdq2ps xmm0, xmm0
movd xmm3, eax
cvtdq2ps xmm3, xmm3
movss dword [ebp - 0x1d0], xmm3
mov eax, dword [ebp - 0x1d0]
mov esi, dword [ebp - 0xd0]
unpcklps xmm2, xmm0
movq qword [ecx + 0x2013c], xmm2
mov dword [ecx + 0x20144], eax
mov eax, edx
add eax, esi
movss dword [ebp - 0x1dc], xmm4
movss dword [ebp - 0x23c], xmm3
movd xmm2, eax
mov eax, dword [ebp - 0xc0]
cvtdq2ps xmm2, xmm2
lea eax, [eax + eax*2]
movsx eax, byte [ecx + eax*4 + 0xcc]
movaps xmm0, xmm2
movd xmm1, eax
mov eax, dword [ebp - 0x1dc]
cvtdq2ps xmm1, xmm1
unpcklps xmm0, xmm1
movq qword [ecx + 0x20168], xmm0
mov dword [ecx + 0x20170], eax
lea eax, [edi + esi]
mov edi, ecx
lea eax, [eax + eax*2]
movsx eax, byte [edi + eax*4 + 0xcc]
movd xmm0, eax
mov eax, dword [ebp - 0x23c]
jmp 0x5531ee
jne 0x553036
cmp esi, 0x3f
jge 0x553039
lea edx, [esi + esi*2]
add esi, dword [ebp - 0xc8]
shl edx, 8
lea ecx, [esi + esi*2]
movd xmm3, esi
mov eax, dword [edx + edi + 0x3c8]
mov dword [edi + 0x20128], eax
shl ecx, 8
add ecx, edi
cvtdq2ps xmm3, xmm3
mov eax, dword [ecx + 0x3c8]
mov dword [edi + 0x20154], eax
mov eax, dword [edx + edi + 0x3c8]
mov dword [edi + 0x20180], eax
mov eax, dword [ecx + 0x3c8]
mov dword [edi + 0x201ac], eax
movq xmm0, qword [edx + edi + 0x143c0]
movq qword [edi + 0x2011c], xmm0
mov eax, dword [edx + edi + 0x143c8]
mov dword [edi + 0x20124], eax
movq xmm0, qword [ecx + 0x143c0]
movq qword [edi + 0x20148], xmm0
mov eax, dword [ecx + 0x143c8]
mov dword [edi + 0x20150], eax
movq xmm0, qword [edx + edi + 0x143c0]
movq qword [edi + 0x20174], xmm0
mov eax, dword [edx + edi + 0x143c8]
mov dword [edi + 0x2017c], eax
movq xmm0, qword [ecx + 0x143c0]
movq qword [edi + 0x201a0], xmm0
mov eax, dword [ecx + 0x143c8]
mov ecx, dword [ebp - 0xbc]
movss xmm0, dword [0x605158]
mov dword [edi + 0x201a8], eax
movss dword [ebp - 0x200], xmm3
lea edx, [ecx + ecx*2]
movd xmm4, ecx
shl edx, 8
lea ecx, [esi + esi*2]
cvtdq2ps xmm4, xmm4
shl ecx, 8
movsx eax, byte [edx + edi + 0x3c0]
movss dword [ebp - 0x218], xmm3
movss dword [ebp - 0x1f4], xmm4
movd xmm1, eax
mov eax, dword [ebp - 0x1f4]
cvtdq2ps xmm1, xmm1
movss dword [ebp - 0x20c], xmm4
unpcklps xmm0, xmm1
movq qword [edi + 0x20110], xmm0
movss xmm0, dword [0x605158]
mov dword [edi + 0x20118], eax
movsx eax, byte [ecx + edi + 0x3c0]
movd xmm1, eax
mov eax, dword [ebp - 0x200]
cvtdq2ps xmm1, xmm1
unpcklps xmm0, xmm1
movq qword [edi + 0x2013c], xmm0
mov dword [edi + 0x20144], eax
mov eax, dword [ebp - 0xd0]
add eax, 0x3f
movd xmm2, eax
movsx eax, byte [edx + edi + 0x3c0]
cvtdq2ps xmm2, xmm2
movd xmm1, eax
mov eax, dword [ebp - 0x20c]
movaps xmm0, xmm2
cvtdq2ps xmm1, xmm1
unpcklps xmm0, xmm1
movq qword [edi + 0x20168], xmm0
mov dword [edi + 0x20170], eax
movsx eax, byte [ecx + edi + 0x3c0]
movd xmm0, eax
mov eax, dword [ebp - 0x218]
jmp 0x5531ee
cmp esi, 0x3f
jne 0x553202
cmp edx, 0x3f
jge 0x553202
mov esi, dword [ebp - 0xd0]
lea ecx, [edx + 0xfc0]
lea ecx, [ecx + ecx*2]
mov dword [ebp - 0x224], 0x427c0000
mov eax, dword [edi + ecx*4 + 0xd4]
add edx, 0xfc0
mov dword [edi + 0x20128], eax
add esi, edx
mov eax, dword [edi + ecx*4 + 0xd4]
mov dword [edi + 0x20154], eax
mov dword [ebp - 0x290], 0x427c0000
lea edx, [esi + esi*2]
mov eax, dword [edi + edx*4 + 0xd4]
mov dword [edi + 0x20180], eax
mov eax, dword [edi + edx*4 + 0xd4]
mov dword [edi + 0x201ac], eax
movq xmm0, qword [edi + ecx*4 + 0x140cc]
movq qword [edi + 0x2011c], xmm0
mov eax, dword [edi + ecx*4 + 0x140d4]
mov dword [edi + 0x20124], eax
movq xmm0, qword [edi + ecx*4 + 0x140cc]
movq qword [edi + 0x20148], xmm0
mov eax, dword [edi + ecx*4 + 0x140d4]
mov dword [edi + 0x20150], eax
movq xmm0, qword [edi + edx*4 + 0x140cc]
movq qword [edi + 0x20174], xmm0
mov eax, dword [edi + edx*4 + 0x140d4]
mov dword [edi + 0x2017c], eax
movq xmm0, qword [edi + edx*4 + 0x140cc]
movq qword [edi + 0x201a0], xmm0
mov eax, dword [edi + edx*4 + 0x140d4]
mov edx, dword [ebp - 0xc4]
mov dword [edi + 0x201a8], eax
lea ecx, [edx + edx*2]
movd xmm2, edx
movsx eax, byte [edi + ecx*4 + 0xbdcc]
cvtdq2ps xmm2, xmm2
movd xmm1, eax
mov eax, dword [ebp - 0x224]
movaps xmm0, xmm2
cvtdq2ps xmm1, xmm1
unpcklps xmm0, xmm1
movq qword [edi + 0x20110], xmm0
mov dword [edi + 0x20118], eax
movsx eax, byte [edi + ecx*4 + 0xbdcc]
lea ecx, [esi + esi*2]
movd xmm0, eax
mov eax, dword [ebp - 0xc8]
add eax, 0x3f
cvtdq2ps xmm0, xmm0
movd xmm3, eax
cvtdq2ps xmm3, xmm3
unpcklps xmm2, xmm0
movq qword [edi + 0x2013c], xmm2
movss dword [ebp - 0x230], xmm3
mov eax, dword [ebp - 0x230]
mov dword [edi + 0x20144], eax
mov eax, dword [ebp - 0xd0]
add eax, edx
movss dword [ebp - 0x248], xmm3
movd xmm2, eax
movsx eax, byte [edi + ecx*4 + 0xcc]
cvtdq2ps xmm2, xmm2
movd xmm1, eax
mov eax, dword [ebp - 0x290]
movaps xmm0, xmm2
cvtdq2ps xmm1, xmm1
unpcklps xmm0, xmm1
movq qword [edi + 0x20168], xmm0
mov dword [edi + 0x20170], eax
movsx eax, byte [edi + ecx*4 + 0xcc]
movd xmm0, eax
mov eax, dword [ebp - 0x248]
cvtdq2ps xmm0, xmm0
unpcklps xmm2, xmm0
movq qword [edi + 0x20194], xmm2
mov dword [edi + 0x2019c], eax
mov ecx, dword [edi + 0x20a6c]
test ecx, ecx
je 0x553301
mov edx, dword [edi + 0xa8]
lea eax, [ecx + 0x7d0]
cmp edx, eax
jae 0x553301
xorps xmm1, xmm1
mov dword [ebp - 0xc0], 4
xorps xmm0, xmm0
lea esi, [edi + 0x20114]
cvtsi2sd xmm1, edx
shr edx, 0x1f
cvtsi2sd xmm0, ecx
shr ecx, 0x1f
addsd xmm1, qword [edx*8 + 0x605750]
addsd xmm0, qword [ecx*8 + 0x605750]
subsd xmm1, xmm0
movss xmm0, dword [edi + 0x20a60]
cvtps2pd xmm0, xmm0
subsd xmm1, qword [0x605028]
mulsd xmm0, qword [0x604ef0]
mulsd xmm1, xmm0
divsd xmm1, qword [0x605028]
cvtpd2ps xmm0, xmm1
movss dword [ebp - 0xe0], xmm0
mov eax, dword [edi + 0xa8]
xorps xmm1, xmm1
movss xmm2, dword [edi + 0x20a68]
movss xmm0, dword [edi + 0x20a64]
subss xmm0, dword [esi - 4]
subss xmm2, dword [esi + 4]
cvtsi2sd xmm1, eax
shr eax, 0x1f
mulss xmm0, xmm2
addsd xmm1, qword [eax*8 + 0x605750]
divss xmm0, dword [0x6050bc]
cvtpd2ps xmm1, xmm1
divss xmm1, dword [0x605240]
addss xmm0, xmm1
call fcn.0045c640
mulss xmm0, dword [ebp - 0xe0]
addss xmm0, dword [esi]
movss dword [esi], xmm0
add esi, 0x2c
sub dword [ebp - 0xc0], 1
jne 0x553291
cmp dword [0x915fc8], 0
je 0x553344
cmp dword [edi + 0x20a20], 0x10
jne 0x553344
cmp dword [edi + 0x20a24], 0x10
jne 0x553344
mov dword [edi + 0x20128], 0
mov dword [edi + 0x20154], 0
mov dword [edi + 0x20180], 0
mov dword [edi + 0x201ac], 0
push ecx
push dword [ebp - 0xe8]
call fcn.004def60
mov ecx, dword [0x9c25a4]
cmp dword [ecx + 0x4a8], eax
je 0x553376
mov dword [ecx + 0x4a8], eax
mov ecx, dword [ecx + 0x10c]
push eax
push 0
push ecx
mov edx, dword [ecx]
call dword [edx + 0x104]
mov eax, dword [edi + 0xc4]
test eax, eax
je 0x55338a
cmp eax, 3
je 0x55338a
cmp eax, 4
jne 0x5533d6
mov eax, dword [ebp - 0xbc]
shl eax, 6
add eax, dword [ebp - 0xc4]
push ecx
lea eax, [eax + eax*2]
movzx eax, byte [edi + eax*4 + 0xcf]
add eax, 0x100
push eax
call fcn.004def60
mov ecx, dword [0x9c25a4]
cmp dword [ecx + 0x4ac], eax
je 0x5533d6
mov dword [ecx + 0x4ac], eax
mov ecx, dword [ecx + 0x10c]
push eax
push 1
push ecx
mov edx, dword [ecx]
call dword [edx + 0x104]
mov eax, dword [0x9c25a4]
push 0x252
mov eax, dword [eax + 0x10c]
push eax
mov ecx, dword [eax]
call dword [ecx + 0x164]
mov esi, dword [0x9c25a4]
lea eax, [edi + 0x20114]
mov dword [ebp - 0xc0], 0
mov dword [ebp - 0xe0], eax
nop dword [eax + eax]
movss xmm0, dword [eax - 4]
addss xmm0, xmm0
addss xmm0, dword [edi + 0x20a28]
movss dword [ebp - 0x2c], xmm0
movss xmm0, dword [eax]
mulss xmm0, dword [0x604ccc]
movss dword [ebp - 0x28], xmm0
movss xmm0, dword [eax + 4]
lea eax, [esi + 0x3d0]
addss xmm0, xmm0
push eax
lea eax, [ebp - 0x2c]
push eax
lea eax, [ebp - 0x38]
addss xmm0, dword [edi + 0x20a2c]
push eax
movss dword [ebp - 0x24], xmm0
call fcn.0040188b
mov eax, dword [0x9c25a4]
add eax, 0x390
push eax
lea eax, [ebp - 0x38]
push eax
lea eax, [ebp - 0x20]
push eax
call fcn.0040188b
movss xmm0, dword [ebp - 0x18]
xorps xmm1, xmm1
comiss xmm0, xmm1
mov esi, dword [0x9c25a4]
jb 0x55357a
movss xmm1, dword [0x604dc4]
comiss xmm1, xmm0
jbe 0x55357a
mov eax, dword [esi + 0xa8]
sub eax, dword [esi + 0x388]
movss xmm6, dword [0x6053fc]
movd xmm0, eax
cvtdq2pd xmm0, xmm0
shr eax, 0x1f
addsd xmm0, qword [eax*8 + 0x605750]
mov eax, dword [esi + 0xac]
sub eax, dword [esi + 0x38c]
cvtpd2ps xmm2, xmm0
movss xmm0, dword [ebp - 0x20]
addss xmm0, xmm1
mulss xmm0, xmm2
mulss xmm0, dword [0x604d2c]
cvttss2si ecx, xmm0
movd xmm0, eax
cvtdq2pd xmm0, xmm0
shr eax, 0x1f
movd xmm3, ecx
addsd xmm0, qword [eax*8 + 0x605750]
cvtdq2ps xmm3, xmm3
cvtpd2ps xmm4, xmm0
movaps xmm0, xmm1
movss xmm1, dword [0x626b18]
subss xmm0, dword [ebp - 0x1c]
mulss xmm0, xmm4
mulss xmm0, dword [0x604d2c]
cvttss2si eax, xmm0
movaps xmm0, xmm1
mulss xmm0, xmm6
comiss xmm3, xmm0
jbe 0x55357a
movss xmm5, dword [0x605144]
mulss xmm1, xmm5
addss xmm1, xmm2
comiss xmm1, xmm3
jbe 0x55357a
movss xmm1, dword [0x626b1c]
movd xmm2, eax
movaps xmm0, xmm1
cvtdq2ps xmm2, xmm2
mulss xmm0, xmm6
comiss xmm2, xmm0
jbe 0x55357a
mulss xmm1, xmm5
addss xmm1, xmm4
comiss xmm1, xmm2
ja 0x5535a1
mov ecx, dword [ebp - 0xc0]
mov eax, dword [ebp - 0xe0]
inc ecx
add eax, 0x2c
mov dword [ebp - 0xc0], ecx
mov dword [ebp - 0xe0], eax
cmp ecx, 4
jl 0x553410
jmp 0x5535c3
mov ecx, dword [esi + 0x10c]
lea eax, [edi + 0x20110]
push 0x2c
mov edx, dword [ecx]
push eax
push 2
push 5
push ecx
call dword [edx + 0x14c]
mov esi, dword [0x9c25a4]
movss xmm4, dword [0x604c74]
movss xmm7, dword [0x604d5c]
movss xmm2, dword [0x605318]
mov ecx, dword [ebp - 0xc4]
mov edx, dword [ebp - 0xd4]
inc ecx
mov dword [ebp - 0xc4], ecx
cmp ecx, edx
jl 0x551a20
mov edx, dword [ebp - 0xbc]
mov eax, dword [ebp - 0xd4]
mov ecx, dword [ebp - 0x100]
inc edx
mov dword [ebp - 0xbc], edx
cmp edx, ecx
jl 0x5519f7
mov ecx, dword [edi + 0xa8]
mov eax, ecx
sub eax, dword [edi + 0xa4]
cmp eax, 0x7d0
jbe 0x553632
mov dword [edi + 0xa4], ecx
cmp dword [esi + 0x354], 1
jne 0x55366a
cmp dword [esi + 0xc1c], 1
je 0x55366a
mov eax, dword [esi + 0x10c]
push 1
mov dword [esi + 0xc1c], 1
push 0x89
mov ecx, dword [eax]
push eax
call dword [ecx + 0xe4]
mov esi, dword [0x9c25a4]
cmp dword [esi + 0xc2c], 0
je 0x553699
mov eax, dword [esi + 0x10c]
push 0
mov dword [esi + 0xc2c], 0
push 0x8d
mov ecx, dword [eax]
push eax
call dword [ecx + 0xe4]
mov esi, dword [0x9c25a4]
cmp dword [esi + 0xa64], 1
je 0x5536c5
mov eax, dword [esi + 0x10c]
push 1
mov dword [esi + 0xa64], 1
push 0x1b
mov ecx, dword [eax]
push eax
call dword [ecx + 0xe4]
mov esi, dword [0x9c25a4]
cmp dword [esi + 0xa34], 1
je 0x5536f1
mov eax, dword [esi + 0x10c]
push 1
mov dword [esi + 0xa34], 1
push 0xf
mov ecx, dword [eax]
push eax
call dword [ecx + 0xe4]
mov esi, dword [0x9c25a4]
cmp dword [esi + 0xe70], 1
je 0x55371f
mov eax, dword [esi + 0x10c]
push 1
push 1
mov dword [esi + 0xe70], 1
mov ecx, dword [eax]
push 1
push eax
call dword [ecx + 0x10c]
mov esi, dword [0x9c25a4]
cmp dword [esi + 0xee4], 1
je 0x55374d
mov eax, dword [esi + 0x10c]
push 1
push 1
mov dword [esi + 0xee4], 1
mov ecx, dword [eax]
push 2
push eax
call dword [ecx + 0x10c]
mov esi, dword [0x9c25a4]
cmp dword [edi + 0xc0], 1
jne 0x55377c
cmp dword [esi + 0xa18], 3
je 0x55377c
mov eax, dword [esi + 0x10c]
push 3
mov dword [esi + 0xa18], 3
push 8
mov ecx, dword [eax]
push eax
call dword [ecx + 0xe4]
mov eax, 1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.0046676f
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret