Function at 0x40b840
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0x18c
mov dword [ebp - 0x60], 0xf
mov ebx, dword [ebp + 8]
mov dword [ebp - 0x5c], 0
cmp dword [ebp + 0x18], 1
mov dword [ebp - 0x58], 0
mov ebx, dword [ebx + 8]
mov dword [ebp - 0xb4], ebx
mov ebx, dword [ebp + 8]
mov ebx, dword [ebx + 0xc]
mov dword [ebp - 0xa4], ebx
jle 0x40b8c1
mov eax, dword [ebp + 0xc]
test eax, eax
je 0x40b8c1
mov ebx, dword [ebp + 8]
mov eax, dword [ebp + 0x10]
mov edx, dword [ebx]
imul eax, dword [ebx + 0x20]
mov esi, dword [edx + 0x24]
test esi, esi
js 0x40b8c1
mov ebx, dword [edx + 0x2c]
cmp eax, ebx
je 0x40e654
mov dword [ebp - 0x8c], 0
xor ecx, ecx
jmp 0x40b8ba
mov edi, ebx
shl edi, cl
cmp edi, eax
je 0x40b8d9
add ecx, 1
cmp ecx, esi
jle 0x40b8b2
mov dword [ebp - 0xa8], 0xffffffff
mov eax, dword [ebp - 0xa8]
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret
mov dword [ebp - 0xc0], 1
shl dword [ebp - 0xc0], cl
cmp ecx, 1
mov dword [ebp - 0x8c], ecx
mov byte [ebp - 0xf7], 1
setg byte [ebp - 0x73]
mov esi, dword [ebp + 8]
imul ebx, dword [ebp - 0xc0]
mov ecx, dword [ebp - 0xb4]
mov dword [ebp - 0x9c], ebx
mov ebx, dword [esi + 4]
imul ecx, ebx
add ebx, 0x400
imul ebx, dword [ebp - 0xb4]
lea ecx, [esi + ecx*4 + 0x90]
mov dword [ebp - 0x78], ecx
mov ecx, dword [ebp - 0xb4]
lea ebx, [esi + ebx*4 + 0x90]
mov dword [ebp - 0xc8], ebx
imul ecx, dword [edx + 8]
lea ebx, [ebx + ecx*4]
mov dword [ebp - 0xfc], ebx
mov ebx, dword [ebp - 0xc8]
lea ecx, [ebx + ecx*8]
mov dword [ebp - 0x10c], ecx
mov ecx, dword [ebp + 0x1c]
test ecx, ecx
je 0x40e63e
mov ebx, dword [ebp + 0x1c]
bsr ecx, dword [ebx + 0x1c]
mov ebx, dword [ebx + 0x14]
xor ecx, 0x1f
lea ebx, [ecx + ebx - 0x20]
mov dword [ebp - 0x7c], ebx
add ebx, 4
sar ebx, 3
mov dword [ebp - 0xd0], ebx
cmp dword [ebp + 0x18], 0x4fb
mov edi, 0x4fb
mov ebx, dword [ebp + 8]
cmovle edi, dword [ebp + 0x18]
mov dword [ebp - 0xa8], edi
sub edi, dword [ebp - 0xd0]
mov dword [ebp - 0xb8], edi
mov edi, dword [ebx + 0x30]
test edi, edi
je 0x40bbd3
mov ebx, dword [ebx + 0x2c]
cmp ebx, 0xffffffff
je 0x40df2d
mov edx, dword [edx]
imul eax, ebx
mov ebx, dword [ebp + 0x1c]
mov ecx, edx
sar edx, 4
add eax, edx
sar ecx, 3
mov edx, eax
sar edx, 0x1f
idiv ecx
mov dword [ebp - 0xd8], eax
sar eax, 6
test ebx, ebx
mov dword [ebp - 0xe0], eax
jne 0x40bc4e
mov eax, dword [ebp - 0xa8]
lea ebx, [ebp - 0x48]
mov dword [esp + 8], eax
mov eax, dword [ebp + 0x14]
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.0041e350
mov ecx, dword [ebp - 0xd8]
mov dword [ebp + 0x1c], ebx
test ecx, ecx
jg 0x40bc5c
mov ebx, dword [ebp + 8]
mov ecx, 0x10
mov dword [ebp - 0x124], esp
mov eax, dword [ebp - 0xa8]
mov esi, dword [ebp - 0x9c]
mov edx, dword [ebx]
shl eax, 3
mov edi, dword [ebx + 4]
mov dword [ebp - 0xe4], eax
mov eax, dword [ebx + 0x28]
mov edx, dword [edx + 0xc]
cmp edx, eax
cmovle eax, edx
add esi, edi
mov dword [ebp - 0x90], eax
mov eax, dword [ebp - 0xb4]
imul eax, esi
lea eax, [eax*4 + 0x12]
and eax, 0xfffffff0
call fcn.00443b10
xor edx, edx
sub esp, eax
mov eax, dword [ebp - 0x9c]
lea ebx, [esp + 0x50]
mov dword [ebp - 0xc4], esp
mov dword [ebp - 0x88], ebx
add eax, 0x400
mov dword [ebp - 0x98], eax
imul eax, dword [ebp - 0xb4]
lea eax, [eax*4 + 0x12]
div ecx
shl eax, 4
call fcn.00443b10
mov ebx, dword [ebp - 0x98]
sub esp, eax
mov dword [ebp - 0xbc], 1
lea eax, [esp + 0x50]
mov edx, dword [ebp + 8]
mov dword [ebp - 0x50], eax
lea eax, [eax + ebx*4]
mov ebx, dword [ebp - 0xb4]
mov dword [ebp - 0x4c], eax
mov eax, dword [ebp - 0x9c]
shl ebx, 2
mov dword [ebp - 0xac], ebx
mov ebx, dword [ebp + 0xc]
shl eax, 2
mov dword [ebp - 0xb0], eax
mov eax, esi
mov dword [ebp - 0xa0], ebx
mov ebx, dword [ebp - 0x78]
mov dword [ebp - 0x94], ebx
xor ebx, ebx
imul eax, ebx
mov esi, dword [ebp - 0xa0]
add edi, eax
mov eax, dword [ebp - 0x88]
lea edi, [eax + edi*4]
mov eax, dword [ebp - 0x9c]
mov dword [ebp - 0x80], edi
test eax, eax
jle 0x40bce0
mov ecx, dword [edx + 0x20]
xor edi, edi
mov eax, dword [edx]
fld dword [edx + ebx*4 + 0x70]
mov dword [ebp - 0x84], ecx
xor ecx, ecx
cmp dword [edx + 0x14], 0
jne 0x40db49
fldz
mov dword [ebp - 0xcc], edx
jmp 0x40bbad
fstp st(1)
mov edx, dword [ebp - 0x80]
fadd st(2), st(0)
fxch st(2)
fst dword [edx + ecx*4]
mov edx, dword [ebp - 0xcc]
fld dword [eax + 0x14]
fmul st(1)
fxch st(3)
fmul dword [eax + 0x10]
fsubp st(3)
fxch st(2)
fst dword [edx + ebx*4 + 0x70]
mov edx, dword [ebp - 0xbc]
test edx, edx
je 0x40bb98
fldz
xor edx, edx
fcompi st(3)
fstp st(2)
fxch st(1)
sete dl
mov dword [ebp - 0xbc], edx
jmp 0x40bb9c
fstp st(2)
fxch st(1)
add ecx, 1
cmp ecx, dword [ebp - 0x9c]
je 0x40bcd0
fxch st(1)
add edi, 1
fld dword [esi]
cmp edi, dword [ebp - 0x84]
fld st(1)
jne 0x40bb55
fstp st(0)
fld dword [eax + 0x18]
xor edi, edi
fmulp st(1)
add esi, dword [ebp - 0xac]
fmul dword [0x4529a4]
jmp 0x40bb57
mov ecx, dword [ebx + 0x2c]
mov ebx, dword [ebp - 0x7c]
imul eax, ecx
add ebx, eax
cmp dword [ebp - 0x7c], 2
cmovge eax, ebx
cmp ecx, 0xffffffff
je 0x40df12
mov dword [ebp - 0xd8], 0
mov ecx, dword [edx]
mov ebx, dword [ebp + 8]
lea eax, [eax + ecx*4]
shl ecx, 3
mov edx, eax
mov esi, dword [ebx + 0x34]
sar edx, 0x1f
idiv ecx
xor edx, edx
test esi, esi
setne dl
sub eax, edx
cmp eax, dword [ebp - 0xa8]
cmovg eax, dword [ebp - 0xa8]
mov dword [ebp - 0xa8], 2
cmp eax, 2
cmovl eax, dword [ebp - 0xa8]
mov dword [ebp - 0xa8], eax
mov dword [ebp - 0xe0], eax
mov ebx, dword [ebp + 0x1c]
test ebx, ebx
je 0x40b9f6
mov ecx, dword [ebp - 0xd8]
test ecx, ecx
jle 0x40ba23
mov ebx, dword [ebp + 8]
mov edx, dword [ebx + 0x38]
test edx, edx
je 0x40ba23
mov eax, dword [ebp - 0xd8]
xor edx, edx
add eax, eax
sub eax, dword [ebx + 0x80]
mov ebx, dword [ebp - 0xb8]
sar eax, 6
cmp dword [ebp - 0x7c], 1
sete dl
add edx, edx
cmp edx, eax
cmovge eax, edx
cmp eax, dword [ebp - 0xb8]
cmovle ebx, eax
cmp dword [ebp - 0xb8], ebx
jle 0x40ba23
mov esi, dword [ebp - 0xd0]
add esi, ebx
mov dword [ebp - 0xa8], esi
mov dword [esp + 4], esi
mov edi, dword [ebp + 0x1c]
mov dword [esp], edi
call fcn.0041e820
mov dword [ebp - 0xb8], ebx
jmp 0x40ba23
fstp st(0)
fstp st(0)
jmp 0x40bcda
fstp st(0)
fstp st(0)
mov edx, dword [ebp - 0xcc]
mov edi, dword [ebp + ebx*4 - 0x50]
mov eax, 0x1000
mov esi, dword [ebp - 0x94]
test edi, 1
jne 0x40e085
test edi, 2
jne 0x40e071
mov ecx, eax
shr ecx, 2
test al, 2
rep movsd dword es:[edi], dword [esi]
je 0x40bd1d
movzx ecx, word [esi]
mov word [edi], cx
mov ecx, 2
test al, 1
je 0x40bd28
movzx eax, byte [esi + ecx]
mov byte [edi + ecx], al
mov ecx, dword [edx + 4]
mov eax, dword [ebp - 0x9c]
mov esi, dword [ebp + ebx*4 - 0x50]
mov edi, dword [ebp - 0xb0]
add eax, ecx
imul eax, ebx
add esi, 0x1000
add ebx, 1
add eax, ecx
mov ecx, dword [ebp - 0x88]
mov dword [esp + 8], edi
mov dword [esp], esi
lea eax, [ecx + eax*4]
mov dword [esp + 4], eax
mov dword [ebp - 0x140], edx
call sub.msvcrt.dll_memcpy
mov edx, dword [ebp - 0x140]
add dword [ebp - 0x94], 0x1000
add dword [ebp - 0xa0], 4
cmp dword [ebp - 0xb4], ebx
jg 0x40c442
cmp dword [ebp - 0x7c], 1
je 0x40e580
mov dword [ebp - 0xbc], 0
mov ebx, dword [ebp - 0xa4]
lea eax, [ebx + ebx*2]
shl eax, 2
cmp dword [ebp - 0xb8], eax
jle 0x40bef0
mov esi, dword [ebp - 0xbc]
mov ebx, dword [ebp + 8]
or esi, dword [ebx + 0x24]
jne 0x40bef0
mov dword [ebp - 0xe8], 0
mov eax, dword [ebx + 0x18]
fldz
test eax, eax
jne 0x40befc
cmp dword [ebx + 0x1c], 4
jle 0x40befc
fstp st(0)
mov eax, dword [ebp - 0x98]
mov ebx, esp
sar eax, 1
lea eax, [eax*4 + 0x12]
and eax, 0xfffffff0
call fcn.00443b10
mov edi, dword [ebp - 0xb4]
lea edx, [ebp - 0x50]
sub esp, eax
lea esi, [esp + 0x50]
mov dword [esp + 0xc], edi
lea edi, [ebp - 0x60]
mov eax, dword [ebp - 0x98]
mov dword [esp], edx
mov dword [esp + 4], esi
mov dword [esp + 8], eax
call fcn.0041d7c0
mov dword [esp + 0x10], edi
mov dword [esp + 0xc], 0x3f1
mov eax, dword [ebp - 0x9c]
mov dword [esp + 4], esi
mov dword [esp + 8], eax
lea eax, [esi + 0x800]
mov dword [esp], eax
call fcn.0041da10
mov edx, dword [ebp + 8]
mov eax, 0x400
sub eax, dword [ebp - 0x60]
fld dword [edx + 0x64]
mov dword [ebp - 0x60], eax
fstp dword [esp + 0x18]
mov eax, dword [edx + 0x60]
mov dword [esp + 0x10], edi
mov dword [esp + 0x14], eax
mov eax, dword [ebp - 0x9c]
mov dword [esp + 8], 0xf
mov dword [esp + 4], 0x400
mov dword [esp], esi
mov dword [esp + 0xc], eax
call fcn.0041de50
mov edx, dword [ebp + 8]
mov eax, 0x3fe
cmp dword [ebp - 0x60], 0x3ff
fmul dword [0x4529b0]
cmovl eax, dword [ebp - 0x60]
mov dword [ebp - 0x60], eax
mov eax, dword [edx + 0x3c]
cmp eax, 2
jle 0x40bedd
fld dword [0x452968]
cmp eax, 4
fmul st(1), st(0)
jle 0x40bedb
fmulp st(1)
cmp eax, 8
jle 0x40bedd
fstp st(0)
fldz
jmp 0x40bedd
fstp st(0)
mov ecx, dword [ebp + 8]
mov ecx, dword [ecx + 0x5c]
mov dword [ebp - 0xe8], ecx
mov esp, ebx
jmp 0x40befc
mov dword [ebp - 0xe8], 0
fldz
mov ebx, dword [ebp + 8]
mov edx, dword [ebp - 0x60]
mov ecx, dword [ebx + 0x60]
mov eax, edx
sub eax, ecx
mov ebx, eax
sar ebx, 0x1f
xor eax, ebx
sub eax, ebx
lea eax, [eax + eax*4]
add eax, eax
cmp edx, eax
jl 0x40dbfc
cmp dword [ebp - 0xb8], 0x18
fld dword [0x452980]
fld dword [0x452984]
fld dword [0x452978]
jle 0x40dc24
fstp st(2)
fxch st(1)
jmp 0x40bf48
fstp st(2)
fxch st(1)
cmp dword [ebp - 0xb8], 0x22
jle 0x40e579
fstp st(1)
mov ebx, dword [ebp + 8]
fld dword [ebx + 0x64]
fld dword [0x452980]
fxch st(1)
fcomi st(1)
fstp st(1)
jbe 0x40bf75
fxch st(1)
fsub dword [0x4529b4]
fxch st(1)
fld dword [0x4529b8]
fxch st(1)
fcomi st(1)
fstp st(1)
jbe 0x40bf8d
fxch st(1)
fsub dword [0x4529b4]
fxch st(1)
fld dword [0x452978]
fxch st(2)
fcomi st(2)
fcmovb st(0), st(2)
fstp st(2)
fxch st(1)
fcompi st(2)
jbe 0x40dc2d
fstp st(0)
fstp st(0)
mov ebx, dword [ebp + 8]
mov edi, dword [ebx + 0x24]
test edi, edi
je 0x40debf
fldz
mov ebx, dword [ebp + 8]
mov byte [ebp - 0xf6], 0
fchs
mov edi, dword [ebp + 8]
fstp dword [ebp - 0x84]
fldz
fstp dword [ebp - 0xec]
mov eax, 0x400
mov esi, dword [ebx + 4]
xor ebx, ebx
sub eax, dword [ebp - 0x9c]
mov dword [ebp - 0x7c], esi
shl eax, 2
mov dword [ebp - 0xa0], eax
mov eax, dword [ebp - 0x9c]
neg eax
lea eax, [eax*4 + 0x1000]
mov dword [ebp - 0xac], eax
mov edx, dword [edi]
mov eax, 0xf
mov esi, dword [edx + 0x2c]
sub esi, dword [edx + 4]
cmp ecx, 0xf
cmovge eax, ecx
mov ecx, dword [ebp - 0x9c]
mov dword [edi + 0x60], eax
mov dword [ebp - 0xcc], eax
mov eax, dword [ebp - 0x88]
add ecx, dword [ebp - 0x7c]
imul ecx, ebx
lea eax, [eax + ecx*4]
mov dword [ebp - 0x80], ecx
mov ecx, dword [ebp - 0x7c]
mov dword [ebp - 0x94], eax
mov eax, dword [ebp - 0x7c]
shl ecx, 2
imul eax, ebx
mov dword [esp + 8], ecx
lea eax, [edi + eax*4 + 0x90]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x94]
mov dword [esp], eax
mov dword [ebp - 0x140], edx
call sub.msvcrt.dll_memcpy
test esi, esi
mov edx, dword [ebp - 0x140]
jne 0x40dd71
mov eax, dword [ebp + ebx*4 - 0x50]
mov ecx, dword [ebp - 0x88]
lea eax, [eax + esi*4 + 0x1000]
mov dword [ebp - 0x94], eax
mov eax, dword [ebp - 0x80]
add eax, dword [ebp - 0x7c]
add eax, esi
lea eax, [ecx + eax*4]
mov ecx, dword [edx + 4]
mov dword [esp + 0x1c], ecx
mov edx, dword [edx + 0x3c]
mov dword [esp + 0x18], edx
mov edx, dword [ebp - 0xe8]
mov dword [esp + 0x14], edx
mov edx, dword [edi + 0x68]
mov dword [esp + 0x10], edx
fld dword [ebp - 0x84]
fstp dword [esp + 0xc]
fld dword [edi + 0x64]
fchs
fstp dword [esp + 8]
mov edx, dword [ebp - 0x9c]
sub edx, esi
mov dword [esp + 4], edx
mov edx, dword [ebp - 0x60]
mov dword [esp], edx
mov ecx, dword [ebp - 0xcc]
mov edx, dword [ebp - 0x94]
call fcn.0040a630
mov eax, dword [edi + 4]
mov edx, ebx
mov esi, dword [ebp - 0x88]
imul edx, eax
lea ecx, [eax*4]
add eax, dword [ebp - 0x9c]
lea edx, [edi + edx*4 + 0x90]
imul eax, ebx
add eax, dword [ebp - 0x9c]
mov dword [esp + 8], ecx
mov dword [esp], edx
lea eax, [esi + eax*4]
mov dword [esp + 4], eax
call sub.msvcrt.dll_memcpy
cmp dword [ebp - 0x9c], 0x400
jle 0x40dafa
mov dword [esp + 8], 0x1000
mov eax, dword [ebp - 0xb0]
add eax, dword [ebp + ebx*4 - 0x50]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x78]
mov dword [esp], eax
call sub.msvcrt.dll_memmove
add dword [ebp - 0x78], 0x1000
add ebx, 1
cmp dword [ebp - 0xb4], ebx
jg 0x40c453
mov esi, dword [ebp - 0x8c]
mov esp, dword [ebp - 0xc4]
test esi, esi
je 0x40c461
mov ebx, dword [ebp + 0x1c]
bsr eax, dword [ebx + 0x1c]
mov edx, dword [ebx + 0x14]
xor eax, 0x1f
lea eax, [eax + edx - 0x1e]
cmp dword [ebp - 0xe4], eax
jle 0x40c461
mov ebx, dword [ebp + 8]
cmp dword [ebx + 0x1c], 1
jle 0x40e0c1
mov edx, dword [ebx + 4]
mov dword [ebp - 0x7c], esp
mov esi, dword [ebp - 0x9c]
add esi, edx
lea edi, [esi*4]
mov eax, edi
mov dword [ebp - 0x80], edi
add eax, 0x12
and eax, 0xfffffff0
call fcn.00443b10
mov edi, 0x10
sub esp, eax
mov eax, esi
lea ecx, [esp + 0x53]
shr ecx, 2
lea ebx, [ecx*4]
mov dword [ebp - 0x98], ebx
mov ebx, edx
shr ebx, 0x1f
add ebx, edx
mov edx, esi
sar ebx, 1
sar edx, 0x1f
idiv ebx
xor edx, edx
mov dword [ebp - 0x78], eax
lea eax, [eax*4 + 0x12]
mov dword [ebp - 0x84], eax
div edi
shl eax, 4
mov dword [ebp - 0x94], eax
call fcn.00443b10
sub esp, eax
cmp dword [ebp - 0xb4], 1
lea edx, [esp + 0x50]
je 0x40e505
mov eax, dword [ebp - 0x88]
add eax, dword [ebp - 0x80]
mov dword [ebp - 0x80], eax
xor eax, eax
test esi, esi
jle 0x40c2c1
mov edi, dword [ebp - 0x98]
mov dword [ebp - 0x84], edx
mov edx, dword [ebp - 0x80]
fld dword [edx + eax*4]
mov edx, dword [ebp - 0x88]
fadd dword [edx + eax*4]
fstp dword [edi + eax*4]
add eax, 1
cmp eax, esi
jne 0x40c25d
mov edx, dword [ebp - 0x84]
mov dword [ebp - 0x98], edi
fldz
xor eax, eax
fld st(0)
fld dword [0x452968]
jmp 0x40c296
fxch st(1)
fxch st(2)
fxch st(1)
fld dword [edi + eax*4]
fadd st(2), st(0)
fld st(0)
fadd st(1)
fsubr st(3)
faddp st(4)
fld st(2)
fmul st(2)
fsubp st(1)
fxch st(2)
fstp dword [edi + eax*4]
add eax, 1
cmp esi, eax
jg 0x40c290
fstp st(0)
fstp st(0)
fstp st(0)
mov dword [ebp - 0x98], edi
mov eax, dword [ebp - 0x78]
lea edi, [ebx*4]
xor esi, esi
mov dword [ecx*4], 0
fldz
mov dword [ecx*4 + 4], 0
mov dword [ecx*4 + 8], 0
mov dword [ecx*4 + 0xc], 0
test eax, eax
mov dword [ecx*4 + 0x10], 0
mov dword [ecx*4 + 0x14], 0
mov dword [ecx*4 + 0x18], 0
mov dword [ecx*4 + 0x1c], 0
mov dword [ecx*4 + 0x20], 0
mov dword [ecx*4 + 0x24], 0
mov dword [ecx*4 + 0x28], 0
mov dword [ecx*4 + 0x2c], 0
mov ecx, dword [ebp - 0x98]
jle 0x40e0bc
fld st(0)
xor eax, eax
test ebx, ebx
jle 0x40e0a0
lea esi, [esi]
fld dword [ecx + eax*4]
fabs
fxch st(1)
fcomi st(1)
fcmovb st(0), st(1)
fstp st(1)
add eax, 1
cmp eax, ebx
jne 0x40c370
fstp dword [edx + esi*4]
add esi, 1
add ecx, edi
cmp esi, dword [ebp - 0x78]
jne 0x40c361
fstp st(0)
mov dword [ebp - 0xa0], 0
xor edi, edi
fld dword [edx + edi*4]
test edi, edi
fld dword [0x4529c4]
fmul st(1)
fxch st(1)
fmul dword [0x452980]
je 0x40c3f9
xor ecx, ecx
xor eax, eax
xor esi, esi
jmp 0x40c3c0
fxch st(1)
fld dword [edx + eax*4]
fxch st(2)
xor ebx, ebx
fcomi st(2)
fxch st(1)
seta bl
fcomi st(2)
fstp st(2)
lea ecx, [ebx + ecx + 1]
cmovbe ecx, esi
add eax, 1
cmp eax, edi
jne 0x40c3be
fstp st(1)
cmp ecx, 3
mov ebx, 1
cmovl ebx, dword [ebp - 0xa0]
mov dword [ebp - 0xa0], ebx
jmp 0x40c3fb
fstp st(0)
add edi, 1
cmp dword [ebp - 0x78], edi
jle 0x40e539
mov esi, dword [ebp - 0x78]
mov eax, edi
xor ecx, ecx
xor ebx, ebx
fld dword [edx + eax*4]
fxch st(1)
add ecx, 1
fcomi st(1)
fstp st(1)
cmovbe ecx, ebx
add eax, 1
cmp eax, esi
jne 0x40c410
fstp st(0)
cmp ecx, 7
mov esi, 1
cmovl esi, dword [ebp - 0xa0]
mov dword [ebp - 0xa0], esi
jmp 0x40c39f
mov edi, dword [edx + 4]
mov ecx, dword [ebp - 0x9c]
lea eax, [edi + ecx]
jmp 0x40bb09
mov esi, dword [edi + 4]
mov ecx, dword [edi + 0x60]
mov dword [ebp - 0x7c], esi
jmp 0x40c007
mov byte [ebp - 0x74], 1
mov byte [ebp - 0x73], 0
mov byte [ebp - 0xf5], 0
mov dword [ebp - 0xa0], 0
mov dword [ebp - 0xc4], 0
mov eax, dword [ebp - 0xb4]
mov esi, 0x10
imul eax, dword [ebp - 0x9c]
lea eax, [eax*4 + 0x12]
and eax, 0xfffffff0
call fcn.00443b10
xor edx, edx
sub esp, eax
mov eax, dword [ebp + 8]
lea edi, [esp + 0x50]
mov dword [ebp - 0x94], edi
mov ebx, dword [eax]
mov eax, dword [ebp - 0xb4]
imul eax, dword [ebx + 8]
lea eax, [eax*4 + 0x12]
div esi
mov ecx, eax
shl ecx, 4
mov eax, ecx
call fcn.00443b10
sub esp, eax
mov eax, ecx
lea esi, [esp + 0x50]
mov dword [ebp - 0x100], esi
call fcn.00443b10
sub esp, eax
cmp byte [ebp - 0x74], 0
lea edi, [esp + 0x50]
mov dword [ebp - 0xf0], edi
jne 0x40e2b2
mov eax, dword [ebx + 4]
mov esi, 1
mov dword [ebp - 0x98], 0
mov edi, dword [ebx + 0x2c]
mov edx, dword [ebp - 0xc4]
movzx ecx, byte [ebp - 0x8c]
mov dword [ebp - 0x78], eax
mov eax, edi
shl eax, cl
test edx, edx
mov edx, dword [ebp - 0x78]
cmove edi, eax
cmovne esi, dword [ebp - 0xc4]
mov eax, edi
shl edi, 2
imul eax, esi
mov dword [ebp - 0x80], edi
add edx, eax
shl eax, 2
mov dword [ebp - 0xdc], eax
mov eax, dword [ebp - 0x94]
shl edx, 2
mov dword [ebp - 0xcc], edx
lea edx, [ebx + 0x40]
mov dword [ebp - 0x84], edx
mov dword [ebp - 0xac], eax
test esi, esi
jle 0x40c5ea
mov eax, dword [ebp - 0xc4]
test eax, eax
jne 0x40cc10
mov edx, dword [ebp - 0x88]
mov dword [ebp - 0x7c], esi
xor edi, edi
mov ecx, dword [ebp - 0xac]
mov esi, ebx
mov ebx, edx
mov eax, dword [ebp - 0x7c]
add edi, 1
mov dword [esp + 0x18], eax
mov eax, dword [esi + 0x24]
sub eax, dword [ebp - 0x8c]
mov dword [esp + 0x14], eax
mov edx, dword [ebp - 0x78]
mov dword [esp + 0x10], edx
mov eax, dword [esi + 0x3c]
mov dword [esp + 8], ecx
mov dword [esp + 4], ebx
mov dword [esp + 0xc], eax
mov eax, dword [ebp - 0x84]
mov dword [esp], eax
mov dword [ebp - 0x140], ecx
call fcn.0041ce70
mov ecx, dword [ebp - 0x140]
add ebx, dword [ebp - 0x80]
add ecx, 4
cmp edi, dword [ebp - 0x7c]
jne 0x40c593
mov ebx, esi
mov esi, dword [ebp - 0x7c]
add dword [ebp - 0x98], 1
mov edi, dword [ebp - 0xcc]
mov eax, dword [ebp - 0xdc]
mov edx, dword [ebp - 0x98]
add dword [ebp - 0x88], edi
add dword [ebp - 0xac], eax
cmp dword [ebp - 0xb4], edx
jg 0x40c56c
cmp dword [ebp - 0xa4], 1
sete dl
cmp dword [ebp - 0xb4], 2
sete al
and dl, al
mov byte [ebp - 0xf8], dl
je 0x40c66c
mov eax, dword [ebp - 0x9c]
test eax, eax
jle 0x40c66c
mov eax, dword [ebp - 0x94]
xor edx, edx
mov ecx, dword [ebp - 0x9c]
fld dword [0x452968]
fld dword [eax + ecx*4]
add edx, 1
fadd dword [eax]
fmul st(1)
fstp dword [eax]
add eax, 4
cmp edx, ecx
jne 0x40c657
fstp st(0)
mov ebx, dword [ebp + 8]
mov ecx, dword [ebx + 0x20]
cmp ecx, 1
je 0x40c707
mov eax, dword [ebp - 0x9c]
xor esi, esi
mov dword [ebp - 0x6c], ecx
mov ebx, dword [ebp - 0x94]
mov dword [ebp - 0x78], 0
fild dword [ebp - 0x6c]
mov edx, eax
sar edx, 0x1f
idiv ecx
test eax, eax
cmovg esi, eax
xor edi, edi
mov dword [ebp - 0x7c], esi
mov esi, dword [ebp - 0x9c]
test eax, eax
jle 0x40c6d0
mov ecx, dword [ebp - 0x94]
lea edx, [ecx + edi*4]
xor ecx, ecx
lea esi, [esi]
fld dword [edx]
add ecx, 1
fmul st(1)
fstp dword [edx]
add edx, 4
cmp ecx, eax
jne 0x40c6c0
cmp esi, dword [ebp - 0x7c]
jle 0x40c6ee
mov edx, dword [ebp - 0x7c]
nop
lea esi, [esi]
mov dword [ebx + edx*4], 0
add edx, 1
cmp edx, esi
jne 0x40c6e0
add dword [ebp - 0x78], 1
add edi, esi
add ebx, dword [ebp - 0xb0]
mov edx, dword [ebp - 0x78]
cmp dword [ebp - 0xa4], edx
jg 0x40c6ad
fstp st(0)
mov eax, dword [ebp - 0xa4]
mov ebx, 0x10
imul eax, dword [ebp - 0x9c]
lea eax, [eax*4 + 0x12]
and eax, 0xfffffff0
call fcn.00443b10
mov edi, dword [ebp - 0xc0]
sub esp, eax
lea esi, [esp + 0x50]
mov dword [ebp - 0xcc], esi
mov dword [esp + 0x14], edi
mov eax, dword [ebp - 0xa4]
mov dword [esp + 0x10], eax
mov edx, dword [ebp - 0x90]
mov dword [esp + 0xc], edx
mov esi, dword [ebp - 0x100]
mov dword [esp + 8], esi
mov edi, dword [ebp - 0x94]
mov dword [esp + 4], edi
mov edx, dword [ebp + 8]
mov eax, dword [edx]
mov dword [esp], eax
call fcn.0041b390
mov ecx, dword [ebp - 0xa4]
mov dword [esp + 0x14], ecx
mov esi, dword [ebp - 0xf0]
mov dword [esp + 0x10], esi
mov edi, dword [ebp - 0x100]
mov dword [esp + 0xc], edi
mov edx, dword [ebp + 8]
mov eax, dword [edx + 0x28]
mov dword [esp + 8], eax
mov ecx, dword [ebp - 0x90]
mov dword [esp + 4], ecx
mov eax, dword [edx]
mov dword [esp], eax
call fcn.004195e0
mov esi, dword [ebp - 0xc0]
mov dword [esp + 0x18], esi
mov edi, dword [ebp - 0xa4]
mov dword [esp + 0x14], edi
mov eax, dword [ebp - 0x90]
mov dword [esp + 0x10], eax
mov esi, dword [ebp - 0x100]
mov dword [esp + 0xc], esi
mov edi, dword [ebp - 0xcc]
mov dword [esp + 8], edi
mov esi, dword [ebp - 0x94]
mov dword [esp + 4], esi
mov edi, dword [ebp + 8]
mov eax, dword [edi]
mov dword [esp], eax
call fcn.0041b440
mov esi, dword [edi]
xor edx, edx
mov eax, dword [esi + 8]
mov dword [ebp - 0x88], esi
lea eax, [eax*4 + 0x12]
div ebx
shl eax, 4
call fcn.00443b10
sub esp, eax
mov eax, dword [ebp - 0xa4]
mov ebx, dword [ebp + 8]
lea edi, [esp + 0x50]
mov dword [ebp - 0xac], edi
shl eax, 4
sub eax, dword [ebp - 0xa4]
mov edx, dword [ebx + 0x24]
cmp dword [ebp - 0xe0], eax
jl 0x40cc86
test edx, edx
jne 0x40cc86
cmp dword [ebp - 0xe0], 0x27
mov dword [ebp - 0xd4], 0xc
jle 0x40c886
cmp dword [ebp - 0xe0], 0x3b
mov dword [ebp - 0xd4], 6
jle 0x40c886
xor ebx, ebx
cmp dword [ebp - 0xe0], 0x63
setle bl
add ebx, 3
mov dword [ebp - 0xd4], ebx
mov ebx, dword [ebp - 0x90]
mov edi, 0x10
mov dword [ebp - 0x128], esp
lea esi, [ebx*4 + 0x12]
and esi, 0xfffffff0
mov eax, esi
call fcn.00443b10
mov edx, dword [ebp - 0x90]
sub esp, eax
mov eax, dword [ebp - 0x88]
lea ebx, [esp + 0x50]
mov ecx, dword [ebp - 0x90]
mov dword [ebp - 0x114], ebx
add edx, edx
mov ebx, dword [eax + 0x20]
mov dword [ebp - 0x12c], edx
mov edx, dword [ebp - 0x90]
sub ecx, 1
mov dword [ebp - 0x108], ecx
movsx eax, word [ebx + edx*2]
movsx edx, word [ebx + ecx*2]
movzx ecx, byte [ebp - 0x8c]
sub eax, edx
xor edx, edx
shl eax, cl
lea eax, [eax*4 + 0x12]
div edi
shl eax, 4
call fcn.00443b10
sub esp, eax
mov eax, esi
lea edi, [esp + 0x50]
call fcn.00443b10
sub esp, eax
mov eax, esi
lea edx, [esp + 0x50]
mov dword [ebp - 0x118], edx
call fcn.00443b10
sub esp, eax
mov eax, dword [ebp - 0x90]
lea esi, [esp + 0x50]
mov dword [ebp - 0x11c], esi
test eax, eax
jle 0x40e306
mov dword [ebp - 0xf4], 0
mov eax, dword [ebp - 0x8c]
mov dword [ebp - 0xdc], 0
mov edx, dword [ebp - 0xf4]
fild dword [ebp - 0x8c]
fstp dword [ebp - 0x120]
add eax, 1
mov dword [ebp - 0x104], eax
mov eax, dword [ebp - 0xf4]
add edx, 2
movzx ecx, byte [ebp - 0x8c]
mov dword [ebp - 0x110], edx
movsx esi, word [ebx + eax]
movsx ebx, word [ebx + eax + 2]
sub ebx, esi
shl ebx, cl
test ebx, ebx
mov dword [ebp - 0x80], ebx
jle 0x40c9cb
mov eax, esi
mov ebx, dword [ebp - 0xcc]
shl eax, cl
mov ecx, dword [ebp - 0x80]
lea edx, [ebx + eax*4]
xor eax, eax
fld dword [edx + eax*4]
fstp dword [edi + eax*4]
add eax, 1
cmp eax, ecx
jne 0x40c9b1
cmp dword [ebp - 0xa4], 2
je 0x40dfcc
mov ebx, dword [ebp - 0x80]
movzx ecx, byte [ebp - 0x8c]
mov eax, dword [ebp - 0xa0]
sar ebx, cl
test eax, eax
mov dword [ebp - 0x84], ebx
je 0x40dfb9
mov eax, dword [ebp - 0xc0]
fld dword [ebp - 0x120]
test eax, eax
jle 0x40e027
mov ebx, dword [ebp - 0xc0]
mov esi, dword [ebp - 0x84]
mov ecx, dword [ebp - 0x8c]
mov dword [ebp - 0x78], ebx
fldz
xor ebx, ebx
fld st(0)
fld st(0)
xor eax, eax
test esi, esi
jle 0x40dfb0
lea esi, [esi]
lea edi, [edi]
mov edx, eax
add eax, 1
shl edx, cl
add edx, ebx
cmp eax, esi
fld dword [edi + edx*4]
fmul st(0)
faddp st(1)
jne 0x40ca30
fsqrt
add ebx, 1
faddp st(2)
cmp ebx, dword [ebp - 0x78]
jl 0x40ca1a
fstp st(0)
fmul dword [ecx*4 + 0x4528a0]
cmp dword [ebp - 0x84], 1
je 0x40dffe
cmp dword [ebp - 0x84], 2
je 0x40e00b
fxch st(1)
fmul dword [0x4529d0]
fadd dword [0x452960]
mov esi, dword [ebp - 0x8c]
fmulp st(1)
test esi, esi
fstp dword [ebp - 0x98]
je 0x40e018
mov dword [ebp - 0x7c], 1
mov dword [ebp - 0xb0], 0
mov ecx, dword [ebp - 0x7c]
mov ebx, dword [ebp - 0xa0]
sub ecx, 1
test ebx, ebx
je 0x40df49
mov ecx, dword [ebp - 0x104]
mov eax, 1
mov ebx, 1
mov esi, dword [ebp - 0x8c]
sub ecx, dword [ebp - 0x7c]
sub esi, dword [ebp - 0x7c]
shl eax, cl
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x80]
mov dword [esp], edi
sar eax, cl
mov dword [esp + 4], eax
call fcn.0041bbc0
mov eax, dword [ebp - 0x7c]
mov ecx, esi
shl ebx, cl
test ebx, ebx
mov dword [ebp - 0x78], ebx
mov dword [ebp - 0x94], eax
jle 0x40df85
mov ebx, dword [ebp - 0x80]
fldz
xor edx, edx
fld st(0)
sar ebx, cl
mov ecx, esi
mov esi, ebx
mov ebx, edx
nop
lea esi, [esi]
fld st(0)
xor eax, eax
test esi, esi
jle 0x40df40
lea esi, [esi]
mov edx, eax
add eax, 1
shl edx, cl
add edx, ebx
cmp eax, esi
fld dword [edi + edx*4]
fmul st(0)
faddp st(1)
jne 0x40cb30
fsqrt
add ebx, 1
faddp st(2)
cmp ebx, dword [ebp - 0x78]
jne 0x40cb20
fstp st(0)
cmp dword [ebp - 0x84], 1
mov esi, ecx
fmul dword [ecx*4 + 0x4528a0]
je 0x40df94
cmp dword [ebp - 0x84], 2
mov dword [ebp - 0x6c], esi
fild dword [ebp - 0x6c]
je 0x40dfa5
fmul dword [0x4529d0]
fadd dword [0x452960]
fmulp st(1)
fld dword [ebp - 0x98]
fcompi st(1)
jbe 0x40cba4
mov eax, dword [ebp - 0x7c]
fstp dword [ebp - 0x98]
mov dword [ebp - 0xb0], eax
jmp 0x40cba6
fstp st(0)
mov edx, dword [ebp - 0x94]
add dword [ebp - 0x7c], 1
cmp dword [ebp - 0x8c], edx
jg 0x40caa8
mov eax, dword [ebp - 0xb0]
mov edx, dword [ebp - 0xa0]
mov ebx, dword [ebp - 0xf4]
mov esi, dword [ebp - 0x114]
neg eax
test edx, edx
cmovne eax, dword [ebp - 0xb0]
add dword [ebp - 0xdc], eax
mov dword [esi + ebx*2], eax
mov eax, dword [ebp - 0x110]
cmp dword [ebp - 0x12c], eax
je 0x40e310
mov esi, dword [ebp - 0x88]
mov dword [ebp - 0xf4], eax
mov edx, eax
mov ebx, dword [esi + 0x20]
jmp 0x40c975
mov eax, dword [ebp - 0x88]
xor edi, edi
mov dword [ebp - 0x7c], esi
mov edx, dword [ebp - 0xac]
mov esi, edi
mov edi, ebx
mov ebx, eax
mov esi, esi
lea edi, [edi]
mov ecx, dword [ebp - 0x7c]
add esi, 1
mov dword [esp + 0x18], ecx
mov eax, dword [edi + 0x24]
mov dword [esp + 0x14], eax
mov eax, dword [ebp - 0x78]
mov dword [esp + 0x10], eax
mov eax, dword [edi + 0x3c]
mov dword [esp + 8], edx
mov dword [esp + 4], ebx
mov dword [esp + 0xc], eax
mov ecx, dword [ebp - 0x84]
mov dword [esp], ecx
mov dword [ebp - 0x140], edx
call fcn.0041ce70
mov edx, dword [ebp - 0x140]
add ebx, dword [ebp - 0x80]
add edx, 4
cmp esi, dword [ebp - 0x7c]
jne 0x40cc30
mov ebx, edi
mov esi, dword [ebp - 0x7c]
jmp 0x40c5ea
mov ebx, dword [ebp - 0x90]
mov eax, dword [ebp - 0xac]
mov ecx, dword [ebp - 0xa0]
test ebx, ebx
lea edx, [eax + ebx*4]
jle 0x40cca8
mov dword [eax], ecx
add eax, 4
cmp eax, edx
jne 0x40cc9f
mov dword [ebp - 0xdc], 0
mov ebx, dword [ebp + 8]
mov edx, dword [ebx + 0x28]
cmp edx, dword [ebp - 0x90]
jle 0x40cce2
mov ecx, dword [ebp - 0x90]
mov eax, dword [ebp - 0x90]
mov ebx, dword [ebp - 0xac]
sub ecx, 1
mov esi, dword [ebx + ecx*4]
mov dword [ebx + eax*4], esi
add eax, 1
cmp eax, edx
jne 0x40ccd5
mov eax, dword [ebp - 0xa4]
mov esi, dword [ebp - 0x88]
imul eax, dword [esi + 8]
lea eax, [eax*4 + 0x12]
and eax, 0xfffffff0
call fcn.00443b10
mov ebx, dword [ebp + 8]
sub esp, eax
lea edi, [esp + 0x50]
mov dword [ebp - 0xd4], edi
mov eax, dword [ebx + 0x3c]
mov dword [esp + 0x3c], eax
xor eax, eax
cmp dword [ebx + 0x1c], 3
setg al
mov dword [esp + 0x38], eax
mov eax, ebx
add eax, 0x4c
mov dword [esp + 0x34], eax
mov eax, dword [ebx + 0x10]
mov dword [esp + 0x30], eax
mov ebx, dword [ebp - 0xb8]
mov dword [esp + 0x2c], ebx
mov ecx, dword [ebp - 0x8c]
mov dword [esp + 0x28], ecx
mov ebx, dword [ebp - 0xa4]
mov dword [esp + 0x24], ebx
mov ebx, dword [ebp + 0x1c]
mov dword [esp + 0x1c], edi
mov dword [esp + 0x20], ebx
mov ebx, dword [ebp - 0xe4]
mov dword [esp + 0x18], ebx
mov ebx, dword [ebp - 0xc8]
mov dword [esp + 0x14], ebx
mov esi, dword [ebp - 0xf0]
mov dword [esp + 0x10], esi
mov ebx, dword [ebp - 0x90]
mov dword [esp + 8], edx
mov dword [esp + 0xc], ebx
mov ebx, dword [ebp + 8]
mov eax, dword [ebx + 0x24]
mov dword [esp + 4], eax
mov esi, dword [ebp - 0x88]
mov dword [esp], esi
call fcn.00418940
mov edi, dword [ebx + 0x28]
mov esi, dword [ebp + 0x1c]
mov dword [ebp - 0x78], edi
mov edi, dword [ebx + 0x24]
mov ebx, dword [ebp + 0x1c]
bsr eax, dword [esi + 0x1c]
mov edx, dword [esi + 0x14]
mov esi, dword [ebp - 0x8c]
mov ebx, dword [ebx + 4]
xor eax, 0x1f
lea ecx, [eax + edx - 0x20]
mov dword [ebp - 0x134], ebx
shl ebx, 3
cmp dword [ebp - 0xa0], 1
sbb edx, edx
and edx, 2
add edx, 2
test esi, esi
mov eax, edx
je 0x40e106
lea edx, [ecx + edx + 1]
cmp ebx, edx
setae dl
movzx edx, dl
sub ebx, edx
cmp dword [ebp - 0x78], edi
mov dword [ebp - 0x80], edx
mov dword [ebp - 0x7c], ebx
jle 0x40e11d
xor ebx, ebx
xor edx, edx
cmp dword [ebp - 0xa0], 0
mov esi, edi
mov dword [ebp - 0x88], edi
jne 0x40cffe
jmp 0x40ce37
mov edi, dword [ebp - 0xac]
mov eax, 5
mov dword [edi + esi*4], edx
add esi, 1
cmp esi, dword [ebp - 0x78]
je 0x40ce8a
lea edi, [eax + ecx]
mov dword [ebp - 0x84], edi
mov edi, dword [ebp - 0x7c]
cmp dword [ebp - 0x84], edi
ja 0x40ce21
mov dword [esp + 8], eax
mov edi, dword [ebp - 0xac]
xor edx, dword [edi + esi*4]
mov dword [esp + 4], edx
mov eax, dword [ebp + 0x1c]
mov dword [esp], eax
call fcn.0041e4a0
mov edx, dword [ebp + 0x1c]
bsr eax, dword [edx + 0x1c]
mov edx, dword [edx + 0x14]
xor eax, 0x1f
lea ecx, [eax + edx - 0x20]
mov edx, dword [edi + esi*4]
add esi, 1
mov eax, 5
or ebx, edx
cmp esi, dword [ebp - 0x78]
jne 0x40ce37
mov edi, dword [ebp - 0x88]
mov esi, dword [ebp - 0x80]
test esi, esi
je 0x40cedb
mov edx, dword [ebp - 0xa0]
mov eax, dword [ebp - 0x8c]
shl edx, 2
shl eax, 3
lea ecx, [edx + eax + 0x452880]
lea eax, [edx + eax + 0x452882]
movzx edx, byte [eax + ebx]
cmp byte [ecx + ebx], dl
je 0x40cedb
mov dword [esp + 8], 1
mov dword [esp + 4], 0
mov ebx, dword [ebp + 0x1c]
mov dword [esp], ebx
call fcn.0041e4a0
cmp dword [ebp - 0x78], edi
jle 0x40cf16
mov esi, dword [ebp - 0xac]
mov ebx, dword [ebp - 0xa0]
mov ecx, dword [ebp - 0x8c]
lea eax, [esi + edi*4]
mov edi, dword [ebp - 0x78]
shl ebx, 2
shl ecx, 3
lea esi, [esi + edi*4]
mov edx, dword [eax]
add edx, ecx
movsx edx, byte [ebx + edx + 0x452880]
mov dword [eax], edx
add eax, 4
cmp eax, esi
jne 0x40cf01
mov ebx, dword [ebp + 0x1c]
bsr eax, dword [ebx + 0x1c]
mov edx, dword [ebx + 0x14]
xor eax, 0x1f
lea eax, [eax + edx - 0x1d]
cmp dword [ebp - 0xe4], eax
jle 0x40d070
mov ebx, dword [ebp + 8]
mov eax, dword [ebx + 0x1c]
mov ebx, dword [ebp - 0xc4]
test ebx, ebx
jne 0x40d03a
cmp eax, 2
jle 0x40d03a
mov ebx, dword [ebp - 0xa4]
lea eax, [ebx + ebx*4]
add eax, eax
cmp dword [ebp - 0xb8], eax
jl 0x40d042
mov ebx, dword [ebp + 8]
mov ecx, dword [ebx + 0x24]
test ecx, ecx
jne 0x40d042
mov ebx, dword [ebp - 0xc0]
mov dword [esp + 0x24], ebx
mov ebx, dword [ebp - 0xa4]
mov dword [esp + 0x20], ebx
mov ebx, dword [ebp - 0x90]
mov dword [esp + 0x1c], ebx
movzx eax, byte [ebp - 0x74]
and al, byte [ebp - 0xf6]
movzx eax, al
mov dword [esp + 0x18], eax
mov eax, dword [ebp + 8]
add eax, 0x5c
mov dword [esp + 0x14], eax
mov eax, dword [ebp + 8]
add eax, 0x58
mov dword [esp + 0x10], eax
mov ebx, dword [ebp + 8]
mov eax, dword [ebx + 0x48]
mov dword [esp + 0xc], eax
mov eax, ebx
add eax, 0x50
mov dword [esp + 8], eax
mov esi, dword [ebp - 0xcc]
mov dword [esp + 4], esi
mov eax, dword [ebx]
mov dword [esp], eax
call fcn.0041b940
mov dword [ebx + 0x48], eax
jmp 0x40d051
mov edi, dword [ebp - 0xac]
mov dword [edi + esi*4], edx
add esi, 1
mov eax, 4
cmp esi, dword [ebp - 0x78]
je 0x40ce8a
lea edi, [eax + ecx]
cmp dword [ebp - 0x7c], edi
jb 0x40cfe4
mov dword [esp + 8], eax
mov edi, dword [ebp - 0xac]
xor edx, dword [edi + esi*4]
mov dword [esp + 4], edx
mov eax, dword [ebp + 0x1c]
mov dword [esp], eax
call fcn.0041e4a0
mov edx, dword [ebp + 0x1c]
bsr eax, dword [edx + 0x1c]
mov edx, dword [edx + 0x14]
xor eax, 0x1f
lea ecx, [eax + edx - 0x20]
mov edx, dword [edi + esi*4]
or ebx, edx
jmp 0x40cfed
test eax, eax
je 0x40deb0
mov ebx, dword [ebp + 8]
mov eax, 2
mov dword [ebx + 0x48], 2
mov dword [esp + 0xc], 5
mov dword [esp + 8], 0x45281f
mov dword [esp + 4], eax
mov ebx, dword [ebp + 0x1c]
mov dword [esp], ebx
call fcn.0041e4f0
mov ebx, dword [ebp + 8]
mov edi, dword [ebx]
mov esi, dword [edi + 8]
lea edx, [esi*4 + 0x12]
and edx, 0xfffffff0
mov eax, edx
call fcn.00443b10
sub esp, eax
mov eax, edx
lea ebx, [esp + 0x50]
mov dword [ebp - 0x90], ebx
call fcn.00443b10
sub esp, eax
test esi, esi
lea ebx, [esp + 0x50]
mov dword [ebp - 0x84], ebx
jle 0x40d131
mov ebx, dword [ebp - 0xa4]
xor edx, edx
mov ecx, dword [ebp - 0x8c]
mov eax, dword [edi + 0x68]
lea ecx, [ebx + ecx*2 - 1]
mov ebx, dword [edi + 0x20]
mov dword [ebp - 0x78], eax
mov dword [ebp - 0x7c], ecx
add ebx, 2
movsx ecx, word [ebx - 2]
movsx eax, word [ebx]
add ebx, 2
imul esi, dword [ebp - 0x7c]
sub eax, ecx
movzx ecx, byte [ebp - 0x8c]
shl eax, cl
mov ecx, dword [ebp - 0x78]
add ecx, edx
movzx ecx, byte [ecx + esi]
mov esi, dword [ebp - 0x90]
add ecx, 0x40
imul ecx, dword [ebp - 0xa4]
imul eax, ecx
sar eax, 2
mov dword [esi + edx*4], eax
add edx, 1
mov esi, dword [edi + 8]
cmp esi, edx
jg 0x40d0d1
test esi, esi
jle 0x40d131
mov edx, dword [ebp - 0x84]
xor eax, eax
mov dword [edx + eax*4], 0
add eax, 1
cmp dword [edi + 8], eax
jg 0x40d122
cmp dword [ebp - 0xe0], 0x32
jle 0x40d147
cmp byte [ebp - 0xf7], 0
jne 0x40d9c6
mov ebx, dword [ebp - 0xe4]
shl ebx, 3
mov dword [ebp - 0x98], ebx
mov ebx, dword [ebp + 0x1c]
mov dword [esp], ebx
call fcn.0041eb20
mov ebx, dword [ebp + 8]
mov dword [ebp - 0x78], eax
mov esi, dword [ebx + 0x28]
mov edi, dword [ebx + 0x24]
mov dword [ebp - 0xb8], esi
cmp edi, esi
jge 0x40e678
mov ebx, dword [ebx]
lea edx, [edi + edi]
mov dword [ebp - 0x78], edi
mov dword [ebp - 0x7c], 0
mov dword [ebp - 0x94], 6
mov edi, ebx
mov ecx, dword [edi + 0x20]
lea esi, [edx + 2]
mov dword [ebp - 0xb0], esi
mov esi, 0x30
movsx ebx, word [ecx + edx + 2]
movsx edx, word [ecx + edx]
movzx ecx, byte [ebp - 0x8c]
sub ebx, edx
imul ebx, dword [ebp - 0xa4]
shl ebx, cl
mov ecx, dword [ebp - 0x98]
lea edx, [ebx*8]
cmp ebx, 0x30
cmovl ebx, esi
cmp edx, ebx
cmovle ebx, edx
sub ecx, dword [ebp - 0x7c]
mov dword [ebp - 0x80], ebx
mov ebx, dword [ebp - 0x94]
lea edx, [eax + ebx*8]
cmp ecx, edx
jle 0x40dd6a
mov esi, dword [ebp - 0x78]
mov ebx, dword [ebp - 0x90]
mov edx, dword [ebx + esi*4]
test edx, edx
jle 0x40dd6a
mov eax, dword [ebp - 0x80]
mov esi, dword [ebp - 0x80]
mov ebx, dword [ebp - 0x98]
mov ecx, dword [ebp - 0x94]
add eax, dword [ebp - 0x7c]
neg esi
mov edi, dword [ebp - 0x78]
mov dword [ebp - 0x88], esi
xor esi, esi
mov edx, esi
mov dword [ebp - 0xb8], ecx
sub ebx, eax
jmp 0x40d272
mov ecx, dword [ebp - 0x80]
add esi, 1
mov dword [ebp - 0xe4], ebx
add edx, dword [ebp - 0x80]
add dword [ebp - 0x7c], ecx
lea ecx, [eax + 8]
cmp ecx, ebx
jge 0x40dab0
mov edi, dword [ebp - 0x78]
mov dword [ebp - 0xb8], 1
mov ecx, dword [ebp - 0x90]
add ebx, dword [ebp - 0x88]
cmp dword [ecx + edi*4], edx
jle 0x40dadd
mov eax, dword [ebp - 0x84]
xor ecx, ecx
cmp dword [eax + edi*4], esi
mov eax, dword [ebp - 0xb8]
setg cl
mov edi, ecx
mov dword [esp + 8], eax
mov dword [esp + 4], edi
mov ecx, dword [ebp + 0x1c]
mov dword [esp], ecx
mov dword [ebp - 0x140], edx
call fcn.0041e4a0
mov eax, dword [ebp + 0x1c]
mov dword [esp], eax
call fcn.0041eb20
test edi, edi
mov edx, dword [ebp - 0x140]
jne 0x40d233
mov ecx, dword [ebp - 0x98]
mov edi, esi
mov esi, edx
sub ecx, dword [ebp - 0x7c]
test edi, edi
jne 0x40dab4
mov ebx, dword [ebp + 8]
mov ebx, dword [ebx + 0x28]
mov dword [ebp - 0xb8], ebx
mov ebx, dword [ebp + 8]
mov edi, dword [ebx]
mov edx, dword [ebp - 0x78]
mov ebx, dword [ebp - 0x84]
mov dword [ebx + edx*4], esi
mov esi, dword [ebp - 0xb8]
add edx, 1
mov dword [ebp - 0x78], edx
mov edx, dword [ebp - 0xb0]
cmp dword [ebp - 0x78], esi
jl 0x40d196
mov dword [ebp - 0x78], eax
mov dword [ebp - 0x88], edi
add eax, 0x2f
mov esi, 5
cmp eax, ecx
jl 0x40e1ac
mov eax, dword [ebp - 0xd8]
test eax, eax
jle 0x40d4f5
mov ebx, dword [ebp - 0x88]
mov ecx, 3
mov eax, 0x4fb
sub ecx, dword [ebp - 0x8c]
mov edx, dword [ebp - 0xa4]
mov edi, dword [ebx + 0x24]
mov ebx, dword [ebp + 8]
sar eax, cl
sub edi, dword [ebp - 0x8c]
mov ebx, dword [ebx + 0x88]
cmp dword [ebp - 0xa8], eax
mov ecx, edi
mov dword [ebp - 0x88], ebx
cmovle eax, dword [ebp - 0xa8]
sar ebx, cl
add ebx, dword [ebp - 0xd8]
mov dword [ebp - 0x80], eax
lea eax, [edx + edx*4]
lea eax, [eax*8 + 0x14]
shl eax, 3
sub ebx, eax
mov eax, dword [ebp - 0xc4]
test eax, eax
jne 0x40d3af
mov ecx, dword [ebp + 8]
mov eax, dword [ecx + 0x24]
sub eax, dword [ecx + 0x28]
lea edx, [eax + eax]
cmp edx, dword [ebp - 0xdc]
jle 0x40de8f
lea eax, [ebx*8]
sub eax, ebx
lea ebx, [eax + 3]
test eax, eax
cmovns ebx, eax
sar ebx, 2
mov eax, dword [ebp - 0xbc]
test eax, eax
jne 0x40de40
add ebx, dword [ebp - 0x78]
mov ecx, dword [ebp - 0x78]
mov dword [ebp - 0x94], ebx
mov edx, ebx
mov ebx, dword [ebp - 0x7c]
add edx, 0x20
sar edx, 6
lea eax, [ecx + ebx + 0x3f]
mov ecx, edi
sar eax, 6
add eax, 2
sub eax, dword [ebp - 0xd0]
cmp edx, eax
cmovge eax, edx
add eax, dword [ebp - 0xd0]
cmp eax, dword [ebp - 0x80]
cmovg eax, dword [ebp - 0x80]
sub eax, dword [ebp - 0xd0]
mov ebx, eax
shl ebx, 6
mov dword [ebp - 0x78], ebx
mov ebx, dword [ebp - 0x94]
sub ebx, dword [ebp - 0xd8]
shl ebx, cl
mov edi, dword [ebp + 8]
fld dword [0x45299c]
mov edx, dword [edi + 0x8c]
cmp edx, 0x3c9
jg 0x40d459
fstp st(0)
lea ecx, [edx + 1]
add edx, 0x15
mov dword [edi + 0x8c], ecx
mov dword [ebp - 0x6c], edx
fild dword [ebp - 0x6c]
fdivr dword [0x452960]
mov edx, dword [ebp + 8]
mov ecx, dword [edx + 0x38]
test ecx, ecx
je 0x40ddfa
mov ecx, edx
mov edx, dword [ebp - 0x78]
mov edi, dword [ecx + 0x84]
sub ebx, dword [ebp - 0x88]
sub edx, dword [ebp - 0xd8]
sub ebx, edi
add edx, dword [ecx + 0x80]
mov dword [ecx + 0x80], edx
fnstcw word [ebp - 0x6e]
mov dword [ebp - 0x6c], ebx
mov ebx, dword [ebp + 8]
fild dword [ebp - 0x6c]
fmulp st(1)
movzx ecx, word [ebp - 0x6e]
mov ch, 0xc
mov word [ebp - 0x70], cx
fldcw word [ebp - 0x70]
fistp dword [ebp - 0x6c]
fldcw word [ebp - 0x6e]
mov ecx, dword [ebp - 0x6c]
add ecx, edi
mov dword [ebx + 0x84], ecx
neg ecx
test edx, edx
mov dword [ebx + 0x88], ecx
js 0x40e77d
add eax, dword [ebp - 0xd0]
cmp eax, dword [ebp - 0x80]
cmovg eax, dword [ebp - 0x80]
mov dword [ebp - 0xa8], eax
mov dword [esp + 4], eax
mov ebx, dword [ebp + 0x1c]
mov dword [esp], ebx
call fcn.0041e820
mov ebx, dword [ebp + 8]
mov ebx, dword [ebx]
mov dword [ebp - 0x88], ebx
cmp dword [ebp - 0xa4], 2
je 0x40e124
mov edi, dword [ebp - 0x88]
mov eax, dword [edi + 8]
lea edx, [eax*4 + 0x12]
and edx, 0xfffffff0
mov eax, edx
call fcn.00443b10
sub esp, eax
mov eax, edx
lea ebx, [esp + 0x50]
call fcn.00443b10
sub esp, eax
mov eax, edx
lea ecx, [esp + 0x50]
mov dword [ebp - 0x78], ecx
call fcn.00443b10
sub esp, eax
mov eax, dword [ebp - 0xa8]
mov edx, dword [ebp + 0x1c]
lea edi, [esp + 0x50]
mov dword [ebp - 0x7c], edi
xor edi, edi
shl eax, 3
mov dword [ebp - 0x80], eax
mov dword [esp], edx
call fcn.0041eb20
mov edx, dword [ebp - 0xa8]
shl edx, 6
sub edx, 1
sub edx, eax
cmp byte [ebp - 0x73], 0
je 0x40d589
mov ecx, dword [ebp - 0x8c]
lea eax, [ecx*8 + 0x10]
cmp edx, eax
setge al
movzx eax, al
mov edi, eax
shl edi, 3
mov ecx, dword [ebp + 8]
sub edx, edi
mov eax, dword [ecx + 0x54]
mov dword [esp + 0x40], 1
mov dword [esp + 0x44], eax
mov eax, dword [ebp + 0x1c]
mov dword [esp + 0x3c], eax
mov ecx, dword [ebp - 0x8c]
mov dword [esp + 0x38], ecx
mov eax, dword [ebp - 0xa4]
mov dword [esp + 0x34], eax
lea eax, [ebp - 0x54]
mov ecx, dword [ebp - 0x7c]
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x30], ecx
mov ecx, dword [ebp - 0x78]
mov dword [esp + 0x24], eax
lea eax, [ebp - 0x58]
mov dword [esp + 0x1c], eax
lea eax, [ebp - 0x5c]
mov dword [esp + 0x20], edx
mov dword [esp + 0x18], eax
mov dword [esp + 0x28], ecx
mov dword [esp + 0x14], esi
mov esi, dword [ebp - 0x90]
mov dword [esp + 0x10], esi
mov esi, dword [ebp - 0x84]
mov dword [esp + 0xc], esi
mov edx, dword [ebp + 8]
mov eax, dword [edx + 0x28]
mov dword [esp + 8], eax
mov eax, dword [edx + 0x24]
mov dword [esp + 4], eax
mov eax, dword [edx]
mov dword [esp], eax
call fcn.0041eb80
mov ecx, dword [ebp + 8]
mov esi, eax
mov dword [ecx + 0x54], eax
mov eax, dword [ebp - 0xa4]
mov dword [esp + 0x1c], eax
mov edx, dword [ebp + 0x1c]
mov dword [esp + 0x14], ebx
mov dword [esp + 0x18], edx
mov ecx, dword [ebp - 0xd4]
mov dword [esp + 0x10], ecx
mov eax, dword [ebp - 0xc8]
mov dword [esp + 0xc], eax
mov edx, dword [ebp + 8]
mov eax, dword [edx + 0x28]
mov dword [esp + 8], eax
mov eax, dword [edx + 0x24]
mov dword [esp + 4], eax
mov eax, dword [edx]
mov dword [esp], eax
call fcn.00418ed0
mov ecx, dword [ebp + 8]
mov eax, dword [ebp - 0xa4]
mov ecx, dword [ecx]
imul eax, dword [ecx + 8]
mov dword [ebp - 0x98], ecx
add eax, 0xf
and eax, 0xfffffff0
call fcn.00443b10
sub esp, eax
mov edx, dword [ebp + 8]
lea eax, [esp + 0x50]
mov ecx, dword [ebp - 0x54]
mov dword [ebp - 0xc0], eax
mov eax, dword [ebp - 0x5c]
add edx, 0x44
mov dword [ebp - 0x84], edx
mov edx, dword [ebp - 0x58]
mov dword [ebp - 0x88], eax
mov eax, dword [ebp + 8]
mov dword [ebp - 0x90], ecx
mov ecx, dword [ebp - 0xa8]
mov dword [ebp - 0x94], edx
mov eax, dword [eax + 0x48]
shl ecx, 6
sub ecx, edi
mov dword [esp + 0x28], eax
mov eax, dword [ebp - 0x9c]
mov edx, dword [ebp - 0xcc]
cmp dword [ebp - 0xa4], 2
lea eax, [edx + eax*4]
mov edx, dword [ebp - 0x84]
mov dword [ebp - 0x9c], eax
mov eax, 0
cmove eax, dword [ebp - 0x9c]
mov dword [esp + 0x48], esi
mov dword [esp + 0x4c], edx
mov esi, dword [ebp - 0x8c]
mov dword [esp + 0x44], esi
mov edx, dword [ebp + 0x1c]
mov dword [esp + 0x40], edx
mov esi, dword [ebp - 0x90]
mov dword [esp + 0x38], ecx
mov dword [esp + 0x3c], esi
mov esi, dword [ebp - 0xac]
mov dword [esp + 0x34], esi
mov edx, dword [ebp - 0x88]
mov dword [esp + 0x30], edx
mov ecx, dword [ebp - 0x94]
mov dword [esp + 0x2c], ecx
mov esi, dword [ebp - 0xc4]
mov dword [esp + 0x24], esi
mov edx, dword [ebp - 0x78]
mov dword [esp + 0x20], edx
mov esi, dword [ebp - 0x100]
mov dword [esp + 0x1c], esi
mov edx, dword [ebp - 0xc0]
mov dword [esp + 0x14], eax
mov dword [esp + 0x18], edx
mov esi, dword [ebp - 0xcc]
mov dword [esp + 0x10], esi
mov edx, dword [ebp + 8]
mov eax, dword [edx + 0x28]
mov dword [esp + 0xc], eax
mov eax, dword [edx + 0x24]
mov dword [esp + 8], eax
mov ecx, dword [ebp - 0x98]
mov dword [esp], 1
mov dword [esp + 4], ecx
call fcn.0041bc40
test edi, edi
je 0x40d7be
mov dword [esp + 8], 1
xor eax, eax
mov esi, dword [ebp + 8]
cmp dword [esi + 0x6c], 1
setle al
mov dword [esp + 4], eax
mov edi, dword [ebp + 0x1c]
mov dword [esp], edi
call fcn.0041e6e0
mov edx, dword [ebp + 0x1c]
mov ecx, dword [ebp - 0xa4]
bsr eax, dword [edx + 0x1c]
mov dword [esp + 0x20], edx
mov dword [esp + 0x24], ecx
mov esi, dword [ebp + 0x1c]
mov edi, dword [ebp - 0x80]
xor eax, 0x1f
mov edx, dword [esi + 0x14]
lea eax, [eax + edx - 0x20]
sub edi, eax
mov dword [esp + 0x1c], edi
mov edx, dword [ebp - 0x7c]
mov dword [esp + 0x14], ebx
mov dword [esp + 0x18], edx
mov ebx, dword [ebp - 0xd4]
mov dword [esp + 0x10], ebx
mov ebx, dword [ebp - 0xc8]
mov dword [esp + 0xc], ebx
mov ebx, dword [ebp + 8]
mov eax, dword [ebx + 0x28]
mov dword [esp + 8], eax
mov eax, dword [ebx + 0x24]
mov dword [esp + 4], eax
mov eax, dword [ebx]
mov dword [esp], eax
call fcn.00419030
mov edi, dword [ebp - 0xbc]
test edi, edi
je 0x40dbf2
mov ebx, dword [ebp + 8]
mov edx, dword [ebp - 0xa4]
mov eax, dword [ebx]
mov edi, dword [eax + 8]
imul edx, edi
test edx, edx
jle 0x40d85c
mov eax, dword [ebp - 0xc8]
lea edx, [eax + edx*4]
mov dword [eax], 0xc1e00000
add eax, 4
cmp eax, edx
jne 0x40d84f
mov ebx, dword [ebp + 8]
mov eax, dword [ebp - 0x60]
mov esi, dword [ebp - 0xe8]
cmp byte [ebp - 0xf8], 0
fld dword [ebp - 0xec]
mov dword [ebx + 0x60], eax
fstp dword [ebx + 0x64]
mov dword [ebx + 0x68], esi
je 0x40d899
test edi, edi
jle 0x40d899
mov eax, dword [ebp - 0xc8]
lea edx, [eax + edi*4]
fld dword [eax]
fstp dword [eax + edi*4]
add eax, 4
cmp eax, edx
jne 0x40d88d
mov edx, dword [ebp - 0xb4]
mov esi, dword [ebp - 0xa0]
imul edx, edi
test esi, esi
je 0x40e02e
xor eax, eax
test edx, edx
jle 0x40d8da
mov ebx, dword [ebp - 0xc8]
mov ecx, dword [ebp - 0xfc]
fld dword [ebx + eax*4]
fld dword [ecx + eax*4]
fxch st(1)
fcomi st(1)
fcmovnb st(0), st(1)
fstp st(1)
fstp dword [ecx + eax*4]
add eax, 1
cmp eax, edx
jne 0x40d8c2
mov ebx, dword [ebp + 8]
lea edx, [edi*4]
mov dword [ebp - 0x78], 0
mov dword [ebp - 0x7c], edx
mov ecx, dword [ebp - 0x10c]
mov edx, dword [ebp - 0xfc]
mov eax, dword [ebx + 0x28]
mov esi, dword [ebx + 0x24]
mov ebx, dword [ebp - 0xc8]
mov dword [ebp - 0x80], eax
test esi, esi
jle 0x40d92c
xor eax, eax
nop
mov dword [ebx + eax*4], 0
mov dword [ecx + eax*4], 0xc1e00000
mov dword [edx + eax*4], 0xc1e00000
add eax, 1
cmp eax, esi
jne 0x40d910
cmp edi, dword [ebp - 0x80]
jle 0x40d950
mov eax, dword [ebp - 0x80]
mov dword [ebx + eax*4], 0
mov dword [ecx + eax*4], 0xc1e00000
mov dword [edx + eax*4], 0xc1e00000
add eax, 1
cmp eax, edi
jne 0x40d934
add dword [ebp - 0x78], 1
add ebx, dword [ebp - 0x7c]
add ecx, dword [ebp - 0x7c]
add edx, dword [ebp - 0x7c]
mov eax, dword [ebp - 0x78]
cmp dword [ebp - 0xb4], eax
jg 0x40d909
xor eax, eax
cmp byte [ebp - 0xf5], 0
je 0x40d97e
mov ebx, dword [ebp + 8]
mov ebx, dword [ebx + 0x6c]
mov eax, ebx
add eax, 1
mov ebx, dword [ebp + 8]
mov dword [ebx + 0x6c], eax
mov ebx, dword [ebp + 0x1c]
mov eax, dword [ebx + 0x1c]
mov ebx, dword [ebp + 8]
mov dword [ebx + 0x44], eax
mov ebx, dword [ebp + 0x1c]
mov dword [esp], ebx
call fcn.0041e870
mov ebx, dword [ebx + 0x2c]
mov eax, 0xfffffffd
test ebx, ebx
cmove eax, dword [ebp - 0xa8]
mov dword [ebp - 0xa8], eax
mov esp, dword [ebp - 0x124]
mov eax, dword [ebp - 0xa8]
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret
cmp dword [ebp - 0x8c], 1
fld dword [0x452994]
fld dword [0x452998]
je 0x40de7a
mov ebx, dword [ebp + 8]
mov eax, dword [ebp - 0xf0]
mov ebx, dword [ebx + 0x24]
mov edx, ebx
mov ebx, dword [ebp + 8]
add edx, 1
mov ebx, dword [ebx + 0x28]
mov esi, ebx
lea ebx, [eax + edx*4]
sub esi, 1
cmp dword [ebp - 0xa4], 2
mov eax, dword [ebp - 0x84]
jne 0x40daa2
fld dword [0x452968]
mov dword [ebp - 0x78], esi
jmp 0x40da70
mov esi, dword [edi + 8]
lea eax, [edx + 1]
mov ecx, dword [ebp - 0xf0]
add edx, esi
fld dword [ecx + edx*4]
lea ecx, [eax + esi]
mov esi, dword [ebp - 0xf0]
fadd st(0)
fsub dword [esi + ecx*4]
fld dword [ebx]
fadd st(0)
fsub dword [ebx - 4]
fsub dword [ebx + 4]
faddp st(1)
fsub dword [esi + edx*4 - 4]
fmul st(1)
fcomi st(2)
jbe 0x40da5c
mov esi, dword [ebp - 0x84]
add dword [esi + eax*4 - 4], 1
fcompi st(3)
jbe 0x40da6b
mov esi, dword [ebp - 0x84]
add dword [esi + eax*4 - 4], 1
add ebx, 4
mov edx, eax
cmp edx, dword [ebp - 0x78]
jl 0x40da1c
fstp st(0)
fstp st(0)
fstp st(0)
jmp 0x40d147
fld dword [ebx]
add edx, 1
fadd st(0)
fsub dword [ebx - 4]
fsub dword [ebx + 4]
fcomi st(1)
jbe 0x40da96
add dword [eax + edx*4 - 4], 1
fcompi st(2)
jbe 0x40da9f
add dword [eax + edx*4 - 4], 1
add ebx, 4
cmp edx, esi
jl 0x40da80
fstp st(0)
fstp st(0)
jmp 0x40d147
mov ecx, ebx
mov esi, edx
cmp dword [ebp - 0x94], 2
jg 0x40daee
mov dword [ebp - 0x94], 2
mov ebx, dword [ebp + 8]
mov ebx, dword [ebx + 0x28]
mov dword [ebp - 0xb8], ebx
mov ebx, dword [ebp + 8]
mov edi, dword [ebx]
jmp 0x40d2e0
cmp dword [ebp - 0x94], 2
mov esi, edx
mov ecx, dword [ebp - 0xe4]
jle 0x40dabd
sub dword [ebp - 0x94], 1
jmp 0x40d2cf
mov esi, dword [ebp - 0xa0]
mov dword [esp + 8], esi
mov eax, dword [ebp - 0x78]
add eax, dword [ebp - 0xb0]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x78]
mov dword [esp], eax
call sub.msvcrt.dll_memmove
mov edx, dword [ebp - 0xb0]
mov dword [esp + 8], edx
mov eax, dword [ebp + ebx*4 - 0x50]
add eax, 0x1000
mov dword [esp + 4], eax
mov eax, dword [ebp - 0xac]
add eax, dword [ebp - 0x78]
mov dword [esp], eax
call sub.msvcrt.dll_memmove
jmp 0x40c164
fld dword [0x4529a4]
mov dword [ebp - 0xcc], edx
jmp 0x40dbaf
fstp st(1)
mov edx, dword [ebp - 0x80]
fadd st(2), st(0)
fxch st(2)
fst dword [edx + ecx*4]
mov edx, dword [ebp - 0xcc]
fld dword [eax + 0x14]
fmul st(1)
fxch st(3)
fmul dword [eax + 0x10]
fsubp st(3)
fxch st(2)
fst dword [edx + ebx*4 + 0x70]
mov edx, dword [ebp - 0xbc]
test edx, edx
je 0x40db9a
fldz
xor edx, edx
fcompi st(3)
fstp st(2)
fxch st(1)
sete dl
mov dword [ebp - 0xbc], edx
jmp 0x40db9e
fstp st(2)
fxch st(1)
add ecx, 1
cmp ecx, dword [ebp - 0x9c]
je 0x40bcd6
fxch st(1)
fld dword [esi]
fmul st(1)
fld dword [0x4529a8]
fcomi st(1)
fcmovnb st(0), st(1)
fstp st(1)
fld dword [0x4529ac]
fxch st(1)
fcomi st(1)
fcmovb st(0), st(1)
fstp st(1)
add edi, 1
cmp edi, dword [ebp - 0x84]
fldz
jne 0x40db57
fstp st(0)
fld dword [eax + 0x18]
xor edi, edi
fmulp st(1)
add esi, dword [ebp - 0xac]
jmp 0x40db59
mov eax, dword [ebx]
mov edi, dword [eax + 8]
jmp 0x40d85c
cmp dword [ebp - 0xb8], 0x18
fld dword [0x452988]
fld dword [0x452968]
fld dword [0x452980]
jg 0x40bf44
fstp st(0)
fstp st(0)
jmp 0x40bf57
fstp st(0)
fstp st(0)
jmp 0x40bf57
fnstcw word [ebp - 0x6e]
fld st(1)
mov esi, 0x1b
fsub st(1)
fabs
fld dword [0x4529b4]
fcompi st(1)
fstp st(0)
movzx eax, word [ebp - 0x6e]
fcmovbe st(0), st(1)
fstp st(1)
fmul dword [0x4529bc]
mov ah, 4
mov word [ebp - 0x72], ax
movzx eax, word [ebp - 0x6e]
fadd dword [0x452968]
mov ah, 0xc
mov word [ebp - 0x70], ax
mov eax, 7
fldcw word [ebp - 0x72]
frndint
fldcw word [ebp - 0x6e]
fldcw word [ebp - 0x70]
fistp dword [ebp - 0x6c]
fldcw word [ebp - 0x6e]
mov edx, dword [ebp - 0x6c]
mov dword [esp + 8], 1
mov dword [esp + 4], 1
sub edx, 1
cmp edx, 7
cmovle eax, edx
xor ebx, ebx
test eax, eax
cmovns ebx, eax
mov eax, dword [ebp + 0x1c]
mov dword [esp], eax
call fcn.0041e4a0
mov edi, dword [ebp - 0x60]
add edi, 1
mov dword [ebp - 0x60], edi
bsr edi, edi
xor edi, 0x1f
mov dword [esp + 8], 6
sub esi, edi
mov dword [esp + 4], esi
mov edx, dword [ebp + 0x1c]
mov dword [esp], edx
call fcn.0041e570
mov eax, 0x1f
mov ecx, esi
sub eax, edi
mov dword [esp + 8], eax
mov eax, 0x10
mov edx, dword [ebp - 0x60]
shl eax, cl
sub edx, eax
mov dword [esp + 4], edx
mov esi, dword [ebp + 0x1c]
mov dword [esp], esi
call fcn.0041e6e0
sub dword [ebp - 0x60], 1
mov dword [esp + 8], 3
mov dword [esp + 4], ebx
mov dword [esp], esi
call fcn.0041e6e0
mov edx, dword [esi + 0x14]
bsr eax, dword [esi + 0x1c]
xor eax, 0x1f
lea eax, [eax + edx - 0x1f]
cmp dword [ebp - 0xe4], eax
jg 0x40de53
mov dword [ebp - 0xe8], 0
add ebx, 1
mov byte [ebp - 0xf6], 1
mov dword [ebp - 0x6c], ebx
mov ebx, dword [ebp + 8]
fild dword [ebp - 0x6c]
fmul dword [0x4529c0]
mov ecx, dword [ebx + 0x60]
mov edi, ebx
fst dword [ebp - 0xec]
fchs
fstp dword [ebp - 0x84]
jmp 0x40bfd6
xor esi, esi
jmp 0x40d2e0
mov ecx, dword [ebp + ebx*4 - 0x50]
mov eax, dword [ebp - 0x80]
mov edx, dword [edi + 0x68]
fld dword [edi + 0x64]
fchs
add ecx, 0x1000
mov dword [ebp - 0x94], ecx
add eax, dword [ebp - 0x7c]
mov ecx, dword [ebp - 0x88]
fst dword [esp + 0xc]
mov dword [esp + 0x1c], 0
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], edx
mov dword [esp + 0x10], edx
lea eax, [ecx + eax*4]
fstp dword [esp + 8]
mov dword [esp + 4], esi
mov ecx, dword [ebp - 0xcc]
mov dword [esp], ecx
mov ecx, dword [ebp - 0xcc]
mov edx, dword [ebp - 0x94]
call fcn.0040a630
mov ecx, dword [edi + 0x60]
mov eax, dword [ebp - 0x9c]
mov edx, dword [edi]
mov dword [ebp - 0xcc], ecx
mov ecx, dword [edi + 4]
add eax, ecx
mov dword [ebp - 0x7c], ecx
imul eax, ebx
mov dword [ebp - 0x80], eax
jmp 0x40c07e
mov edi, edx
sub ebx, dword [ebp - 0x88]
mov edx, dword [edx + 0x84]
fnstcw word [ebp - 0x6e]
sub ebx, edx
mov dword [ebp - 0x6c], ebx
fild dword [ebp - 0x6c]
fmulp st(1)
movzx ecx, word [ebp - 0x6e]
mov ch, 0xc
mov word [ebp - 0x70], cx
fldcw word [ebp - 0x70]
fistp dword [ebp - 0x6c]
fldcw word [ebp - 0x6e]
mov ecx, dword [ebp - 0x6c]
add edx, ecx
mov dword [edi + 0x84], edx
neg edx
mov dword [edi + 0x88], edx
jmp 0x40d4c8
xor ebx, ebx
mov dword [ebp - 0x78], pe_nt_image_headers32
mov eax, 2
jmp 0x40d428
mov dword [esp + 0xc], 2
mov dword [esp + 8], 0x45281c
mov edi, dword [ebp - 0xe8]
mov dword [esp], esi
mov dword [esp + 4], edi
call fcn.0041e4f0
jmp 0x40dd39
fstp st(0)
fstp st(0)
fld dword [0x45298c]
fld dword [0x452990]
jmp 0x40d9df
cmp eax, dword [ebp - 0xdc]
jle 0x40e695
lea eax, [ebx + ebx*2]
mov ebx, eax
shr ebx, 0x1f
add ebx, eax
sar ebx, 1
jmp 0x40d3c3
mov ebx, dword [ebp + 8]
mov dword [ebx + 0x48], 0
jmp 0x40d051
mov eax, dword [ebp - 0x7c]
add eax, 0xf
cmp dword [ebp - 0xe4], eax
jle 0x40bfb7
mov dword [esp + 8], 1
mov dword [esp + 4], 0
mov ebx, dword [ebp + 0x1c]
mov dword [esp], ebx
call fcn.0041e4a0
mov ebx, dword [ebp + 8]
mov byte [ebp - 0xf6], 0
fldz
fchs
fstp dword [ebp - 0x84]
fldz
mov ecx, dword [ebx + 0x60]
mov edi, ebx
fstp dword [ebp - 0xec]
jmp 0x40bfd6
mov dword [ebp - 0xd8], 0
mov eax, dword [ebp - 0xa8]
mov dword [ebp - 0xe0], eax
jmp 0x40bc43
mov ecx, 0xffffffff
jmp 0x40bbd6
fstp st(0)
fldz
jmp 0x40cb46
mov eax, 1
mov esi, dword [ebp - 0x7c]
mov ebx, 1
shl eax, cl
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x80]
mov dword [esp], edi
sar eax, cl
mov dword [esp + 4], eax
call fcn.0041bbc0
mov edx, dword [ebp - 0x7c]
mov ecx, esi
shl ebx, cl
test ebx, ebx
mov dword [ebp - 0x78], ebx
mov dword [ebp - 0x94], edx
jg 0x40cb07
cmp dword [ebp - 0x84], 1
fldz
jne 0x40cb68
mov dword [ebp - 0x6c], esi
fild dword [ebp - 0x6c]
fmul dword [0x4529c8]
jmp 0x40cb81
fmul dword [0x4529cc]
jmp 0x40cb81
fstp st(0)
fldz
jmp 0x40ca46
mov esi, dword [ebp - 0x80]
fldz
mov dword [ebp - 0x78], 1
xor ecx, ecx
jmp 0x40ca14
movzx ecx, byte [ebp - 0x8c]
mov eax, esi
mov ebx, dword [ebp - 0xcc]
shl eax, cl
add eax, dword [ebp - 0x9c]
lea edx, [ebx + eax*4]
xor eax, eax
fld dword [edi + eax*4]
fadd dword [edx + eax*4]
fstp dword [edi + eax*4]
add eax, 1
cmp eax, dword [ebp - 0x80]
jne 0x40dfe8
jmp 0x40c9cb
fxch st(1)
fmul dword [0x4529c8]
jmp 0x40ca7b
fxch st(1)
fmul dword [0x4529cc]
jmp 0x40ca7b
mov dword [ebp - 0xb0], 0
jmp 0x40cbbc
fldz
jmp 0x40ca59
test edx, edx
jle 0x40d8da
mov ecx, dword [ebp - 0xfc]
xor eax, eax
mov ebx, dword [ebp - 0x10c]
fld dword [ecx + eax*4]
fstp dword [ebx + eax*4]
add eax, 1
cmp eax, edx
jne 0x40e044
mov ecx, dword [ebp - 0xc8]
xor eax, eax
mov ebx, dword [ebp - 0xfc]
fld dword [ecx + eax*4]
fstp dword [ebx + eax*4]
add eax, 1
cmp eax, edx
jne 0x40e05f
jmp 0x40d8da
movzx ecx, word [esi]
sub eax, 2
add esi, 2
mov word [edi], cx
add edi, 2
jmp 0x40bd07
movzx eax, byte [esi]
mov byte [edi], al
add edi, 1
mov eax, 0xfff
mov esi, dword [ebp - 0x94]
add esi, 1
jmp 0x40bcfb
fstp st(0)
fldz
add ecx, edi
fstp dword [edx + esi*4]
add esi, 1
cmp esi, dword [ebp - 0x78]
jne 0x40c361
fstp st(0)
jmp 0x40c393
fstp st(0)
mov esp, dword [ebp - 0x7c]
mov byte [ebp - 0x74], 1
mov byte [ebp - 0x73], 0
mov byte [ebp - 0xf5], 0
mov dword [ebp - 0xa0], 0
mov dword [ebp - 0xc4], 0
mov dword [esp + 8], 3
mov esi, dword [ebp - 0xa0]
mov dword [esp + 4], esi
mov ebx, dword [ebp + 0x1c]
mov dword [esp], ebx
call fcn.0041e4a0
jmp 0x40c484
xor edx, edx
mov dword [ebp - 0x80], 0
sub ebx, edx
cmp dword [ebp - 0x78], edi
mov dword [ebp - 0x7c], ebx
jg 0x40ce06
xor ebx, ebx
jmp 0x40ce90
mov eax, dword [ebp - 0x8c]
test eax, eax
jne 0x40e6bf
mov ebx, dword [ebp - 0xe0]
mov edx, 0x66666667
movzx ecx, byte [ebp - 0x8c]
lea eax, [ebx*8 - 0x50]
sar eax, cl
lea ecx, [eax + eax]
mov eax, ecx
sar ecx, 0x1f
imul edx
mov eax, 8
sar edx, 1
sub edx, ecx
cmp edx, 0x22
jle 0x40e191
cmp edx, 0x31
mov al, 0xc
jle 0x40e191
cmp edx, 0x43
mov al, 0x10
jle 0x40e191
cmp edx, 0x53
mov al, 0x12
jle 0x40e191
cmp edx, 0x65
mov al, 0x13
jle 0x40e191
cmp edx, 0x82
mov al, 0x64
mov edx, 0x14
cmovl eax, edx
mov ebx, dword [ebp + 8]
mov edx, dword [ebx + 0x24]
cmp eax, edx
cmovl eax, edx
mov edx, dword [ebx + 0x28]
cmp eax, edx
cmovg eax, edx
mov dword [ebp - 0x5c], eax
jmp 0x40d502
cmp dword [ebp - 0xa4], 2
mov ebx, 5
jne 0x40e1c9
jmp 0x40e442
fstp st(0)
jmp 0x40e1c9
fstp st(0)
jmp 0x40e1c9
fstp st(0)
mov esi, dword [ebp - 0xb8]
fldz
xor edi, edi
sub esi, 1
test esi, esi
jle 0x40e215
mov edx, dword [ebp - 0x88]
mov ecx, 2
mov eax, dword [edx + 8]
mov edx, dword [ebp - 0xf0]
sub ecx, eax
imul eax, edi
mov dword [ebp - 0x78], ecx
lea ecx, [edx + eax*4]
mov edx, dword [ebp - 0x78]
xor eax, eax
fld dword [ecx + eax*4]
mov dword [ebp - 0x6c], edx
add eax, 1
fild dword [ebp - 0x6c]
add edx, 2
cmp eax, esi
fmulp st(1)
faddp st(1)
jne 0x40e1fe
add edi, 1
cmp dword [ebp - 0xa4], edi
jg 0x40e1d6
mov eax, dword [ebp - 0xa4]
add eax, eax
imul eax, esi
mov dword [ebp - 0x6c], eax
fild dword [ebp - 0x6c]
fdivp st(1)
fld dword [0x452998]
fxch st(1)
fcomi st(1)
fstp st(1)
jbe 0x40e244
sub ebx, 1
fld dword [0x4529e4]
fxch st(1)
fcomi st(1)
fstp st(1)
jbe 0x40e255
sub ebx, 1
fld dword [0x4529e8]
fcompi st(1)
jbe 0x40e262
add ebx, 1
fld dword [0x4529ec]
fcompi st(1)
fstp st(0)
jbe 0x40e271
add ebx, 1
xor esi, esi
test ebx, ebx
mov dword [esp + 0xc], 7
cmovns esi, ebx
mov dword [esp + 8], str.wmW_
mov dword [esp + 4], esi
mov ebx, dword [ebp + 0x1c]
mov dword [esp], ebx
call fcn.0041e4f0
mov dword [esp], ebx
call fcn.0041eb20
mov ebx, dword [ebp + 8]
mov dword [ebp - 0x78], eax
mov ebx, dword [ebx]
mov dword [ebp - 0x88], ebx
jmp 0x40d320
cmp dword [ebp - 0xb4], 1
jne 0x40c500
mov dword [esp + 0x18], 1
mov eax, dword [ebx + 0x24]
sub eax, dword [ebp - 0x8c]
mov dword [esp + 0x14], eax
mov eax, dword [ebx + 4]
mov dword [esp + 0x10], eax
mov eax, dword [ebx + 0x3c]
add ebx, 0x40
mov dword [esp + 0xc], eax
mov esi, dword [ebp - 0x94]
mov dword [esp + 8], esi
mov edi, dword [ebp - 0x88]
mov dword [esp], ebx
mov dword [esp + 4], edi
call fcn.0041ce70
jmp 0x40c61b
mov dword [ebp - 0xdc], 0
mov edi, dword [ebp - 0xa0]
xor edx, edx
test edi, edi
cmove edx, dword [ebp - 0xd4]
cmp dword [ebp - 0x90], 1
jle 0x40e43e
mov eax, dword [ebp - 0xa0]
mov edi, 1
mov ecx, dword [ebp - 0x8c]
shl eax, 2
movsx ecx, byte [eax + ecx*8 + 0x452880]
mov dword [ebp - 0x78], ecx
mov ecx, dword [ebp - 0x8c]
movsx eax, byte [eax + ecx*8 + 0x452881]
xor ecx, ecx
mov dword [ebp - 0x7c], eax
mov eax, dword [ebp - 0xd4]
mov esi, ecx
mov ebx, dword [ebp - 0x118]
add eax, edx
cmp eax, ecx
cmovle esi, eax
setle al
add ecx, dword [ebp - 0xd4]
movzx eax, al
mov dword [ebx + edi*4], eax
cmp ecx, edx
mov ebx, ecx
mov ecx, dword [ebp - 0x114]
cmovge ebx, edx
mov edx, dword [ebp - 0x11c]
setge al
movzx eax, al
mov dword [edx + edi*4], eax
mov edx, dword [ecx + edi*4]
add edi, 1
mov eax, edx
sub edx, dword [ebp - 0x7c]
sub eax, dword [ebp - 0x78]
mov ecx, eax
sar ecx, 0x1f
xor eax, ecx
sub eax, ecx
lea ecx, [eax + esi]
mov eax, edx
sar eax, 0x1f
xor edx, eax
sub edx, eax
add edx, ebx
cmp edi, dword [ebp - 0x90]
jne 0x40e360
xor eax, eax
cmp edx, ecx
mov edx, dword [ebp - 0x90]
mov ebx, dword [ebp - 0x108]
setle al
mov esi, dword [ebp - 0xac]
sub edx, 2
mov dword [esi + ebx*4], eax
js 0x40e428
lea eax, [esi + ebx*4]
mov ebx, dword [ebp - 0x118]
mov esi, dword [ebp - 0x11c]
jmp 0x40e411
mov ecx, dword [ebx + edx*4 + 4]
sub edx, 1
mov dword [eax - 4], ecx
sub eax, 4
cmp edx, 0xffffffff
je 0x40e428
cmp dword [eax], 1
jne 0x40e3ff
mov ecx, dword [esi + edx*4 + 4]
sub edx, 1
mov dword [eax - 4], ecx
sub eax, 4
cmp edx, 0xffffffff
jne 0x40e411
mov ebx, dword [ebp + 8]
mov esp, dword [ebp - 0x128]
mov ebx, dword [ebx]
mov dword [ebp - 0x88], ebx
jmp 0x40ccb2
xor ecx, ecx
jmp 0x40e3cd
mov esi, dword [ebp - 0x88]
fldz
mov ecx, dword [ebp - 0x8c]
fld st(0)
mov edi, dword [ebp - 0xcc]
mov ebx, dword [esi + 0x20]
xor esi, esi
movsx edx, word [ebx]
movsx eax, word [ebx + 2]
shl edx, cl
shl eax, cl
cmp edx, eax
jge 0x40e501
mov dword [ebp - 0x78], ecx
mov ecx, dword [ebp - 0x9c]
lea edx, [edi + edx*4]
lea eax, [edi + eax*4]
fldz
fld dword [edx + ecx*4]
fmul dword [edx]
add edx, 4
cmp edx, eax
faddp st(1)
jne 0x40e481
mov ecx, dword [ebp - 0x78]
add esi, 1
faddp st(2)
add ebx, 2
cmp esi, 8
jne 0x40e45d
fstp st(0)
fld dword [0x4529d4]
mov ebx, 1
fmulp st(1)
fld dword [0x4529d8]
fxch st(1)
fcomi st(1)
fstp st(1)
ja 0x40e1bf
fld dword [0x4529dc]
fxch st(1)
mov bl, 2
fcomi st(1)
fstp st(1)
ja 0x40e1c3
fld dword [0x4529e0]
fxch st(1)
mov bl, 3
fcomi st(1)
fstp st(1)
ja 0x40e1c7
fld dword [0x45296c]
fxch st(1)
xor ebx, ebx
fcompi st(1)
fstp st(0)
setbe bl
add ebx, 4
jmp 0x40e1c9
fld st(0)
jmp 0x40e492
test esi, esi
jle 0x40c2c1
mov dword [ebp - 0x80], edx
mov edi, dword [ebp - 0x98]
xor eax, eax
mov edx, dword [ebp - 0x88]
fld dword [edx + eax*4]
fstp dword [edi + eax*4]
add eax, 1
cmp eax, esi
jne 0x40e51e
mov dword [ebp - 0x98], edi
mov edx, dword [ebp - 0x80]
jmp 0x40c282
fstp st(0)
cmp edi, dword [ebp - 0x78]
jne 0x40c39f
mov ebx, dword [ebp - 0xa0]
mov esp, dword [ebp - 0x7c]
test ebx, ebx
je 0x40e0c1
mov ecx, dword [ebp - 0xc0]
mov byte [ebp - 0xf5], 1
mov ebx, dword [ebp - 0xc0]
test ecx, ecx
sete byte [ebp - 0x74]
mov dword [ebp - 0xc4], ebx
jmp 0x40e0e4
fstp st(0)
jmp 0x40bf57
mov dword [esp + 8], 0xf
mov ebx, dword [ebp - 0xbc]
mov dword [esp + 4], ebx
mov ebx, dword [ebp + 0x1c]
mov dword [esp], ebx
call fcn.0041e4a0
mov eax, dword [ebp - 0xbc]
test eax, eax
je 0x40bda1
mov eax, dword [ebp - 0xd8]
test eax, eax
jle 0x40e609
mov eax, dword [ebp - 0xd0]
add eax, 1
cmp dword [ebp - 0xa8], eax
jle 0x40e5de
mov esi, dword [ebp - 0xd0]
add esi, 2
mov dword [ebp - 0xa8], esi
shl esi, 3
mov dword [ebp - 0xe4], esi
mov eax, dword [ebp - 0xa8]
mov dword [esp + 4], eax
mov ebx, dword [ebp + 0x1c]
mov dword [esp], ebx
call fcn.0041e820
mov eax, dword [ebp - 0xa8]
mov dword [ebp - 0xb8], 2
mov dword [ebp - 0xe0], eax
mov dword [ebp - 0xbc], 1
mov ebx, dword [ebp + 0x1c]
bsr eax, dword [ebx + 0x1c]
mov ebx, dword [ebp - 0xe4]
xor eax, 0x1f
sub ebx, eax
mov eax, ebx
mov ebx, dword [ebp + 0x1c]
add eax, 0x20
mov dword [ebx + 0x14], eax
mov ebx, dword [ebp - 0xe4]
mov dword [ebp - 0x7c], ebx
jmp 0x40bda1
mov dword [ebp - 0x7c], 1
mov dword [ebp - 0xd0], 0
jmp 0x40b98a
mov byte [ebp - 0x73], 0
mov byte [ebp - 0xf7], 0
mov dword [ebp - 0xc0], 1
mov dword [ebp - 0x8c], 0
jmp 0x40b8fd
mov ebx, dword [ebx]
mov dword [ebp - 0x7c], 0
mov ecx, dword [ebp - 0x98]
mov eax, dword [ebp - 0x78]
mov dword [ebp - 0x88], ebx
jmp 0x40d310
cmp dword [ebp - 0xc0], 1
jle 0x40d3c3
lea ecx, [ebx + 0xe]
mov edx, 0x92492493
mov eax, ecx
imul edx
add edx, ecx
sar ecx, 0x1f
sar edx, 4
sub ecx, edx
add ebx, ecx
jmp 0x40d3c3
mov ebx, dword [ebp - 0x88]
mov dword [ebp - 0x78], esi
mov ecx, dword [ebp - 0x8c]
fld dword [0x4529a0]
fld st(0)
mov edi, dword [ebx + 0x20]
xor ebx, ebx
movsx edx, word [edi + ebx*2]
movsx eax, word [edi + ebx*2 + 2]
shl edx, cl
shl eax, cl
cmp eax, edx
jle 0x40e72c
mov esi, dword [ebp - 0xcc]
lea edx, [esi + edx*4]
lea eax, [esi + eax*4]
mov esi, dword [ebp - 0x9c]
fld dword [edx]
fld dword [edx + esi*4]
add edx, 4
fld st(0)
cmp edx, eax
fabs
fld st(2)
fabs
faddp st(1)
faddp st(4)
fld st(1)
fsub st(1)
fabs
fxch st(2)
faddp st(1)
fabs
faddp st(1)
faddp st(1)
jne 0x40e6fe
mov dword [ebp - 0x9c], esi
add ebx, 1
cmp ebx, 0xd
jne 0x40e6db
xor eax, eax
mov ecx, dword [ebp - 0x8c]
cmp dword [ebp - 0x8c], 1
movsx edx, word [edi + 0x1a]
fmul dword [0x4529f0]
mov esi, dword [ebp - 0x78]
setne al
add ecx, 1
shl edx, cl
lea eax, [edx + eax*8 + 5]
mov dword [ebp - 0x6c], eax
xor eax, eax
fild dword [ebp - 0x6c]
mov dword [ebp - 0x6c], edx
fmulp st(1)
fild dword [ebp - 0x6c]
fmulp st(2)
fcompi st(1)
fstp st(0)
seta al
mov dword [ebp - 0x58], eax
jmp 0x40e132
mov edi, dword [ebp - 0xbc]
add edx, 0x3f
xor ecx, ecx
mov dword [ebx + 0x80], 0
sar edx, 6
neg edx
test edi, edi
cmove ecx, edx
add eax, ecx
jmp 0x40d4c8