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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xffffffe0
sub esp, 0x440
xor edi, edi
test ecx, ecx
je 0x4753ba
test edx, edx
je 0x4753ba
mov dword [esp + 0x88], edx
mov esi, dword [0x481998]
test esi, esi
je 0x4753ba
cmp dword [0x48199c], 0
je 0x4753ba
cmp dword [0x48198c], 0
je 0x4753ba
cmp dword [0x481990], 0
je 0x4753ba
mov eax, dword [0x481a9c]
test eax, eax
mov dword [esp + 0xb0], ecx
jne 0x471a5b
mov edx, 4
cmp byte [edx + 0x47a299], 0
lea edx, [edx + 1]
jne 0x471286
mov eax, 0xcccccccd
mulx edi, edi, eax
and edi, 0xfffffffc
mov eax, dword [0x481994]
mov dword [esp + 0xe8], eax
mov eax, dword [esp + 0xe8]
push edi
push 0
push eax
call esi
add esp, 0xc
mov ebx, 0
test eax, eax
je 0x471a43
mov dword [esp + 0x1c], edi
mov bl, 0x37
mov esi, 0x47a2a1
mov dword [esp + 0x20], eax
mov dword [esp + 0x40], eax
movsx eax, bl
xor ecx, ecx
cmp bl, 0x5c
setge cl
sub eax, ecx
mov dword [esp + 0x24], eax
movsx ebx, byte [esi - 4]
xor ecx, ecx
cmp ebx, 0x5c
setge cl
sub ebx, ecx
movsx eax, byte [esi - 3]
xor ecx, ecx
cmp eax, 0x5c
setge cl
sub eax, ecx
movsx edi, byte [esi - 2]
xor ecx, ecx
cmp edi, 0x5c
setge cl
sub edi, ecx
movsx ecx, byte [esi - 1]
xor edx, edx
cmp ecx, 0x5c
setge dl
sub ecx, edx
imul ecx, ecx, 0x55
add ecx, edi
imul ecx, ecx, 0x55
add ecx, eax
mov eax, dword [esp + 0x40]
imul ecx, ecx, 0x55
add ecx, ebx
imul ecx, ecx, 0x55
mov edx, dword [esp + 0x24]
add ecx, edx
add ecx, 0x91cdf9d9
mov dword [eax], ecx
add eax, 4
mov bl, byte [esi]
add esi, 5
test bl, bl
jne 0x4712d7
xor ebx, ebx
cmp dword [0x481998], 0
je 0x471a1e
cmp dword [0x48199c], 0
je 0x471a1e
mov ecx, dword [0x48198c]
test ecx, ecx
mov edi, dword [esp + 0x20]
je 0x471a22
cmp dword [0x481990], 0
je 0x471a22
mov esi, dword [edi + 8]
mov eax, dword [0x481988]
mov dword [esp + 0xf4], eax
sub esp, 0xc
mov eax, dword [esp + 0x100]
mov dword [esp], eax
movbe dword [esp + 8], esi
mov dword [esp + 4], 0
call ecx
add esp, 0xc
test eax, eax
je 0x471a22
mov dword [esp + 0x28], eax
bswap esi
movbe eax, dword [edi]
cmp eax, 0x57bc0000
mov edx, esi
jne 0x471903
movbe eax, dword [edi + 4]
test eax, eax
jne 0x471903
movbe eax, dword [edi + 8]
mov dword [0x481b34], edi
mov ecx, dword [esp + 0x1c]
add ecx, edi
mov dword [0x481b38], ecx
mov ecx, edx
mov edx, dword [esp + 0x28]
mov esi, edx
add esi, eax
mov dword [0x481b3c], esi
mov dword [0x481b40], edx
mov ebx, edi
add ebx, 0x10
mov dword [0x481b44], edx
mov dword [esp + 0x40], edx
mov edx, ecx
mov dword [esp + 0x90], ecx
mov dword [esp + 0x24], esi
movzx eax, byte [ebx]
cmp eax, 0x20
jb 0x471490
test al, al
js 0x471560
cmp al, 0x40
mov ecx, eax
jb 0x47159a
mov eax, ebx
movzx edx, byte [ebx + 2]
mov ebx, dword [esp + 0x40]
lea esi, [ebx + edx]
inc esi
mov edi, dword [0x481b3c]
cmp esi, edi
ja 0x471700
shl ecx, 8
movzx esi, byte [eax + 1]
or esi, ecx
mov ecx, 0x3fff
sub ecx, esi
lea esi, [ebx + ecx]
cmp dword [0x481b40], esi
jbe 0x4716f0
inc edi
mov esi, edi
jmp 0x471700
cmp al, 0x18
jb 0x4714f2
mov ecx, eax
mov dword [esp + 0x1c], ebx
movzx edx, byte [ebx + 3]
mov eax, dword [esp + 0x40]
lea edi, [eax + edx]
inc edi
mov esi, dword [0x481b3c]
cmp edi, esi
ja 0x47164b
mov edi, ecx
shl edi, 0x10
mov ecx, dword [esp + 0x1c]
movzx ebx, byte [ecx + 1]
shl ebx, 8
movzx ecx, byte [ecx + 2]
mov dword [esp + 0xa0], edi
mov dword [esp + 0x70], ecx
add edi, ecx
or edi, ebx
sub eax, edi
add eax, 0x17ffff
cmp dword [0x481b40], eax
jbe 0x471625
inc esi
mov edi, esi
jmp 0x47164b
cmp al, 0x10
jb 0x4715cf
movbe cx, word [ebx + 3]
movzx edx, cx
mov esi, dword [esp + 0x40]
lea edi, [esi + edx]
inc edi
mov ecx, dword [0x481b3c]
cmp edi, ecx
ja 0x4718df
mov dword [esp + 0x70], ecx
shl eax, 0x10
mov ecx, eax
mov eax, ebx
movzx ebx, byte [ebx + 1]
shl ebx, 8
mov dword [esp + 0x1c], eax
movzx edi, byte [eax + 2]
mov dword [esp + 0xa0], ecx
add ecx, edi
or ecx, ebx
sub esi, ecx
add esi, 0xfffff
cmp dword [0x481b40], esi
jbe 0x471738
mov edi, dword [esp + 0x70]
inc edi
mov ebx, dword [esp + 0x1c]
jmp 0x4718df
mov ecx, eax
mov eax, ebx
mov edx, dword [esp + 0x40]
lea esi, [edx + ecx]
add esi, 0xffffff81
mov edi, dword [0x481b3c]
cmp esi, edi
ja 0x4716d4
mov esi, edx
movzx edx, byte [eax + 1]
not edx
add esi, edx
cmp dword [0x481b40], esi
jbe 0x4716be
inc edi
mov esi, edi
jmp 0x4716d4
mov eax, dword [esp + 0x40]
lea edi, [eax + ecx]
add edi, 0xffffffe1
mov esi, dword [0x481b3c]
cmp edi, esi
mov eax, ecx
ja 0x47172a
mov ecx, edx
lea edx, [ebx + 1]
cmp dword [0x481b34], edx
jbe 0x471710
inc esi
mov edi, esi
mov edx, ecx
jmp 0x47172a
cmp al, 8
jb 0x47165d
shl eax, 8
movzx edx, byte [ebx + 1]
mov dword [esp + 0xa0], eax
lea esi, [eax + edx]
mov eax, dword [esp + 0x40]
lea edi, [eax + esi]
add edi, 0xfffff801
mov eax, ebx
mov ebx, dword [0x481b3c]
cmp edi, ebx
ja 0x471617
lea ecx, [eax + 2]
mov dword [esp + 0x1c], ecx
cmp dword [0x481b34], ecx
jbe 0x47181f
inc ebx
mov edi, ebx
mov ebx, eax
mov edx, dword [esp + 0x90]
jmp 0x47184f
inc edx
mov eax, dword [esp + 0x70]
add eax, ebx
add eax, dword [esp + 0xa0]
mov ecx, 0x17ffff
sub ecx, eax
mov esi, dword [esp + 0x40]
lea edi, [esi + 1]
mov bl, byte [esi + ecx]
mov byte [esi], bl
mov esi, edi
dec edx
jne 0x47163e
mov dword [0x481b44], edi
mov ebx, dword [esp + 0x1c]
add ebx, 4
jmp 0x4718e8
cmp al, 4
je 0x471763
cmp eax, 6
je 0x4717c6
cmp eax, 7
mov edx, dword [esp + 0x90]
jne 0x471903
movbe ax, word [ebx + 1]
mov edx, ebx
movzx ebx, ax
mov eax, dword [esp + 0x40]
lea edi, [eax + ebx]
inc edi
mov esi, dword [0x481b3c]
cmp edi, esi
ja 0x47188f
mov dword [esp + 0x1c], edx
add edx, 3
cmp dword [0x481b34], edx
jbe 0x471872
mov edx, dword [esp + 0x1c]
inc esi
mov edi, esi
jmp 0x47188f
add ecx, 0xffffff81
je 0x4716de
mov edi, dword [esp + 0x40]
lea esi, [edi + 1]
mov bl, byte [edi + edx]
mov byte [edi], bl
mov edi, esi
dec ecx
jne 0x4716c7
mov dword [0x481b44], esi
mov dword [esp + 0x40], esi
mov ebx, eax
add ebx, 2
mov edi, dword [esp + 0x20]
mov esi, dword [esp + 0x40]
jmp 0x4718ee
inc edx
lea esi, [ebx + 1]
mov edi, ebx
mov bl, byte [ebx + ecx]
mov byte [edi], bl
mov ebx, esi
dec edx
jne 0x4716f1
mov dword [0x481b44], esi
mov ebx, eax
add ebx, 3
jmp 0x4718ea
add eax, 0xffffffe1
mov ecx, dword [esp + 0x40]
push eax
call fcn.0046a24a
mov edx, dword [esp + 0x94]
add esp, 4
movzx eax, byte [ebx]
mov dword [0x481b44], edi
add eax, 0xffffffe2
jmp 0x47185d
inc edx
add edi, ebx
add edi, dword [esp + 0xa0]
mov ecx, 0xfffff
sub ecx, edi
mov ebx, dword [esp + 0x1c]
mov esi, dword [esp + 0x40]
lea edi, [esi + 1]
mov al, byte [esi + ecx]
mov byte [esi], al
mov esi, edi
dec edx
jne 0x471751
jmp 0x4718df
movbe ax, word [ebx + 4]
movzx ecx, ax
mov esi, dword [esp + 0x40]
lea edi, [esi + ecx]
inc edi
mov eax, dword [0x481b3c]
cmp edi, eax
ja 0x4718b8
mov dword [esp + 0xa0], eax
movzx edi, byte [ebx + 1]
shl edi, 0x10
mov eax, ebx
movzx ebx, byte [ebx + 2]
shl ebx, 8
mov dword [esp + 0x1c], eax
movzx edx, byte [eax + 3]
lea eax, [edi + edx]
or eax, ebx
not eax
add eax, esi
cmp dword [0x481b40], eax
jbe 0x47189c
mov edi, dword [esp + 0xa0]
inc edi
mov ebx, dword [esp + 0x1c]
jmp 0x4718b8
movzx ecx, byte [ebx + 4]
mov esi, dword [esp + 0x40]
lea edi, [esi + ecx]
inc edi
mov eax, dword [0x481b3c]
cmp edi, eax
ja 0x4718df
mov dword [esp + 0xa0], eax
movzx edi, byte [ebx + 1]
shl edi, 0x10
mov eax, ebx
movzx ebx, byte [ebx + 2]
shl ebx, 8
mov dword [esp + 0x1c], eax
movzx edx, byte [eax + 3]
lea eax, [edi + edx]
or eax, ebx
not eax
add eax, esi
cmp dword [0x481b40], eax
jbe 0x4718c3
mov edi, dword [esp + 0xa0]
jmp 0x471556
mov ebx, eax
mov eax, dword [esp + 0xa0]
add eax, edx
add eax, 0xfffff801
mov ecx, dword [esp + 0x40]
mov edx, dword [esp + 0x1c]
push eax
call fcn.0046a24a
mov edx, dword [esp + 0x94]
add esp, 4
movbe ax, word [ebx]
movzx esi, ax
mov dword [0x481b44], edi
add esi, 0xfffff803
mov eax, esi
mov esi, edi
test eax, eax
mov edi, dword [esp + 0x20]
je 0x471903
add ebx, eax
jmp 0x4718f5
inc ebx
mov ecx, dword [esp + 0x40]
push ebx
call fcn.0046a24a
add esp, 4
mov eax, dword [esp + 0x1c]
mov edx, eax
movbe ax, word [eax + 1]
movzx ebx, ax
mov dword [0x481b44], edi
add ebx, edx
add ebx, 4
jmp 0x4718e8
inc ecx
add edx, ebx
add edx, edi
not edx
mov ebx, dword [esp + 0x1c]
mov esi, dword [esp + 0x40]
lea edi, [esi + 1]
mov al, byte [esi + edx]
mov byte [esi], al
mov esi, edi
dec ecx
jne 0x4718ab
mov dword [0x481b44], edi
add ebx, 6
jmp 0x4718e8
inc ecx
add edx, ebx
add edx, edi
not edx
mov ebx, dword [esp + 0x1c]
mov esi, dword [esp + 0x40]
lea edi, [esi + 1]
mov al, byte [esi + edx]
mov byte [esi], al
mov esi, edi
dec ecx
jne 0x4718d2
mov dword [0x481b44], edi
add ebx, 5
mov esi, edi
mov edi, dword [esp + 0x20]
mov edx, dword [esp + 0x90]
mov dword [esp + 0x40], esi
cmp esi, dword [esp + 0x24]
jbe 0x471433
xor ebx, ebx
mov dword [esp + 0x210], ebx
mov dword [esp + 0x213], ebx
mov dword [esp + 0x217], ebx
mov dword [esp + 0x20c], ebx
mov byte [esp + 0x21f], 0
mov dword [esp + 0x21b], 0x301
mov dword [esp + 0x230], 0x47d16c
vmovaps xmm0, xmmword [0x47d700]
vmovups xmmword [esp + 0x234], xmm0
mov eax, dword [esp + 0x28]
mov dword [esp + 0x210], eax
mov dword [esp + 0x214], edx
vmovdqa xmm0, xmmword [0x47d710]
vmovdqu xmmword [esp + 0x220], xmm0
mov byte [esp + 0x218], 1
test edx, edx
je 0x471a22
mov ecx, dword [0x48198c]
test ecx, ecx
je 0x471a22
cmp dword [0x481990], 0
je 0x471a22
cmp dword [0x481998], 0
je 0x471a22
cmp dword [0x48199c], 0
je 0x471a22
mov eax, dword [0x481988]
mov dword [esp + 0xc0], eax
mov eax, dword [esp + 0xc0]
mov esi, 0x38
push esi
push 0
push eax
call ecx
add esp, 0xc
lea ebx, [esp + 0x20c]
mov ecx, eax
mov edx, ebx
push esi
mov esi, eax
call fcn.0046a24a
add esp, 4
mov dword [esi + 0x30], esi
mov dword [esi + 0x34], esi
cmp byte [ebx + 0xd], 0
je 0x4726c3
mov eax, dword [0x481a94]
mov ecx, dword [eax + 0x44]
add eax, 0x18
mov dword [esi + 0x28], eax
mov dword [esi + 0x30], ecx
mov eax, dword [ecx + 0x34]
mov dword [esi + 0x34], eax
mov eax, dword [ecx + 0x34]
mov dword [eax + 0x30], esi
mov dword [ecx + 0x34], esi
xor ebx, ebx
jmp 0x472794
mov edi, dword [esp + 0x20]
mov eax, dword [0x481994]
mov dword [esp + 0x20c], eax
mov eax, dword [esp + 0x20c]
push edi
push eax
vzeroupper
call dword [0x48199c]
add esp, 8
mov dword [0x481a90], ebx
mov eax, dword [0x481a9c]
test eax, eax
mov edi, 0
je 0x4753ba
mov ecx, dword [0x481a98]
mov dword [0x481a88], 0
test ecx, ecx
je 0x471bc7
mov dword [esp + 0x1c], eax
mov dword [esp + 0x20], 0
vpbroadcastd ymm2, dword [0x47d720]
vpbroadcastd ymm4, dword [0x47d1c4]
mov esi, ecx
mov dword [esp + 0x24], ecx
mov edi, dword [esi + 0x24]
test edi, edi
jne 0x471ab0
mov dword [ecx + 0x24], 0x47d16c
mov edi, dword [esi + 0x24]
test edi, edi
je 0x471b81
xor eax, eax
cmp dword [edi + eax], 0
lea eax, [eax + 4]
jne 0x471ab2
xor ebx, ebx
test eax, eax
je 0x471b83
mov ecx, eax
sar ecx, 2
mov edx, eax
shr edx, 0x1f
add edx, ecx
sar edx, 1
add dword [esp + 0x20], edx
cmp eax, 5
jl 0x471b7b
lea ebx, [edx + 7]
and ebx, 0xfffffff8
dec edx
vmovd xmm0, edx
vpbroadcastd ymm0, xmm0
vmovdqa ymmword [esp + 0x40], ymm0
vpxor xmm0, xmm0, xmm0
vmovdqa ymm6, ymmword [0x47d1a0]
mov ecx, dword [esp + 0x24]
vpminud ymm5, ymm6, ymmword [esp + 0x40]
vpcmpeqd ymm1, ymm6, ymm5
vpaddd ymm5, ymm6, ymm6
vpor ymm5, ymm5, ymm2
vmovdqa ymm3, ymm2
vpxor xmm2, xmm2, xmm2
vmovdqa ymm7, ymm1
vpgatherdd ymm2, ymmword [edi + ymm5*4], ymm7
vpxor xmm7, xmm7, xmm7
vmovdqa ymm5, ymm1
vpgatherdd ymm7, ymmword [edi + ymm6*8], ymm5
vmovdqa ymm5, ymm0
vpsubd ymm0, ymm0, ymm7
vpaddd ymm0, ymm0, ymm2
vmovdqa ymm2, ymm3
vpcmpeqd ymm3, ymm3, ymm3
vpsubd ymm0, ymm0, ymm3
vpaddd ymm6, ymm6, ymm4
add ebx, 0xfffffff8
jne 0x471b06
vblendvps ymm0, ymm5, ymm0, ymm1
vextractf128 xmm1, ymm0, 1
vphaddd xmm0, xmm1, xmm0
vphaddd xmm0, xmm0, xmm0
vphaddd xmm0, xmm0, xmm0
vmovd ebx, xmm0
jmp 0x471b83
mov ecx, dword [esp + 0x24]
jmp 0x471b83
xor ebx, ebx
add ebx, dword [0x481a88]
mov dword [0x481a88], ebx
mov esi, dword [esi + 0x30]
cmp esi, ecx
jne 0x471a97
mov ecx, dword [ecx]
test ecx, ecx
jne 0x471a91
mov eax, dword [esp + 0x20]
add eax, ebx
lea eax, [eax + eax*2]
lea ecx, [ebx + ebx*8]
lea ecx, [ecx + ecx*2]
imul edx, dword [esp + 0x1c], 0x8c
add edx, ebx
add edx, ecx
lea esi, [edx + eax*8]
add esi, 0x5c
jmp 0x471bc9
xor esi, esi
mov eax, dword [0x481994]
mov dword [esp + 0x200], eax
mov eax, dword [esp + 0x200]
push esi
push 0
push eax
vzeroupper
call dword [0x481998]
add esp, 0xc
test eax, eax
je 0x475354
cmp esi, 0xb
mov dword [esp + 0xec], eax
ja 0x471c0a
test esi, esi
je 0x471c6a
push esi
push 0
push eax
jmp 0x471c5b
mov edi, eax
and edi, 3
je 0x471c36
mov ebx, 4
sub ebx, edi
push ebx
push 0
push eax
call fcn.00478a71
add esp, 0xc
sub esi, ebx
neg edi
mov eax, dword [esp + 0xec]
add edi, eax
add edi, 4
jmp 0x471c38
mov edi, eax
mov ebx, esi
and ebx, 0xfffffffc
push ebx
push 0
push edi
call fcn.00478a71
add esp, 0xc
and esi, 3
mov eax, dword [esp + 0xec]
je 0x471c6a
add edi, ebx
push esi
push 0
push edi
call fcn.00478a71
mov eax, dword [esp + 0xf8]
add esp, 0xc
mov esi, dword [0x481a88]
mov edi, eax
add edi, 3
and edi, 0xfffffffc
lea ecx, [edi + 0x4b]
and ecx, 0xfffffffc
imul edx, dword [0x481a9c], 0x8c
mov dword [edi + 0x38], ecx
add edx, ecx
mov dword [edi + 0x3c], edx
lea ecx, [esi + esi*8]
lea ecx, [ecx + ecx*2]
add ecx, esi
add ecx, edx
mov dword [edi + 0x40], ecx
lea eax, [esi + esi*2]
lea eax, [ecx + eax*8]
mov dword [edi + 0x44], eax
vmovq xmm0, qword [0x481994]
vmovq qword [edi], xmm0
mov eax, dword [0x48199c]
mov dword [esp + 0x2c], edi
mov dword [edi + 8], eax
mov eax, dword [0x481a88]
shl eax, 4
lea eax, [eax + eax*2]
mov ecx, dword [0x481988]
mov dword [esp + 0x1fc], ecx
mov ecx, dword [esp + 0x1fc]
push eax
push 0
push ecx
call dword [0x48198c]
add esp, 0xc
mov dword [0x481a8c], eax
test eax, eax
je 0x475330
mov dword [0x4819a4], 0x1c00b5
mov eax, dword [0x481a9c]
mov dword [esp + 0xcc], eax
test eax, eax
je 0x475330
mov eax, dword [0x481a98]
mov dword [esp + 0x3c], eax
test eax, eax
je 0x475330
xor edi, edi
vpbroadcastd ymm1, dword [0x47d720]
vpbroadcastd ymm0, dword [0x47d1c4]
vmovdqa ymmword [esp + 0x40], ymm0
mov eax, dword [esp + 0x3c]
mov ecx, eax
mov edx, dword [ecx + 0x24]
test edx, edx
je 0x471e04
xor ebx, ebx
cmp dword [edx + ebx], 0
lea ebx, [ebx + 4]
jne 0x471d53
xor esi, esi
test ebx, ebx
je 0x471e06
cmp ebx, 5
jl 0x471e06
mov esi, ebx
sar esi, 2
shr ebx, 0x1f
add ebx, esi
sar ebx, 1
lea esi, [ebx + 7]
and esi, 0xfffffff8
dec ebx
vmovd xmm3, ebx
vpbroadcastd ymm3, xmm3
vpxor xmm4, xmm4, xmm4
vmovdqa ymm5, ymmword [0x47d1a0]
vpminud ymm6, ymm5, ymm3
vpcmpeqd ymm2, ymm5, ymm6
vpaddd ymm7, ymm5, ymm5
vpor ymm7, ymm7, ymm1
vpxor xmm0, xmm0, xmm0
vmovdqa ymm6, ymm2
vpgatherdd ymm0, ymmword [edx + ymm7*4], ymm6
vpxor xmm6, xmm6, xmm6
vmovdqa ymm7, ymm2
vpgatherdd ymm6, ymmword [edx + ymm5*8], ymm7
vmovdqa ymm7, ymm4
vpsubd ymm4, ymm4, ymm6
vpcmpeqd ymm6, ymm6, ymm6
vpaddd ymm0, ymm4, ymm0
vpsubd ymm4, ymm0, ymm6
vpaddd ymm5, ymm5, ymmword [esp + 0x40]
add esi, 0xfffffff8
jne 0x471d97
vblendvps ymm0, ymm7, ymm4, ymm2
vextractf128 xmm2, ymm0, 1
vphaddd xmm0, xmm2, xmm0
vphaddd xmm0, xmm0, xmm0
vphaddd xmm0, xmm0, xmm0
vmovd esi, xmm0
jmp 0x471e06
xor esi, esi
add edi, esi
mov ecx, dword [ecx + 0x30]
cmp ecx, eax
jne 0x471d46
mov eax, dword [eax]
test eax, eax
jne 0x471d44
mov ecx, dword [esp + 0x3c]
mov dword [esp + 0x28], 0
mov eax, dword [esp + 0x2c]
mov edx, ecx
mov dword [esp + 0xbc], ecx
mov eax, dword [eax + 0x38]
imul ecx, dword [esp + 0x28], 0x8c
lea esi, [eax + ecx]
mov dword [eax + ecx], 0x481994
mov ecx, dword [edx + 4]
movzx eax, byte [ecx]
cmp eax, 0x4e
mov dword [esp + 0x120], edx
jg 0x471e77
test eax, eax
je 0x471eb2
mov edx, ecx
xor ebx, ebx
dec ebx
cmp eax, 0x31
jne 0x471eef
cmp byte [ecx + 1], 0
jne 0x471eec
jmp 0x471eb8
cmp eax, 0x4f
je 0x471ec8
xor ebx, ebx
dec ebx
cmp eax, 0x74
jne 0x471eef
movzx eax, byte [ecx + 1]
cmp eax, 0x72
je 0x471ede
mov edx, ecx
cmp eax, 0x74
je 0x47240b
xor ebx, ebx
dec ebx
mov ecx, edx
cmp eax, 0x79
jne 0x471eef
cmp byte [ecx + 2], 0x70
jne 0x471eec
xor ebx, ebx
cmp byte [ecx + 3], 0x31
jne 0x471eec
jmp 0x471eef
cmp byte [ecx + 1], 1
jne 0x471eec
cmp byte [ecx + 2], 0
jne 0x471eec
cmp byte [ecx + 3], 0
jne 0x471eec
xor ebx, ebx
jmp 0x471eef
cmp byte [ecx + 1], 0x54
jne 0x471eec
cmp byte [ecx + 2], 0x54
jne 0x471eec
xor ebx, ebx
cmp byte [ecx + 3], 0x4f
jne 0x471eec
jmp 0x471eef
cmp byte [ecx + 2], 0x75
jne 0x471eec
xor ebx, ebx
cmp byte [ecx + 3], 0x65
je 0x471eef
xor ebx, ebx
dec ebx
mov dword [esi + 4], ecx
mov dword [esi + 8], ebx
xor eax, eax
mov dword [esi + 0x38], eax
mov dword [esi + 0x3c], eax
mov dword [esi + 0x40], eax
mov dword [esp + 0x24], esi
mov esi, ecx
mov dword [esp + 0x1c], ecx
mov edx, ebx
push 0x47e04a
vzeroupper
call fcn.00475998
add esp, 4
mov dword [esp + 0x20], eax
mov ecx, esi
mov edx, ebx
push str.loca
call fcn.00475998
add esp, 4
mov dword [esp + 0x34], eax
mov esi, dword [esp + 0x24]
mov dword [esi + 0x10], eax
mov ecx, dword [esp + 0x1c]
mov edx, ebx
push str.head
call fcn.00475998
add esp, 4
mov dword [esp + 0xa0], eax
mov dword [esi + 0x14], eax
mov ecx, dword [esp + 0x1c]
mov edx, ebx
push str.glyf
call fcn.00475998
add esp, 4
mov dword [esp + 0x30], eax
mov dword [esi + 0x18], eax
mov ecx, dword [esp + 0x1c]
mov edx, ebx
push str.hhea
call fcn.00475998
add esp, 4
mov dword [esp + 0x70], eax
mov dword [esi + 0x1c], eax
mov ecx, dword [esp + 0x1c]
mov edx, ebx
push str.hmtx
call fcn.00475998
add esp, 4
mov dword [esp + 0x38], eax
mov dword [esi + 0x20], eax
mov ecx, dword [esp + 0x1c]
mov edx, ebx
push str.kern
call fcn.00475998
add esp, 4
mov dword [esi + 0x24], eax
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x90], ebx
mov edx, ebx
push str.GPOS
call fcn.00475998
add esp, 4
mov dword [esi + 0x28], eax
mov eax, dword [esp + 0x20]
test eax, eax
je 0x475330
cmp dword [esp + 0xa0], 0
je 0x475330
cmp dword [esp + 0x70], 0
je 0x475330
cmp dword [esp + 0x38], 0
je 0x475330
cmp dword [esp + 0x30], 0
je 0x472021
cmp dword [esp + 0x34], 0
jne 0x47231d
jmp 0x475330
mov dword [esp + 0xd0], 2
xor eax, eax
mov dword [esp + 0xf4], eax
mov dword [esp + 0xe8], eax
mov dword [esp + 0x100], eax
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x90]
push str.CFF
call fcn.00475998
add esp, 4
test eax, eax
je 0x475330
add eax, dword [esp + 0x1c]
xor ecx, ecx
mov edx, dword [esp + 0x24]
mov dword [edx + 0x7c], ecx
mov dword [edx + 0x78], ecx
vpxor xmm0, xmm0, xmm0
vmovdqu xmmword [edx + 0x68], xmm0
mov dword [edx + 0x38], eax
lea eax, [edx + 0x38]
mov dword [edx + 0x3c], ecx
mov dword [edx + 0x40], 0x20000000
vmovsd xmm0, qword [eax]
vmovsd qword [esp + 0x20c], xmm0
mov eax, dword [eax + 8]
mov dword [esp + 0x214], eax
mov esi, dword [esp + 0x210]
lea edx, [esi + 2]
cmp eax, edx
cmovl edx, eax
cmp esi, 0xfffffffe
cmovl edx, eax
cmp edx, eax
jge 0x4720c7
mov ecx, dword [esp + 0x20c]
movzx ecx, byte [ecx + edx]
cmp eax, ecx
cmovl ecx, eax
mov dword [esp + 0x210], ecx
lea ebx, [esp + 0xd4]
mov ecx, ebx
lea esi, [esp + 0x20c]
mov edx, esi
call fcn.00475a28
mov ecx, ebx
mov edx, esi
call fcn.00475a28
mov edx, dword [esp + 0xd4]
lea ecx, [esp + 0xc0]
push 0
push dword [esp + 0xe0]
call fcn.00475b1d
add esp, 8
lea ebx, [esp + 0xd4]
mov ecx, ebx
mov edx, esi
call fcn.00475a28
mov ecx, ebx
mov edx, esi
call fcn.00475a28
mov eax, dword [esp + 0xdc]
mov ebx, dword [esp + 0x24]
mov dword [ebx + 0x58], eax
vmovsd xmm0, qword [esp + 0xd4]
vmovsd qword [ebx + 0x50], xmm0
lea ecx, [esp + 0xc0]
mov edx, 0x11
lea eax, [esp + 0xf4]
push eax
xor esi, esi
inc esi
push esi
call fcn.00475c1c
add esp, 8
lea esi, [esp + 0xc0]
mov ecx, esi
mov edx, 0x106
lea eax, [esp + 0xd0]
push eax
xor eax, eax
inc eax
push eax
call fcn.00475c1c
add esp, 8
mov ecx, esi
mov edx, 0x124
lea eax, [esp + 0xe8]
push eax
xor eax, eax
inc eax
push eax
call fcn.00475c1c
add esp, 8
mov ecx, esi
mov edx, 0x125
lea eax, [esp + 0x100]
push eax
xor eax, eax
inc eax
push eax
call fcn.00475c1c
add esp, 8
mov edx, dword [esp + 0x20c]
mov esi, dword [esp + 0x214]
lea ecx, [esp + 0xd4]
push dword [esp + 0xc8]
push dword [esp + 0xc8]
push dword [esp + 0xc8]
push esi
call fcn.00475d79
add esp, 0x10
mov eax, dword [esp + 0xdc]
mov dword [ebx + 0x64], eax
vmovsd xmm0, qword [esp + 0xd4]
vmovsd qword [ebx + 0x5c], xmm0
cmp dword [esp + 0xd0], 2
jne 0x475330
mov edx, dword [esp + 0xf4]
test edx, edx
je 0x475330
mov eax, dword [esp + 0xe8]
test eax, eax
je 0x4722db
mov ebx, dword [esp + 0x100]
test ebx, ebx
je 0x475330
mov ecx, dword [esp + 0x24]
add ecx, 0x68
mov dword [esp + 0x70], ecx
cmp esi, eax
mov dword [esp + 0xa0], edx
mov ecx, eax
cmovl ecx, esi
test eax, eax
cmovs ecx, esi
mov dword [esp + 0x210], ecx
lea ecx, [esp + 0xd4]
lea edx, [esp + 0x20c]
call fcn.00475a28
mov eax, dword [esp + 0xdc]
mov ecx, dword [esp + 0x70]
mov dword [ecx + 8], eax
vmovsd xmm0, qword [esp + 0xd4]
vmovsd qword [ecx], xmm0
mov esi, dword [esp + 0x214]
mov eax, esi
sub eax, ebx
setl cl
mov edx, eax
or edx, ebx
sets dl
or dl, cl
add ebx, dword [esp + 0x20c]
test dl, dl
mov edx, 0
cmovne ebx, edx
mov ecx, dword [esp + 0x24]
mov dword [ecx + 0x74], ebx
mov ebx, ecx
cmovne eax, edx
mov dword [ecx + 0x78], edx
mov edx, dword [esp + 0xa0]
mov dword [ecx + 0x7c], eax
jmp 0x4722df
mov ebx, dword [esp + 0x24]
cmp esi, edx
mov eax, edx
cmovl eax, esi
test edx, edx
cmovs eax, esi
mov dword [esp + 0x210], eax
lea ecx, [esp + 0xd4]
lea edx, [esp + 0x20c]
call fcn.00475a28
mov eax, dword [esp + 0xdc]
mov dword [ebx + 0x4c], eax
vmovq xmm0, qword [esp + 0xd4]
vmovq qword [ebx + 0x44], xmm0
mov esi, dword [esp + 0x1c]
mov ecx, esi
mov edx, dword [esp + 0x90]
push str.maxp
call fcn.00475998
add esp, 4
test eax, eax
je 0x472347
movbe ax, word [esi + eax + 4]
movzx eax, ax
jmp 0x47234c
mov eax, 0xffff
mov ecx, dword [esp + 0x24]
mov dword [ecx + 0xc], eax
mov dword [ecx + 0x2c], 0xffffffff
mov eax, dword [esp + 0x20]
movbe ax, word [esi + eax + 2]
mov dword [ecx + 0x30], 0
test ax, ax
je 0x475330
inc dword [esp + 0x28]
movzx eax, ax
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x20]
add ecx, edx
add ecx, 0xb
xor edx, edx
xor esi, esi
movbe bx, word [ecx + esi*8 - 7]
test bx, bx
je 0x4723b6
movzx ebx, bx
cmp ebx, 3
jne 0x4723c7
movbe bx, word [ecx + esi*8 - 5]
cmp bx, 0xa
je 0x4723b6
movzx ebx, bx
cmp ebx, 1
jne 0x4723c7
movbe edx, dword [ecx + esi*8 - 3]
add edx, dword [esp + 0x20]
mov ebx, dword [esp + 0x24]
mov dword [ebx + 0x30], edx
inc esi
cmp eax, esi
jne 0x47238d
test edx, edx
je 0x475330
mov ecx, dword [esp + 0x24]
mov eax, dword [ecx + 0x14]
mov edx, dword [esp + 0x1c]
movbe ax, word [edx + eax + 0x32]
movzx eax, ax
mov dword [ecx + 0x34], eax
mov edx, dword [esp + 0x120]
mov edx, dword [edx + 0x30]
mov ecx, dword [esp + 0xbc]
cmp edx, ecx
mov eax, dword [esp + 0x2c]
jne 0x471e36
jmp 0x47245c
cmp byte [ecx + 2], 0x63
mov ebx, 0xffffffff
jne 0x471eef
cmp byte [ecx + 3], 0x66
jne 0x471eef
movbe eax, dword [ecx + 4]
cmp eax, 0x20000
je 0x472440
xor ebx, ebx
dec ebx
mov ecx, edx
cmp eax, 0x10000
jne 0x471eef
movbe eax, dword [ecx + 8]
xor ebx, ebx
dec ebx
mov ecx, edx
test eax, eax
jle 0x471eef
movbe ebx, dword [ecx + 0xc]
jmp 0x471eef
mov ecx, dword [ecx]
test ecx, ecx
jne 0x471e2d
xor ecx, ecx
mov eax, dword [esp + 0x88]
mov dword [eax], ecx
xor ecx, ecx
xor ebx, ebx
cmp edi, 0x3e9
setge bl
shl ebx, 9
lea esi, [ebx + 0x200]
mov eax, dword [esp + 0xb0]
mov dword [eax], esi
mov eax, dword [0x481994]
mov dword [esp + 0x20c], eax
mov eax, dword [esp + 0x20c]
push 0x38
push ecx
push eax
call dword [0x481998]
add esp, 0xc
mov edi, eax
mov dword [esp + 0x24], ebx
lea eax, [ebx*4 + 0x7fc]
lea eax, [eax + eax*2]
mov ecx, dword [0x481994]
mov dword [esp + 0x20c], ecx
mov ecx, dword [esp + 0x20c]
push eax
xor eax, eax
push eax
push ecx
call dword [0x481998]
add esp, 0xc
mov ebx, eax
test edi, edi
je 0x4727f3
test ebx, ebx
je 0x4727f3
mov eax, dword [esp + 0x2c]
mov dword [eax + 0xc], 0x481994
mov dword [eax + 0x14], esi
mov dword [eax + 0x18], 0x8000
mov dword [eax + 0x30], 0
mov dword [eax + 0x10], edi
mov dword [eax + 0x34], ebx
mov dword [eax + 0x1c], esi
add dword [esp + 0x24], 0x1ff
vmovaps xmm0, xmmword [0x47d730]
vmovups xmmword [eax + 0x20], xmm0
lea eax, [esi - 2]
lea ecx, [esi - 3]
vmovd xmm0, ecx
vpbroadcastd ymm0, xmm0
lea ecx, [ebx + 8]
vmovdqa ymm1, ymmword [0x47d1a0]
vpcmpeqd ymm2, ymm2, ymm2
vextracti128 xmm3, ymm0, 1
vpminud xmm4, xmm1, xmm0
vpcmpeqd xmm5, xmm1, xmm4
vpsubd ymm4, ymm1, ymm2
vmovd edx, xmm5
test dl, 1
je 0x472574
vmovd edx, xmm4
lea edx, [edx + edx*2]
lea edx, [ebx + edx*4]
mov dword [ecx], edx
vpminud xmm5, xmm1, xmm0
vpcmpeqd xmm5, xmm1, xmm5
vpextrb edx, xmm5, 4
test dl, 1
je 0x472597
vpextrd edx, xmm4, 1
lea edx, [edx + edx*2]
lea edx, [ebx + edx*4]
mov dword [ecx + 0xc], edx
vpminud xmm5, xmm1, xmm0
vpcmpeqd xmm5, xmm1, xmm5
vpextrb edx, xmm5, 8
test dl, 1
je 0x4725ba
vpextrd edx, xmm4, 2
lea edx, [edx + edx*2]
lea edx, [ebx + edx*4]
mov dword [ecx + 0x18], edx
vpminud xmm5, xmm1, xmm0
vpcmpeqd xmm5, xmm1, xmm5
vpextrb edx, xmm5, 0xc
test dl, 1
je 0x4725dd
vpextrd edx, xmm4, 3
lea edx, [edx + edx*2]
lea edx, [ebx + edx*4]
mov dword [ecx + 0x24], edx
vextracti128 xmm5, ymm1, 1
vpminud xmm6, xmm5, xmm3
vpcmpeqd xmm5, xmm5, xmm6
vpextrb edx, xmm5, 0
vextracti128 xmm4, ymm4, 1
test dl, 1
je 0x47260a
vmovd edx, xmm4
lea edx, [edx + edx*2]
lea edx, [ebx + edx*4]
mov dword [ecx + 0x30], edx
vpextrb edx, xmm5, 4
test dl, 1
vmovdqa ymm6, ymmword [esp + 0x40]
je 0x47262a
vpextrd edx, xmm4, 1
lea edx, [edx + edx*2]
lea edx, [ebx + edx*4]
mov dword [ecx + 0x3c], edx
vpextrb edx, xmm5, 8
test dl, 1
je 0x472644
vpextrd edx, xmm4, 2
lea edx, [edx + edx*2]
lea edx, [ebx + edx*4]
mov dword [ecx + 0x48], edx
vpextrb edx, xmm5, 0xc
test dl, 1
je 0x47265e
vpextrd edx, xmm4, 3
lea edx, [edx + edx*2]
lea edx, [ebx + edx*4]
mov dword [ecx + 0x54], edx
vpaddd ymm1, ymm1, ymm6
add ecx, 0x60
add esi, 0xfffffff8
jne 0x472552
lea edx, [eax + eax*2]
xor ecx, ecx
mov dword [ebx + edx*4 + 8], ecx
mov dword [edi + 0xc], 1
mov dword [edi + 0x10], ecx
mov dword [edi + 0x1c], ebx
lea edx, [edi + 0x20]
mov dword [edi + 0x18], edx
mov esi, dword [esp + 0x24]
mov dword [edi], esi
mov dword [edi + 4], 0x7fff
mov dword [edi + 0x14], esi
add eax, esi
xor edx, edx
div esi
mov dword [edi + 8], eax
mov dword [edi + 0x20], ecx
mov dword [edi + 0x24], ecx
mov eax, edi
add eax, 0x2c
mov dword [edi + 0x28], eax
mov dword [edi + 0x2c], esi
mov dword [edi + 0x30], 0x40000000
mov dword [edi + 0x34], ecx
jmp 0x472837
mov eax, dword [0x481a98]
test eax, eax
je 0x4726d6
mov ecx, eax
mov eax, dword [eax]
test eax, eax
jne 0x4726cc
jmp 0x4726db
mov ecx, 0x481a98
mov dword [ecx], esi
xor ecx, ecx
mov dword [esp + 0x40], esi
mov dword [esi], ecx
mov eax, dword [0x481988]
mov dword [esp + 0xd4], eax
mov eax, dword [esp + 0xd4]
push 0x48
push ecx
push eax
call dword [0x48198c]
add esp, 0xc
mov ebx, eax
mov esi, eax
and esi, 3
je 0x472751
mov edi, 4
sub edi, esi
push edi
xor eax, eax
push eax
push ebx
call fcn.00478a71
add esp, 0xc
vpxor xmm0, xmm0, xmm0
vmovdqu ymmword [ebx + edi], ymm0
vmovdqu ymmword [ebx + edi + 0x20], ymm0
xor ecx, ecx
mov dword [ebx + edi + 0x40], ecx
lea eax, [ebx + edi]
add eax, 0x44
mov edi, dword [esp + 0x20]
push esi
push ecx
push eax
vzeroupper
call fcn.00478a71
add esp, 0xc
jmp 0x472765
vpxor xmm0, xmm0, xmm0
vmovdqu ymmword [ebx + 0x20], ymm0
vmovdqu ymmword [ebx], ymm0
mov dword [ebx + 0x40], 0
mov esi, dword [esp + 0x40]
mov dword [ebx + 0x44], esi
mov eax, dword [0x481a94]
test eax, eax
je 0x47277f
mov ecx, eax
mov eax, dword [eax]
test eax, eax
jne 0x472775
jmp 0x472784
mov ecx, 0x481a94
mov dword [ecx], ebx
mov dword [ebx], 0
mov eax, ebx
add eax, 0x18
mov dword [esi + 0x28], eax
cmp byte [esp + 0x218], 0
jne 0x4727e8
mov eax, dword [esi + 8]
mov ecx, dword [0x481988]
mov dword [esp + 0xd0], ecx
mov ecx, dword [esp + 0xd0]
push eax
push 0
push ecx
vzeroupper
call dword [0x48198c]
add esp, 0xc
mov dword [esi + 4], eax
test eax, eax
je 0x4727e6
mov edx, dword [esp + 0x210]
mov ecx, eax
push dword [esi + 8]
call fcn.0046a24a
add esp, 4
mov byte [esi + 0xc], 1
jmp 0x4727e8
xor ebx, ebx
inc dword [0x481a9c]
jmp 0x471a22
test edi, edi
je 0x472815
mov eax, dword [0x481994]
mov dword [esp + 0x20c], eax
mov eax, dword [esp + 0x20c]
push edi
push eax
call dword [0x48199c]
add esp, 8
test ebx, ebx
je 0x472837
mov eax, dword [0x481994]
mov dword [esp + 0x20c], eax
mov eax, dword [esp + 0x20c]
push ebx
push eax
call dword [0x48199c]
add esp, 8
vpxor xmm0, xmm0, xmm0
lea edi, [esp + 0x20c]
vmovdqu xmmword [edi], xmm0
xor ebx, ebx
mov dword [edi + 0x14], ebx
mov dword [edi + 0x10], ebx
vmovd xmm0, dword [0x4819a4]
vpmovsxwd xmm0, xmm0
vmovq qword [edi + 4], xmm0
mov ecx, dword [esp + 0x2c]
xor eax, eax
inc eax
mov dword [ecx + 0x28], eax
mov dword [ecx + 0x2c], eax
mov ecx, dword [ecx + 0x10]
mov edx, edi
push eax
vzeroupper
call fcn.004753c4
add esp, 4
mov edx, dword [esp + 0x88]
mov eax, dword [edx]
vmovdqu xmm0, xmmword [edi + 4]
vpbroadcastd xmm1, dword [edi + 0x10]
vpaddd xmm1, xmm0, xmm1
vpextrd ecx, xmm1, 1
cmp eax, ecx
cmovg ecx, eax
mov dword [edx], ecx
vpshufb xmm0, xmm0, xmmword [str._b_t_f_r]
vmovq qword [0x4819a0], xmm0
cmp dword [esp + 0xcc], 0
mov ecx, dword [esp + 0x3c]
jle 0x472d0b
vbroadcastss xmm0, dword [0x47d230]
vmovaps xmmword [esp + 0x160], xmm0
xor edi, edi
xor eax, eax
xor edx, edx
mov esi, ecx
mov dword [esp + 0x3c], ecx
mov dword [esp + 0x8c], edi
mov dword [esp + 0xfc], eax
mov dword [esp + 0xb8], edx
imul eax, edx, 0x8c
mov dword [esp + 0x20], eax
mov dword [esp + 0x70], esi
mov ecx, dword [esi + 0x24]
mov edx, dword [ecx]
test edx, edx
je 0x47292c
xor edi, edi
xor eax, eax
mov esi, dword [ecx + eax*8 + 4]
test esi, esi
je 0x472930
sub edi, edx
add edi, esi
inc edi
mov edx, dword [ecx + eax*8 + 8]
inc eax
test edx, edx
jne 0x472914
jmp 0x472930
xor eax, eax
xor edi, edi
mov dword [esp + 0xb4], edi
mov esi, dword [esp + 0x2c]
mov edx, dword [esi + 0x38]
mov ecx, dword [esp + 0xfc]
lea edi, [ecx + ecx*2]
shl edi, 3
add edi, dword [esi + 0x44]
mov dword [esp + 0x24], edx
mov ecx, dword [esp + 0x20]
add ecx, edx
add ecx, 0x84
mov dword [ecx], edi
mov dword [esp + 0x40], ecx
mov dword [ecx + 4], eax
test eax, eax
mov dword [esp + 0x38], eax
je 0x4729d4
xor edx, edx
xor esi, esi
mov ecx, ebx
mov eax, dword [esp + 0x70]
mov ebx, dword [eax + 0x24]
vmovss xmm0, dword [eax + 0x14]
vmovss dword [edi + edx], xmm0
mov edi, dword [ebx + esi*8]
mov eax, dword [esp + 0x40]
mov eax, dword [eax]
mov dword [eax + edx + 4], edi
mov eax, dword [ebx + esi*8 + 4]
sub eax, dword [ebx + esi*8]
mov ebx, ecx
inc eax
mov ecx, dword [esp + 0x40]
mov edi, dword [ecx]
mov dword [edi + edx + 0xc], eax
lea eax, [ebx + ebx*8]
lea eax, [eax + eax*2]
add eax, ebx
mov ecx, dword [esp + 0x2c]
add eax, dword [ecx + 0x3c]
mov ecx, dword [esp + 0x40]
mov edi, dword [ecx]
mov dword [edi + edx + 0x10], eax
mov eax, dword [esp + 0x40]
mov edi, dword [eax]
add ebx, dword [edi + edx + 0xc]
inc esi
add edx, 0x18
cmp dword [esp + 0x38], esi
jne 0x472973
mov eax, dword [esp + 0x8c]
lea eax, [eax + eax*2]
shl eax, 3
mov edx, dword [esp + 0x2c]
add eax, dword [edx + 0x40]
mov ecx, dword [esp + 0x24]
mov edi, dword [esp + 0x20]
mov dword [ecx + edi + 0x80], eax
mov eax, dword [esp + 0x70]
movzx ecx, byte [eax + 0xf]
movzx esi, byte [eax + 0x10]
cmp esi, 8
mov eax, edx
ja 0x472a0d
mov dword [eax + 0x28], esi
cmp cl, 8
ja 0x472a15
mov dword [eax + 0x2c], ecx
mov esi, dword [esp + 0x24]
lea ecx, [esi + edi]
add ecx, 0x88
mov edx, dword [ecx - 8]
mov dword [esp + 0x120], ecx
mov ecx, dword [ecx]
mov dword [esp + 0x30], ecx
test ecx, ecx
jle 0x472cb5
add esi, edi
mov eax, dword [esp + 0x40]
mov edi, dword [eax]
add edx, 4
xor eax, eax
mov dword [esp + 0x28], 0
mov dword [esp + 0x40], 0
mov dword [esp + 0x24], esi
mov dword [esp + 0x34], ebx
mov dword [esp + 0xbc], edx
mov dword [esp + 0xa0], edi
mov dword [esp + 0x90], eax
lea eax, [eax + eax*2]
vmovss xmm0, dword [edi + eax*8]
vucomiss xmm0, dword [0x47d2d0]
jbe 0x472ac0
mov ecx, dword [esi + 4]
mov edx, dword [esp + 0x24]
mov esi, dword [edx + 0x1c]
movzx edx, byte [ecx + esi + 4]
shl edx, 8
movzx edi, byte [ecx + esi + 5]
movsx edx, dx
or edx, edi
movzx edi, byte [ecx + esi + 6]
shl edi, 8
movzx ecx, byte [ecx + esi + 7]
movsx esi, di
or esi, ecx
sub edx, esi
mov esi, dword [esp + 0x24]
vcvtsi2ss xmm1, xmm4, edx
jmp 0x472add
mov ecx, dword [esi + 4]
mov edx, dword [esi + 0x14]
movbe cx, word [ecx + edx + 0x12]
vxorps xmm0, xmm0, xmmword [esp + 0x160]
movzx ecx, cx
vcvtsi2ss xmm1, xmm4, ecx
vdivss xmm0, xmm0, xmm1
vmovss dword [esp + 0x1c], xmm0
mov edx, dword [esp + 0x2c]
mov cl, byte [edx + 0x28]
mov edi, dword [esp + 0xa0]
mov byte [edi + eax*8 + 0x14], cl
mov cl, byte [edx + 0x2c]
mov byte [edi + eax*8 + 0x15], cl
cmp dword [edi + eax*8 + 0xc], 0
jle 0x472c2d
lea edx, [edi + eax*8]
add edx, 0xc
mov eax, dword [esp + 0x28]
lea eax, [eax + eax*2]
mov ecx, dword [esp + 0xbc]
lea ebx, [ecx + eax*8]
mov ecx, edx
xor edi, edi
mov dword [esp + 0x20], edx
mov eax, dword [ecx - 4]
test eax, eax
je 0x472b36
mov edx, dword [eax + edi*4]
jmp 0x472b3b
mov edx, dword [ecx - 8]
add edx, edi
mov ecx, esi
call fcn.00476080
test eax, eax
je 0x472b4c
mov ecx, dword [esp + 0x40]
jmp 0x472b6b
mov ecx, dword [esp + 0x2c]
mov ecx, dword [ecx + 0x24]
or ecx, dword [esp + 0x40]
mov ecx, 1
je 0x472b6b
vxorps xmm0, xmm0, xmm0
vmovlps qword [ebx], xmm0
jmp 0x472c0e
mov dword [esp + 0x40], ecx
mov esi, dword [esp + 0x2c]
vmovss xmm0, dword [esi + 0x2c]
vmovsd xmm2, qword [0x47d238]
vorpd xmm0, xmm0, xmm2
vsubsd xmm0, xmm0, xmm2
vcvtsd2ss xmm0, xmm0, xmm0
vmovss xmm3, dword [esp + 0x1c]
vmulss xmm1, xmm3, xmm0
vmovss xmm0, dword [esi + 0x28]
vorpd xmm0, xmm0, xmm2
vsubsd xmm0, xmm0, xmm2
vcvtsd2ss xmm0, xmm0, xmm0
vmulss xmm0, xmm3, xmm0
mov ecx, dword [esp + 0x24]
mov edx, eax
lea eax, [esp + 0xd0]
push eax
lea eax, [esp + 0xd8]
push eax
lea eax, [esp + 0xc8]
push eax
lea eax, [esp + 0x218]
push eax
call fcn.004762bc
add esp, 0x10
mov eax, dword [esp + 0x20c]
not eax
add eax, dword [esp + 0xd4]
add eax, dword [esi + 0x20]
add eax, dword [esi + 0x28]
mov dword [ebx], eax
mov eax, dword [esp + 0xc0]
not eax
add eax, dword [esp + 0xd0]
add eax, dword [esi + 0x20]
add eax, dword [esi + 0x2c]
mov esi, dword [esp + 0x24]
mov dword [ebx + 4], eax
inc edi
add ebx, 0x18
mov ecx, dword [esp + 0x20]
cmp edi, dword [ecx]
jl 0x472b2a
add dword [esp + 0x28], edi
mov ebx, dword [esp + 0x34]
mov edi, dword [esp + 0xa0]
mov eax, dword [esp + 0x90]
inc eax
cmp eax, dword [esp + 0x30]
jne 0x472a6d
mov eax, dword [esp + 0x120]
mov edx, dword [eax - 8]
mov eax, dword [esp + 0x2c]
mov ecx, dword [eax + 0x10]
mov esi, dword [esp + 0x28]
push esi
call fcn.004753c4
add esp, 4
test esi, esi
mov edx, dword [esp + 0xb8]
mov esi, dword [esp + 0xb4]
jle 0x472cd0
mov eax, 0x14
mov ecx, dword [esp + 0x120]
mov ecx, dword [ecx - 8]
cmp dword [ecx + eax], 0
je 0x472caa
mov edi, dword [esp + 0x88]
mov edx, dword [edi]
mov esi, dword [ecx + eax - 0xc]
add esi, dword [ecx + eax - 4]
cmp edx, esi
cmovg esi, edx
mov edx, dword [esp + 0xb8]
mov dword [edi], esi
mov esi, dword [esp + 0xb4]
add eax, 0x18
dec dword [esp + 0x28]
jne 0x472c74
jmp 0x472cd0
mov ecx, dword [eax + 0x10]
push 0
call fcn.004753c4
add esp, 4
mov edx, dword [esp + 0xb8]
mov esi, dword [esp + 0xb4]
mov eax, dword [esp + 0x38]
add eax, dword [esp + 0xfc]
add esi, dword [esp + 0x8c]
inc edx
mov edi, esi
mov esi, dword [esp + 0x70]
mov esi, dword [esi + 0x30]
mov ecx, dword [esp + 0x3c]
cmp esi, ecx
jne 0x4728e4
cmp edx, dword [esp + 0xcc]
jge 0x472d0b
mov ecx, dword [ecx]
test ecx, ecx
jne 0x4728de
mov esi, dword [esp + 0x88]
mov eax, dword [esi]
dec eax
mov ecx, eax
shr ecx, 1
or ecx, eax
mov eax, ecx
shr eax, 2
or eax, ecx
mov ecx, eax
shr ecx, 4
or ecx, eax
mov edx, ecx
shr edx, 8
or edx, ecx
mov eax, edx
shr eax, 0x10
or eax, edx
inc eax
mov dword [esi], eax
mov ecx, dword [esp + 0xb0]
imul eax, dword [ecx]
mov ecx, dword [0x481994]
mov dword [esp + 0x1f8], ecx
mov ecx, dword [esp + 0x1f8]
push eax
push 0
push ecx
call dword [0x481998]
add esp, 0xc
mov dword [0x48197c], eax
test eax, eax
je 0x475330
cmp dword [0x481a88], 0
je 0x474ff4
mov esi, eax
mov eax, dword [0x481a8c]
mov dword [esp + 0x1dc], eax
test eax, eax
je 0x474ff4
mov eax, dword [0x481a9c]
mov dword [esp + 0x104], eax
test eax, eax
je 0x474ff4
mov ecx, dword [0x481a98]
test ecx, ecx
je 0x474ff4
mov eax, dword [esp + 0x88]
mov eax, dword [eax]
mov dword [esp + 0x13c], eax
test eax, eax
je 0x474ff4
mov eax, dword [esp + 0xb0]
mov eax, dword [eax]
test eax, eax
je 0x474ff4
mov edi, eax
imul edi, dword [esp + 0x13c]
cmp edi, 0xb
mov dword [esp + 0x108], ecx
mov dword [esp + 0x1b0], eax
ja 0x472e07
test edi, edi
je 0x472e61
push edi
push 0
push esi
jmp 0x472e59
mov ebx, esi
and ebx, 3
je 0x472e33
mov eax, 4
sub eax, ebx
mov dword [esp + 0x40], eax
push eax
push 0
push esi
call fcn.00478a71
add esp, 0xc
sub edi, dword [esp + 0x40]
neg ebx
lea eax, [esi + ebx]
add eax, 4
jmp 0x472e35
mov eax, esi
mov ebx, edi
and ebx, 0xfffffffc
push ebx
push 0
mov dword [esp + 0x48], eax
push eax
call fcn.00478a71
add esp, 0xc
and edi, 3
je 0x472e61
mov eax, dword [esp + 0x40]
add eax, ebx
push edi
push 0
push eax
call fcn.00478a71
add esp, 0xc
mov eax, dword [esp + 0x2c]
mov dword [eax + 0x30], esi
mov ecx, dword [esp + 0x13c]
mov dword [eax + 0x18], ecx
cmp dword [esp + 0x104], 0
jle 0x474caf
vpxor xmm4, xmm4, xmm4
mov dword [esp + 0x140], 0
mov ecx, dword [esp + 0x108]
mov dword [esp + 0x17c], ecx
mov eax, dword [eax + 0x38]
movzx edx, byte [ecx + 0xf]
mov dword [esp + 0x1b8], ecx
movzx ecx, byte [ecx + 0x10]
cmp ecx, 8
ja 0x472ebf
mov esi, edx
mov edx, dword [esp + 0x2c]
mov dword [edx + 0x28], ecx
mov edx, esi
imul ecx, dword [esp + 0x140], 0x8c
cmp dl, 9
jae 0x472ee1
mov esi, edx
mov edx, dword [esp + 0x2c]
mov dword [esp + 0x180], esi
mov dword [edx + 0x2c], esi
jmp 0x472eef
mov edx, dword [esp + 0x2c]
mov esi, dword [edx + 0x2c]
mov dword [esp + 0x180], esi
mov esi, dword [eax + ecx + 0x88]
mov edx, dword [edx + 0x28]
mov dword [esp + 0x1b4], edx
mov dword [esp + 0x1bc], esi
test esi, esi
jle 0x474c58
lea edx, [eax + ecx]
mov dword [esp + 0xe0], edx
mov edx, dword [eax + ecx + 0x80]
mov eax, dword [eax + ecx + 0x84]
mov dword [esp + 0x10c], eax
mov ecx, edx
xor ebx, ebx
xor esi, esi
dec esi
xor eax, eax
mov dword [esp + 0xf0], edx
mov dword [esp + 0x1c0], eax
lea eax, [eax + eax*2]
mov ecx, dword [esp + 0x10c]
vmovss xmm0, dword [ecx + eax*8]
vucomiss xmm0, xmm4
jbe 0x472fa1
mov edx, dword [esp + 0xe0]
mov ecx, dword [edx + 4]
mov dword [esp + 0x8c], esi
mov esi, dword [edx + 0x1c]
movzx edx, byte [ecx + esi + 4]
shl edx, 8
movzx edi, byte [ecx + esi + 5]
movsx edx, dx
or edx, edi
movzx edi, byte [ecx + esi + 6]
shl edi, 8
movzx ecx, byte [ecx + esi + 7]
movsx esi, di
or esi, ecx
sub edx, esi
mov esi, dword [esp + 0x8c]
vcvtsi2ss xmm1, xmm6, edx
jmp 0x472fc9
mov edx, dword [esp + 0xe0]
mov ecx, dword [edx + 4]
mov edx, dword [edx + 0x14]
movbe cx, word [ecx + edx + 0x12]
vbroadcastss xmm1, dword [0x47d230]
vxorps xmm0, xmm0, xmm1
movzx ecx, cx
vcvtsi2ss xmm1, xmm6, ecx
vdivss xmm0, xmm0, xmm1
vmovss dword [esp + 0x11c], xmm0
mov ecx, dword [esp + 0x10c]
movzx ecx, byte [ecx + eax*8 + 0x14]
mov edx, dword [esp + 0x2c]
mov dword [edx + 0x28], ecx
vcvtsi2ss xmm0, xmm6, ecx
vxorps xmm1, xmm1, xmm1
vmovss dword [esp + 0x194], xmm1
vmovss dword [esp + 0x190], xmm1
test ecx, ecx
je 0x473021
xor edx, edx
inc edx
sub edx, ecx
vcvtsi2ss xmm1, xmm6, edx
vaddss xmm2, xmm0, xmm0
vdivss xmm1, xmm1, xmm2
vmovss dword [esp + 0x190], xmm1
mov ecx, dword [esp + 0x10c]
movzx ecx, byte [ecx + eax*8 + 0x15]
mov edx, dword [esp + 0x2c]
mov dword [edx + 0x2c], ecx
vcvtsi2ss xmm1, xmm6, ecx
test ecx, ecx
je 0x473056
xor edx, edx
inc edx
sub edx, ecx
vcvtsi2ss xmm2, xmm6, edx
vaddss xmm3, xmm1, xmm1
vdivss xmm2, xmm2, xmm3
vmovss dword [esp + 0x194], xmm2
mov ecx, dword [esp + 0x10c]
cmp dword [ecx + eax*8 + 0xc], 0
jle 0x474c43
vmovss xmm2, dword [0x47d1e8]
vdivss xmm0, xmm2, xmm0
vmovss dword [esp + 0x1d4], xmm0
vdivss xmm0, xmm2, xmm1
vmovss dword [esp + 0x1d0], xmm0
lea eax, [ecx + eax*8]
add eax, 0xc
mov dword [esp + 0x158], eax
mov dword [esp + 0x3c], 0
mov ecx, dword [esp + 0xf0]
lea eax, [ebx + ebx*2]
cmp dword [ecx + eax*8 + 0x14], 0
je 0x474c28
mov dword [esp + 0x8c], esi
mov esi, dword [ecx + eax*8 + 4]
test esi, esi
je 0x473105
mov edx, dword [ecx + eax*8 + 8]
test edx, edx
je 0x473166
mov dword [esp + 0x40], edx
mov dword [esp + 0x154], eax
lea eax, [ecx + eax*8]
add eax, 4
mov dword [esp + 0xe4], eax
mov ecx, dword [esp + 0x158]
mov eax, dword [ecx - 4]
test eax, eax
mov dword [esp + 0xfc], ebx
je 0x473172
mov edx, dword [esp + 0x3c]
mov edx, dword [eax + edx*4]
jmp 0x473179
mov edx, dword [esp + 0x2c]
cmp dword [edx + 0x24], 0
mov esi, dword [esp + 0x8c]
jne 0x474c28
cmp dword [ecx + eax*8 + 8], 0
jne 0x474c28
test esi, esi
js 0x474c28
mov eax, dword [esp + 0x158]
mov eax, dword [eax + 4]
lea ecx, [esi + esi*8]
lea ecx, [ecx + ecx*2]
add ecx, esi
vmovups xmm0, xmmword [eax + ecx]
vmovups xmm1, xmmword [eax + ecx + 0xc]
mov edx, dword [esp + 0x3c]
lea ecx, [edx + edx*8]
lea ecx, [ecx + ecx*2]
add ecx, edx
vmovups xmmword [eax + ecx + 0xc], xmm1
vmovups xmmword [eax + ecx], xmm0
jmp 0x474c21
mov esi, dword [esp + 0x8c]
jmp 0x474c28
mov edx, dword [ecx - 8]
add edx, dword [esp + 0x3c]
mov eax, dword [ecx + 4]
mov dword [esp + 0x1a0], eax
mov ecx, dword [esp + 0xe0]
call fcn.00476080
mov ebx, dword [esp + 0x2c]
mov ecx, dword [ebx + 0x20]
mov edx, dword [esp + 0xf0]
mov edi, dword [esp + 0x154]
vmovq xmm0, qword [edx + edi*8 + 0xc]
vmovd xmm1, ecx
vpbroadcastd xmm1, xmm1
vpaddd xmm0, xmm0, xmm1
vmovq qword [edx + edi*8 + 0xc], xmm0
sub esi, ecx
mov edx, dword [esp + 0xe4]
mov dword [edx], esi
mov esi, dword [esp + 0x40]
sub esi, ecx
mov dword [edx + 4], esi
mov esi, dword [esp + 0xe0]
mov ecx, dword [esi + 4]
mov edx, dword [esi + 0x1c]
movbe dx, word [ecx + edx + 0x22]
mov edi, eax
movzx eax, dx
add ecx, dword [esi + 0x20]
lea edx, [edi*4]
cmp eax, edi
lea eax, [eax*4 - 4]
cmovg eax, edx
movbe ax, word [eax + ecx]
mov word [esp + 0x15e], ax
vmovss xmm0, dword [ebx + 0x2c]
vmovsd xmm2, qword [0x47d238]
vorpd xmm0, xmm0, xmm2
vsubsd xmm0, xmm0, xmm2
vcvtsd2ss xmm0, xmm0, xmm0
vmovss xmm3, dword [esp + 0x11c]
vmulss xmm1, xmm3, xmm0
vmovss xmm0, dword [ebx + 0x28]
vorpd xmm0, xmm0, xmm2
vsubsd xmm0, xmm0, xmm2
vcvtsd2ss xmm0, xmm0, xmm0
vmulss xmm0, xmm3, xmm0
mov ecx, esi
mov edx, edi
lea eax, [esp + 0x204]
push eax
lea eax, [esp + 0x20c]
push eax
lea eax, [esp + 0x1b4]
push eax
lea eax, [esp + 0x10c]
push eax
call fcn.004762bc
add esp, 0x10
vmovss xmm0, dword [ebx + 0x2c]
vmovsd xmm1, qword [0x47d238]
vorpd xmm0, xmm0, xmm1
vsubsd xmm0, xmm0, xmm1
vcvtsd2ss xmm0, xmm0, xmm0
vmovss xmm2, dword [esp + 0x11c]
vmulss xmm0, xmm2, xmm0
vmovaps xmmword [esp + 0xa0], xmm0
mov eax, dword [ebx + 0x1c]
mov dword [esp + 0x19c], eax
mov eax, dword [ebx + 0x28]
mov dword [esp + 0x70], eax
vmovss xmm0, dword [ebx + 0x28]
vorpd xmm0, xmm0, xmm1
vsubsd xmm0, xmm0, xmm1
vcvtsd2ss xmm0, xmm0, xmm0
vmulss xmm0, xmm2, xmm0
vmovss dword [esp + 0x28], xmm0
mov eax, dword [esp + 0xe4]
mov esi, dword [eax + 4]
sub esi, dword [ebx + 0x2c]
mov ecx, dword [ebx + 0x30]
mov edx, dword [esp + 0x154]
mov ebx, dword [esp + 0xf0]
add ecx, dword [ebx + edx*8 + 0xc]
mov dword [esp + 0x118], ecx
mov ecx, dword [ebx + edx*8 + 0x10]
imul ecx, dword [esp + 0x19c]
mov dword [esp + 0x40], ecx
mov eax, dword [eax]
mov dword [esp + 0x38], eax
mov ebx, dword [esp + 0xe0]
mov ecx, ebx
mov edx, edi
lea eax, [esp + 0xe8]
push eax
call fcn.00477509
add esp, 4
mov dword [esp + 0x1c], eax
mov ecx, ebx
mov dword [esp + 0x1d8], edi
mov edx, edi
vmovss xmm0, dword [esp + 0x28]
vmovaps xmm1, xmmword [esp + 0xa0]
xor eax, eax
push eax
push eax
lea eax, [esp + 0xfc]
push eax
lea eax, [esp + 0xdc]
push eax
call fcn.004762bc
mov eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x80]
add esp, 0x10
mov dword [esp + 0x198], esi
inc esi
je 0x474567
sub eax, ecx
mov dword [esp + 0x1a4], eax
inc eax
mov dword [esp + 0xbc], eax
je 0x474567
mov dword [esp + 0x120], esi
mov eax, dword [esp + 0xe0]
mov edi, dword [eax]
mov eax, dword [esp + 0xf4]
mov dword [esp + 0x184], eax
mov eax, dword [esp + 0xd0]
mov dword [esp + 0xcc], eax
mov eax, dword [esp + 0xe8]
mov dword [esp + 0x90], eax
mov dword [esp + 0xc0], 0
cmp dword [esp + 0x1c], 0
jle 0x474567
mov eax, dword [esp + 0x40]
add dword [esp + 0x118], eax
vmovaps xmm0, xmmword [esp + 0xa0]
vminss xmm0, xmm0, dword [esp + 0x28]
vmovss xmm1, dword [0x47d750]
vdivss xmm0, xmm1, xmm0
vmulss xmm0, xmm0, xmm0
vmovss dword [esp + 0x24], xmm0
mov eax, dword [esp + 0x90]
add eax, 0xc
xor esi, esi
mov ecx, dword [esp + 0x1c]
xor edx, edx
cmp byte [eax], 1
sete dl
add esi, edx
add eax, 0xe
dec ecx
jne 0x473424
test esi, esi
je 0x474567
mov ebx, esi
lea eax, [esi*4]
mov ecx, dword [edi]
mov edx, dword [edi + 4]
mov dword [esp + 0x20c], ecx
mov ecx, dword [esp + 0x20c]
push eax
push 0
push ecx
call edx
add esp, 0xc
test eax, eax
je 0x474567
mov esi, eax
mov dword [esp + 0x30], ebx
xor eax, eax
mov bl, 1
xor ecx, ecx
xor edx, edx
mov dword [esp + 0xf8], edi
mov dword [esp + 0xb4], esi
test al, 1
je 0x4734c1
mov eax, dword [esp + 0xc0]
shl eax, 3
mov dword [esp + 0x40], ecx
mov ecx, dword [edi]
mov edx, dword [edi + 4]
mov dword [esp + 0x20c], ecx
mov ecx, dword [esp + 0x20c]
push eax
push 0
push ecx
call edx
mov ecx, dword [esp + 0x4c]
add esp, 0xc
mov edx, eax
test eax, eax
je 0x474475
mov dword [esp + 0x20], ebx
mov dword [esp + 0xc0], 0
vxorps xmm0, xmm0, xmm0
mov esi, dword [esp + 0x1c]
mov ebx, dword [esp + 0x90]
xor edi, edi
dec edi
mov dword [esp + 0x40], edi
mov dword [esp + 0xb8], edx
movzx eax, byte [ebx + 0xc]
dec eax
cmp eax, 3
ja case.default.0x4734fd
mov edi, ecx
jmp dword [eax*4 + 0x47d904]
mov eax, dword [esp + 0x40]
test eax, eax
js 0x473527
mov eax, dword [esp + 0xc0]
sub eax, edi
mov ecx, dword [esp + 0xb4]
mov edi, dword [esp + 0x40]
mov dword [ecx + edi*4], eax
mov eax, dword [esp + 0x40]
inc eax
mov dword [esp + 0x40], eax
mov ecx, dword [esp + 0xc0]
lea eax, [ecx + 1]
vmovd xmm0, dword [ebx]
vpmovsxwd xmm0, xmm0
vcvtdq2ps xmm0, xmm0
mov dword [esp + 0xc0], eax
test edx, edx
je case.default.0x4734fd
vmovlps qword [edx + ecx*8], xmm0
jmp case.default.0x4734fd
mov eax, dword [esp + 0xc0]
lea ecx, [eax + 1]
vmovd xmm0, dword [ebx]
vpmovsxwd xmm0, xmm0
vcvtdq2ps xmm0, xmm0
mov dword [esp + 0xc0], ecx
test edx, edx
je 0x4736a8
vmovlps qword [edx + eax*8], xmm0
jmp 0x4736a8
movsx eax, word [ebx + 2]
vxorps xmm4, xmm4, xmm4
vcvtsi2ss xmm3, xmm4, eax
movsx eax, word [ebx]
vxorps xmm4, xmm4, xmm4
vcvtsi2ss xmm4, xmm4, eax
movsx eax, word [ebx + 6]
vxorps xmm7, xmm7, xmm7
vcvtsi2ss xmm5, xmm7, eax
movsx eax, word [ebx + 4]
vxorps xmm7, xmm7, xmm7
vcvtsi2ss xmm2, xmm7, eax
vmovshdup xmm1, xmm0
sub esp, 0x14
vmovss xmm6, dword [esp + 0x38]
vmovss dword [esp + 0xc], xmm6
vmovss dword [esp + 8], xmm3
vmovss dword [esp + 4], xmm4
vmovss dword [esp], xmm5
mov dword [esp + 0x10], 0
mov ecx, edx
lea edx, [esp + 0xd4]
call fcn.00477f47
mov edx, dword [esp + 0xcc]
add esp, 0x14
jmp 0x47369b
movsx eax, word [ebx + 2]
vxorps xmm4, xmm4, xmm4
vcvtsi2ss xmm3, xmm4, eax
movsx eax, word [ebx]
vxorps xmm4, xmm4, xmm4
vcvtsi2ss xmm4, xmm4, eax
movsx eax, word [ebx + 0xa]
vxorps xmm7, xmm7, xmm7
vcvtsi2ss xmm5, xmm7, eax
movsx eax, word [ebx + 8]
vxorps xmm7, xmm7, xmm7
vcvtsi2ss xmm6, xmm7, eax
movsx eax, word [ebx + 6]
vxorps xmm7, xmm7, xmm7
vcvtsi2ss xmm7, xmm7, eax
movsx eax, word [ebx + 4]
vxorps xmm2, xmm2, xmm2
vcvtsi2ss xmm2, xmm2, eax
vmovshdup xmm1, xmm0
sub esp, 0x1c
vmovss dword [esp + 0x10], xmm3
vmovss dword [esp + 0xc], xmm4
vmovss dword [esp + 8], xmm5
vmovss dword [esp + 4], xmm6
vmovss dword [esp], xmm7
vmovss xmm3, dword [esp + 0x40]
vmovss dword [esp + 0x14], xmm3
mov dword [esp + 0x18], 0
mov ecx, edx
lea edx, [esp + 0xdc]
call fcn.004780c6
mov edx, dword [esp + 0xd4]
add esp, 0x1c
vmovd xmm0, dword [ebx]
vpmovsxwd xmm0, xmm0
vcvtdq2ps xmm0, xmm0
mov ecx, edi
add ebx, 0xe
dec esi
jne 0x4734ed
mov eax, dword [esp + 0xc0]
sub eax, ecx
mov esi, dword [esp + 0xb4]
mov edi, dword [esp + 0x40]
mov dword [esi + edi*4], eax
mov al, 1
test byte [esp + 0x20], 1
mov ebx, 0
mov edi, dword [esp + 0xf8]
jne 0x473485
test edx, edx
je 0x474567
mov ecx, dword [esp + 0x30]
lea eax, [ecx + 7]
and eax, 0xfffffff8
dec ecx
vmovd xmm0, ecx
vpbroadcastd ymm0, xmm0
vxorps xmm2, xmm2, xmm2
xor ecx, ecx
vmovdqa ymm4, ymmword [0x47d1a0]
vmovaps ymm1, ymm2
vmovd xmm2, ecx
vpbroadcastd ymm2, xmm2
vpor ymm2, ymm2, ymm4
vpminud ymm3, ymm2, ymm0
vpcmpeqd ymm3, ymm2, ymm3
vpmaskmovd ymm2, ymm3, ymmword [esi + ecx*4]
vpaddd ymm2, ymm2, ymm1
add ecx, 8
cmp eax, ecx
jne 0x47370e
vblendvps ymm0, ymm1, ymm2, ymm3
vextractf128 xmm1, ymm0, 1
vphaddd xmm0, xmm1, xmm0
vphaddd xmm0, xmm0, xmm0
vphaddd xmm0, xmm0, xmm0
vmovd eax, xmm0
lea eax, [eax + eax*4]
lea eax, [eax*4 + 0x14]
mov ecx, dword [edi]
mov edx, dword [edi + 4]
mov dword [esp + 0x20c], ecx
mov ecx, dword [esp + 0x20c]
push eax
push 0
push ecx
vzeroupper
call edx
add esp, 0xc
test eax, eax
je 0x47452d
mov dword [esp + 0x160], eax
vbroadcastss xmm0, dword [0x47d230]
vmovaps xmmword [esp + 0x410], xmm0
vxorps xmm0, xmm0, xmmword [esp + 0xa0]
mov eax, dword [esp + 0xb8]
add eax, 4
mov dword [esp + 0xa0], eax
mov dword [esp + 0x24], 0
xor ecx, ecx
xor edx, edx
vxorps xmm2, xmm2, xmm2
vmovss xmm3, dword [esp + 0x28]
mov eax, dword [esp + 0xb4]
mov dword [esp + 0x20], ecx
mov edi, dword [eax + ecx*4]
test edi, edi
mov eax, dword [esp + 0xb8]
mov dword [esp + 0x1c], edx
mov dword [esp + 0x90], edi
jle 0x4738de
lea ebx, [eax + edx*8]
lea esi, [edi - 1]
mov eax, dword [esp + 0xa0]
lea eax, [eax + edx*8]
mov dword [esp + 0x40], eax
xor edx, edx
mov ecx, edx
vmovss xmm1, dword [ebx + esi*8 + 4]
mov eax, dword [esp + 0x40]
vucomiss xmm1, dword [eax + edx*8]
jne 0x473829
jnp 0x4738d1
mov edx, dword [esp + 0x24]
lea edi, [edx + edx*4]
mov edx, dword [esp + 0x160]
mov dword [edx + edi*4 + 0x10], 0
vmovss xmm1, dword [ebx + esi*8 + 4]
vucomiss xmm1, dword [eax + ecx*8]
jbe 0x47385e
lea edx, [edx + edi*4]
add edx, 0x10
mov dword [edx], 1
mov edx, esi
mov esi, ecx
jmp 0x473860
mov edx, ecx
mov eax, dword [esp + 0x160]
lea eax, [eax + edi*4]
vmovss xmm1, dword [ebx + edx*8]
vfmadd132ss xmm1, xmm2, xmm3
vmovss dword [eax], xmm1
vmovss xmm1, dword [ebx + edx*8 + 4]
vfmadd132ss xmm1, xmm2, xmm0
mov eax, dword [esp + 0x160]
vmovss dword [eax + edi*4 + 4], xmm1
vmovss xmm1, dword [ebx + esi*8]
vfmadd132ss xmm1, xmm2, xmm3
mov eax, dword [esp + 0x160]
vmovss dword [eax + edi*4 + 8], xmm1
vmovss xmm1, dword [ebx + esi*8 + 4]
vfmadd132ss xmm1, xmm2, xmm0
mov eax, dword [esp + 0x160]
vmovss dword [eax + edi*4 + 0xc], xmm1
inc dword [esp + 0x24]
mov eax, dword [esp + 0xb4]
mov edx, dword [esp + 0x20]
mov edi, dword [eax + edx*4]
lea edx, [ecx + 1]
mov esi, ecx
cmp edx, edi
jl 0x473810
mov edx, dword [esp + 0x1c]
add edx, dword [esp + 0x90]
mov ecx, dword [esp + 0x20]
inc ecx
cmp ecx, dword [esp + 0x30]
jne 0x4737d2
mov ecx, dword [esp + 0x160]
mov esi, dword [esp + 0x24]
mov edx, esi
call fcn.00478295
cmp esi, 2
lea ebx, [esp + 0xd4]
jl 0x4739b8
mov eax, dword [esp + 0x160]
xor ecx, ecx
inc ecx
lea edx, [ecx + ecx*4]
mov edi, dword [esp + 0x160]
vmovsd xmm0, qword [edi + edx*4]
vmovshdup xmm1, xmm0
mov esi, dword [edi + edx*4 + 0x10]
mov dword [esp + 0x214], esi
vmovsd xmm2, qword [edi + edx*4 + 8]
vmovsd qword [esp + 0x20c], xmm2
mov esi, eax
mov edx, ecx
vmovss xmm2, dword [esi + 4]
vucomiss xmm2, xmm1
jbe 0x47397d
dec edx
mov edi, dword [esi + 0x10]
mov dword [esi + 0x24], edi
vmovups xmm2, xmmword [esi]
vmovups xmmword [esi + 0x14], xmm2
lea edi, [edx + 1]
add esi, 0xffffffec
cmp edi, 1
jg 0x473955
xor edx, edx
cmp ecx, edx
je 0x4739aa
lea edx, [edx + edx*4]
mov edi, dword [esp + 0x160]
vmovlps qword [edi + edx*4], xmm0
vmovsd xmm0, qword [esp + 0x20c]
vmovsd qword [edi + edx*4 + 8], xmm0
mov esi, dword [esp + 0x214]
mov dword [edi + edx*4 + 0x10], esi
inc ecx
add eax, 0x14
cmp ecx, dword [esp + 0x24]
jne 0x473924
mov dword [esp + 0xd4], 0
lea eax, [esp + 0x20c]
cmp dword [esp + 0xbc], 0x41
jl 0x473a05
mov eax, dword [esp + 0xbc]
lea eax, [eax*8 + 4]
mov edx, dword [esp + 0xf8]
mov ecx, dword [edx]
mov edx, dword [edx + 4]
mov dword [esp + 0xc0], ecx
mov ecx, dword [esp + 0xc0]
push eax
push 0
push ecx
call edx
add esp, 0xc
mov dword [esp + 0x34], eax
mov ecx, dword [esp + 0x184]
mov eax, dword [esp + 0x120]
add eax, ecx
vxorps xmm7, xmm7, xmm7
vcvtsi2ss xmm0, xmm7, eax
vaddss xmm0, xmm0, dword [0x47d1e8]
mov eax, dword [esp + 0x24]
lea eax, [eax + eax*4]
mov edx, dword [esp + 0x160]
vmovss dword [edx + eax*4 + 4], xmm0
cmp dword [esp + 0x198], 0x7ffffffe
mov edi, dword [esp + 0xf8]
ja 0x4744dd
mov eax, dword [esp + 0xbc]
mov edx, dword [esp + 0x34]
lea esi, [edx + eax*4]
vcvtsi2ss xmm0, xmm7, dword [esp + 0xcc]
vmovss dword [esp + 0x114], xmm0
mov dword [esp + 0x14c], esi
add esi, 4
mov dword [esp + 0x188], esi
lea esi, [eax*4]
mov dword [esp + 0x1c8], esi
mov edi, dword [esp + 0x38]
shl edi, 2
mov esi, dword [esp + 0x70]
shl esi, 2
sub edi, esi
lea esi, [eax*4 + 4]
mov dword [esp + 0x1c4], esi
vcvtsi2ss xmm0, xmm5, eax
vmovss dword [esp + 0xcc], xmm0
lea eax, [edi + edx]
add eax, 4
mov dword [esp + 0x1a8], eax
xor esi, esi
mov eax, dword [esp + 0x160]
mov dword [esp + 0x18c], eax
mov dword [esp + 0x148], 0
mov dword [esp + 0x150], 0
mov dword [esp + 0x144], 0
mov dword [esp + 0x110], 0
mov dword [esp + 0x1cc], ecx
vcvtsi2ss xmm0, xmm5, ecx
vmovss dword [esp + 0x30], xmm0
vaddss xmm0, xmm0, dword [0x47d1e8]
vmovss dword [esp + 0x70], xmm0
push dword [esp + 0x1c8]
xor edi, edi
push edi
push dword [esp + 0x3c]
call fcn.00478a71
add esp, 0xc
push dword [esp + 0x1c4]
push edi
push dword [esp + 0x154]
call fcn.00478a71
add esp, 0xc
test esi, esi
je 0x473b9d
mov eax, ebx
vpxor xmm4, xmm4, xmm4
vmovss xmm3, dword [esp + 0x114]
mov edi, dword [esp + 0x110]
mov edx, dword [esp + 0x144]
vmovss xmm7, dword [esp + 0x30]
vucomiss xmm7, dword [esi + 0x18]
jae 0x473b86
mov eax, esi
jmp 0x473b95
mov ecx, dword [esi]
mov dword [eax], ecx
mov dword [esi + 0x10], 0
mov dword [esi], edx
mov edx, esi
mov esi, dword [eax]
test esi, esi
jne 0x473b7b
jmp 0x473bbe
vpxor xmm4, xmm4, xmm4
vmovss xmm3, dword [esp + 0x114]
mov edi, dword [esp + 0x110]
mov edx, dword [esp + 0x144]
vmovss xmm7, dword [esp + 0x30]
mov esi, dword [esp + 0x18c]
vmovss xmm0, dword [esi + 4]
vmovss xmm1, dword [esp + 0x70]
vucomiss xmm1, xmm0
jae 0x4742e7
mov ecx, edx
mov dword [esp + 0x144], ecx
mov dword [esp + 0x18c], esi
mov dword [esp + 0x110], edi
mov edi, dword [esp + 0xd4]
test edi, edi
je 0x4741fd
vmovss xmm2, dword [edi + 8]
vucomiss xmm2, xmm4
mov dword [esp + 0xa0], edi
jne 0x473c65
jp 0x473c65
vmovss xmm2, dword [edi + 4]
vmovss xmm0, dword [esp + 0xcc]
vucomiss xmm0, xmm2
jbe 0x47406a
vucomiss xmm2, xmm4
jae 0x473ff3
sub esp, 8
vmovss xmm0, dword [esp + 0x78]
vmovss dword [esp + 4], xmm0
mov eax, dword [esp + 0xa8]
mov dword [esp], eax
mov ecx, dword [esp + 0x154]
xor edx, edx
vmovaps xmm0, xmm2
vmovaps xmm1, xmm7
jmp 0x474058
vmovss xmm3, dword [edi + 4]
vaddss xmm6, xmm2, xmm3
vmovss xmm0, dword [edi + 0x14]
vsubss xmm1, xmm0, xmm7
vmovss dword [esp + 0x38], xmm2
vfmadd213ss xmm1, xmm2, xmm3
vcmpltss xmm2, xmm7, xmm0
vmovaps xmmword [esp + 0x120], xmm3
vblendvps xmm5, xmm3, xmm1, xmm2
vucomiss xmm5, xmm4
jb 0x473d59
vmovss xmm1, dword [edi + 0x18]
vsubss xmm2, xmm1, xmm7
vmovss xmm3, dword [esp + 0x38]
vfmadd213ss xmm2, xmm3, dword [esp + 0x120]
vcmpltss xmm3, xmm1, dword [esp + 0x70]
vblendvps xmm2, xmm6, xmm2, xmm3
vucomiss xmm2, xmm4
jb 0x473d59
vmovss xmm3, dword [esp + 0xcc]
vucomiss xmm3, xmm5
jbe 0x473d59
vmovss xmm3, dword [esp + 0xcc]
vucomiss xmm3, xmm2
jbe 0x473d59
vmaxss xmm0, xmm0, xmm7
vminss xmm1, xmm1, dword [esp + 0x70]
vcvttss2si edx, xmm5
vcvttss2si ecx, xmm2
cmp edx, ecx
jne 0x474078
vsubss xmm0, xmm1, xmm0
vmulss xmm0, xmm0, dword [edi + 0x10]
vcvtsi2ss xmm1, xmm7, edx
vaddss xmm1, xmm1, dword [0x47d1e8]
vsubss xmm2, xmm1, xmm2
vsubss xmm1, xmm1, xmm5
vaddss xmm1, xmm1, xmm2
vmulss xmm1, xmm1, dword [0x47d274]
vmulss xmm1, xmm1, xmm0
mov eax, dword [esp + 0x34]
vaddss xmm1, xmm1, dword [eax + edx*4]
vmovss dword [eax + edx*4], xmm1
mov eax, dword [esp + 0x188]
vaddss xmm0, xmm0, dword [eax + edx*4]
vmovss dword [eax + edx*4], xmm0
jmp 0x47406a
cmp dword [esp + 0x1a4], 0x7ffffffe
vmovss xmm2, dword [esp + 0x38]
ja 0x47406a
xor esi, esi
vmovaps xmmword [esp + 0x90], xmm6
mov edi, esi
vxorps xmm0, xmm0, xmm0
vcvtsi2ss xmm4, xmm0, esi
inc esi
vxorps xmm0, xmm0, xmm0
vcvtsi2ss xmm3, xmm0, esi
vmovaps xmm1, xmmword [esp + 0x120]
vsubss xmm0, xmm4, xmm1
vdivss xmm0, xmm0, xmm2
vaddss xmm5, xmm0, xmm7
vsubss xmm0, xmm3, xmm1
vdivss xmm0, xmm0, xmm2
vaddss xmm0, xmm0, xmm7
vucomiss xmm4, xmm1
mov dword [esp + 0x28], esi
vmovss dword [esp + 0x40], xmm5
vmovss dword [esp + 0x24], xmm4
jbe 0x473e5d
vucomiss xmm6, xmm3
jbe 0x473e5d
sub esp, 8
vmovss dword [esp + 4], xmm5
mov esi, dword [esp + 0xa8]
mov dword [esp], esi
mov ebx, dword [esp + 0x3c]
mov ecx, ebx
mov edx, edi
vmovss dword [esp + 0x28], xmm0
vmovaps xmm0, xmm1
vmovaps xmm1, xmm7
vmovaps xmm2, xmm4
vmovss dword [esp + 0x24], xmm3
call fcn.00478408
vmovss xmm0, dword [esp + 0x28]
vmovss dword [esp + 4], xmm0
mov dword [esp], esi
mov ecx, ebx
mov edx, edi
vmovss xmm0, dword [esp + 0x2c]
vmovss xmm1, dword [esp + 0x48]
vmovss xmm2, dword [esp + 0x24]
call fcn.00478408
vmovss xmm0, dword [esp + 0x78]
vmovss dword [esp + 4], xmm0
mov dword [esp], esi
mov esi, dword [esp + 0x30]
mov ecx, ebx
mov edx, edi
vmovss xmm0, dword [esp + 0x24]
vmovss xmm1, dword [esp + 0x28]
jmp 0x473f37
vucomiss xmm4, xmm6
jbe 0x473ec8
vucomiss xmm1, xmm3
jbe 0x473ec8
sub esp, 8
vmovss dword [esp + 4], xmm0
mov esi, dword [esp + 0xa8]
mov dword [esp], esi
mov ebx, dword [esp + 0x3c]
mov ecx, ebx
mov edx, edi
vmovss dword [esp + 0x28], xmm0
vmovaps xmm0, xmm1
vmovaps xmm1, xmm7
vmovaps xmm2, xmm3
vmovss dword [esp + 0x24], xmm3
call fcn.00478408
vmovss xmm0, dword [esp + 0x48]
vmovss dword [esp + 4], xmm0
mov dword [esp], esi
mov ecx, ebx
mov edx, edi
vmovss xmm0, dword [esp + 0x24]
vmovss xmm1, dword [esp + 0x28]
vmovss xmm2, dword [esp + 0x2c]
jmp 0x473f0f
vucomiss xmm4, xmm1
jbe 0x473ed4
vucomiss xmm6, xmm4
ja 0x473ee8
vucomiss xmm4, xmm6
jbe 0x473f73
vucomiss xmm1, xmm4
jbe 0x473f73
sub esp, 8
vmovss dword [esp + 4], xmm5
mov esi, dword [esp + 0xa8]
mov dword [esp], esi
mov ebx, dword [esp + 0x3c]
mov ecx, ebx
mov edx, edi
vmovaps xmm0, xmm1
vmovaps xmm1, xmm7
vmovaps xmm2, xmm4
call fcn.00478408
vmovss xmm0, dword [esp + 0x78]
vmovss dword [esp + 4], xmm0
mov dword [esp], esi
mov esi, dword [esp + 0x30]
mov ecx, ebx
mov edx, edi
vmovss xmm0, dword [esp + 0x2c]
vmovss xmm1, dword [esp + 0x48]
vmovaps xmm2, xmmword [esp + 0x98]
call fcn.00478408
add esp, 8
cmp dword [esp + 0xbc], esi
vxorps xmm4, xmm4, xmm4
vmovss xmm7, dword [esp + 0x30]
vmovaps xmm6, xmmword [esp + 0x90]
vmovss xmm2, dword [esp + 0x38]
jne 0x473d7b
jmp 0x47406a
vucomiss xmm3, xmm1
jbe 0x473f7f
vucomiss xmm6, xmm3
ja 0x473f8b
vucomiss xmm3, xmm6
jbe 0x473fc3
vucomiss xmm1, xmm3
jbe 0x473fc3
sub esp, 8
vmovss dword [esp + 4], xmm0
mov esi, dword [esp + 0xa8]
mov dword [esp], esi
mov ebx, dword [esp + 0x3c]
mov ecx, ebx
mov edx, edi
vmovss dword [esp + 0x28], xmm0
vmovaps xmm0, xmm1
vmovaps xmm1, xmm7
vmovaps xmm2, xmm3
vmovss dword [esp + 0x24], xmm3
jmp 0x473e30
sub esp, 8
vmovss xmm0, dword [esp + 0x78]
vmovss dword [esp + 4], xmm0
mov eax, dword [esp + 0xa8]
mov dword [esp], eax
mov ecx, dword [esp + 0x3c]
mov edx, edi
vmovaps xmm0, xmm1
vmovaps xmm1, xmm7
vmovaps xmm2, xmm6
jmp 0x473f40
vcvttss2si edi, xmm2
sub esp, 8
vmovss xmm0, dword [esp + 0x78]
vmovss dword [esp + 4], xmm0
mov esi, dword [esp + 0xa8]
mov dword [esp], esi
mov ecx, dword [esp + 0x3c]
mov edx, edi
vmovaps xmm0, xmm2
vmovaps xmm1, xmm7
vmovss dword [esp + 0x48], xmm2
call fcn.00478408
add esp, 8
inc edi
sub esp, 8
vmovss xmm0, dword [esp + 0x78]
vmovss dword [esp + 4], xmm0
mov dword [esp], esi
mov ecx, dword [esp + 0x154]
mov edx, edi
vmovss xmm0, dword [esp + 0x48]
vmovss xmm1, dword [esp + 0x38]
vmovaps xmm2, xmm0
call fcn.00478408
vmovss xmm7, dword [esp + 0x38]
add esp, 8
vxorps xmm4, xmm4, xmm4
mov edi, dword [esp + 0xa0]
mov edi, dword [edi]
jmp 0x473bf8
vmovss xmm4, dword [edi + 0xc]
vucomiss xmm5, xmm2
mov esi, dword [esp + 0x34]
jbe 0x4740ba
vsubss xmm3, xmm0, xmm7
vsubss xmm0, xmm1, xmm7
vmovss xmm1, dword [esp + 0x70]
vsubss xmm3, xmm1, xmm3
vsubss xmm0, xmm1, xmm0
vxorps xmm4, xmm4, xmmword [esp + 0x410]
mov eax, edx
vmovss dword [esp + 0x24], xmm3
vmovss dword [esp + 0x20], xmm5
vmovaps xmm5, xmm6
jmp 0x4740dd
vmovss dword [esp + 0x24], xmm1
mov eax, ecx
mov ecx, edx
vmovss dword [esp + 0x20], xmm2
vmovaps xmm2, xmm5
vmovaps xmm5, xmmword [esp + 0x120]
vmovss xmm1, dword [esp + 0x70]
lea edx, [ecx + 1]
vcvtsi2ss xmm6, xmm7, edx
vmovaps xmmword [esp + 0x90], xmm5
vsubss xmm3, xmm6, xmm5
vfmadd213ss xmm3, xmm4, xmm7
vminss xmm3, xmm1, xmm3
vmovss xmm5, dword [edi + 0x10]
vsubss xmm6, xmm6, xmm2
vmovss dword [esp + 0x40], xmm0
vsubss xmm2, xmm3, xmm0
vmulss xmm2, xmm5, xmm2
vmulss xmm6, xmm6, xmm2
vmovss xmm0, dword [0x47d274]
vmulss xmm6, xmm6, xmm0
vaddss xmm6, xmm6, dword [esi + ecx*4]
vmovss dword [esi + ecx*4], xmm6
vcvtsi2ss xmm1, xmm7, eax
vsubss xmm6, xmm1, dword [esp + 0x90]
vfmadd213ss xmm6, xmm4, xmm7
mov ecx, eax
sub ecx, edx
jle 0x474191
vmovss xmm7, dword [esp + 0x70]
vsubss xmm3, xmm7, xmm3
vmovss dword [esp + 0x1c], xmm3
vcvtsi2ss xmm3, xmm4, ecx
vmovss xmm0, dword [esp + 0x1c]
vdivss xmm0, xmm0, xmm3
vcmpltss xmm3, xmm7, xmm6
vblendvps xmm3, xmm4, xmm0, xmm3
vmulss xmm4, xmm5, xmm3
vmulss xmm3, xmm4, dword [0x47d274]
vaddss xmm0, xmm3, xmm2
vaddss xmm0, xmm0, dword [esi + edx*4]
vmovss dword [esi + edx*4], xmm0
vaddss xmm2, xmm4, xmm2
inc edx
cmp eax, edx
jne 0x474178
jmp 0x474197
vmovss xmm7, dword [esp + 0x70]
vaddss xmm0, xmm1, dword [0x47d1e8]
vsubss xmm3, xmm0, dword [esp + 0x20]
vsubss xmm0, xmm0, xmm1
vaddss xmm0, xmm0, xmm3
vminss xmm3, xmm7, xmm6
vmovss xmm1, dword [esp + 0x24]
vsubss xmm3, xmm1, xmm3
vmulss xmm0, xmm0, dword [0x47d274]
vmulss xmm0, xmm0, xmm3
vfmadd213ss xmm0, xmm5, xmm2
vaddss xmm0, xmm0, dword [esi + eax*4]
vmovss dword [esi + eax*4], xmm0
vsubss xmm0, xmm1, dword [esp + 0x40]
mov ecx, dword [esp + 0x188]
vfmadd213ss xmm0, xmm5, dword [ecx + eax*4]
vmovss dword [ecx + eax*4], xmm0
vxorps xmm4, xmm4, xmm4
vmovss xmm7, dword [esp + 0x30]
jmp 0x47406a
cmp dword [esp + 0x1a4], 0x7ffffffe
vmovss xmm3, dword [0x47d690]
vmovss xmm4, dword [0x47d274]
mov ecx, dword [esp + 0x118]
mov esi, dword [esp + 0xbc]
mov edi, dword [esp + 0x34]
mov edx, dword [esp + 0x1a8]
ja 0x47427a
xor eax, eax
vxorps xmm0, xmm0, xmm0
vaddss xmm0, xmm0, dword [edx + eax*4]
vaddss xmm1, xmm0, dword [edi + eax*4]
vbroadcastss xmm2, dword [0x47d760]
vandps xmm1, xmm1, xmm2
vfmadd213ss xmm1, xmm3, xmm4
mov edx, edi
mov edi, ecx
vcvttss2si ecx, xmm1
mov ebx, 0xff
cmp ecx, ebx
cmovge ecx, ebx
mov byte [edi + eax], cl
mov ecx, edi
mov edi, edx
mov edx, dword [esp + 0x1a8]
inc eax
cmp esi, eax
jne 0x474239
mov esi, dword [esp + 0xd4]
test esi, esi
lea ebx, [esp + 0xd4]
je 0x4742a7
mov ecx, esi
mov eax, ebx
vmovss xmm0, dword [ecx + 8]
vaddss xmm0, xmm0, dword [ecx + 4]
vmovss dword [ecx + 4], xmm0
mov eax, dword [eax]
mov ecx, dword [eax]
test ecx, ecx
jne 0x474290
mov ecx, dword [esp + 0x1cc]
inc ecx
mov eax, dword [esp + 0x118]
add eax, dword [esp + 0x19c]
mov dword [esp + 0x118], eax
mov eax, dword [esp + 0x148]
cmp eax, dword [esp + 0x198]
lea eax, [eax + 1]
mov dword [esp + 0x148], eax
jne 0x473b08
jmp 0x4744a9
cmp dword [esp + 0x184], 0
setne al
cmp dword [esp + 0x148], 0
sete bl
and bl, al
mov eax, edx
vmovss xmm1, dword [esi + 0xc]
vucomiss xmm0, xmm1
jne 0x47430e
jnp 0x474319
test eax, eax
je 0x474320
mov edx, dword [eax]
jmp 0x47439b
mov ecx, eax
jmp 0x474434
mov eax, dword [esp + 0x150]
test eax, eax
je 0x47432e
dec eax
jmp 0x474383
mov ecx, dword [esp + 0xf8]
mov eax, dword [ecx]
mov ecx, dword [ecx + 4]
mov dword [esp + 0xc0], eax
mov eax, dword [esp + 0xc0]
push 0xdac4
push 0
push eax
call ecx
add esp, 0xc
test eax, eax
je 0x474453
mov dword [eax], edi
vmovss xmm0, dword [esi + 4]
vmovss xmm1, dword [esi + 0xc]
mov edi, eax
mov eax, 0x7cf
vpxor xmm4, xmm4, xmm4
vmovss xmm3, dword [esp + 0x114]
vmovss xmm7, dword [esp + 0x30]
mov ecx, eax
lea eax, [eax + eax*8]
lea eax, [eax + eax*2]
mov dword [esp + 0x150], ecx
add eax, ecx
add eax, edi
add eax, 4
xor edx, edx
vsubss xmm0, xmm1, xmm0
vmovss xmm1, dword [esi + 8]
vsubss xmm1, xmm1, dword [esi]
vdivss xmm0, xmm1, xmm0
vmovss dword [eax + 8], xmm0
vmovss xmm1, dword [0x47d1e8]
vdivss xmm1, xmm1, xmm0
vcmpneqss xmm2, xmm0, xmm4
vandps xmm1, xmm2, xmm1
vmovss dword [eax + 0xc], xmm1
vsubss xmm1, xmm7, dword [esi + 4]
vfmadd213ss xmm1, xmm0, dword [esi]
vsubss xmm0, xmm1, xmm3
vmovss dword [eax + 4], xmm0
xor ecx, ecx
cmp dword [esi + 0x10], 0
sete cl
vmovss xmm0, dword [ecx*4 + 0x47d758]
vmovss dword [eax + 0x10], xmm0
vmovss xmm0, dword [esi + 4]
vmovss dword [eax + 0x14], xmm0
vmovss xmm0, dword [esi + 0xc]
vmovss dword [eax + 0x18], xmm0
mov dword [eax], 0
vucomiss xmm7, xmm0
seta cl
and cl, bl
cmp cl, 1
jne 0x474422
vmovss dword [eax + 0x18], xmm7
mov ecx, dword [esp + 0xd4]
mov dword [eax], ecx
mov dword [esp + 0xd4], eax
mov ecx, edx
vmovss xmm0, dword [esi + 0x18]
add esi, 0x14
vmovss xmm1, dword [esp + 0x70]
vucomiss xmm1, xmm0
mov eax, ecx
jae 0x474301
jmp 0x473bdc
xor ecx, ecx
mov dword [esp + 0x150], 0
vxorps xmm4, xmm4, xmm4
vmovss xmm3, dword [esp + 0x114]
vmovss xmm7, dword [esp + 0x30]
jmp 0x474434
mov eax, dword [edi]
mov ecx, dword [edi + 8]
mov dword [esp + 0x20c], eax
mov eax, dword [esp + 0x20c]
push 0
push eax
call ecx
add esp, 8
mov eax, dword [edi]
mov ecx, dword [edi + 8]
mov dword [esp + 0x20c], eax
mov eax, dword [esp + 0x20c]
push esi
jmp 0x474561
mov edx, dword [esp + 0x110]
test edx, edx
mov edi, dword [esp + 0xf8]
je 0x4744dd
mov esi, dword [edx]
mov eax, dword [edi]
mov ecx, dword [edi + 8]
mov dword [esp + 0xc0], eax
mov eax, dword [esp + 0xc0]
push edx
push eax
call ecx
add esp, 8
mov edx, esi
test esi, esi
jne 0x4744bb
lea eax, [esp + 0x20c]
mov edx, dword [esp + 0x34]
cmp edx, eax
je 0x474506
mov eax, dword [edi]
mov ecx, dword [edi + 8]
mov dword [esp + 0xc0], eax
mov eax, dword [esp + 0xc0]
push edx
push eax
call ecx
add esp, 8
mov eax, dword [edi]
mov ecx, dword [edi + 8]
mov dword [esp + 0x20c], eax
mov eax, dword [esp + 0x20c]
push dword [esp + 0x160]
push eax
call ecx
add esp, 8
mov esi, dword [esp + 0xb4]
mov eax, dword [edi]
mov ecx, dword [edi + 8]
mov dword [esp + 0x20c], eax
mov eax, dword [esp + 0x20c]
push esi
push eax
call ecx
add esp, 8
mov eax, dword [edi]
mov ecx, dword [edi + 8]
mov dword [esp + 0x20c], eax
mov eax, dword [esp + 0x20c]
push dword [esp + 0xb8]
push eax
call ecx
add esp, 8
mov ecx, dword [esp + 0x3c]
lea eax, [ecx + ecx*8]
lea eax, [eax + eax*2]
add eax, ecx
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0xf0]
mov ecx, dword [esp + 0x154]
lea eax, [eax + ecx*8]
add eax, 0xc
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0xe0]
mov eax, dword [eax]
mov ecx, dword [eax]
mov eax, dword [eax + 8]
mov dword [esp + 0x20c], ecx
mov ecx, dword [esp + 0xe8]
mov edx, dword [esp + 0x20c]
push ecx
push edx
call eax
add esp, 8
mov eax, dword [esp + 0x2c]
mov edi, dword [eax + 0x28]
cmp edi, 2
vxorps xmm4, xmm4, xmm4
mov esi, dword [esp + 0x8c]
jb 0x474850
mov ecx, dword [eax + 0x1c]
mov dword [esp + 0x28], ecx
mov eax, dword [eax + 0x30]
mov ecx, dword [esp + 0xe4]
mov esi, dword [ecx + 4]
mov ecx, dword [ecx]
mov edx, dword [esp + 0x30]
mov ebx, dword [edx]
mov dword [esp + 0x40], ebx
mov ebx, dword [edx + 4]
xor edx, edx
mov dword [esp + 0x210], edx
mov dword [esp + 0x20c], edx
mov dword [esp + 0xa0], esi
test esi, esi
jle 0x474845
mov edx, ecx
add eax, dword [esp + 0x40]
imul ebx, dword [esp + 0x28]
add ebx, eax
mov eax, ecx
sub eax, edi
mov dword [esp + 0x70], eax
inc eax
mov dword [esp + 0x40], eax
xor eax, eax
mov dword [esp + 0x20], edi
mov dword [esp + 0x24], ecx
mov dword [esp + 0x90], eax
push edi
push 0
lea eax, [esp + 0x214]
push eax
call fcn.00478a71
add esp, 0xc
lea eax, [edi - 2]
cmp eax, 3
ja case.default.0x47465c
jmp dword [eax*4 + 0x47d914]
cmp dword [esp + 0x70], 0
vxorps xmm4, xmm4, xmm4
js 0x4747ed
xor ecx, ecx
xor eax, eax
movzx edx, byte [ebx + eax]
mov edi, eax
and edi, 7
movzx edi, byte [esp + edi + 0x20c]
lea esi, [eax + 2]
and esi, 7
mov byte [esp + esi + 0x20c], dl
sub edx, edi
add ecx, edx
mov edx, ecx
shr edx, 1
mov byte [ebx + eax], dl
inc eax
cmp dword [esp + 0x40], eax
jne 0x474676
jmp 0x4747e7
cmp dword [esp + 0x70], 0
js 0x47483b
xor ecx, ecx
xor edi, edi
vxorps xmm4, xmm4, xmm4
mov dword [esp + 0x1c], ebx
movzx eax, byte [ebx + edi]
mov edx, edi
and edx, 7
movzx edx, byte [esp + edx + 0x20c]
mov ebx, dword [esp + 0x20]
lea esi, [ebx + edi]
and esi, 7
mov byte [esp + esi + 0x20c], al
sub eax, edx
add ecx, eax
mov eax, ecx
xor edx, edx
div ebx
mov ebx, dword [esp + 0x1c]
mov byte [ebx + edi], al
mov eax, dword [esp + 0x40]
inc edi
cmp eax, edi
jne 0x4746c2
mov edi, eax
jmp 0x4747f1
cmp dword [esp + 0x70], 0
vxorps xmm4, xmm4, xmm4
js 0x4747ed
xor ecx, ecx
xor eax, eax
movzx edx, byte [ebx + eax]
mov esi, eax
and esi, 7
movzx esi, byte [esp + esi + 0x20c]
lea edi, [eax + 3]
and edi, 7
mov byte [esp + edi + 0x20c], dl
sub edx, esi
add ecx, edx
mov edx, ecx
mov esi, 0xaaaaaaab
mulx edx, edx, esi
shr edx, 1
mov byte [ebx + eax], dl
inc eax
cmp dword [esp + 0x40], eax
jne 0x474718
jmp 0x4747e7
cmp dword [esp + 0x70], 0
vxorps xmm4, xmm4, xmm4
js 0x4747ed
xor ecx, ecx
xor eax, eax
movzx edx, byte [ebx + eax]
mov esi, eax
and esi, 7
movzx esi, byte [esp + esi + 0x20c]
lea edi, [eax + 4]
and edi, 7
mov byte [esp + edi + 0x20c], dl
sub edx, esi
add ecx, edx
mov edx, ecx
shr edx, 2
mov byte [ebx + eax], dl
inc eax
cmp dword [esp + 0x40], eax
jne 0x47476a
jmp 0x4747e7
cmp dword [esp + 0x70], 0
vxorps xmm4, xmm4, xmm4
js 0x4747ed
xor ecx, ecx
xor eax, eax
movzx edx, byte [ebx + eax]
mov esi, eax
and esi, 7
movzx esi, byte [esp + esi + 0x20c]
lea edi, [eax + 5]
and edi, 7
mov byte [esp + edi + 0x20c], dl
sub edx, esi
add ecx, edx
mov edx, ecx
mov esi, 0xcccccccd
mulx edx, edx, esi
shr edx, 2
mov byte [ebx + eax], dl
inc eax
cmp dword [esp + 0x40], eax
jne 0x4747ac
mov edi, dword [esp + 0x40]
jmp 0x4747f1
xor edi, edi
xor ecx, ecx
mov edx, dword [esp + 0x24]
cmp edi, edx
mov esi, dword [esp + 0x20]
jge 0x47481e
mov eax, edi
and eax, 7
movzx eax, byte [esp + eax + 0x20c]
sub ecx, eax
mov eax, ecx
xor edx, edx
div esi
mov edx, dword [esp + 0x24]
mov byte [ebx + edi], al
inc edi
cmp edx, edi
jne 0x4747fd
add ebx, dword [esp + 0x28]
mov eax, dword [esp + 0x90]
inc eax
cmp eax, dword [esp + 0xa0]
mov edi, esi
jne 0x47463a
jmp 0x474845
xor edi, edi
xor ecx, ecx
vxorps xmm4, xmm4, xmm4
jmp 0x4747f1
mov eax, dword [esp + 0x2c]
mov esi, dword [esp + 0x8c]
mov ecx, dword [esp + 0x1a0]
mov edx, dword [esp + 0x38]
add edx, ecx
mov eax, dword [eax + 0x2c]
cmp eax, 2
mov ebx, dword [esp + 0xfc]
jb 0x474b21
mov dword [esp + 0x24], eax
mov dword [esp + 0x120], edx
mov eax, dword [esp + 0x2c]
mov ecx, dword [eax + 0x1c]
mov dword [esp + 0x40], ecx
mov eax, dword [eax + 0x30]
mov ecx, dword [esp + 0xe4]
mov edx, dword [ecx + 4]
mov dword [esp + 0x28], edx
mov edi, dword [ecx]
mov edx, dword [esp + 0x30]
mov ecx, dword [edx]
mov dword [esp + 0x20], ecx
mov ecx, dword [edx + 4]
xor edx, edx
mov dword [esp + 0x210], edx
mov dword [esp + 0x20c], edx
mov edx, dword [esp + 0x40]
mov dword [esp + 0xa0], edi
test edi, edi
jle 0x474b16
mov edi, ecx
add eax, dword [esp + 0x20]
imul edi, edx
add edi, eax
mov eax, dword [esp + 0x28]
sub eax, dword [esp + 0x24]
mov dword [esp + 0x70], eax
inc eax
mov dword [esp + 0x20], eax
xor eax, eax
mov dword [esp + 0x90], eax
mov esi, dword [esp + 0x24]
push esi
push 0
lea eax, [esp + 0x214]
push eax
call fcn.00478a71
add esp, 0xc
lea eax, [esi - 2]
cmp eax, 3
mov dword [esp + 0x1c], edi
ja case.default.0x474911
jmp dword [eax*4 + 0x47d924]
cmp dword [esp + 0x70], 0
js 0x474a55
xor ecx, ecx
mov eax, edi
xor edx, edx
movzx ebx, byte [eax]
mov esi, edx
and esi, 7
movzx esi, byte [esp + esi + 0x20c]
lea edi, [edx + 2]
and edi, 7
mov byte [esp + edi + 0x20c], bl
sub ebx, esi
add ecx, ebx
mov ebx, ecx
shr ebx, 1
mov byte [eax], bl
inc edx
add eax, dword [esp + 0x40]
cmp dword [esp + 0x20], edx
jne 0x474929
jmp 0x474a4f
cmp dword [esp + 0x70], 0
js 0x474a55
xor ecx, ecx
mov esi, edi
xor ebx, ebx
movzx eax, byte [esi]
mov edx, ebx
and edx, 7
movzx edx, byte [esp + edx + 0x20c]
mov edi, dword [esp + 0x24]
add edi, ebx
and edi, 7
mov byte [esp + edi + 0x20c], al
mov edi, dword [esp + 0x24]
sub eax, edx
add ecx, eax
mov eax, ecx
xor edx, edx
div edi
mov edx, dword [esp + 0x40]
mov byte [esi], al
mov eax, dword [esp + 0x20]
inc ebx
add esi, edx
cmp eax, ebx
jne 0x474971
mov esi, eax
jmp 0x474ab9
cmp dword [esp + 0x70], 0
mov edx, dword [esp + 0x40]
js 0x474ab5
xor ecx, ecx
mov eax, edi
xor esi, esi
movzx edx, byte [eax]
mov edi, esi
and edi, 7
movzx edi, byte [esp + edi + 0x20c]
lea ebx, [esi + 3]
and ebx, 7
mov byte [esp + ebx + 0x20c], dl
sub edx, edi
add ecx, edx
mov edx, ecx
mov edi, 0xaaaaaaab
mulx edx, edx, edi
shr edx, 1
mov byte [eax], dl
mov edx, dword [esp + 0x40]
inc esi
add eax, edx
cmp dword [esp + 0x20], esi
jne 0x4749cc
jmp 0x474aaf
cmp dword [esp + 0x70], 0
js 0x474a55
xor ecx, ecx
mov eax, edi
xor edx, edx
movzx ebx, byte [eax]
mov esi, edx
and esi, 7
movzx esi, byte [esp + esi + 0x20c]
lea edi, [edx + 4]
and edi, 7
mov byte [esp + edi + 0x20c], bl
sub ebx, esi
add ecx, ebx
mov ebx, ecx
shr ebx, 2
mov byte [eax], bl
inc edx
add eax, dword [esp + 0x40]
cmp dword [esp + 0x20], edx
jne 0x474a1c
mov esi, dword [esp + 0x20]
jmp 0x474a59
xor esi, esi
xor ecx, ecx
mov edx, dword [esp + 0x40]
jmp 0x474ab9
cmp dword [esp + 0x70], 0
mov edx, dword [esp + 0x40]
js 0x474ab5
xor ecx, ecx
mov eax, edi
xor esi, esi
movzx edx, byte [eax]
mov edi, esi
and edi, 7
movzx edi, byte [esp + edi + 0x20c]
lea ebx, [esi + 5]
and ebx, 7
mov byte [esp + ebx + 0x20c], dl
sub edx, edi
add ecx, edx
mov edx, ecx
mov edi, 0xcccccccd
mulx edx, edx, edi
shr edx, 2
mov byte [eax], dl
mov edx, dword [esp + 0x40]
inc esi
add eax, edx
cmp dword [esp + 0x20], esi
jne 0x474a70
mov esi, dword [esp + 0x20]
jmp 0x474ab9
xor esi, esi
xor ecx, ecx
mov edi, dword [esp + 0x28]
cmp esi, edi
jge 0x474aee
mov ebx, edx
imul ebx, esi
add ebx, dword [esp + 0x1c]
mov eax, esi
and eax, 7
movzx eax, byte [esp + eax + 0x20c]
sub ecx, eax
mov eax, ecx
xor edx, edx
div dword [esp + 0x24]
mov edx, dword [esp + 0x40]
mov byte [ebx], al
inc esi
add ebx, edx
cmp edi, esi
jne 0x474aca
mov edi, dword [esp + 0x1c]
inc edi
mov eax, dword [esp + 0x90]
inc eax
cmp eax, dword [esp + 0xa0]
mov ebx, dword [esp + 0xfc]
mov esi, dword [esp + 0x8c]
jne 0x4748e7
vxorps xmm4, xmm4, xmm4
mov edx, dword [esp + 0x120]
mov ecx, dword [esp + 0x30]
movzx eax, word [ecx]
mov word [edx], ax
movzx eax, word [ecx + 4]
mov edx, dword [esp + 0x1a0]
mov edi, dword [esp + 0x38]
mov word [edx + edi + 2], ax
mov eax, dword [esp + 0xe4]
mov eax, dword [eax]
add eax, dword [ecx]
mov word [edx + edi + 4], ax
mov eax, dword [esp + 0xe4]
mov eax, dword [eax + 4]
add eax, dword [ecx + 4]
mov word [edx + edi + 6], ax
movsx eax, word [esp + 0x15e]
vxorps xmm7, xmm7, xmm7
vcvtsi2ss xmm0, xmm7, eax
vmulss xmm0, xmm0, dword [esp + 0x11c]
vmovss dword [edx + edi + 0x10], xmm0
vxorps xmm7, xmm7, xmm7
vcvtsi2ss xmm0, xmm7, dword [esp + 0x100]
vmovss xmm2, dword [esp + 0x190]
vmovss xmm3, dword [esp + 0x1d4]
vfmadd213ss xmm0, xmm3, xmm2
vmovss dword [edx + edi + 8], xmm0
vxorps xmm7, xmm7, xmm7
vcvtsi2ss xmm0, xmm7, dword [esp + 0x1ac]
vmovss xmm1, dword [esp + 0x194]
vmovss xmm5, dword [esp + 0x1d0]
vfmadd213ss xmm0, xmm5, xmm1
vmovss dword [edx + edi + 0xc], xmm0
mov ecx, dword [esp + 0xe4]
mov eax, dword [ecx]
add eax, dword [esp + 0x100]
vxorps xmm7, xmm7, xmm7
vcvtsi2ss xmm0, xmm7, eax
vfmadd213ss xmm0, xmm3, xmm2
vmovss dword [edx + edi + 0x14], xmm0
mov eax, dword [ecx + 4]
add eax, dword [esp + 0x1ac]
vxorps xmm7, xmm7, xmm7
vcvtsi2ss xmm0, xmm7, eax
vfmadd213ss xmm0, xmm5, xmm1
vmovss dword [edx + edi + 0x18], xmm0
cmp dword [esp + 0x1d8], 0
cmove esi, dword [esp + 0x3c]
mov ecx, dword [esp + 0xf0]
inc ebx
mov eax, dword [esp + 0x3c]
inc eax
mov edi, dword [esp + 0x158]
mov edx, eax
mov dword [esp + 0x3c], eax
cmp eax, dword [edi]
jl 0x4730a6
mov eax, dword [esp + 0x1c0]
inc eax
cmp eax, dword [esp + 0x1bc]
jne 0x472f3e
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x1b4]
mov dword [eax + 0x28], ecx
mov ecx, dword [esp + 0x180]
mov dword [eax + 0x2c], ecx
inc dword [esp + 0x140]
mov ecx, dword [esp + 0x1b8]
mov ecx, dword [ecx + 0x30]
cmp ecx, dword [esp + 0x17c]
jne 0x472e9d
mov ecx, dword [esp + 0x140]
cmp ecx, dword [esp + 0x104]
mov ecx, dword [esp + 0x17c]
jge 0x474caf
mov ecx, dword [ecx]
test ecx, ecx
jne 0x472e96
mov eax, dword [esp + 0x2c]
mov eax, dword [eax + 0xc]
mov ecx, dword [esp + 0x2c]
mov ecx, dword [ecx + 0x34]
mov edx, dword [eax]
mov eax, dword [eax + 8]
mov dword [esp + 0x20c], edx
mov edx, dword [esp + 0x20c]
push ecx
push edx
call eax
add esp, 8
mov eax, dword [esp + 0x2c]
mov eax, dword [eax + 0xc]
mov ecx, dword [esp + 0x2c]
mov ecx, dword [ecx + 0x10]
mov edx, dword [eax]
mov eax, dword [eax + 8]
mov dword [esp + 0x20c], edx
mov edx, dword [esp + 0x20c]
push ecx
push edx
call eax
mov eax, dword [esp + 0x34]
add esp, 8
cmp dword [esp + 0x104], 0
mov ecx, dword [esp + 0x108]
mov edx, dword [esp + 0x1b0]
jle 0x474ff4
vmovd xmm0, edx
vpinsrd xmm0, xmm0, dword [esp + 0x13c], 1
vcvtdq2ps xmm0, xmm0
vbroadcastss xmm1, dword [0x47d1e8]
vmovddup xmm0, xmm0
vmovaps xmmword [esp + 0x70], xmm0
vdivps xmm0, xmm1, xmm0
vmovaps xmmword [esp + 0xa0], xmm0
xor edx, edx
vpxor xmm2, xmm2, xmm2
vmovss xmm4, dword [0x47d274]
mov dword [esp + 0x34], 0
mov esi, ecx
mov dword [esp + 0x108], ecx
mov eax, dword [eax + 0x38]
mov ecx, dword [esi + 0x28]
mov dword [esp + 0x28], ecx
cmp byte [esi + 0xd], 0
mov dword [esp + 0x120], edx
mov dword [esp + 0x1c], esi
jne 0x474e28
imul edx, dword [esp + 0x120], 0x8c
mov ecx, dword [eax + edx + 4]
mov edi, dword [eax + edx + 0x1c]
movzx edx, byte [ecx + edi + 4]
shl edx, 8
movzx ebx, byte [ecx + edi + 5]
movsx edx, dx
or edx, ebx
movzx ebx, byte [ecx + edi + 6]
movzx edi, byte [ecx + edi + 7]
shl ebx, 8
movsx ecx, bx
mov esi, dword [esp + 0x1c]
or ecx, edi
vmovss xmm6, dword [esi + 0x14]
vxorps xmm3, xmm3, xmm3
vcvtsi2ss xmm0, xmm3, edx
sub edx, ecx
vxorps xmm3, xmm3, xmm3
vcvtsi2ss xmm7, xmm3, edx
mov edx, dword [esi + 0x24]
mov edi, dword [esp + 0x28]
mov dword [edi + 0x14], edx
mov edx, dword [esp + 0x120]
vxorps xmm3, xmm3, xmm3
vcvtsi2ss xmm5, xmm3, ecx
vdivss xmm6, xmm6, xmm7
vmovss xmm7, dword [esi + 0x14]
vmovss dword [edi], xmm7
vmulss xmm7, xmm6, xmm0
vmovss dword [edi + 4], xmm7
vmulss xmm5, xmm6, xmm5
vmovss dword [edi + 8], xmm5
mov ecx, dword [esp + 0x34]
mov dword [edi + 0xc], ecx
mov dword [edi + 0x10], 0
imul edx, edx, 0x8c
mov ecx, dword [eax + edx + 0x88]
test ecx, ecx
je 0x474fac
lea edi, [eax + edx]
add edi, 0x88
xor ebx, ebx
mov dword [esp + 0x20], 0
mov dword [esp + 0x30], edi
mov eax, dword [edi - 4]
lea edx, [ebx + ebx*2]
cmp dword [eax + edx*8 + 0xc], 0
jle 0x474fa1
mov dword [esp + 0x38], ebx
lea edi, [eax + edx*8]
add edi, 0xc
xor ebx, ebx
mov ecx, 0x18
mov dword [esp + 0x90], edi
mov edx, dword [edi + 4]
mov dword [esp + 0x24], edx
mov eax, dword [esp + 0x28]
mov edx, dword [eax + 0xc]
add edx, dword [eax + 0x10]
mov esi, dword [esp + 0x20]
add esi, ebx
add edx, esi
mov esi, dword [edi - 8]
mov edi, dword [esp + 0x24]
mov dword [esp + 0x40], ebx
add esi, ebx
vaddss xmm6, xmm2, dword [edi + ecx - 0x10]
vaddss xmm7, xmm2, dword [edi + ecx]
vpmovzxwd xmm5, qword [edi + ecx - 0x18]
lea edx, [edx + edx*2]
shl edx, 4
vmovss xmm0, dword [edi + ecx - 0xc]
vinsertps xmm0, xmm0, dword [edi + ecx - 4], 0x10
mov ebx, dword [esp + 0x1dc]
mov dword [ebx + edx], esi
mov esi, ebx
vaddps xmm0, xmm0, xmmword [0x47d2c0]
vmovss dword [ebx + edx + 8], xmm6
vmovlps qword [ebx + edx + 0xc], xmm0
vmovss dword [ebx + edx + 0x14], xmm7
vaddss xmm3, xmm4, dword [eax + 4]
vaddss xmm3, xmm0, xmm3
vmovss dword [ebx + edx + 0xc], xmm3
vaddss xmm1, xmm4, dword [eax + 4]
vaddss xmm1, xmm7, xmm1
vmovshdup xmm0, xmm0
vsubss xmm0, xmm0, xmm6
vmovss dword [ebx + edx + 0x14], xmm1
vaddss xmm0, xmm0, xmm4
vmovss dword [ebx + edx + 0x18], xmm0
vsubss xmm0, xmm1, xmm3
vmovss dword [ebx + edx + 0x1c], xmm0
vcvtdq2ps xmm0, xmm5
vmulps xmm5, xmm0, xmmword [esp + 0xa0]
mov ebx, dword [esp + 0x1c]
cmp dword [ebx + 0x18], 1
jne 0x474f46
vmulps xmm5, xmm5, xmmword [esp + 0x70]
vmovups xmmword [esi + edx + 0x20], xmm5
vmovss xmm0, dword [edi + ecx - 8]
vaddss xmm5, xmm0, dword [ebx + 0x1c]
vmovss dword [esi + edx + 4], xmm5
cmp byte [ebx + 0xe], 0
mov edi, dword [esp + 0x90]
je 0x474f7f
add edx, esi
add edx, 4
vaddss xmm0, xmm5, xmm4
vcvttps2dq xmm0, xmm0
vcvtdq2ps xmm0, xmm0
vmovss dword [edx], xmm0
mov ebx, dword [esp + 0x40]
inc ebx
add ecx, 0x1c
cmp ebx, dword [edi]
jl 0x474e7d
mov edi, dword [esp + 0x30]
mov ecx, dword [edi]
add dword [esp + 0x20], ebx
mov esi, dword [esp + 0x1c]
mov ebx, dword [esp + 0x38]
inc ebx
cmp ebx, ecx
jb 0x474e54
jmp 0x474fb4
mov dword [esp + 0x20], 0
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x20]
add dword [eax + 0x10], ecx
add dword [esp + 0x34], ecx
mov edx, dword [esp + 0x120]
inc edx
mov esi, dword [esi + 0x30]
mov ecx, dword [esp + 0x108]
cmp esi, ecx
mov eax, dword [esp + 0x2c]
jne 0x474d71
cmp edx, dword [esp + 0x104]
jge 0x474ff4
mov ecx, dword [ecx]
test ecx, ecx
jne 0x474d68
mov eax, dword [esp + 0x88]
mov ecx, dword [eax]
mov eax, dword [esp + 0xb0]
mov eax, dword [eax]
test ecx, ecx
je 0x475074
test eax, eax
je 0x475074
mov edx, dword [0x48197c]
test edx, edx
je 0x475074
mov ecx, dword [0x4819a0]
movsx esi, cx
sar ecx, 0x10
imul ecx, eax
add ecx, esi
add ecx, edx
add ecx, 0x5b
xor edx, edx
xor esi, esi
xor edi, edi
mov bl, byte [esi + edi + 0x479872]
cmp bl, 0x2e
sete bh
neg bh
mov byte [ecx + edi - 0x5b], bh
cmp bl, 0x58
sete bl
neg bl
mov byte [ecx + edi], bl
inc edi
cmp edi, 0x5a
jne 0x475034
inc edx
add ecx, eax
add esi, edi
cmp edx, 0x1b
jne 0x475032
mov eax, dword [esp + 0xb0]
mov eax, dword [eax]
mov ecx, dword [esp + 0x88]
mov ecx, dword [ecx]
imul ecx, eax
shl ecx, 2
mov eax, dword [0x481994]
mov dword [esp + 0x1f4], eax
mov eax, dword [esp + 0x1f4]
push ecx
push 0
push eax
call dword [0x481998]
add esp, 0xc
test eax, eax
je 0x475330
mov esi, eax
mov eax, dword [0x48197c]
mov ecx, dword [esp + 0xb0]
mov ecx, dword [ecx]
test ecx, ecx
je 0x4750ed
test eax, eax
je 0x4750ed
mov edx, dword [esp + 0x88]
mov edx, dword [edx]
test edx, edx
je 0x4750ed
imul ecx, edx
test ecx, ecx
jle 0x4750ed
inc ecx
xor edx, edx
movzx edi, byte [eax + edx]
shl edi, 0x18
or edi, 0xffffff
mov dword [esi + edx*4], edi
inc edx
dec ecx
cmp ecx, 1
ja 0x4750d1
mov eax, dword [0x48197c]
mov ecx, dword [0x481994]
mov dword [esp + 0x1f0], ecx
mov ecx, dword [esp + 0x1f0]
push eax
push ecx
call dword [0x48199c]
add esp, 8
mov dword [0x48197c], esi
mov edx, dword [esp + 0xb0]
mov eax, dword [edx]
mov dword [0x481980], eax
mov ecx, dword [esp + 0x88]
mov eax, dword [ecx]
mov dword [0x481984], eax
mov esi, dword [0x481a94]
test esi, esi
je 0x47529e
mov edi, dword [0x481a8c]
mov eax, dword [esi + 0x44]
mov dword [esp + 0x1c], eax
mov eax, dword [eax + 0x28]
test eax, eax
je 0x475294
test edi, edi
je 0x475294
mov edx, dword [esp + 0x1c]
mov ebx, dword [edx + 0x2c]
mov dword [esp + 0x24], ebx
vmovss xmm1, dword [edx + 0x14]
vmovsd xmm0, qword [eax + 0x10]
vmovsd qword [esp + 0x21c], xmm0
vmovups xmm0, xmmword [eax]
vmovups xmmword [esp + 0x20c], xmm0
mov ecx, edi
xor edi, edi
mov dword [esi + 0x38], edi
vmovups xmm0, xmmword [esp + 0x20c]
vmovups xmmword [esi + 0x18], xmm0
vmovsd xmm0, qword [esp + 0x21c]
vmovsd qword [esi + 0x28], xmm0
vmovss xmm0, dword [esi + 0x18]
vdivss xmm1, xmm1, xmm0
vmovss dword [esi + 0x30], xmm1
mov eax, dword [eax + 0xc]
lea eax, [eax + eax*2]
shl eax, 4
add ecx, eax
mov dword [esp + 0x28], ecx
mov dword [esi + 0x34], ecx
mov dword [esi + 0x40], edi
mov dword [esp + 0x90], esi
mov dword [esi + 0x3c], ebx
mov eax, edx
mov ecx, dword [eax + 0x24]
test ecx, ecx
mov dword [esp + 0x20], eax
je 0x47522d
xor edx, edx
cmp dword [ecx + edx], 0
lea edx, [edx + 4]
jne 0x4751e6
test edx, edx
je 0x47522d
cmp edx, 5
jl 0x47522d
mov eax, edx
sar eax, 2
shr edx, 0x1f
add edx, eax
sar edx, 1
xor eax, eax
mov esi, dword [ecx + eax*8]
mov ebx, dword [ecx + eax*8 + 4]
mov dword [esp + 0x40], ebx
mov ebx, dword [esp + 0x24]
cmp esi, ebx
ja 0x47521f
cmp dword [esp + 0x40], ebx
jae 0x475245
sub edi, esi
mov esi, dword [esp + 0x40]
add edi, esi
inc edi
inc eax
cmp edx, eax
jne 0x475206
mov eax, dword [esp + 0x20]
mov eax, dword [eax + 0x30]
cmp eax, dword [esp + 0x1c]
mov edx, dword [esp + 0xb0]
jne 0x4751d9
xor ecx, ecx
jmp 0x47525c
add edi, ebx
sub edi, esi
lea eax, [edi + edi*2]
shl eax, 4
mov ecx, dword [esp + 0x28]
add ecx, eax
mov edx, dword [esp + 0xb0]
mov esi, dword [esp + 0x90]
mov dword [esi + 0x38], ecx
vmulss xmm0, xmm0, xmm1
vmovss dword [esi + 8], xmm0
mov dword [esi + 0xc], 0x4784fa
mov dword [esi + 4], esi
mov dword [esi + 0x10], 0x4787b5
mov dword [esi + 0x14], 0
mov edi, dword [0x481a8c]
mov ecx, dword [esp + 0x88]
mov esi, dword [esi]
test esi, esi
jne 0x475142
vmovd xmm0, dword [0x4819a0]
vpmovsxwd xmm0, xmm0
vcvtdq2ps xmm0, xmm0
mov eax, 0xffffff58
mov edi, edx
mov esi, ecx
mov ecx, 0x4819ac
movzx edx, word [edi]
mov word [ecx], dx
movzx edx, word [esi]
mov word [ecx + 2], dx
vmovsd xmm1, qword [eax + 0x47a29c]
vaddps xmm1, xmm1, xmm0
vmovhps xmm1, xmm1, qword [eax + 0x47a2a4]
vcvttps2dq xmm1, xmm1
vpackusdw xmm1, xmm1, xmm1
vmovq qword [ecx + 4], xmm1
vmovdqu xmm1, xmmword [eax + 0x47a2a4]
vmovdqu xmmword [ecx + 0xc], xmm1
add ecx, 0x20
add eax, 0x18
jne 0x4752bd
mov eax, dword [0x481994]
mov dword [esp + 0x1ec], eax
mov eax, dword [esp + 0x1ec]
push dword [esp + 0xec]
push eax
call dword [0x48199c]
add esp, 8
mov edi, dword [0x48197c]
jmp 0x4753ba
mov eax, dword [0x481994]
mov dword [esp + 0x1e8], eax
mov eax, dword [esp + 0x1e8]
push dword [esp + 0xec]
push eax
call dword [0x48199c]
add esp, 8
mov eax, dword [0x481a8c]
test eax, eax
je 0x475386
mov ecx, dword [0x481988]
mov dword [esp + 0x1e4], ecx
mov ecx, dword [esp + 0x1e4]
push eax
push ecx
call dword [0x481990]
add esp, 8
mov dword [0x481a8c], 0
mov eax, dword [0x48197c]
xor edi, edi
test eax, eax
je 0x4753ba
mov ecx, dword [0x481994]
mov dword [esp + 0x1e0], ecx
mov ecx, dword [esp + 0x1e0]
push eax
push ecx
call dword [0x48199c]
add esp, 8
mov dword [0x48197c], 0
mov eax, edi
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret