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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x16c
mov eax, dword [ebp + 0x18]
xor edx, edx
push esi
or esi, 0xffffffff
push edi
mov dword [ebp - 0x1c], edx
mov dword [ebp - 0x60], edx
mov dword [ebp - 0x34], edx
mov dword [ebp - 0x14], edx
mov dword [ebp - 0x18], edx
mov dword [ebp - 0x38], edx
mov dword [ebp - 0x68], edx
mov dword [ebp - 0x70], edx
mov dword [ebp - 0x4c], esi
mov dword [ebp - 0x50], esi
mov dword [ebp - 0x2c], edx
cmp eax, 0x4fc
jle 0x40f715
mov ecx, 0x4fc
mov dword [ebp - 0xc], ecx
jmp 0x40f71a
mov dword [ebp - 0xc], eax
mov ecx, eax
mov eax, dword [ebp + 0x10]
mov edi, dword [ebp + 8]
mov dword [edi + 0x46d4], edx
cmp eax, edx
jle 0x411970
cmp ecx, edx
jle 0x411970
cmp ecx, 1
jne 0x40f759
lea eax, [eax + eax*4]
add eax, eax
cmp dword [edi + 0x90], eax
jne 0x40f759
mov eax, 0xfffffffe
lea esp, [ebp - 0x174]
pop edi
pop esi
mov esp, ebp
pop ebp
ret
mov eax, dword [edi + 4]
add eax, edi
mov dword [ebp - 0x64], eax
mov eax, dword [edi]
add eax, edi
cmp dword [edi + 0x6c], 0x803
mov dword [ebp - 0x40], eax
jne 0x40f776
mov dword [ebp - 0x44], edx
jmp 0x40f77c
mov ecx, dword [edi + 0x74]
mov dword [ebp - 0x44], ecx
mov ecx, dword [edi + 0xa8]
cmp dword [ebp + 0x1c], ecx
jl 0x40f78a
mov dword [ebp + 0x1c], ecx
lea edx, [ebp - 0x54]
push edx
push 0x271f
push eax
call fcn.00424270
movsd xmm5, qword [0x451328]
add esp, 0xc
cmp dword [edi + 0x2c], 7
mov dword [ebp - 0x108], 0
jl 0x40f8f0
mov eax, dword [edi + 0x90]
mov dword [ebp - 0x28], eax
cmp eax, 0x3e80
jl 0x40f8f0
mov esi, dword [edi + 0x70]
imul esi, dword [ebp + 0x10]
mov edi, dword [ebp + 0xc]
call fcn.0041c900
mov ecx, dword [ebp + 0x1c]
mov eax, 1
shl eax, cl
xorps xmm1, xmm1
movapd xmm2, xmm5
cvtss2sd xmm0, xmm0
cvtsi2ss xmm1, eax
cvtps2pd xmm1, xmm1
divsd xmm2, xmm1
comisd xmm2, xmm0
jb 0x40f810
mov edi, dword [ebp + 8]
mov dword [ebp - 0x2c], 1
jmp 0x40f8fa
mov esi, dword [ebp + 8]
mov edx, dword [esi + 0x1dd4]
mov eax, dword [esi + 0x1dd8]
mov edi, dword [ebp + 0x10]
mov dword [ebp - 0x4c], edx
mov dword [ebp - 0x50], eax
mov eax, dword [ebp + 0x34]
lea edx, [ebp - 0x108]
push edx
mov edx, dword [ebp + 0x30]
push eax
mov eax, dword [ebp + 0x2c]
push ecx
mov ecx, dword [ebp - 0x28]
push ecx
mov ecx, dword [ebp + 0x28]
push edx
mov edx, dword [ebp + 0x24]
push eax
mov eax, dword [ebp + 0x20]
push ecx
mov ecx, dword [ebp - 0x54]
push edi
push edx
push eax
push ecx
lea edx, [esi + 0xbc]
push edx
call fcn.0041c7f0
movss xmm0, dword [ebp - 0xe4]
add esp, 0x30
cvtps2pd xmm0, xmm0
comisd xmm0, xmmword [0x4514a8]
jbe 0x40f8e6
mov eax, dword [esi + 0x70]
fld dword [esi + 0x46cc]
fmul qword [0x451508]
mov ecx, dword [ebp + 0xc]
push eax
mov eax, dword [esi + 0xb4]
push ecx
fstp qword [ebp - 0x5c]
mov ecx, edi
call fcn.0040f380
fld qword [ebp - 0x5c]
add esp, 8
fcompi st(1)
fstp st(0)
jbe 0x40f8ba
movss xmm0, dword [esi + 0x46cc]
cvtps2pd xmm0, xmm0
mulsd xmm0, qword [0x451508]
jmp 0x40f8da
mov edx, dword [esi + 0x70]
mov eax, dword [ebp + 0xc]
push edx
push eax
mov eax, dword [esi + 0xb4]
mov ecx, edi
call fcn.0040f380
fstp qword [ebp - 0x5c]
movsd xmm0, qword [ebp - 0x5c]
add esp, 8
cvtpd2ps xmm0, xmm0
movss dword [esi + 0x46cc], xmm0
movsd xmm5, qword [0x451328]
mov edi, esi
mov dword [edi + 0x8c], 0xffffffff
cmp dword [ebp - 0x108], 0
mov dword [edi + 0x46c4], 0
je 0x40fa12
cmp dword [edi + 0x7c], 0xfffffc18
jne 0x40f9c5
mov eax, dword [edi + 0x3790]
test eax, eax
jne 0x40f932
movss xmm0, dword [ebp - 0xf4]
jmp 0x40f94b
cmp eax, 0x3ea
jne 0x40f943
movss xmm0, dword [ebp - 0xec]
jmp 0x40f94b
movss xmm0, dword [ebp - 0xf0]
movsd xmm2, qword [0x451500]
xorps xmm1, xmm1
cvtps2pd xmm1, xmm0
movapd xmm0, xmm5
subsd xmm0, xmm1
mulsd xmm0, qword [0x4514f8]
addsd xmm0, qword [0x451450]
movsd xmm1, qword [0x4514f0]
andpd xmm1, xmm0
movapd xmm3, xmm1
movapd xmm1, xmm0
xorpd xmm1, xmm3
cmpltsd xmm1, xmm2
andpd xmm2, xmm1
orpd xmm2, xmm3
movapd xmm1, xmm0
addsd xmm1, xmm2
subsd xmm1, xmm2
movapd xmm2, xmm1
subsd xmm2, xmm0
movapd xmm4, xmm5
cmpnlesd xmm2, xmm3
andpd xmm2, xmm4
subsd xmm1, xmm2
cvttsd2si ecx, xmm1
mov dword [edi + 0x8c], ecx
mov eax, dword [ebp - 0xe8]
cmp eax, 0xc
jg 0x40f9dc
mov dword [edi + 0x46c4], 0x44d
jmp 0x40fa12
cmp eax, 0xe
jg 0x40f9ed
mov dword [edi + 0x46c4], 0x44e
jmp 0x40fa12
cmp eax, 0x10
jg 0x40f9fe
mov dword [edi + 0x46c4], 0x44f
jmp 0x40fa12
xor edx, edx
cmp eax, 0x12
setg dl
add edx, 0x450
mov dword [edi + 0x46c4], edx
cmp dword [edi + 0x70], 2
jne 0x40fa4e
cmp dword [edi + 0x78], 1
je 0x40fa4e
mov ecx, dword [edi + 0x90]
mov edx, dword [ebp + 0x10]
lea eax, [edi + 0x37b0]
push eax
mov eax, dword [ebp + 0xc]
push ecx
push edx
push eax
call fcn.0040ec20
fstp dword [ebp - 0x28]
movss xmm0, dword [ebp - 0x28]
movsd xmm5, qword [0x451328]
add esp, 0x10
jmp 0x40fa51
xorps xmm0, xmm0
mov ecx, dword [ebp - 0xc]
mov esi, dword [ebp + 0x10]
push ecx
mov ecx, esi
mov eax, edi
call fcn.0040e670
mov ecx, dword [edi + 0x90]
mov dword [ebp - 0x28], eax
mov dword [edi + 0xa0], eax
mov eax, ecx
cdq
idiv esi
add esp, 4
mov esi, eax
mov eax, dword [edi + 0x94]
mov dword [ebp - 0x24], esi
mov dword [ebp - 0x3c], eax
test eax, eax
jne 0x40fb7e
lea eax, [ecx + ecx*2]
add eax, eax
add eax, eax
cdq
idiv dword [ebp + 0x10]
mov ecx, eax
mov eax, dword [ebp - 0x28]
lea eax, [eax + eax*2]
add eax, eax
add eax, eax
cdq
and edx, 7
add eax, edx
sar eax, 3
mov dword [ebp - 0x28], eax
mov eax, ecx
cdq
sub eax, edx
sar eax, 1
add eax, dword [ebp - 0x28]
mov dword [ebp - 0x30], ecx
cdq
idiv ecx
mov ecx, dword [ebp - 0xc]
cmp eax, ecx
jge 0x40faca
mov ecx, eax
mov edx, ecx
imul edx, dword [ebp - 0x30]
add edx, edx
add edx, edx
add edx, edx
mov eax, 0x2aaaaaab
imul edx
sar edx, 1
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [edi + 0xa0], eax
cmp ecx, 1
jge 0x40fb7b
mov dword [ebp - 0xc], 1
mov eax, dword [edi + 0x379c]
mov ecx, dword [edi + 0x378c]
xor edx, edx
mov dword [ebp + 8], ecx
mov dword [ebp + 0x10], 0x44d
cmp eax, edx
je 0x40fb1b
mov dword [ebp + 0x10], eax
mov dword [ebp - 0x2c], edx
mov dword [ebp - 0x34], edx
cmp ecx, edx
jne 0x40fb2d
mov ecx, 0x3e8
mov dword [ebp + 8], ecx
cmp esi, 0x64
jle 0x40fb3a
mov ecx, 0x3ea
mov dword [ebp + 8], ecx
cmp esi, 0x19
jne 0x41197e
cmp ecx, 0x3e8
je 0x40fb68
mov dword [ebp - 0x24], 0x32
mov dword [ebp - 0x2c], 1
mov esi, dword [ebp - 0x24]
cmp ecx, 0x3e8
jne 0x4119df
mov eax, 0x44f
cmp dword [ebp + 0x10], eax
jle 0x411a0e
jmp 0x411a0b
mov dword [ebp - 0xc], ecx
mov edx, dword [ebp - 0xc]
cmp edx, 3
jl 0x40fafc
mov ecx, dword [edi + 0xa0]
lea eax, [esi + esi*2]
add eax, eax
add eax, eax
add eax, eax
mov dword [ebp - 0x30], ecx
cmp ecx, eax
jl 0x40fafc
cmp esi, 0x32
jge 0x40fbc5
mov eax, esi
imul eax, edx
cmp eax, 0x12c
jl 0x40fafc
cmp ecx, 0x960
jl 0x40fafc
mov eax, esi
imul eax, edx
mov edx, dword [edi + 0x28]
add eax, eax
add eax, eax
add eax, eax
mov dword [ebp - 0x28], eax
mov eax, dword [edi + 0x2c]
mov dword [ebp - 4], edx
mov dword [ebp - 0x48], eax
mov dword [ebp - 8], ecx
cmp esi, 0x32
jle 0x40fbff
mov eax, dword [edi + 0x70]
lea edx, [eax + eax*4]
add esi, 0xffffffce
lea eax, [edx*8 + 0x14]
imul eax, esi
sub ecx, eax
mov dword [ebp - 8], ecx
cmp dword [ebp - 0x3c], 0
jne 0x40fc1a
mov eax, 0xd5555555
imul ecx
sar edx, 1
mov eax, edx
shr eax, 0x1f
add eax, edx
add ecx, eax
mov dword [ebp - 8], ecx
mov ecx, dword [ebp - 0x48]
add ecx, 0x5a
imul ecx, dword [ebp - 8]
mov eax, 0x51eb851f
imul ecx
sar edx, 5
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
mov edx, dword [ebp - 4]
lea eax, [edx + edx*2]
lea esi, [eax*4 + 0x14]
mov eax, ecx
imul eax, edx
cdq
idiv esi
sub ecx, eax
mov eax, dword [edi + 0x7c]
mov esi, ecx
cmp eax, 0xbb9
jne 0x40fc5f
mov eax, 0x7f
jmp 0x40fca7
cmp eax, 0xbba
jne 0x40fc6a
xor eax, eax
jmp 0x40fca7
mov eax, dword [edi + 0x8c]
test eax, eax
js 0x40fc95
imul eax, eax, 0x147
sar eax, 8
cmp dword [edi + 0x6c], 0x801
mov dword [ebp - 0x10], eax
jne 0x40fcaa
cmp eax, 0x73
jl 0x40fcaa
mov eax, 0x73
jmp 0x40fca7
mov eax, dword [edi + 0x6c]
sub eax, 0x800
neg eax
sbb eax, eax
and eax, 0xffffffbd
add eax, 0x73
mov dword [ebp - 0x10], eax
mov edx, dword [edi + 0x78]
cmp edx, 0xfffffc18
je 0x40fcbb
cmp dword [edi + 0x70], 2
je 0x40fd01
mov edx, dword [edi + 0x70]
cmp edx, 2
jne 0x40fd01
imul eax, eax
imul eax, eax, 0x7d0
sar eax, 0xe
cmp dword [edi + 0x376c], edx
jne 0x40fcec
sub eax, 0xffffc180
xor ecx, ecx
cmp esi, eax
setg cl
inc ecx
mov dword [edi + 0x376c], ecx
jmp 0x40fd07
add eax, 0x4650
xor ecx, ecx
cmp esi, eax
setg cl
inc ecx
mov dword [edi + 0x376c], ecx
jmp 0x40fd07
mov dword [edi + 0x376c], edx
mov ecx, dword [ebp - 0x24]
mov esi, dword [ebp - 0x30]
cmp ecx, 0x32
jle 0x40fd2a
mov eax, dword [edi + 0x376c]
lea edx, [eax + eax*4]
add ecx, 0xffffffce
lea eax, [edx*8 + 0x14]
imul eax, ecx
sub esi, eax
cmp dword [ebp - 0x3c], 0
jne 0x40fd42
mov eax, 0xd5555555
imul esi
sar edx, 1
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
add esi, ecx
mov ecx, dword [ebp - 0x48]
add ecx, 0x5a
imul ecx, esi
mov eax, 0x51eb851f
imul ecx
sar edx, 5
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
mov edx, dword [ebp - 4]
lea eax, [edx + edx*2]
lea esi, [eax*4 + 0x14]
mov eax, ecx
imul eax, edx
cdq
idiv esi
mov edx, dword [edi + 0x6c]
sub ecx, eax
mov dword [ebp - 8], ecx
cmp edx, 0x803
jne 0x40fd90
mov dword [edi + 0x378c], 0x3ea
jmp 0x40fed1
mov eax, dword [edi + 0x88]
cmp eax, 0xfffffc18
jne 0x40fecb
mov ecx, dword [ebp - 0x10]
xorps xmm1, xmm1
cvtps2pd xmm1, xmm0
xorps xmm2, xmm2
cvtps2pd xmm2, xmm0
subsd xmm5, xmm1
movsd xmm1, qword [0x4514e8]
movapd xmm3, xmm5
mulsd xmm5, qword [0x4514e0]
cvtps2pd xmm0, xmm0
mulsd xmm0, qword [0x4514d8]
mulsd xmm2, xmm1
mulsd xmm3, xmm1
addsd xmm2, xmm3
cvttsd2si esi, xmm2
addsd xmm0, xmm5
cvttsd2si eax, xmm0
sub eax, esi
imul eax, ecx
imul eax, ecx
sar eax, 0xe
add eax, esi
cmp edx, 0x800
jne 0x40fe05
add eax, 0x1f40
mov edx, dword [edi + 0x3790]
cmp edx, 0x3ea
jne 0x40fe1a
sub eax, 0xfa0
jmp 0x40fe23
test edx, edx
jle 0x40fe23
add eax, 0xfa0
xor edx, edx
cmp dword [ebp - 8], eax
setge dl
cmp dword [edi + 0x30], 0
lea edx, [edx + edx + 0x3e8]
mov dword [edi + 0x378c], edx
je 0x40fe57
mov eax, 0x80
sub eax, ecx
sar eax, 4
cmp dword [ebp - 4], eax
jle 0x40fe57
mov dword [edi + 0x378c], 0x3e8
cmp dword [edi + 0xb8], 0
je 0x40fe76
cmp dword [ebp - 0x108], 0
jne 0x40fe76
cmp dword [ebp - 0x2c], 0
jne 0x40fe76
mov eax, 1
jmp 0x40fe78
xor eax, eax
mov dword [edi + 0x38], eax
test eax, eax
je 0x40fe8e
cmp ecx, 0x64
jle 0x40fe8e
mov dword [edi + 0x378c], 0x3e8
mov eax, dword [edi + 0x90]
xor ecx, ecx
cmp dword [ebp - 0x24], 0x32
lea esi, [eax*8]
setle cl
dec ecx
and ecx, 0xbb8
add ecx, 0x1770
imul ecx, dword [ebp + 0x10]
mov eax, ecx
cdq
idiv esi
cmp dword [ebp - 0xc], eax
jge 0x40fed1
mov dword [edi + 0x378c], 0x3ea
jmp 0x40fed1
mov dword [edi + 0x378c], eax
mov ecx, 0x3ea
cmp dword [edi + 0x378c], ecx
je 0x40fefe
mov eax, 0x51eb851f
imul dword [edi + 0x90]
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp dword [ebp + 0x10], eax
jge 0x40fefe
mov dword [edi + 0x378c], ecx
cmp dword [edi + 0xb0], 0
je 0x40ff0d
mov dword [edi + 0x378c], ecx
mov esi, dword [edi + 0x3790]
mov dword [ebp - 0x20], esi
test esi, esi
jle 0x40ff7f
mov eax, dword [edi + 0x378c]
cmp eax, 0x3ea
je 0x40ff32
cmp esi, ecx
je 0x40ff36
cmp eax, 0x3ea
jne 0x40ff7f
cmp esi, ecx
je 0x40ff7f
xor edx, edx
cmp eax, 0x3ea
setne dl
mov ecx, 1
mov dword [ebp - 0x14], ecx
mov eax, edx
mov dword [ebp - 0x38], eax
test eax, eax
jne 0x40ff84
mov eax, 0x51eb851f
imul dword [edi + 0x90]
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp dword [ebp + 0x10], eax
jl 0x40ff76
mov dword [edi + 0x378c], esi
mov dword [ebp - 0x68], ecx
jmp 0x40ff84
mov dword [ebp - 0x14], 0
jmp 0x40ff84
mov ecx, 1
cmp dword [edi + 0x376c], ecx
jne 0x40ffbe
mov eax, 2
cmp dword [edi + 0x3794], eax
jne 0x40ffbe
cmp dword [edi + 0x44], 0
jne 0x40ffbe
cmp dword [edi + 0x378c], 0x3ea
je 0x40ffbe
cmp esi, 0x3ea
je 0x40ffbe
mov dword [edi + 0x44], ecx
mov dword [edi + 0x376c], eax
jmp 0x40ffc5
mov dword [edi + 0x44], 0
mov ecx, dword [ebp - 4]
mov edx, dword [ebp - 0x48]
mov eax, dword [ebp - 0x3c]
mov esi, dword [ebp + 8]
mov edi, dword [edi + 0x378c]
push ecx
mov ecx, dword [ebp - 0x30]
push edx
push eax
mov eax, dword [ebp - 0x24]
push ecx
mov ecx, dword [esi + 0x376c]
call fcn.0040f2a0
add esp, 0x10
mov dword [ebp - 8], eax
cmp edi, 0x3ea
je 0x410024
cmp dword [ebp - 0x20], 0x3ea
jne 0x410024
mov eax, dword [esi + 0xb4]
mov ecx, dword [ebp - 0x64]
lea edx, [ebp - 0x16c]
push edx
push eax
push ecx
call fcn.00425c50
add esp, 0xc
mov dword [ebp - 0x60], 1
cmp dword [esi + 0x378c], 0x3ea
je 0x410043
cmp dword [esi + 0x37a8], 0
jne 0x410043
cmp dword [esi + 0x54], 0
je 0x4101c9
cmp dword [esi + 0x70], 2
mov dword [ebp - 0x20], 0x451
jne 0x410062
cmp dword [esi + 0x78], 1
je 0x410062
mov ecx, 0x45139c
mov eax, 0x4513bc
jmp 0x41006c
mov ecx, 0x45135c
mov eax, 0x45137c
mov edi, dword [ecx]
mov edx, dword [eax]
sub edi, edx
mov dword [ebp - 4], eax
mov eax, dword [ebp - 0x10]
imul edi, eax
imul edi, eax
sar edi, 0xe
add edi, edx
mov dword [ebp - 0xc8], edi
mov edi, dword [ecx + 4]
mov edx, dword [ebp - 4]
mov edx, dword [edx + 4]
sub edi, edx
imul edi, eax
imul edi, eax
sar edi, 0xe
add edi, edx
mov edx, dword [ebp - 4]
mov edx, dword [edx + 8]
mov dword [ebp - 0xc4], edi
mov edi, dword [ecx + 8]
sub edi, edx
imul edi, eax
imul edi, eax
sar edi, 0xe
add edi, edx
mov edx, dword [ebp - 4]
mov edx, dword [edx + 0xc]
mov dword [ebp - 0xc0], edi
mov edi, dword [ecx + 0xc]
sub edi, edx
imul edi, eax
imul edi, eax
sar edi, 0xe
add edi, edx
mov edx, dword [ebp - 4]
mov edx, dword [edx + 0x10]
mov dword [ebp - 0xbc], edi
mov edi, dword [ecx + 0x10]
sub edi, edx
imul edi, eax
imul edi, eax
sar edi, 0xe
add edi, edx
mov edx, dword [ebp - 4]
mov edx, dword [edx + 0x14]
mov dword [ebp - 0xb8], edi
mov edi, dword [ecx + 0x14]
sub edi, edx
imul edi, eax
imul edi, eax
sar edi, 0xe
add edi, edx
mov edx, dword [ebp - 4]
mov edx, dword [edx + 0x18]
mov dword [ebp - 0xb4], edi
mov edi, dword [ecx + 0x18]
mov ecx, dword [ecx + 0x1c]
sub edi, edx
imul edi, eax
imul edi, eax
sar edi, 0xe
add edi, edx
mov edx, dword [ebp - 4]
mov edx, dword [edx + 0x1c]
sub ecx, edx
imul ecx, eax
imul ecx, eax
sar ecx, 0xe
add ecx, edx
mov dword [ebp - 0xac], ecx
mov ecx, dword [ebp - 0x20]
mov dword [ebp - 0xb0], edi
lea eax, [ebp - 0xac]
cmp dword [esi + 0x37a8], 0
mov edx, dword [eax - 4]
mov edi, dword [eax]
jne 0x410172
cmp dword [esi + 0x37a0], ecx
jl 0x410170
sub edx, edi
jmp 0x410172
add edx, edi
cmp dword [ebp - 8], edx
jge 0x410183
dec ecx
sub eax, 8
cmp ecx, 0x44d
jg 0x410156
cmp ecx, 0x44e
jne 0x410190
mov ecx, 0x44f
mov eax, dword [esi + 0x37a8]
mov dword [esi + 0x37a0], ecx
mov dword [esi + 0x379c], ecx
test eax, eax
jne 0x4101c9
cmp dword [esi + 0x378c], 0x3ea
je 0x4101c9
cmp dword [esi + 0x58], eax
jne 0x4101c9
cmp ecx, 0x44f
jle 0x4101c9
mov dword [esi + 0x379c], 0x44f
mov eax, dword [esi + 0x84]
cmp dword [esi + 0x379c], eax
jle 0x4101dd
mov dword [esi + 0x379c], eax
mov edx, dword [esi + 0x80]
cmp edx, 0xfffffc18
je 0x4101f1
mov dword [esi + 0x379c], edx
cmp dword [esi + 0x378c], 0x3ea
je 0x41021e
cmp dword [ebp - 0x28], 0x3a98
jge 0x41021e
mov eax, dword [esi + 0x379c]
cmp eax, 0x44f
jl 0x410218
mov eax, 0x44f
mov dword [esi + 0x379c], eax
mov eax, dword [esi + 0x90]
cmp eax, 0x5dc0
jg 0x41023e
mov ecx, 0x450
cmp dword [esi + 0x379c], ecx
jle 0x41023e
mov dword [esi + 0x379c], ecx
cmp eax, 0x3e80
jg 0x410258
mov ecx, 0x44f
cmp dword [esi + 0x379c], ecx
jle 0x410258
mov dword [esi + 0x379c], ecx
cmp eax, 0x2ee0
jg 0x410272
mov ecx, 0x44e
cmp dword [esi + 0x379c], ecx
jle 0x410272
mov dword [esi + 0x379c], ecx
cmp eax, 0x1f40
jg 0x41028c
mov eax, 0x44d
cmp dword [esi + 0x379c], eax
jle 0x41028c
mov dword [esi + 0x379c], eax
mov edi, dword [esi + 0x46c4]
test edi, edi
je 0x410332
cmp edx, 0xfffffc18
jne 0x410332
mov eax, dword [esi + 0x376c]
mov edx, eax
imul edx, edx, 0x4650
cmp dword [ebp - 8], edx
jg 0x4102cc
cmp dword [esi + 0x378c], 0x3ea
jne 0x4102cc
mov eax, 0x44d
jmp 0x410314
mov ecx, eax
imul ecx, ecx, 0x5dc0
cmp dword [ebp - 8], ecx
jg 0x4102ec
cmp dword [esi + 0x378c], 0x3ea
jne 0x4102ec
mov eax, 0x44e
jmp 0x410314
mov edx, eax
imul edx, edx, 0x7530
cmp dword [ebp - 8], edx
jg 0x410300
mov eax, 0x44f
jmp 0x410314
imul eax, eax, 0xabe0
xor ecx, ecx
cmp dword [ebp - 8], eax
setg cl
lea eax, [ecx + 0x450]
cmp edi, eax
jle 0x41031a
mov eax, edi
mov ecx, dword [esi + 0x379c]
mov dword [esi + 0x46c4], eax
cmp ecx, eax
jge 0x41032c
mov eax, ecx
mov dword [esi + 0x379c], eax
mov edx, dword [ebp - 8]
mov ecx, dword [esi + 0x30]
mov edi, dword [esi + 0x28]
push edx
lea eax, [esi + 0x379c]
push eax
mov eax, dword [esi + 0x378c]
push eax
mov eax, dword [esi + 0x34]
push eax
push ecx
call fcn.0040f100
mov edx, dword [ebp + 0x1c]
push edx
mov dword [esi + 0x34], eax
mov eax, dword [ebp - 0x40]
push 0xfc4
push eax
call fcn.00424270
mov eax, dword [esi + 0x378c]
add esp, 0x20
cmp eax, 0x3ea
jne 0x41038f
cmp dword [esi + 0x379c], 0x44e
jne 0x41038f
mov dword [esi + 0x379c], 0x44f
cmp dword [esi + 0xb0], 0
je 0x4103a2
mov dword [esi + 0x379c], 0x44d
mov ecx, dword [esi + 0x379c]
mov dword [ebp - 4], ecx
cmp eax, 0x3e8
jne 0x4103c4
cmp ecx, 0x44f
jle 0x4103c4
mov dword [esi + 0x378c], 0x3e9
cmp dword [esi + 0x378c], 0x3e9
jne 0x4103e2
cmp ecx, 0x44f
jg 0x4103e2
mov dword [esi + 0x378c], 0x3e8
mov ecx, dword [esi + 0x90]
mov eax, 0x51eb851f
imul ecx
sar edx, 4
mov edi, edx
shr edi, 0x1f
add edi, edx
cmp dword [ebp + 0x10], edi
jle 0x41040a
cmp dword [esi + 0x378c], 0x3e8
jne 0x410486
lea edx, [ecx + ecx*2]
mov eax, 0x51eb851f
imul edx
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp dword [ebp + 0x10], eax
jle 0x4104d2
cmp dword [esi + 0x378c], 0x3e8
jne 0x410486
lea edx, [ecx + ecx]
mov eax, 0x51eb851f
imul edx
sar edx, 3
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp dword [ebp + 0x10], eax
mov eax, 0x51eb851f
jne 0x41045f
imul ecx
sar edx, 3
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jmp 0x410488
lea ecx, [ecx + ecx*2]
imul ecx
sar edx, 3
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp dword [ebp + 0x10], eax
jne 0x410486
mov eax, 0x51eb851f
imul ecx
sar edx, 4
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jmp 0x410488
mov ecx, edi
mov eax, dword [ebp + 0x10]
cdq
idiv ecx
mov edx, dword [ebp - 0x4c]
cmp edx, 0xffffffff
je 0x4104a5
mov dword [esi + 0x1dd4], edx
mov edx, dword [ebp - 0x50]
mov dword [esi + 0x1dd8], edx
mov edx, dword [ebp + 0x38]
push edx
mov edx, dword [ebp + 0x1c]
push edx
mov edx, dword [ebp - 0x68]
push edx
mov edx, dword [ebp + 0x14]
push edx
push ecx
mov ecx, dword [ebp + 0x18]
push eax
mov eax, dword [ebp + 0xc]
push eax
call fcn.0040f440
add esp, 0x1c
lea esp, [ebp - 0x174]
pop edi
pop esi
mov esp, ebp
pop ebp
ret
xor ecx, ecx
cmp dword [esi + 0x37a4], ecx
je 0x4104f4
mov eax, 1
mov dword [ebp - 0x14], eax
mov dword [ebp - 0x38], eax
mov dword [esi + 0x37a4], ecx
mov dword [ebp - 0x60], 2
cmp dword [esi + 0x378c], 0x3ea
jne 0x410505
mov dword [ebp - 0x14], ecx
jmp 0x410531
cmp dword [ebp - 0x14], ecx
je 0x410531
mov ecx, dword [ebp - 0x24]
mov edx, dword [esi + 0xa0]
mov eax, dword [ebp - 0xc]
mov edi, dword [esi + 0x376c]
push ecx
push edx
push eax
call fcn.0040f630
add esp, 0xc
mov dword [ebp - 0x18], eax
test eax, eax
jne 0x410531
mov dword [ebp - 0x14], eax
mov eax, dword [esi + 0xa0]
imul eax, dword [ebp + 0x10]
mov ecx, dword [esi + 0x90]
add ecx, ecx
add ecx, ecx
add ecx, ecx
cdq
idiv ecx
mov ecx, dword [ebp - 0xc]
sub ecx, dword [ebp - 0x18]
cmp ecx, eax
jl 0x410556
mov ecx, eax
mov edx, dword [ebp - 0xc]
mov eax, dword [ebp + 0x14]
inc eax
dec edx
push edx
push eax
mov dword [ebp + 0x14], eax
lea eax, [ebp - 0xa8]
dec ecx
push eax
mov dword [ebp - 0x20], ecx
call fcn.004249a0
mov ecx, dword [ebp + 0x10]
mov edi, dword [ebp - 0x44]
lea eax, [edi + ecx]
mov dword [ebp - 0x58], eax
imul eax, dword [esi + 0x70]
add eax, eax
add esp, 0xc
add eax, eax
call fcn.00426570
mov eax, dword [esi + 0x70]
mov edx, eax
imul edx, edi
add edx, edx
add edx, edx
mov ecx, esp
push edx
mov edx, dword [esi + 0xac]
sub edx, edi
imul edx, eax
lea eax, [esi + edx*4 + 0x37c4]
push eax
push ecx
mov dword [ebp - 0x10], ecx
call sub.MSVCR80.DLL_memcpy
add esp, 0xc
cmp dword [esi + 0x378c], 0x3ea
jne 0x4105d8
push 0x3c
call fcn.00426500
add esp, 4
shl eax, 8
jmp 0x4105de
mov ecx, dword [ebp - 0x64]
mov eax, dword [ecx + 8]
mov ecx, dword [esi + 0x3774]
sub eax, ecx
mov edx, eax
and edx, 0xffff
imul edx, edx, 0x3d7
sar eax, 0x10
imul eax, eax, 0x3d7
sar edx, 0x10
add edx, ecx
add eax, edx
mov dword [esi + 0x3774], eax
sar eax, 8
push eax
call fcn.00426460
mov edx, dword [esi + 0x90]
add esp, 4
cmp dword [esi + 0x6c], 0x800
push edx
jne 0x41064e
mov ecx, dword [esi + 0x70]
mov edx, dword [ebp + 0x10]
push ecx
imul ecx, edi
push edx
lea edx, [esi + 0x377c]
push edx
mov edx, dword [ebp - 0x10]
lea ecx, [edx + ecx*4]
mov edx, dword [ebp + 0xc]
push ecx
push eax
push edx
call fcn.0040ce30
add esp, 0x1c
jmp 0x410674
mov eax, dword [esi + 0x70]
push eax
imul eax, edi
lea ecx, [esi + 0x377c]
push ecx
mov ecx, dword [ebp - 0x10]
lea edx, [ecx + eax*4]
mov eax, dword [ebp + 0xc]
push edx
push 3
push eax
mov eax, dword [ebp + 0x10]
call fcn.0040cf70
add esp, 0x18
cmp dword [ebp + 0x38], 0
je 0x410716
mov eax, dword [esi + 0x70]
mov edx, dword [ebp - 0x10]
mov ecx, eax
imul eax, dword [ebp + 0x10]
imul ecx, edi
lea ecx, [edx + ecx*4]
mov edx, dword [esi + 0xb4]
push eax
mov eax, ecx
push eax
and edx, 7
push eax
mov eax, dword [edx*4 + 0x4520cc]
mov dword [ebp + 0x18], ecx
call eax
add esp, 0xc
fstp dword [ebp + 0x18]
fld dword [ebp + 0x18]
fld qword [0x451490]
fcompi st(1)
fstp st(0)
jbe 0x4106d1
movss xmm0, dword [ebp + 0x18]
cvtps2pd xmm0, xmm0
ucomisd xmm0, xmm0
lahf
test ah, 0x44
jnp 0x410716
mov eax, dword [esi + 0x70]
mov edx, dword [ebp - 0x10]
mov ecx, eax
imul eax, edi
imul ecx, dword [ebp + 0x10]
add ecx, ecx
add ecx, ecx
push ecx
lea eax, [edx + eax*4]
push 0
push eax
call sub.MSVCR80.DLL_memset
xorps xmm0, xmm0
add esp, 0xc
movss dword [esi + 0x3788], xmm0
movss dword [esi + 0x3784], xmm0
movss dword [esi + 0x3780], xmm0
movss dword [esi + 0x377c], xmm0
cmp dword [esi + 0x378c], 0x3ea
movss xmm0, dword [0x451430]
movss dword [ebp - 0x30], xmm0
je 0x410f59
mov eax, dword [esi + 0x70]
imul eax, dword [ebp + 0x10]
add eax, eax
call fcn.00426570
cmp dword [ebp - 0x108], 0
mov dword [ebp - 0x1c], esp
mov dword [ebp + 0x18], 0xffffffff
je 0x410777
movss xmm0, dword [ebp - 0xe4]
cvtps2pd xmm0, xmm0
comisd xmm0, xmmword [0x4514a8]
mov dword [ebp + 0x18], 1
jae 0x410777
mov dword [ebp + 0x18], 0
mov eax, dword [ebp - 0x20]
imul eax, dword [ebp - 0x24]
add eax, eax
add eax, eax
cmp dword [esi + 0x378c], 0x3e9
lea edi, [eax + eax]
jne 0x4107f6
mov eax, dword [ebp + 0x10]
mov ecx, dword [esi + 0x376c]
imul eax, eax, 0x32
mov edx, dword [esi + 0x94]
push ecx
xor ecx, ecx
cmp dword [esi + 0x90], eax
push edx
mov edx, dword [ebp - 4]
sete cl
mov eax, edi
push ecx
mov ecx, dword [esi + 0x34]
push edx
call fcn.0040f1e0
add esp, 0x10
cmp dword [esi + 0x37ac], 0
mov dword [esi + 0x24], eax
jne 0x4107f9
sub eax, edi
mov dword [ebp - 0x20], eax
fild dword [ebp - 0x20]
fmul qword [0x4514d0]
fmul qword [0x451330]
call sub.MSVCR80.DLL__CIexp
fstp dword [ebp - 0x20]
fld dword [ebp - 0x20]
fld1
fsubrp st(1)
fstp dword [ebp - 0x30]
jmp 0x4107f9
mov dword [esi + 0x24], edi
mov ecx, dword [esi + 0x37ac]
test ecx, ecx
je 0x410ae7
cmp dword [esi + 0x94], 0
je 0x410ae7
cmp dword [esi + 0xb0], 0
jne 0x410ae7
mov eax, dword [esi + 0x379c]
xorps xmm5, xmm5
mov edi, 0x11
movaps xmm2, xmm5
mov dword [ebp - 0x3c], edi
mov dword [ebp - 0x4c], 0x3e80
cmp eax, 0x44d
jne 0x410851
mov edi, 0xd
mov dword [ebp - 0x4c], 0x1f40
jmp 0x410864
cmp eax, 0x44e
jne 0x410867
mov edi, 0xf
mov dword [ebp - 0x4c], 0x2ee0
mov dword [ebp - 0x3c], edi
mov eax, dword [esi + 0x70]
test eax, eax
jle 0x410a34
movss xmm1, dword [0x4514cc]
movss xmm3, dword [0x4514c8]
movsd xmm4, qword [0x451450]
lea edx, [ecx + 4]
mov dword [ebp - 0x50], 0
mov dword [ebp - 0x74], edx
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x48], 0
cmp edi, 4
jl 0x4109c8
lea eax, [edi - 4]
shr eax, 2
inc eax
lea edi, [eax*4]
lea ecx, [edx + 4]
mov dword [ebp - 0x48], edi
mov edi, edi
movss xmm0, dword [ecx - 8]
comiss xmm1, xmm0
jbe 0x4108d4
comiss xmm0, xmm3
jbe 0x4108d9
comiss xmm1, xmm0
ja 0x4108de
movaps xmm0, xmm1
jmp 0x4108e3
movaps xmm0, xmm3
jmp 0x4108ee
comiss xmm0, xmm5
jbe 0x4108ee
cvtps2pd xmm0, xmm0
mulsd xmm0, xmm4
cvtpd2ps xmm0, xmm0
cvtss2sd xmm2, xmm2
cvtss2sd xmm0, xmm0
addsd xmm0, xmm2
xorps xmm2, xmm2
cvtpd2ps xmm2, xmm0
movss xmm0, dword [edx]
comiss xmm1, xmm0
jbe 0x41097a
comiss xmm0, xmm3
jbe 0x41097f
comiss xmm0, xmm5
jbe 0x41091f
cvtps2pd xmm0, xmm0
mulsd xmm0, xmm4
cvtpd2ps xmm0, xmm0
cvtps2pd xmm2, xmm2
cvtss2sd xmm0, xmm0
addsd xmm0, xmm2
xorps xmm2, xmm2
cvtpd2ps xmm2, xmm0
movss xmm0, dword [ecx]
comiss xmm1, xmm0
jbe 0x410984
comiss xmm0, xmm3
jbe 0x410989
comiss xmm0, xmm5
jbe 0x41094f
cvtps2pd xmm0, xmm0
mulsd xmm0, xmm4
cvtpd2ps xmm0, xmm0
cvtps2pd xmm2, xmm2
cvtss2sd xmm0, xmm0
addsd xmm0, xmm2
xorps xmm2, xmm2
cvtpd2ps xmm2, xmm0
movss xmm0, dword [ecx + 4]
comiss xmm1, xmm0
jbe 0x410975
comiss xmm0, xmm3
jbe 0x41098e
comiss xmm1, xmm0
ja 0x410993
movaps xmm0, xmm1
jmp 0x410998
movaps xmm0, xmm1
jmp 0x410914
movaps xmm0, xmm3
jmp 0x41091f
movaps xmm0, xmm1
jmp 0x410944
movaps xmm0, xmm3
jmp 0x41094f
movaps xmm0, xmm3
jmp 0x4109a3
comiss xmm0, xmm5
jbe 0x4109a3
cvtps2pd xmm0, xmm0
mulsd xmm0, xmm4
cvtpd2ps xmm0, xmm0
cvtps2pd xmm2, xmm2
cvtss2sd xmm0, xmm0
addsd xmm0, xmm2
add edx, 0x10
add ecx, 0x10
dec eax
xorps xmm2, xmm2
cvtpd2ps xmm2, xmm0
jne 0x4108c0
mov edx, dword [ebp - 0x74]
mov edi, dword [ebp - 0x3c]
mov eax, dword [ebp - 0x48]
cmp eax, edi
jge 0x410a21
mov ecx, dword [ebp - 0x50]
add ecx, eax
mov eax, dword [esi + 0x37ac]
lea ecx, [eax + ecx*4]
mov eax, edi
sub eax, dword [ebp - 0x48]
movss xmm0, dword [ecx]
comiss xmm1, xmm0
jbe 0x410abc
comiss xmm0, xmm3
jbe 0x410ac4
comiss xmm0, xmm5
jbe 0x410a08
cvtps2pd xmm0, xmm0
mulsd xmm0, xmm4
cvtpd2ps xmm0, xmm0
cvtss2sd xmm2, xmm2
cvtss2sd xmm0, xmm0
addsd xmm0, xmm2
add ecx, 4
dec eax
xorps xmm2, xmm2
cvtpd2ps xmm2, xmm0
jne 0x4109e2
add dword [ebp - 0x50], 0x15
add edx, 0x54
dec dword [ebp - 0x20]
mov dword [ebp - 0x74], edx
jne 0x41089a
movsx ecx, word [ebp - 0x4c]
xorps xmm0, xmm0
xorps xmm1, xmm1
cvtsi2ss xmm1, edi
cvtss2sd xmm0, xmm2
cvtps2pd xmm1, xmm1
divsd xmm0, xmm1
movd xmm1, dword [esi + 0x70]
cvtdq2ps xmm1, xmm1
cvtss2sd xmm1, xmm1
mulsd xmm0, xmm1
xorps xmm1, xmm1
cvtsi2sd xmm1, ecx
mov ecx, dword [esi + 0x24]
neg ecx
add ecx, ecx
mov eax, 0x55555556
imul ecx
cvtpd2ps xmm0, xmm0
cvtss2sd xmm0, xmm0
addsd xmm0, qword [0x4514c0]
mov eax, edx
shr eax, 0x1f
cvtpd2ps xmm0, xmm0
add eax, edx
cvtss2sd xmm0, xmm0
mulsd xmm0, xmm1
cvttsd2si edi, xmm0
cmp edi, eax
cmovle edi, eax
mov eax, dword [esi + 0x379c]
cmp eax, 0x450
je 0x410acc
cmp eax, 0x451
je 0x410acc
mov eax, dword [esi + 0x24]
add eax, edi
mov dword [esi + 0x24], eax
jmp 0x410aea
movaps xmm0, xmm1
jmp 0x4109fd
movaps xmm0, xmm3
jmp 0x410a08
lea edi, [edi + edi*2]
mov eax, 0x66666667
imul edi
sar edx, 1
mov eax, edx
shr eax, 0x1f
add eax, edx
add eax, dword [esi + 0x24]
mov dword [esi + 0x24], eax
jmp 0x410aea
xorps xmm5, xmm5
mov eax, dword [ebp + 0x10]
imul eax, eax, 0x3e8
cdq
idiv dword [esi + 0x90]
mov ecx, dword [esi + 0x70]
mov dword [esi + 8], ecx
mov dword [esi + 0x20], eax
lea eax, [esi + 8]
mov dword [ebp - 0x20], eax
mov eax, dword [esi + 0x376c]
mov dword [esi + 0xc], eax
mov eax, dword [ebp - 4]
cmp eax, 0x44d
jne 0x410b25
mov dword [esi + 0x1c], 0x1f40
jmp 0x410b3c
cmp eax, 0x44e
jne 0x410b35
mov dword [esi + 0x1c], 0x2ee0
jmp 0x410b3c
mov dword [esi + 0x1c], 0x3e80
mov eax, dword [esi + 0x378c]
lea ecx, [eax - 0x3e9]
neg ecx
sbb ecx, ecx
and ecx, 0xffffe0c0
add ecx, 0x3e80
mov dword [esi + 0x18], ecx
mov dword [esi + 0x14], 0x3e80
cmp eax, 0x3e8
jne 0x410bc4
cmp dword [ebp - 0x24], 0x32
mov eax, dword [ebp - 0x28]
jle 0x410b83
lea ecx, [eax + eax]
mov eax, 0x55555556
imul ecx
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp eax, 0x1f40
jge 0x410ba4
mov ecx, dword [esi + 0x1c]
mov dword [esi + 0x14], 0x2ee0
cmp ecx, 0x2ee0
jle 0x410ba1
mov ecx, 0x2ee0
mov dword [esi + 0x1c], ecx
cmp eax, 0x1b58
jge 0x410bc4
mov eax, dword [esi + 0x1c]
mov dword [esi + 0x14], 0x1f40
cmp eax, 0x1f40
jle 0x410bc1
mov eax, 0x1f40
mov dword [esi + 0x1c], eax
mov ecx, dword [esi + 0x94]
mov eax, dword [ebp - 0xc]
xor edx, edx
test ecx, ecx
sete dl
cmp dword [ebp - 0x14], 0
lea eax, [eax*8 - 8]
mov dword [esi + 0x40], eax
mov dword [esi + 0x3c], edx
je 0x410c0d
mov edi, dword [ebp - 0x18]
cmp edi, 2
jl 0x410c0d
add edi, edi
add edi, edi
add edi, edi
sub eax, edi
dec eax
cmp dword [esi + 0x378c], 0x3e9
mov dword [esi + 0x40], eax
jne 0x410c0d
add eax, 0xffffffec
mov dword [esi + 0x40], eax
test edx, edx
je 0x410c36
cmp dword [esi + 0x378c], 0x3e9
jne 0x410c81
mov eax, dword [esi + 0x24]
imul eax, dword [ebp + 0x10]
cdq
idiv dword [esi + 0x90]
mov ecx, dword [esi + 0x40]
cmp ecx, eax
jge 0x410c7e
mov eax, ecx
jmp 0x410c7e
cmp dword [esi + 0x378c], 0x3e9
jne 0x410c81
mov edx, dword [ebp + 0x10]
mov eax, dword [esi + 0x376c]
imul edx, edx, 0x32
mov edi, dword [esi + 0x90]
push eax
xor eax, eax
cmp edi, edx
sete al
push ecx
mov ecx, dword [ebp - 4]
push eax
mov eax, dword [esi + 0x40]
imul eax, edi
cdq
idiv dword [ebp + 0x10]
push ecx
mov ecx, dword [esi + 0x34]
call fcn.0040f1e0
imul eax, dword [ebp + 0x10]
cdq
add esp, 0x10
idiv edi
mov dword [esi + 0x40], eax
cmp dword [ebp - 0x60], 0
movss xmm1, dword [0x451320]
je 0x410dd0
mov ecx, dword [esi + 0x90]
mov edi, dword [esi + 0xac]
sub edi, dword [esi + 0x74]
mov eax, 0x51eb851f
imul ecx
movss xmm0, dword [0x451430]
sar edx, 7
push ecx
mov ecx, dword [ebp - 0x54]
mov eax, edx
shr eax, 0x1f
add eax, edx
mov edx, dword [esi + 0x70]
mov dword [ebp - 0x6c], 0
mov ecx, dword [ecx + 0x3c]
push ecx
sub edi, eax
push edx
imul edi, edx
mov edx, dword [ebp - 0x54]
push eax
mov eax, dword [edx + 4]
push eax
sub esp, 8
movss dword [esp + 4], xmm0
lea esi, [esi + edi*4 + 0x37c4]
movss dword [esp], xmm5
push esi
call fcn.0040dd80
mov esi, dword [ebp + 8]
lea ecx, [edi*4]
push ecx
lea eax, [esi + 0x37c4]
push 0
push eax
call sub.MSVCR80.DLL_memset
mov edx, dword [esi + 0xac]
imul edx, dword [esi + 0x70]
add esp, 0x2c
xor eax, eax
test edx, edx
jle 0x410d98
movss xmm4, dword [0x451308]
movsd xmm3, qword [0x451310]
movss xmm1, dword [0x451320]
movsd xmm2, qword [0x451318]
mov edx, dword [ebp - 0x1c]
lea ecx, [esi + 0x37c4]
jmp 0x410d50
movss xmm0, dword [ecx]
cvtps2pd xmm0, xmm0
mulsd xmm0, xmm2
cvtpd2ps xmm0, xmm0
comiss xmm0, xmm1
ja 0x410d67
movaps xmm0, xmm1
xorps xmm5, xmm5
cvtss2sd xmm5, xmm0
comisd xmm3, xmm5
ja 0x410d77
movaps xmm0, xmm4
xorps xmm5, xmm5
movss xmm5, xmm0
cvtss2si edi, xmm5
mov word [edx + eax*2], di
mov edi, dword [esi + 0xac]
imul edi, dword [esi + 0x70]
inc eax
add ecx, 4
cmp eax, edi
jl 0x410d50
mov eax, dword [ebp + 0x18]
mov ecx, dword [ebp - 0x60]
push eax
mov eax, dword [esi + 0xac]
push ecx
mov ecx, dword [ebp - 0x1c]
lea edx, [ebp - 0x6c]
push edx
mov edx, dword [ebp - 0x20]
push 0
push eax
mov eax, dword [ebp - 0x64]
push ecx
push edx
push eax
call fcn.00424e80
movss xmm1, dword [0x451320]
add esp, 0x20
mov dword [esi + 0x48], 0
mov ecx, dword [esi + 0x70]
imul ecx, dword [ebp + 0x10]
mov edi, dword [ebp - 0x40]
xor eax, eax
test ecx, ecx
jle 0x410e43
mov edx, dword [esi + 0x70]
imul edx, dword [ebp - 0x44]
mov ecx, dword [ebp - 0x10]
add edx, eax
movss xmm0, dword [ecx + edx*4]
cvtps2pd xmm0, xmm0
mulsd xmm0, qword [0x451318]
cvtpd2ps xmm0, xmm0
comiss xmm0, xmm1
ja 0x410e08
movaps xmm0, xmm1
movsd xmm3, qword [0x451310]
xorps xmm2, xmm2
cvtss2sd xmm2, xmm0
comisd xmm3, xmm2
ja 0x410e25
movss xmm0, dword [0x451308]
mov ecx, dword [ebp - 0x1c]
xorps xmm2, xmm2
movss xmm2, xmm0
cvtss2si edx, xmm2
mov word [ecx + eax*2], dx
mov edx, dword [esi + 0x70]
imul edx, dword [ebp + 0x10]
inc eax
cmp eax, edx
jl 0x410de0
mov eax, dword [ebp + 0x18]
push eax
mov eax, dword [ebp + 0x10]
push 0
lea ecx, [ebp - 0x78]
push ecx
mov ecx, dword [ebp - 0x1c]
lea edx, [ebp - 0xa8]
push edx
mov edx, dword [ebp - 0x20]
push eax
mov eax, dword [ebp - 0x64]
push ecx
push edx
push eax
call fcn.00424e80
add esp, 0x20
mov dword [ebp - 0x1c], eax
test eax, eax
jne 0x411a70
cmp dword [esi + 0x378c], 0x3e8
jne 0x410eb4
mov eax, dword [esi + 0x50]
cmp eax, 0x1f40
jne 0x410e96
mov dword [ebp - 4], 0x44d
jmp 0x410eb4
cmp eax, 0x2ee0
jne 0x410ea6
mov dword [ebp - 4], 0x44e
jmp 0x410eb4
cmp eax, 0x3e80
jne 0x410eb4
mov dword [ebp - 4], 0x44f
cmp dword [esi + 0x60], 0
je 0x410eca
cmp dword [esi + 0x46d0], 0
jne 0x410eca
mov eax, 1
jmp 0x410ecc
xor eax, eax
cmp dword [ebp - 0x78], 0
mov dword [esi + 0x48], eax
jne 0x410f1a
mov eax, dword [esi + 0x90]
cdq
idiv dword [ebp + 0x10]
mov ecx, dword [esi + 0x376c]
push ecx
mov ecx, dword [ebp - 4]
mov dword [esi + 0x46d4], 0
mov esi, dword [esi + 0x378c]
mov edx, eax
call fcn.0040c8f0
mov edx, dword [ebp + 0x14]
mov byte [edx - 1], al
add esp, 4
mov eax, 1
lea esp, [ebp - 0x174]
pop edi
pop esi
mov esp, ebp
pop ebp
ret
test eax, eax
je 0x410f5c
mov eax, dword [ebp - 0x24]
mov ecx, dword [esi + 0xa0]
mov edx, dword [ebp - 0xc]
mov edi, dword [esi + 0x376c]
push eax
push ecx
push edx
call fcn.0040f630
xor ecx, ecx
add esp, 0xc
test eax, eax
setne cl
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x38], 0
mov dword [esi + 0x37a4], 1
mov dword [ebp - 0x14], ecx
mov edi, dword [ebp - 0x40]
mov ecx, dword [ebp - 4]
add ecx, 0xfffffbb3
mov eax, 0x15
cmp ecx, 4
ja case.0x410f6f.1105
jmp dword [ecx*4 + 0x411a84]
mov eax, 0xd
jmp case.0x410f6f.1105
mov eax, 0x11
jmp case.0x410f6f.1105
mov eax, 0x13
push eax
push 0x271c
push edi
call fcn.00424270
mov edx, dword [esi + 0x376c]
push edx
push 0x2718
push edi
call fcn.00424270
push 0xffffffffffffffff
push 0xfa2
push edi
call fcn.00424270
add esp, 0x24
cmp dword [esi + 0x378c], 0x3e8
je 0x411080
movss xmm0, dword [0x4514b8]
push 0
push 0xfa6
push edi
movss dword [ebp + 0x18], xmm0
call fcn.00424270
add esp, 0xc
cmp dword [esi + 0x4c], 0
je 0x410fef
xorps xmm0, xmm0
jmp 0x410ff4
movss xmm0, dword [ebp + 0x18]
cvttss2si eax, xmm0
push eax
push 0x2712
push edi
call fcn.00424270
add esp, 0xc
cmp dword [esi + 0x378c], 0x3e9
jne 0x411043
cmp dword [esi + 0x94], 0
je 0x411080
mov ecx, dword [esi + 0xa0]
sub ecx, dword [esi + 0x24]
push ecx
push 0xfa2
push edi
call fcn.00424270
push 0
push 0xfb4
push edi
call fcn.00424270
add esp, 0x18
jmp 0x411080
cmp dword [esi + 0x94], 0
je 0x411080
push 1
push 0xfa6
push edi
call fcn.00424270
mov edx, dword [esi + 0x98]
push edx
push 0xfb4
push edi
call fcn.00424270
mov eax, dword [esi + 0xa0]
push eax
push 0xfa2
push edi
call fcn.00424270
add esp, 0x24
mov ecx, dword [esi + 0x70]
imul ecx, dword [esi + 0x90]
mov eax, 0x51eb851f
imul ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add eax, edx
add eax, eax
add eax, eax
mov dword [ebp + 0x18], eax
call fcn.00426570
mov eax, dword [esi + 0x378c]
mov dword [ebp - 0x28], esp
cmp eax, 0x3e8
je 0x411101
mov ecx, dword [esi + 0x3790]
cmp eax, ecx
je 0x411101
test ecx, ecx
jle 0x411101
mov ecx, dword [ebp + 0x18]
mov eax, 0x51eb851f
imul dword [esi + 0x90]
sar edx, 7
push ecx
mov ecx, dword [esi + 0xac]
mov eax, edx
shr eax, 0x1f
add eax, edx
sub ecx, eax
sub ecx, dword [ebp - 0x44]
mov eax, dword [ebp - 0x28]
imul ecx, dword [esi + 0x70]
lea edx, [esi + ecx*4 + 0x37c4]
push edx
push eax
call sub.MSVCR80.DLL_memcpy
add esp, 0xc
mov edx, dword [esi + 0xac]
mov ecx, dword [esi + 0x70]
mov eax, edx
sub eax, dword [ebp - 0x44]
sub eax, dword [ebp + 0x10]
imul eax, ecx
test eax, eax
jle 0x41116d
imul ecx, dword [ebp + 0x10]
lea edx, [eax*4]
push edx
lea eax, [esi + ecx*4 + 0x37c4]
push eax
lea ecx, [esi + 0x37c4]
push ecx
call dword [sym.imp.MSVCR80.DLL_memmove]
mov eax, dword [esi + 0x70]
mov ecx, dword [ebp - 0x58]
imul ecx, eax
mov edx, dword [ebp - 0x10]
add ecx, ecx
add ecx, ecx
push ecx
mov ecx, dword [esi + 0xac]
sub ecx, dword [ebp - 0x44]
push edx
sub ecx, dword [ebp + 0x10]
imul ecx, eax
lea edx, [esi + ecx*4 + 0x37c4]
push edx
call sub.MSVCR80.DLL_memcpy
add esp, 0x18
jmp 0x411198
mov eax, edx
imul eax, ecx
add eax, eax
add eax, eax
push eax
mov eax, dword [ebp - 0x44]
sub eax, edx
add eax, dword [ebp + 0x10]
imul eax, ecx
mov ecx, dword [ebp - 0x10]
lea edx, [ecx + eax*4]
push edx
lea eax, [esi + 0x37c4]
push eax
call sub.MSVCR80.DLL_memcpy
add esp, 0xc
movss xmm0, dword [esi + 0x3778]
movss xmm1, dword [0x451430]
comiss xmm1, xmm0
movss xmm6, dword [ebp - 0x30]
ja 0x4111b7
comiss xmm1, xmm6
jbe 0x4111f1
mov ecx, dword [esi + 0x90]
mov eax, dword [ebp - 0x54]
mov edx, dword [eax + 0x3c]
mov eax, dword [eax + 4]
push ecx
mov ecx, dword [esi + 0x70]
mov esi, dword [ebp - 0x10]
push edx
mov edx, dword [ebp + 0x10]
push ecx
push edx
push eax
sub esp, 8
movss dword [esp + 4], xmm6
movss dword [esp], xmm0
push esi
call fcn.0040dd80
mov esi, dword [ebp + 8]
mov edi, dword [ebp - 0x40]
add esp, 0x20
cmp dword [esi + 0x378c], 0x3e9
movss dword [esi + 0x3778], xmm6
jne 0x41120e
cmp dword [esi + 0x376c], 1
jne 0x41124d
mov ecx, dword [ebp - 8]
cmp ecx, 0x7d00
jle 0x411222
mov dword [esi + 0x5c], 0x4000
jmp 0x41124d
cmp ecx, 0x3e80
jge 0x411233
mov dword [esi + 0x5c], 0
jmp 0x41124d
lea eax, [ecx - 0x7d00]
shl eax, 0xb
cdq
add ecx, 0xffffc950
idiv ecx
add eax, 0x4000
mov dword [esi + 0x5c], eax
cmp dword [esi + 0x37ac], 0
jne 0x4112e9
cmp dword [esi + 0x70], 2
jne 0x4112e9
movzx ecx, word [esi + 0x3770]
mov edx, 0x4000
cmp cx, dx
jl 0x41127a
cmp dword [esi + 0x5c], edx
jge 0x4112e9
mov eax, dword [esi + 0x90]
movd xmm0, dword [esi + 0x5c]
mov edi, dword [ebp - 0x10]
push eax
mov eax, dword [ebp - 0x54]
mov edx, dword [eax + 0x3c]
mov eax, dword [eax + 4]
push edx
mov edx, dword [ebp + 0x10]
xorps xmm1, xmm1
push edx
push eax
cvtdq2ps xmm0, xmm0
cvtss2sd xmm1, xmm0
mulsd xmm1, qword [0x4514b0]
cvtpd2ps xmm1, xmm1
push ecx
movss dword [esp], xmm1
movsx ecx, cx
xorps xmm1, xmm1
cvtsi2ss xmm1, ecx
cvtps2pd xmm1, xmm1
mulsd xmm1, qword [0x4514b0]
push edi
mov eax, 2
cvtpd2ps xmm0, xmm1
call fcn.0040d520
mov dx, word [esi + 0x5c]
mov edi, dword [ebp - 0x40]
add esp, 0x18
mov word [esi + 0x3770], dx
mov eax, dword [esi + 0x378c]
mov ecx, dword [ebp - 0x94]
cmp eax, 0x3ea
je 0x411415
bsr edx, dword [ebp - 0x8c]
mov dword [ebp + 0x18], edx
xor edx, edx
cmp eax, 0x3e9
sete dl
mov eax, edx
lea eax, [eax + eax*4]
add eax, eax
add eax, eax
sub eax, dword [ebp + 0x18]
lea edx, [eax + ecx + 0x10]
mov eax, dword [ebp - 0xc]
lea eax, [eax*8 - 8]
cmp edx, eax
jg 0x411415
cmp dword [esi + 0x378c], 0x3e9
jne 0x41135d
mov ecx, dword [ebp - 0x14]
push 0xc
push ecx
lea edx, [ebp - 0xa8]
push edx
call fcn.00424a90
mov ecx, dword [ebp - 0x94]
add esp, 0xc
xor eax, eax
cmp dword [ebp - 0x14], eax
je 0x41141a
mov eax, dword [ebp - 0x38]
push 1
push eax
lea ecx, [ebp - 0xa8]
push ecx
call fcn.00424a90
mov ecx, dword [ebp - 0x94]
add esp, 0xc
cmp dword [esi + 0x378c], 0x3e9
jne 0x4113a3
bsr edx, dword [ebp - 0x8c]
mov dword [ebp + 0x18], edx
mov edx, ecx
sub edx, dword [ebp + 0x18]
add edx, 0x11
jmp 0x4113b4
bsr eax, dword [ebp - 0x8c]
mov edx, ecx
sub edx, eax
mov dword [ebp + 0x18], eax
add edx, 6
mov eax, dword [ebp - 0xc]
sar edx, 3
sub eax, edx
mov edx, dword [ebp - 0x18]
dec eax
cmp eax, edx
jge 0x4113c9
mov dword [ebp - 0x18], eax
mov edx, eax
cmp edx, 2
jl 0x4113df
cmp edx, 0x101
jle 0x4113e6
mov dword [ebp - 0x18], 0x101
jmp 0x4113e6
mov dword [ebp - 0x18], 2
cmp dword [esi + 0x378c], 0x3e9
jne 0x411423
mov eax, dword [ebp - 0x18]
push 0x100
add eax, 0xfffffffe
push eax
lea ecx, [ebp - 0xa8]
push ecx
call fcn.00424d90
mov ecx, dword [ebp - 0x94]
add esp, 0xc
jmp 0x411423
xor eax, eax
mov dword [ebp - 0x14], eax
mov dword [esi + 0x37a4], eax
mov dword [ebp - 0x18], eax
mov eax, dword [esi + 0x378c]
cmp eax, 0x3ea
je 0x411437
mov dword [ebp - 0x34], 0x11
cmp eax, 0x3e8
jne 0x41146a
bsr edx, dword [ebp - 0x8c]
sub ecx, edx
add ecx, 6
lea eax, [ebp - 0xa8]
sar ecx, 3
push eax
mov dword [ebp + 0x18], edx
mov dword [ebp - 0x1c], ecx
call fcn.00424c50
mov ecx, dword [ebp - 0x1c]
add esp, 4
mov dword [ebp - 8], ecx
jmp 0x411484
mov eax, dword [ebp - 0xc]
sub eax, dword [ebp - 0x18]
lea edx, [ebp - 0xa8]
dec eax
push eax
push edx
mov dword [ebp - 8], eax
call fcn.00424c20
add esp, 8
cmp dword [ebp - 0x14], 0
jne 0x411496
cmp dword [esi + 0x378c], 0x3e8
je 0x4114ab
lea eax, [ebp - 0x108]
push eax
push 0x2726
push edi
call fcn.00424270
add esp, 0xc
cmp dword [esi + 0x378c], 0x3e9
jne 0x4114d5
mov ecx, dword [esi + 0x64]
mov edx, dword [esi + 0x68]
lea eax, [ebp - 0x5c]
push eax
push 0x272c
push edi
mov dword [ebp - 0x5c], ecx
mov dword [ebp - 0x58], edx
call fcn.00424270
add esp, 0xc
cmp dword [ebp - 0x14], 0
je 0x411565
cmp dword [ebp - 0x38], 0
je 0x411565
push 0
push 0x271a
push edi
call fcn.00424270
push 0
push 0xfa6
push edi
call fcn.00424270
push 0xffffffffffffffff
push 0xfa2
push edi
call fcn.00424270
mov ecx, dword [ebp - 0x18]
mov edx, dword [ebp - 8]
add edx, dword [ebp + 0x14]
push 0
push ecx
push edx
mov eax, 0x51eb851f
imul dword [esi + 0x90]
sar edx, 6
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
mov edx, dword [ebp - 0x10]
push ecx
push edx
push edi
call fcn.004218b0
add esp, 0x3c
test eax, eax
js 0x411a70
lea eax, [ebp - 0x70]
push eax
push 0xfbf
push edi
call fcn.00424270
push 0xfbc
push edi
call fcn.00424270
add esp, 0x14
mov ecx, dword [ebp - 0x34]
push ecx
push 0x271a
push edi
call fcn.00424270
mov eax, dword [esi + 0x378c]
add esp, 0xc
cmp eax, 0x3e8
je 0x4116b9
mov ecx, dword [esi + 0x3790]
cmp eax, ecx
je 0x4115d9
test ecx, ecx
jle 0x4115d9
push 0xfbc
push edi
call fcn.00424270
mov ecx, dword [ebp - 0x28]
push 0
push 2
lea edx, [ebp + 0x18]
push edx
mov eax, 0x51eb851f
imul dword [esi + 0x90]
sar edx, 7
mov eax, edx
shr eax, 0x1f
add eax, edx
push eax
push ecx
push edi
call fcn.004218b0
push 0
push 0x2712
push edi
call fcn.00424270
add esp, 0x2c
bsr edx, dword [ebp - 0x8c]
mov eax, dword [ebp - 0x94]
mov ecx, dword [ebp - 8]
sub eax, edx
mov dword [ebp + 0x18], edx
dec eax
lea edx, [ecx*8]
cmp eax, edx
jg 0x4116b9
cmp dword [ebp - 0x14], 0
je 0x411637
cmp dword [ebp - 0x38], 0
je 0x411637
cmp dword [esi + 0x378c], 0x3e9
jne 0x411637
cmp dword [esi + 0x94], 0
je 0x411637
mov eax, dword [esi + 0xa0]
sub eax, dword [esi + 0x24]
push eax
push 0xfa2
push edi
call fcn.00424270
add esp, 0xc
mov ecx, dword [esi + 0x94]
push ecx
push 0xfa6
push edi
call fcn.00424270
mov eax, dword [ebp - 8]
mov ecx, dword [ebp + 0x10]
lea edx, [ebp - 0xa8]
push edx
mov edx, dword [ebp - 0x10]
push eax
push 0
push ecx
push edx
push edi
call fcn.004218b0
add esp, 0x24
mov dword [ebp - 0x1c], eax
test eax, eax
js 0x411a70
cmp dword [ebp - 0x14], 0
je 0x4117c8
cmp dword [ebp - 0x38], 0
je 0x4116b9
cmp dword [esi + 0x378c], 0x3e9
jne 0x4116b9
cmp dword [esi + 0x94], 0
je 0x4116b9
mov eax, dword [ebp - 0x18]
mov ecx, dword [ebp - 8]
mov edx, dword [ebp - 0x1c]
push eax
mov eax, dword [ebp + 0x14]
add ecx, eax
push ecx
add edx, eax
push edx
call dword [sym.imp.MSVCR80.DLL_memmove]
mov eax, dword [ebp - 0x18]
add esp, 0xc
add dword [ebp - 8], eax
cmp dword [ebp - 0x14], 0
je 0x4117c8
cmp dword [ebp - 0x38], 0
jne 0x4117c8
mov ecx, dword [esi + 0x90]
mov eax, 0x51eb851f
imul ecx
sar edx, 6
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [ebp - 0x34], eax
mov eax, 0x51eb851f
imul ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add eax, edx
push 0xfbc
push edi
mov dword [ebp - 0x58], eax
call fcn.00424270
push 0
push 0x271a
push edi
call fcn.00424270
push 0
push 0x2712
push edi
call fcn.00424270
push 0
push 0xfa6
push edi
call fcn.00424270
push 0xffffffffffffffff
push 0xfa2
push edi
call fcn.00424270
add esp, 0x38
cmp dword [esi + 0x378c], 0x3e9
jne 0x41175f
mov eax, dword [ebp - 0x1c]
push eax
lea ecx, [ebp - 0xa8]
push ecx
mov dword [ebp - 8], eax
call fcn.00424c20
add esp, 8
mov eax, dword [ebp - 0x58]
mov ecx, dword [ebp + 0x10]
sub ecx, eax
sub ecx, dword [ebp - 0x34]
push 0
imul ecx, dword [esi + 0x70]
push 2
lea edx, [ebp + 0x18]
push edx
mov edx, dword [ebp - 0x10]
push eax
lea eax, [edx + ecx*4]
push eax
push edi
call fcn.004218b0
mov ecx, dword [ebp - 0x18]
mov eax, dword [ebp - 0x34]
mov edx, dword [ebp - 8]
add edx, dword [ebp + 0x14]
push 0
push ecx
mov ecx, dword [ebp + 0x10]
sub ecx, eax
imul ecx, dword [esi + 0x70]
push edx
mov edx, dword [ebp - 0x10]
push eax
lea eax, [edx + ecx*4]
push eax
push edi
call fcn.004218b0
add esp, 0x30
test eax, eax
js 0x411a70
lea ecx, [ebp - 0x70]
push ecx
push 0xfbf
push edi
call fcn.00424270
add esp, 0xc
mov edx, dword [esi + 0x376c]
mov eax, dword [esi + 0x90]
push edx
cdq
idiv dword [ebp + 0x10]
mov edi, dword [ebp + 0x14]
mov ecx, dword [ebp - 4]
mov esi, dword [esi + 0x378c]
dec edi
mov dword [ebp + 0x14], edi
mov edx, eax
call fcn.0040c8f0
mov byte [edi], al
mov eax, dword [ebp - 0x8c]
xor eax, dword [ebp - 0x70]
mov edi, dword [ebp + 8]
xor edx, edx
add esp, 4
mov dword [edi + 0x46d4], eax
cmp dword [ebp - 0x68], edx
je 0x41181a
mov dword [edi + 0x3790], 0x3ea
jmp 0x411826
mov ecx, dword [edi + 0x378c]
mov dword [edi + 0x3790], ecx
mov eax, dword [edi + 0x376c]
mov ecx, dword [ebp + 0x10]
mov dword [edi + 0x3794], eax
mov dword [edi + 0x3798], ecx
mov dword [edi + 0x37a8], edx
cmp dword [edi + 0xb8], edx
je 0x4118de
cmp dword [ebp - 0x108], edx
jne 0x41185e
cmp dword [ebp - 0x2c], edx
je 0x4118de
mov edx, dword [ebp - 0x2c]
mov eax, dword [edi + 0x70]
movss xmm0, dword [edi + 0x46cc]
push edx
mov edx, dword [ebp + 0xc]
push eax
mov eax, dword [edi + 0xb4]
push edx
push ecx
movss dword [esp], xmm0
movss xmm0, dword [ebp - 0xe4]
lea esi, [edi + 0x46c8]
call fcn.0040f3b0
add esp, 0x10
test eax, eax
je 0x4118dc
mov eax, dword [edi + 0x376c]
push eax
mov eax, dword [edi + 0x90]
cdq
idiv dword [ebp + 0x10]
mov ecx, dword [ebp - 4]
mov esi, dword [edi + 0x378c]
mov dword [edi + 0x46d4], 0
mov edx, eax
call fcn.0040c8f0
mov ecx, dword [ebp + 0x14]
mov byte [ecx], al
add esp, 4
mov eax, 1
lea esp, [ebp - 0x174]
pop edi
pop esi
mov esp, ebp
pop ebp
ret
xor edx, edx
bsr ecx, dword [ebp - 0x8c]
mov eax, dword [ebp - 0x94]
mov esi, dword [ebp - 0xc]
sub eax, ecx
mov dword [ebp + 0x10], ecx
dec eax
lea ecx, [esi*8 - 8]
cmp eax, ecx
jle 0x41191b
cmp esi, 2
jl 0x40f748
mov eax, dword [ebp + 0x14]
mov byte [eax + 1], dl
mov eax, 1
mov dword [edi + 0x46d4], edx
jmp 0x41194b
cmp dword [edi + 0x378c], 0x3e8
jne 0x411948
cmp dword [ebp - 0x14], edx
jne 0x411948
cmp dword [ebp - 0x1c], 2
jle 0x411948
mov ecx, dword [ebp - 0x1c]
mov eax, dword [ebp + 0x14]
cmp byte [ecx + eax], dl
jne 0x411948
mov eax, ecx
dec eax
mov dword [ebp - 0x1c], eax
cmp eax, 2
jg 0x411932
mov eax, dword [ebp - 0x1c]
mov ecx, dword [ebp - 0x18]
lea eax, [eax + ecx + 1]
cmp dword [edi + 0x94], edx
jne 0x411972
mov edx, dword [ebp + 0x14]
push esi
push eax
push edx
call fcn.00416780
add esp, 0xc
test eax, eax
jne 0x411a70
mov eax, esi
lea esp, [ebp - 0x174]
pop edi
pop esi
mov esp, ebp
pop ebp
ret
cmp esi, 0x10
jg 0x40fb5c
cmp dword [ebp + 0x18], 1
je 0x4119b8
cmp ecx, 0x3e8
jne 0x41199a
cmp esi, 0xa
jne 0x4119b8
mov eax, 0x32
cdq
idiv esi
mov dword [ebp - 0x24], 0x32
mov dword [ebp - 0x2c], 3
mov dword [ebp - 0x34], eax
jmp 0x40fb59
xor eax, eax
cmp esi, 0xc
setle al
sub esi, 0xc
neg esi
sbb esi, esi
and esi, 0xfffffff7
add esi, 0x19
mov dword [ebp + 8], 0x3e8
mov dword [ebp - 0x2c], eax
mov dword [ebp - 0x24], esi
jmp 0x40fb68
cmp ecx, 0x3ea
jne 0x4119f9
cmp dword [ebp + 0x10], 0x44e
jne 0x411a0e
mov dword [ebp + 0x10], 0x44d
jmp 0x411a0e
cmp ecx, 0x3e9
jne 0x411a0e
mov eax, 0x450
cmp dword [ebp + 0x10], eax
jg 0x411a0e
mov dword [ebp + 0x10], eax
mov eax, dword [edi + 0x376c]
mov ecx, dword [ebp + 0x10]
mov edx, esi
mov esi, dword [ebp + 8]
push eax
call fcn.0040c8f0
mov ecx, dword [ebp - 0x2c]
mov esi, dword [ebp + 0x14]
or al, cl
mov byte [esi], al
xor eax, eax
add esp, 4
cmp ecx, 1
setg al
inc eax
cmp dword [ebp - 0xc], eax
jg 0x411a40
mov dword [ebp - 0xc], eax
cmp ecx, 3
jne 0x411a4b
mov cl, byte [ebp - 0x34]
mov byte [esi + 1], cl
cmp dword [edi + 0x94], 0
jne 0x411972
mov edi, dword [ebp - 0xc]
push edi
push eax
push esi
call fcn.00416780
add esp, 0xc
test eax, eax
mov eax, edi
je 0x411972
mov eax, 0xfffffffd
lea esp, [ebp - 0x174]
pop edi
pop esi
mov esp, ebp
pop ebp
ret