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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xffffffc0
sub esp, 0x3f4
mov eax, dword [0x6d7160]
xor eax, esp
mov dword [esp + 0x3f0], eax
fldz
push ebx
xor eax, eax
fstp dword [esp + 0x3c]
push esi
mov dword [esp + 0x48], eax
mov dword [esp + 0x4c], eax
push edi
lea eax, [esp + 0x288]
mov esi, ecx
push eax
xor ebx, ebx
push esi
mov eax, str.DarkShieldColRange
mov dword [esp + 0x38], esi
mov dword [esp + 0x50], ebx
mov dword [esp + 0x48], ebx
call fcn.0058bea0
cmp eax, ebx
je 0x58c714
mov ecx, dword [eax]
mov edx, dword [eax + 4]
mov dword [esp + 0x160], ecx
mov ecx, dword [eax + 8]
mov dword [esp + 0x164], edx
mov edx, dword [eax + 0xc]
push eax
mov dword [esp + 0x16c], ecx
mov dword [esp + 0x170], edx
call fcn.0045da90
add esp, 4
lea eax, [esp + 0x258]
push eax
push esi
mov eax, str.PostPolyMatrix
call fcn.0058bea0
mov edi, eax
cmp edi, ebx
je 0x58c749
push 0x6c
lea ecx, [esp + 0x304]
push edi
push ecx
call fcn.0060d1b0
add esp, 0xc
push edi
call fcn.0045da90
add esp, 4
lea edx, [esp + 0x2b8]
push edx
push esi
mov eax, str.SaturationLevel
call fcn.0058bea0
cmp eax, ebx
je 0x58c786
mov ecx, dword [eax]
mov edx, dword [eax + 4]
mov dword [esp + 0x17c], ecx
mov ecx, dword [eax + 8]
push eax
mov dword [esp + 0x184], edx
mov dword [esp + 0x188], ecx
call fcn.0045da90
add esp, 4
lea edx, [esp + 0x2ac]
push edx
push esi
mov eax, str.KeepImageArea
call fcn.0058bea0
cmp eax, ebx
je 0x58c7cd
mov ecx, dword [eax]
mov edx, dword [eax + 4]
mov dword [esp + 0x150], ecx
mov ecx, dword [eax + 8]
mov dword [esp + 0x154], edx
mov edx, dword [eax + 0xc]
push eax
mov dword [esp + 0x15c], ecx
mov dword [esp + 0x160], edx
call fcn.0045da90
add esp, 4
lea eax, [esp + 0x27c]
push eax
push esi
mov eax, str.ActiveImageArea
call fcn.0058bea0
cmp eax, ebx
je 0x58c814
mov ecx, dword [eax]
mov edx, dword [eax + 4]
mov dword [esp + 0x124], ecx
mov ecx, dword [eax + 8]
mov dword [esp + 0x128], edx
mov edx, dword [eax + 0xc]
push eax
mov dword [esp + 0x130], ecx
mov dword [esp + 0x134], edx
call fcn.0045da90
add esp, 4
lea eax, [esp + 0x2d0]
push eax
push esi
mov eax, str.ChromaDQ
call fcn.0058bea0
cmp eax, ebx
je 0x58c848
mov ecx, dword [eax]
mov edx, dword [eax + 4]
mov dword [esp + 0x68], ecx
mov ecx, dword [eax + 8]
push eax
mov dword [esp + 0x70], edx
mov dword [esp + 0x74], ecx
call fcn.0045da90
add esp, 4
push str.ColorDQ
push str.IncludeBlocks
push esi
call fcn.0058bc70
test eax, eax
mov eax, str.ColorDQ
jne 0x58c866
mov eax, str.ColorDQCamRGB
lea edx, [esp + 0x294]
push edx
push esi
call fcn.0058bea0
cmp eax, ebx
je 0x58c89e
mov ecx, dword [eax]
mov edx, dword [eax + 4]
mov dword [esp + 0x170], ecx
mov ecx, dword [eax + 8]
push eax
mov dword [esp + 0x178], edx
mov dword [esp + 0x17c], ecx
call fcn.0045da90
add esp, 4
push str.ColumnFilter
push str.IncludeBlocks
push esi
call fcn.0058bc70
test eax, eax
je 0x58c8c5
push str.ColumnFilter
push 1
lea edx, [esp + 0x4c]
push edx
mov ecx, esi
call fcn.0058c210
push 0x48
lea eax, [esp + 0x18c]
push ebx
push eax
call fcn.0060c930
add esp, 0xc
push str.DarkDrift
push str.IncludeBlocks
push esi
call fcn.0058bc70
test eax, eax
je 0x58c90a
push str.DarkDrift
push 0xc
lea ecx, [esp + 0x1a8]
push ecx
mov ecx, esi
call fcn.0058c210
test eax, eax
jne 0x58cabc
mov dword [esp + 0x18], ebx
mov edi, edi
test ebx, ebx
mov eax, str.DarkShieldBottom
jne 0x58c91e
mov eax, str.DarkShieldTop
lea edx, [esp + 0x2a0]
push edx
push esi
call fcn.0058bea0
test eax, eax
je 0x58ca9d
mov ecx, dword [eax]
mov edx, dword [eax + 4]
mov esi, dword [eax + 0xc]
mov edi, dword [eax + 8]
push eax
mov dword [esp + 0x144], ecx
mov dword [esp + 0x148], edx
mov dword [esp + 0x150], esi
call fcn.0045da90
mov ecx, dword [esp + 0x148]
add esp, 4
cmp ecx, esi
mov dword [esp + 0x20], ecx
jg 0x58ca29
cmp dword [esp + 0x140], edi
jg 0x58ca1a
lea eax, [ebx + ebx*2]
add eax, eax
add eax, eax
add eax, eax
lea edx, [esp + eax + 0x1a4]
lea ebx, [esp + eax + 0x1ac]
lea eax, [esp + eax + 0x1b4]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x30]
movzx esi, word [eax + 0x462]
mov eax, dword [eax + 0x4d8]
imul esi, ecx
mov ecx, esi
mov esi, dword [esp + 0x140]
add ecx, esi
lea eax, [eax + ecx*8 + 4]
mov ecx, edi
sub ecx, esi
add ecx, 1
lea esp, [esp]
movsx esi, word [eax - 4]
mov dword [esp + 0x1c], esi
movsx esi, word [eax - 2]
fild dword [esp + 0x1c]
mov dword [esp + 0x1c], esi
movsx esi, word [eax]
fadd dword [edx]
add eax, 8
sub ecx, 1
fstp dword [edx]
fild dword [esp + 0x1c]
mov dword [esp + 0x1c], esi
mov esi, dword [esp + 0x24]
fadd dword [ebx]
fstp dword [ebx]
fild dword [esp + 0x1c]
fadd dword [esi]
fstp dword [esi]
jne 0x58c9d0
mov esi, dword [esp + 0x14c]
mov ecx, dword [esp + 0x20]
mov ebx, dword [esp + 0x18]
add ecx, 1
cmp ecx, esi
mov dword [esp + 0x20], ecx
jle 0x58c970
sub edi, dword [esp + 0x140]
sub esi, dword [esp + 0x144]
add edi, 1
add esi, 1
imul edi, esi
lea eax, [ebx + ebx*2]
add eax, eax
mov dword [esp + 0x1c], edi
add eax, eax
add eax, eax
fild dword [esp + 0x1c]
add ebx, 1
cmp ebx, 2
mov dword [esp + 0x18], ebx
fstp dword [esp + 0x1c]
fld dword [esp + eax + 0x1a4]
fld dword [esp + 0x1c]
fld st(0)
fdivp st(2)
fxch st(1)
fstp dword [esp + eax + 0x1a4]
fld dword [esp + eax + 0x1ac]
fdiv st(1)
fstp dword [esp + eax + 0x1ac]
lea eax, [esp + eax + 0x1b4]
fdivr dword [eax]
fstp dword [eax]
jge 0x58cabc
mov esi, dword [esp + 0x30]
jmp 0x58c910
mov dword [esi + 0x3cc], 1
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x3f0]
xor ecx, esp
call fcn.00607d6d
mov esp, ebp
pop ebp
ret
mov esi, dword [esp + 0x30]
lea ebx, [esi + 0x295]
push ebx
push str.WhiteBalanceIlluminants
push esi
call fcn.0058bc70
test eax, eax
je 0x58f3a7
lea ecx, [esp + 0x2c4]
push ecx
push esi
call fcn.0058bea0
mov edi, eax
test edi, edi
je 0x58cb0a
push 0x24
lea edx, [esp + 0x238]
push edi
push edx
call fcn.0060d1b0
add esp, 0xc
push edi
call fcn.0045da90
add esp, 4
push ebx
push str.WhiteBalanceCorrections
push esi
call fcn.0058bc70
lea ecx, [esp + 0x264]
push ecx
push esi
call fcn.0058bea0
mov esi, eax
test esi, esi
je 0x58cb46
push 0x24
lea edx, [esp + 0x2e0]
push esi
push edx
call fcn.0060d1b0
add esp, 0xc
push esi
call fcn.0045da90
add esp, 4
xor eax, eax
mov dword [esp + 0x88], eax
mov dword [esp + 0x8c], eax
mov dword [esp + 0x90], eax
mov dword [esp + 0x94], eax
mov dword [esp + 0x98], eax
mov dword [esp + 0x9c], eax
mov dword [esp + 0xa0], eax
mov dword [esp + 0xa4], eax
mov dword [esp + 0xa8], eax
lea ecx, [esp + 0x88]
lea edx, [esp + 0x2e0]
lea esi, [eax + 3]
jmp 0x58cba0
xor eax, eax
fld dword [esp + eax*4 + 0x234]
add eax, 1
fmul dword [edx - 4]
add ecx, 4
cmp eax, 3
fadd dword [ecx - 4]
fstp dword [esp + 0x1c]
fld dword [esp + 0x1c]
fld dword [esp + eax*4 + 0x23c]
fmul dword [edx]
faddp st(1)
fstp dword [esp + 0x1c]
fld dword [esp + 0x1c]
fld dword [esp + eax*4 + 0x248]
fmul dword [edx + 4]
faddp st(1)
fstp dword [ecx - 4]
jl 0x58cba2
add edx, 0xc
sub esi, 1
jne 0x58cba0
mov esi, 2
lea ecx, [esp + 0x1dc]
mov dword [esp + 0x34], 3
mov eax, esi
cdq
mov edi, 3
idiv edi
lea eax, [esi - 1]
mov ebx, 3
add esi, 1
add ecx, 4
lea edi, [edx + edx*2]
cdq
idiv ebx
sub dword [esp + 0x34], 1
lea ebx, [esp + edi*4 + 0x8c]
mov dword [esp + 0x1c], ebx
lea eax, [edx + edx*2]
fld dword [esp + eax*4 + 0x8c]
lea edx, [esp + eax*4 + 0x8c]
fmul dword [esp + edi*4 + 0x90]
mov dword [esp + 0x24], edx
fld dword [ebx]
lea edx, [esp + edi*4 + 0x90]
fmul dword [esp + eax*4 + 0x90]
lea ebx, [esp + eax*4 + 0x90]
lea edi, [esp + edi*4 + 0x88]
lea eax, [esp + eax*4 + 0x88]
fsubp st(1)
fstp dword [ecx - 0x10]
fld dword [edi]
fmul dword [ebx]
fld dword [eax]
fmul dword [edx]
mov edx, dword [esp + 0x1c]
fsubp st(1)
fstp dword [ecx - 4]
fld dword [edx]
fmul dword [eax]
mov eax, dword [esp + 0x24]
fld dword [eax]
fmul dword [edi]
fsubp st(1)
fstp dword [ecx + 8]
jne 0x58cc00
fld dword [esp + 0x1d0]
mov ebx, dword [esp + 0x30]
fld qword [0x6c1358]
lea eax, [ebx + 0x295]
fmul st(1), st(0)
push eax
fld dword [esp + 0x1d8]
lea ecx, [esp + 0x37c]
fld qword [0x6c1350]
push str._sRGBNeutral
fmul st(1), st(0)
push ecx
fxch st(3)
faddp st(1)
fld dword [esp + 0x1e4]
fld qword [0x6c1348]
fmul st(1), st(0)
fxch st(2)
faddp st(1)
fstp dword [esp + 0x88]
fld dword [esp + 0x1e8]
fmul st(2)
fld dword [esp + 0x1ec]
fmul st(4)
faddp st(1)
fld dword [esp + 0x1f0]
fmul st(2)
faddp st(1)
fstp dword [esp + 0x8c]
fld dword [esp + 0x1f4]
fmulp st(2)
fld dword [esp + 0x1f8]
fmulp st(3)
fxch st(1)
faddp st(2)
fmul dword [esp + 0x1fc]
faddp st(1)
fstp dword [esp + 0x90]
call fcn.0061acf0
add esp, 0xc
lea edx, [esp + 0x378]
push edx
push str.IncludeBlocks
push ebx
call fcn.0058bc70
test eax, eax
je 0x58cd97
lea eax, [esp + 0x270]
push eax
push ebx
lea eax, [esp + 0x380]
call fcn.0058bea0
test eax, eax
je 0x58cd97
mov ecx, dword [eax]
mov edx, dword [eax + 4]
mov dword [esp + 0x7c], ecx
mov ecx, dword [eax + 8]
push eax
mov dword [esp + 0x84], edx
mov dword [esp + 0x88], ecx
call fcn.0045da90
add esp, 4
fldz
fstp dword [esp + 0x28]
fld dword [esp + 0x7c]
fcom qword [0x6c0a98]
fnstsw ax
test ah, 0x41
jne 0x58cdb2
fst dword [esp + 0x28]
fld dword [esp + 0x28]
fld dword [esp + 0x80]
fcom st(1)
fnstsw ax
test ah, 0x41
jne 0x58cdd2
fstp st(1)
fst dword [esp + 0x28]
fld dword [esp + 0x28]
fxch st(1)
fld dword [esp + 0x84]
fcom st(2)
fnstsw ax
test ah, 0x41
jne 0x58cdf2
fstp st(2)
fxch st(1)
fst dword [esp + 0x28]
fld dword [esp + 0x28]
fxch st(2)
fxch st(1)
fld st(2)
xor eax, eax
fdivp st(4)
mov dword [esp + 0x100], eax
mov dword [esp + 0x104], eax
mov dword [esp + 0x108], eax
mov dword [esp + 0x10c], eax
mov dword [esp + 0x110], eax
mov dword [esp + 0x114], eax
mov dword [esp + 0x118], eax
mov dword [esp + 0x11c], eax
mov dword [esp + 0x120], eax
lea ecx, [esp + 0x100]
lea edx, [ebx + 0x2061c]
lea esi, [eax + 3]
fxch st(3)
fstp dword [esp + 0x7c]
fdiv st(1)
fstp dword [esp + 0x80]
fdivp st(1)
fstp dword [esp + 0x84]
nop
xor eax, eax
fld dword [esp + eax + 0x88]
add eax, 4
fmul dword [edx - 4]
add ecx, 4
cmp eax, 0xc
fmul dword [esp + eax + 0x78]
fadd dword [ecx - 4]
fstp dword [esp + 0x1c]
fld dword [esp + 0x1c]
fld dword [esp + eax + 0x90]
fmul dword [edx]
fmul dword [esp + eax + 0x78]
faddp st(1)
fstp dword [esp + 0x1c]
fld dword [esp + 0x1c]
fld dword [esp + eax + 0x9c]
fmul dword [edx + 4]
fmul dword [esp + eax + 0x78]
faddp st(1)
fstp dword [ecx - 4]
jl 0x58ce62
add edx, 0x10
sub esi, 1
jne 0x58ce60
fld dword [esp + 0x100]
lea ecx, [esp + 0x218]
fadd dword [esp + 0x104]
xor eax, eax
fadd dword [esp + 0x108]
fst qword [esp + 0x218]
fld dword [esp + 0x110]
fadd dword [esp + 0x10c]
fadd dword [esp + 0x114]
fst qword [esp + 0x220]
fld dword [esp + 0x11c]
fadd dword [esp + 0x118]
fadd dword [esp + 0x120]
fst qword [esp + 0x228]
fxch st(1)
fmul qword [0x6c1340]
fxch st(2)
fmul qword [0x6c0d70]
faddp st(2)
fmul qword [0x6c0d68]
faddp st(1)
fdiv qword [0x6c1308]
fst qword [esp + 0x370]
fld dword [esp + eax + 0x100]
add eax, 0xc
fmul st(1)
add ecx, 8
cmp eax, 0x24
fdiv qword [ecx - 8]
fstp dword [esp + eax + 0x7c]
fld dword [esp + eax + 0xf8]
fmul st(1)
fdiv qword [ecx - 8]
fstp dword [esp + eax + 0x80]
fld dword [esp + eax + 0xfc]
fmul st(1)
fdiv qword [ecx - 8]
fstp dword [esp + eax + 0x84]
jl 0x58cf3c
xor eax, eax
fstp st(0)
fld qword [0x6c0e70]
mov dword [esp + 0x100], eax
mov dword [esp + 0x104], eax
mov dword [esp + 0x108], eax
mov dword [esp + 0x10c], eax
mov dword [esp + 0x110], eax
mov dword [esp + 0x114], eax
mov dword [esp + 0x118], eax
mov dword [esp + 0x11c], eax
mov dword [esp + 0x120], eax
xor edx, edx
lea ecx, [esp + 0x100]
xor eax, eax
mov esi, edx
neg esi
sbb esi, esi
and esi, 0xffffffdf
add esi, 0x20
mov dword [esp + 0x1c], esi
fild dword [esp + 0x1c]
mov esi, edx
sub esi, 1
neg esi
sbb esi, esi
fstp dword [esp + 0x24]
and esi, 0xffffffdf
add esi, 0x20
mov dword [esp + 0x1c], esi
fild dword [esp + 0x1c]
mov esi, edx
sub esi, 2
neg esi
sbb esi, esi
fstp dword [esp + 0xdc]
and esi, 0xffffffdf
add esi, 0x20
mov dword [esp + 0x1c], esi
fild dword [esp + 0x1c]
fstp dword [esp + 0x1c]
fld dword [esp + 0x24]
fld dword [esp + 0xdc]
fld dword [esp + 0x1c]
fld dword [esp + eax*4 + 0x88]
add eax, 1
fmul st(3)
add ecx, 4
cmp eax, 3
fdiv st(4)
fadd dword [ecx - 4]
fstp dword [esp + 0x1c]
fld dword [esp + 0x1c]
fld dword [esp + eax*4 + 0x90]
fmul st(3)
fdiv st(5)
faddp st(1)
fstp dword [esp + 0x1c]
fld dword [esp + 0x1c]
fld dword [esp + eax*4 + 0x9c]
fmul st(2)
fdiv st(5)
faddp st(1)
fstp dword [ecx - 4]
jl 0x58d031
fstp st(2)
add edx, 1
cmp edx, 3
fstp st(0)
fstp st(0)
jl 0x58cfcf
fstp st(0)
push ecx
fld dword [esp + 0x48]
lea eax, [esp + 0x80]
lea ecx, [esp + 0x174]
fstp dword [esp]
lea edi, [esp + 0xc0]
call fcn.0058c5e0
fld dword [esp + 0x68]
fld qword [0x6c0d68]
push ecx
fdiv st(1), st(0)
lea eax, [esp + 0x80]
lea ecx, [esp + 0x6c]
lea edi, [esp + 0xcc]
fxch st(1)
fstp dword [esp + 0x6c]
fld dword [esp + 0x70]
fdiv st(1)
fstp dword [esp + 0x70]
fdivr dword [esp + 0x74]
fstp dword [esp + 0x74]
fld dword [esp + 0x48]
fstp dword [esp]
call fcn.0058c5e0
fld dword [esp + 0x68]
fdiv dword [esp + 0x7c]
sub esp, 0x18
fadd qword [esp + 0x388]
fld dword [esp + 0x84]
fdiv dword [esp + 0x98]
faddp st(1)
fld dword [esp + 0x88]
fdiv dword [esp + 0x9c]
faddp st(1)
fst qword [esp + 0x388]
fld dword [esp + 0x5c]
fstp qword [esp + 0x10]
fst qword [esp + 8]
fstp qword [esp]
push ebx
call fcn.0058c4c0
fld qword [esp + 0x370]
fadd st(0), st(0)
sub esp, 0x18
fld dword [esp + 0x5c]
mov dword [esp + 0xec], eax
fstp qword [esp + 0x10]
fst qword [esp + 8]
fstp qword [esp]
push ebx
call fcn.0058c4c0
lea edx, [esp + 0x134]
push edx
mov dword [esp + 0xdc], eax
push ebx
mov eax, str.SpatialGain
call fcn.0058bea0
test eax, eax
mov dword [esp + 0x1c], eax
je 0x58f3a7
mov esi, dword [esp + 0x138]
lea edi, [esi + esi*2]
add edi, edi
add edi, edi
push edi
call fcn.0045d550
add esp, 4
test eax, eax
mov dword [esp + 0x34], eax
je 0x58d1b7
push edi
push 0
push eax
call fcn.0060c930
add esp, 0xc
movzx eax, word [ebx + 0x462]
lea eax, [eax + esi - 2]
add esi, 0xffffffff
xor edx, edx
div esi
movzx esi, word [ebx + 0x460]
lea esi, [esi + esi*2]
add esi, esi
add esi, esi
push esi
mov dword [esp + 0xe0], eax
call fcn.0045d550
add esp, 4
test eax, eax
mov dword [esp + 0x54], eax
je 0x58d1fb
push esi
push 0
push eax
call fcn.0060c930
add esp, 0xc
cmp word [ebx + 0x460], 0
mov dword [esp + 0x20], 0
jbe 0x58d2f8
mov esi, dword [esp + 0x54]
mov ecx, dword [esp + 0x30]
fild dword [esp + 0x20]
movzx edx, word [ecx + 0x460]
mov dword [esp + 0x24], edx
xor eax, eax
fild dword [esp + 0x24]
fsub qword [0x6a5f28]
fdivp st(1)
fld dword [esp + eax*4 + 0x1b8]
add eax, 1
cmp eax, 6
fsub dword [esp + eax*4 + 0x19c]
fmul st(1)
fadd dword [esp + eax*4 + 0x19c]
fstp dword [esp + eax*4 + 0x184]
jl 0x58d236
fstp st(0)
xor edi, edi
mov eax, dword [esp + 0x30]
fld dword [esp + 0x44]
movzx ecx, word [eax + 0x462]
imul ecx, dword [esp + 0x20]
mov eax, dword [eax + 0x4d8]
lea edx, [edi + ecx*4]
lea ebx, [eax + edx*2]
push ecx
lea eax, [esp + 0x16c]
fstp dword [esp]
call fcn.0058c260
fmul qword [0x6c0d68]
push ecx
lea eax, [esp + 0x164]
fstp qword [esp + 0x374]
fld dword [esp + 0x48]
fstp dword [esp]
call fcn.0058c260
fadd qword [esp + 0x370]
add edi, 1
add esi, 4
cmp edi, 3
fsub dword [esp + edi*8 + 0x180]
fmul qword [0x6c0e30]
fsub dword [esp + edi*8 + 0x184]
fstp dword [esi - 4]
jl 0x58d260
mov ecx, dword [esp + 0x30]
mov eax, dword [esp + 0x20]
movzx edx, word [ecx + 0x460]
add eax, 1
cmp eax, edx
mov dword [esp + 0x20], eax
jl 0x58d215
mov edx, dword [esp + 0x54]
mov ebx, dword [esp + 0x30]
lea esi, [edx + 0x60]
mov ecx, 0x18
mov edi, edx
rep movsd dword es:[edi], dword [esi]
movzx eax, word [ebx + 0x460]
lea ecx, [eax + eax*2 - 0x42]
lea esi, [edx + ecx*4]
lea eax, [eax + eax*2 - 0x21]
lea edi, [edx + eax*4]
mov ecx, 0x21
rep movsd dword es:[edi], dword [esi]
mov ecx, 9
mov esi, edx
lea edi, [esp + 0x88]
rep movsd dword es:[edi], dword [esi]
movzx ecx, word [ebx + 0x460]
mov edi, 1
sub ecx, edi
cmp ecx, edi
jle 0x58d534
mov eax, edx
lea ecx, [eax + 0x14]
lea esi, [eax + 0x18]
mov dword [esp + 0x38], ecx
jmp 0x58d364
mov ecx, dword [esp + 0x38]
fld dword [esp + 0x94]
fld dword [esp + 0x88]
fcom st(1)
fnstsw ax
fld dword [esp + 0xa0]
fcom st(2)
test ah, 5
fnstsw ax
fstp st(2)
jp 0x58d3b4
test ah, 5
jp 0x58d3e0
fcom st(1)
fnstsw ax
test ah, 0x41
jne 0x58d3a5
fstp st(1)
fstp dword [esp + 0x18]
fld dword [esp + 0x18]
fstp dword [ecx - 8]
jmp 0x58d3e4
fstp st(0)
fstp dword [esp + 0x18]
fld dword [esp + 0x18]
fstp dword [ecx - 8]
jmp 0x58d3e4
test ah, 0x41
jne 0x58d3e0
fcom st(1)
fnstsw ax
test ah, 5
jp 0x58d3d1
fstp st(1)
fstp dword [esp + 0x18]
fld dword [esp + 0x18]
fstp dword [ecx - 8]
jmp 0x58d3e4
fstp st(0)
fstp dword [esp + 0x18]
fld dword [esp + 0x18]
fstp dword [ecx - 8]
jmp 0x58d3e4
fstp st(1)
fstp st(0)
fld dword [esp + 0x98]
fld dword [esp + 0x8c]
fcom st(1)
fnstsw ax
fld dword [esp + 0xa4]
fcom st(2)
test ah, 5
fnstsw ax
fstp st(2)
jp 0x58d434
test ah, 5
jp 0x58d460
fcom st(1)
fnstsw ax
test ah, 0x41
jne 0x58d425
fstp st(1)
fstp dword [esp + 0x18]
fld dword [esp + 0x18]
fstp dword [ecx - 4]
jmp 0x58d464
fstp st(0)
fstp dword [esp + 0x18]
fld dword [esp + 0x18]
fstp dword [ecx - 4]
jmp 0x58d464
test ah, 0x41
jne 0x58d460
fcom st(1)
fnstsw ax
test ah, 5
jp 0x58d451
fstp st(1)
fstp dword [esp + 0x18]
fld dword [esp + 0x18]
fstp dword [ecx - 4]
jmp 0x58d464
fstp st(0)
fstp dword [esp + 0x18]
fld dword [esp + 0x18]
fstp dword [ecx - 4]
jmp 0x58d464
fstp st(1)
fstp st(0)
fld dword [esp + 0x9c]
fld dword [esp + 0x90]
fcom st(1)
fnstsw ax
fld dword [esp + 0xa8]
fcom st(2)
test ah, 5
fnstsw ax
fstp st(2)
jp 0x58d4b2
test ah, 5
jp 0x58d4dc
fcom st(1)
fnstsw ax
test ah, 0x41
jne 0x58d4a4
fstp st(1)
fstp dword [esp + 0x18]
fld dword [esp + 0x18]
fstp dword [ecx]
jmp 0x58d4e0
fstp st(0)
fstp dword [esp + 0x18]
fld dword [esp + 0x18]
fstp dword [ecx]
jmp 0x58d4e0
test ah, 0x41
jne 0x58d4dc
fcom st(1)
fnstsw ax
test ah, 5
jp 0x58d4ce
fstp st(1)
fstp dword [esp + 0x18]
fld dword [esp + 0x18]
fstp dword [ecx]
jmp 0x58d4e0
fstp st(0)
fstp dword [esp + 0x18]
fld dword [esp + 0x18]
fstp dword [ecx]
jmp 0x58d4e0
fstp st(1)
fstp st(0)
push 0x18
lea edx, [esp + 0x98]
push edx
lea eax, [esp + 0x90]
push eax
call fcn.00611c10
mov ecx, dword [esi]
add dword [esp + 0x44], 0xc
mov dword [esp + 0xac], ecx
mov edx, dword [esi + 4]
movzx ecx, word [ebx + 0x460]
mov dword [esp + 0xb0], edx
mov eax, dword [esi + 8]
add edi, 1
sub ecx, 1
add esp, 0xc
add esi, 0xc
cmp edi, ecx
mov dword [esp + 0xa8], eax
jl 0x58d360
fld dword [esp + 0x88]
mov esi, dword [esp + 0x54]
fadd dword [esp + 0x94]
lea eax, [edi + edi*2]
fld qword [0x69f210]
lea edi, [esi + 4]
fmul st(1), st(0)
fxch st(1)
fstp dword [esi + eax*4]
fld dword [esp + 0x8c]
fadd dword [esp + 0x98]
fmul st(1)
fstp dword [esi + eax*4 + 4]
fld dword [esp + 0x90]
fadd dword [esp + 0x9c]
fmul st(1)
fstp dword [esi + eax*4 + 8]
lea eax, [esi + 8]
fld dword [esi + 0x24]
mov dword [esp + 0x38], eax
fadd dword [esi + 0xc]
fmul st(1)
fstp dword [esi]
fld dword [esi + 0x28]
fadd dword [esi + 0x10]
fmul st(1)
fstp dword [edi]
fld dword [esi + 0x2c]
fadd dword [esi + 0x14]
fmulp st(1)
fstp dword [eax]
fld qword [0x6c1338]
call fcn.0066a6ac
fld1
mov ecx, dword [esi + 8]
fld st(0)
mov edx, dword [esi]
fsubrp st(2)
mov eax, dword [esi + 4]
fxch st(1)
mov dword [esp + 0x64], ecx
mov ecx, 1
cmp word [ebx + 0x460], cx
fstp dword [esp + 0x18]
fld dword [esp + 0x18]
mov dword [esp + 0x5c], edx
mov dword [esp + 0x60], eax
jbe 0x58d652
mov eax, edi
fld dword [eax + 8]
add ecx, 1
fsub dword [eax - 4]
add eax, 0xc
fmul st(1)
fadd dword [eax - 0x10]
fstp dword [esp + 0x24]
fld dword [esp + 0x24]
fst dword [eax - 4]
fadd dword [esp + 0x5c]
fstp dword [esp + 0x5c]
fld dword [eax]
fsub dword [eax - 0xc]
fmul st(1)
fadd dword [eax - 0xc]
fstp dword [esp + 0x24]
fld dword [esp + 0x24]
fst dword [eax]
fadd dword [esp + 0x60]
fstp dword [esp + 0x60]
fld dword [eax + 4]
fsub dword [eax - 8]
fmul st(1)
fadd dword [eax - 8]
fstp dword [esp + 0x24]
fld dword [esp + 0x24]
fst dword [eax + 4]
movzx edx, word [ebx + 0x460]
cmp ecx, edx
fadd dword [esp + 0x64]
fstp dword [esp + 0x64]
jl 0x58d5e9
movzx ecx, word [ebx + 0x460]
test ecx, ecx
mov dword [esp + 0x24], ecx
lea eax, [ecx + ecx*2]
mov edx, dword [esi + eax*4 - 0xc]
fild dword [esp + 0x24]
lea eax, [esi + eax*4 - 0xc]
fld dword [esp + 0x5c]
mov dword [esp + 0x88], edx
mov edx, dword [eax + 4]
fdiv st(1)
mov dword [esp + 0x8c], edx
mov eax, dword [eax + 8]
mov dword [esp + 0x90], eax
fstp dword [esp + 0x5c]
fld dword [esp + 0x60]
fdiv st(1)
fstp dword [esp + 0x60]
fdivr dword [esp + 0x64]
fstp dword [esp + 0x64]
fld dword [esp + 0x64]
fld dword [esp + 0x60]
fld dword [esp + 0x5c]
je 0x58d73e
lea edx, [ecx + ecx*2]
lea eax, [esi + edx*4 + 8]
fld dword [eax - 0x14]
sub eax, 0xc
fsub st(1)
sub ecx, 1
test ecx, ecx
fld dword [esp + 0x88]
fld st(0)
fsubp st(2)
fld st(5)
fmulp st(2)
faddp st(1)
fstp dword [esp + 0x24]
fld dword [esp + 0x24]
fst dword [eax - 8]
fstp dword [esp + 0x88]
fld dword [eax - 4]
fsub st(2)
fld dword [esp + 0x8c]
fld st(0)
fsubp st(2)
fld st(5)
fmulp st(2)
faddp st(1)
fstp dword [esp + 0x24]
fld dword [esp + 0x24]
fst dword [eax - 4]
fstp dword [esp + 0x8c]
fld dword [eax]
fsub st(3)
fld dword [esp + 0x90]
fld st(0)
fsubp st(2)
fld st(5)
fmulp st(2)
faddp st(1)
fstp dword [esp + 0x24]
fld dword [esp + 0x24]
fst dword [eax]
fstp dword [esp + 0x90]
jne 0x58d6be
xor eax, eax
fstp st(3)
mov edx, eax
mov dword [esp + 0xb0], eax
mov dword [esp + 0xb4], eax
mov dword [esp + 0xb8], eax
movzx eax, word [ebx + 0x460]
cmp eax, 2
mov dword [esp + 0xac], edx
jle 0x58d80e
movzx esi, word [ebx + 0x462]
movzx eax, word [ebx + 0x460]
sub eax, 3
mov ecx, esi
shl ecx, 4
shl esi, 5
shr eax, 2
add eax, 1
mov dword [esp + 0x58], ecx
mov dword [esp + 0x24], esi
mov dword [esp + 0x3c], eax
movzx edi, word [ebx + 0x462]
cmp edi, 2
jle 0x58d7f8
mov eax, dword [ebx + 0x4d8]
lea eax, [eax + ecx + 0x14]
movzx ecx, word [ebx + 0x462]
sub ecx, 3
shr ecx, 2
add ecx, 1
movsx esi, word [eax - 4]
add dword [esp + 0xb8], 1
add edx, esi
movsx esi, word [eax - 2]
add dword [esp + 0xb0], esi
movsx esi, word [eax]
add dword [esp + 0xb4], esi
add eax, 0x20
sub ecx, 1
jne 0x58d7c1
mov esi, dword [esp + 0x24]
mov ecx, dword [esp + 0x58]
mov eax, dword [esp + 0x3c]
add ecx, esi
sub eax, 1
mov dword [esp + 0x58], ecx
mov dword [esp + 0x3c], eax
jne 0x58d79b
mov dword [esp + 0xac], edx
movzx eax, word [ebx + 0x460]
xor ecx, ecx
test eax, eax
jle 0x58d890
fild dword [esp + 0xb8]
mov eax, dword [esp + 0x38]
fmul qword [0x6c0c80]
fild dword [esp + 0xac]
fdiv st(1)
fld qword [0x69f210]
fmul st(5), st(0)
fxch st(1)
faddp st(5)
fild dword [esp + 0xb0]
fdiv st(2)
fxch st(3)
fmul st(1)
faddp st(3)
fild dword [esp + 0xb4]
fdivrp st(2)
fmulp st(3)
faddp st(2)
fld dword [eax - 8]
add ecx, 1
fadd st(3)
add eax, 0xc
fstp dword [eax - 0x14]
fld dword [eax - 0x10]
fadd st(1)
fstp dword [eax - 0x10]
fld dword [eax - 0xc]
fadd st(2)
fstp dword [eax - 0xc]
movzx edx, word [ebx + 0x460]
cmp ecx, edx
jl 0x58d861
fstp st(1)
fstp st(1)
jmp 0x58d894
fstp st(1)
fstp st(0)
cmp word [ebx + 0x460], 0
fstp st(0)
mov dword [esp + 0x20], 0
jbe 0x58dcc8
mov eax, dword [esp + 0x54]
mov dword [esp + 0x58], eax
mov eax, dword [ebx + 0x20680]
test eax, eax
je 0x58d8c8
mov ecx, dword [eax]
test ecx, ecx
jne 0x58f3a5
movzx edx, word [ebx + 0x460]
fild dword [esp + 0x20]
mov esi, dword [esp + 0x138]
mov dword [esp + 0x24], edx
xor eax, eax
fild dword [esp + 0x24]
fsub st(2)
fdivp st(1)
fld dword [esp + eax*4 + 0x1b8]
add eax, 1
cmp eax, 6
fsub dword [esp + eax*4 + 0x19c]
fmul st(1)
fadd dword [esp + eax*4 + 0x19c]
fstp dword [esp + eax*4 + 0x184]
jl 0x58d8e8
movzx eax, word [ebx + 0x462]
imul eax, dword [esp + 0x20]
mov ecx, dword [ebx + 0x4d8]
mov edi, dword [esp + 0x13c]
mov edx, dword [ecx + eax*8]
lea eax, [ecx + eax*8]
add edi, 0xffffffff
mov ecx, edi
test ecx, ecx
mov dword [esp + 0x28], eax
mov ax, word [eax + 4]
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x370], edx
mov word [esp + 0x374], ax
fild dword [esp + 0x2c]
jge 0x58d95b
fadd qword [0x6c0c98]
fmulp st(1)
fstp dword [esp + 0x38]
fld dword [esp + 0x38]
fld st(0)
call fcn.0066a3f0
cmp eax, edi
mov dword [esp + 0x3c], eax
jne 0x58d97b
sub eax, 1
mov dword [esp + 0x3c], eax
test esi, esi
fisub dword [esp + 0x3c]
fstp dword [esp + 0x38]
jbe 0x58d9f4
mov edx, dword [esp + 0x34]
fld dword [esp + 0x38]
mov edi, dword [esp + 0x1c]
fld st(0)
lea ecx, [eax + 1]
fsubr st(2)
imul ecx, esi
add edx, 8
imul eax, esi
lea ecx, [ecx + ecx*2]
lea eax, [eax + eax*2]
lea ecx, [edi + ecx*4 + 8]
lea eax, [edi + eax*4 + 8]
fld dword [ecx - 8]
add eax, 0xc
fmul st(2)
add ecx, 0xc
fld dword [eax - 0x14]
add edx, 0xc
sub esi, 1
fmul st(2)
faddp st(1)
fstp dword [edx - 0x14]
fld dword [ecx - 0x10]
fmul st(2)
fld dword [eax - 0x10]
fmul st(2)
faddp st(1)
fstp dword [edx - 0x10]
fld dword [ecx - 0xc]
fmul st(2)
fld dword [eax - 0xc]
fmul st(2)
faddp st(1)
fstp dword [edx - 0xc]
jne 0x58d9b5
fstp st(1)
fstp st(0)
cmp word [ebx + 0x462], 0
mov dword [esp + 0x30], 0
jbe 0x58dca9
fstp st(0)
lea eax, [esp + 0x370]
fild dword [esp + 0xdc]
sub eax, dword [esp + 0x28]
mov dword [esp + 0x38], eax
fstp dword [esp + 0x2c]
movzx ecx, word [ebx + 0x462]
fild dword [esp + 0x30]
mov dword [esp + 0x24], ecx
mov edx, dword [esp + 0x58]
mov edi, dword [esp + 0x28]
fild dword [esp + 0x24]
xor esi, esi
mov dword [esp + 0x18], edx
fdivp st(1)
fsub qword [0x69f210]
fstp qword [esp + 0x68]
movzx ecx, word [edi]
mov edx, dword [esp + 0x38]
movsx edx, word [edi + edx]
movsx eax, cx
mov dword [esp + 0x3c], eax
sub eax, edx
mov edx, dword [esp + 0x38]
mov word [edi + edx], cx
mov ecx, eax
imul ecx, eax
mov edx, dword [esp + 0x18]
sar ecx, 0xe
add ecx, eax
mov dword [esp + 0x24], ecx
sub esp, 8
fild dword [esp + 0x2c]
fmul dword [esp + 0x4c]
fsub dword [esp + esi*8 + 0x194]
fld dword [esp + esi*8 + 0x190]
fmul qword [esp + 0x70]
fsubp st(1)
fsub dword [edx]
fstp qword [esp]
call fcn.0066a9b0
fiadd dword [esp + 0x44]
add esp, 8
call fcn.0066a3f0
add dword [esp + 0x18], 4
mov dword [esp + esi*4 + 0x48], eax
add esi, 1
add edi, 2
cmp esi, 3
jl 0x58da53
mov edx, dword [esp + 0x48]
mov ecx, dword [esp + 0x4c]
mov esi, dword [esp + 0x50]
mov eax, edx
imul eax, edx
sar eax, 0xe
mov dword [esp + 0x1f4], eax
imul eax, edx
sar eax, 0xe
mov dword [esp + 0x20c], eax
mov eax, ecx
imul eax, esi
sar eax, 0xe
mov dword [esp + 0x208], eax
mov eax, ecx
imul eax, ecx
sar eax, 0xe
mov dword [esp + 0x1f8], eax
imul eax, ecx
imul ecx, edx
sar eax, 0xe
mov dword [esp + 0x210], eax
mov eax, esi
imul eax, edx
sar eax, 0xe
mov dword [esp + 0x204], eax
mov eax, esi
imul eax, esi
sar eax, 0xe
mov dword [esp + 0x1fc], eax
imul eax, esi
sar eax, 0xe
sar ecx, 0xe
mov dword [esp + 0x214], eax
mov eax, dword [esp + 0x30]
mov dword [esp + 0x200], ecx
mov ecx, dword [esp + 0xdc]
cdq
idiv ecx
lea esi, [esp + 0x304]
sub ecx, edx
mov dword [esp + 0x24], ecx
fild dword [esp + 0x24]
mov ecx, dword [esp + 0x28]
mov dword [esp + 0x3c], edx
lea edx, [eax + eax*2 + 3]
mov eax, dword [esp + 0x34]
fstp dword [esp + 0xfc]
fild dword [esp + 0x3c]
mov dword [esp + 0x24], ecx
lea ecx, [eax + edx*4]
mov dword [esp + 0x3c], ecx
fstp dword [esp + 0x68]
xor edi, edi
fldz
lea eax, [esp + 0x1f8]
fstp dword [esp + 0x18]
mov ecx, 3
fild dword [eax - 4]
add eax, 0xc
add esi, 0xc
sub ecx, 1
fmul dword [esi - 0x10]
fadd dword [esp + 0x18]
fstp dword [esp + 0x18]
fld dword [esp + 0x18]
fild dword [eax - 0xc]
fmul dword [esi - 0xc]
faddp st(1)
fstp dword [esp + 0x18]
fld dword [esp + 0x18]
fild dword [eax - 8]
fmul dword [esi - 8]
faddp st(1)
fstp dword [esp + 0x18]
jne 0x58dbb2
fld dword [esp + 0x18]
sub esp, 8
fstp qword [esp]
call fcn.0066a9b0
mov eax, dword [esp + 0x44]
fstp dword [esp + 0x20]
fld dword [esp + 0x20]
fiadd dword [esp + edi + 0x50]
fld dword [eax - 0xc]
fmul dword [esp + 0x104]
fld dword [eax]
fmul dword [esp + 0x70]
faddp st(1)
fmulp st(1)
fdiv dword [esp + 0x34]
fdiv dword [esp + edi + 0x84]
fstp dword [esp + 0x20]
fld dword [esp + 0x20]
fstp qword [esp]
call fcn.0066a9b0
fstp dword [esp + 0x20]
fld dword [esp + 0x20]
add esp, 8
call fcn.0066a3f0
cmp eax, 0x7d00
mov dword [esp + edi + 0x48], eax
jle 0x58dc5c
mov dword [esp + edi + 0x48], 0x7d00
mov eax, dword [esp + 0x24]
mov dx, word [esp + edi + 0x48]
add dword [esp + 0x3c], 4
mov word [eax], dx
add edi, 4
add eax, 2
cmp edi, 0xc
mov dword [esp + 0x24], eax
jl 0x58dba0
movzx ecx, word [ebx + 0x462]
mov eax, 8
add dword [esp + 0x28], eax
sub dword [esp + 0x38], eax
mov eax, dword [esp + 0x30]
add eax, 1
cmp eax, ecx
mov dword [esp + 0x30], eax
jl 0x58da26
fld1
mov eax, dword [esp + 0x20]
movzx edx, word [ebx + 0x460]
add dword [esp + 0x58], 0xc
add eax, 1
cmp eax, edx
mov dword [esp + 0x20], eax
jl 0x58d8b4
mov eax, dword [esp + 0x54]
fstp st(0)
push eax
call fcn.0045da90
mov ecx, dword [esp + 0x38]
add esp, 4
push ecx
call fcn.0045da90
mov edx, dword [esp + 0x20]
add esp, 4
push edx
call fcn.0045da90
add esp, 4
lea eax, [esp + 0x134]
push eax
push ebx
mov eax, str.BadPixels
call fcn.0058bea0
test eax, eax
mov dword [esp + 0x34], eax
je 0x58de9e
cmp dword [esp + 0x134], 0
mov dword [esp + 0x18], 0
jbe 0x58de95
jmp 0x58dd30
mov ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x18]
mov eax, dword [ecx + edx*4]
movzx ecx, word [ebx + 0x460]
mov esi, eax
shr eax, 0x14
sub eax, dword [esp + 0x154]
shr esi, 8
and esi, 0xfff
sub esi, dword [esp + 0x150]
mov dword [esp + 0x20], eax
sub ecx, 3
add eax, 0xffffffff
cmp eax, ecx
ja 0x58de79
movzx eax, word [ebx + 0x462]
add eax, 0xfffffffd
lea edx, [esi - 1]
cmp edx, eax
ja 0x58de79
mov edx, dword [esp + 0x18]
xor ecx, ecx
xor eax, eax
mov dword [esp + 0x5c], eax
mov dword [esp + 0x60], eax
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x34]
mov eax, dword [eax + edx*4]
mov dword [esp + 0x44], ecx
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x2c]
mov edx, 1
shl edx, cl
test eax, edx
je 0x58de28
movsx edx, word [ecx*4 + 0x6b5994]
fld dword [esp + 0x5c]
add edx, dword [esp + 0x20]
movzx eax, word [ebx + 0x462]
imul edx, eax
movsx eax, word [ecx*4 + 0x6b5996]
add edx, esi
add eax, edx
mov edx, dword [ebx + 0x4d8]
add eax, eax
add eax, eax
movsx edi, word [edx + eax*2]
add dword [esp + 0x44], 1
mov dword [esp + 0x68], edi
movsx edi, word [edx + eax*2 + 2]
fild dword [esp + 0x68]
movsx eax, word [edx + eax*2 + 4]
faddp st(1)
mov dword [esp + 0x68], edi
fstp dword [esp + 0x5c]
fild dword [esp + 0x68]
mov dword [esp + 0x68], eax
fadd dword [esp + 0x60]
fstp dword [esp + 0x60]
fild dword [esp + 0x68]
fadd dword [esp + 0x64]
fstp dword [esp + 0x64]
add ecx, 1
cmp ecx, 8
jl 0x58dda8
cmp dword [esp + 0x44], 0
je 0x58de79
fild dword [esp + 0x44]
xor edi, edi
fstp dword [esp + 0x2c]
fld dword [esp + 0x2c]
fld dword [esp + edi*4 + 0x5c]
fdiv st(1)
call fcn.0066a3f0
movzx ecx, word [ebx + 0x462]
imul ecx, dword [esp + 0x20]
add ecx, esi
lea edx, [edi + ecx*4]
mov ecx, dword [ebx + 0x4d8]
add edi, 1
cmp edi, 3
mov word [ecx + edx*2], ax
jl 0x58de49
fstp st(0)
mov eax, dword [esp + 0x18]
add eax, 1
cmp eax, dword [esp + 0x134]
mov dword [esp + 0x18], eax
jb 0x58dd30
mov eax, dword [esp + 0x34]
push eax
call fcn.0045da90
add esp, 4
movzx eax, word [ebx + 0x462]
lea esi, [eax + eax*4]
lea esi, [esi + esi*2]
add esi, esi
add esi, esi
push esi
call fcn.0045d550
mov edi, eax
add esp, 4
test edi, edi
je 0x58deca
push esi
push 0
push edi
call fcn.0060c930
add esp, 0xc
test edi, edi
mov dword [esp + 0xf8], edi
je 0x58f397
movzx edx, word [ebx + 0x462]
lea edx, [edx + edx*2]
add edx, edx
xor eax, eax
xor ecx, ecx
add edx, edx
mov esi, dword [esp + 0xf8]
add esi, ecx
mov dword [esp + eax*4 + 0xe0], esi
add eax, 1
add ecx, edx
cmp eax, 5
jl 0x58deeb
movzx edx, word [ebx + 0x460]
mov ecx, 2
or edi, 0xffffffff
sub edx, ecx
cmp edx, ecx
mov dword [esp + 0x18], edi
mov dword [esp + 0x20], ecx
jle 0x58e0c8
jmp 0x58df30
lea eax, [ecx + 2]
cmp edi, eax
jge 0x58dfea
jmp 0x58df40
xor ecx, ecx
lea eax, [ecx + 5]
cdq
mov esi, 6
idiv esi
mov eax, dword [esp + ecx*4 + 0xe0]
add ecx, 1
cmp ecx, esi
mov dword [esp + edx*4 + 0xe0], eax
jl 0x58df42
movzx ecx, word [ebx + 0x462]
mov eax, dword [ebx + 0x4d8]
add edi, 1
mov edx, edi
imul edx, ecx
lea eax, [eax + edx*8 + 0x10]
mov edx, 2
add ecx, 0xfffffffe
cmp ecx, edx
mov dword [esp + 0x18], edi
jle 0x58dfd7
mov esi, dword [esp + 0xf0]
add esi, 0x18
movsx ecx, word [eax + 8]
movsx edi, word [eax - 8]
add edi, ecx
movsx ecx, word [eax]
lea ecx, [ecx + ecx*2]
add ecx, ecx
lea ecx, [ecx + edi*4 + 8]
movsx edi, word [eax - 0x10]
add ecx, edi
movsx edi, word [eax + 0x10]
add ecx, edi
sar ecx, 4
mov dword [esi], ecx
movzx ecx, word [ebx + 0x462]
add edx, 1
sub ecx, 2
add eax, 8
add esi, 0xc
cmp edx, ecx
jl 0x58df95
mov edi, dword [esp + 0x18]
mov eax, dword [esp + 0x20]
add eax, 2
cmp edi, eax
jl 0x58df40
mov ecx, dword [esp + 0x20]
movzx eax, word [ebx + 0x462]
mov esi, dword [ebx + 0x4d8]
mov edx, eax
imul edx, ecx
lea esi, [esi + edx*8 + 0x10]
mov edx, 2
add eax, 0xfffffffe
cmp eax, edx
jle 0x58e0af
mov eax, dword [esp + 0xec]
lea ecx, [edx + edx*2]
add ecx, ecx
add ecx, ecx
mov edi, dword [eax + ecx]
mov eax, dword [esp + 0xe4]
add edi, dword [eax + ecx]
mov eax, dword [esp + 0xe8]
mov eax, dword [eax + ecx]
lea eax, [eax + eax*2]
add eax, eax
lea eax, [eax + edi*4 + 8]
mov edi, dword [esp + 0xe0]
add eax, dword [edi + ecx]
mov edi, dword [esp + 0xf0]
add eax, dword [edi + ecx]
sar eax, 4
cmp edx, 2
mov ecx, eax
je 0x58e060
mov ecx, dword [esp + 0x40]
lea edi, [eax*8]
sub edi, eax
add edi, ecx
movsx ecx, word [esi]
sar edi, 3
sub ecx, edi
movsx edi, word [esi]
sar ecx, 3
add ecx, edi
cmp ecx, 0x7d00
jle 0x58e088
mov ecx, 0x7d00
mov word [esi], cx
movzx ecx, word [ebx + 0x462]
add edx, 1
sub ecx, 2
add esi, 8
cmp edx, ecx
mov dword [esp + 0x40], eax
jl 0x58e010
mov edi, dword [esp + 0x18]
mov ecx, dword [esp + 0x20]
movzx edx, word [ebx + 0x460]
add ecx, 1
sub edx, 2
cmp ecx, edx
mov dword [esp + 0x20], ecx
jl 0x58df30
mov edi, 0xffff
xor esi, esi
nop
fild dword [esp + esi + 0x17c]
fdiv dword [esp + esi + 0x7c]
call fcn.0066a3f0
cmp edi, eax
jle 0x58e0e6
mov edi, eax
add esi, 4
cmp esi, 0xc
jl 0x58e0d0
movzx eax, word [ebx + 0x462]
movzx ecx, word [ebx + 0x460]
mov esi, dword [ebx + 0x4d8]
imul eax, ecx
lea edi, [edi + edi*8]
sar edi, 4
lea edx, [esi + eax*8]
cmp esi, edx
mov dword [esp + 0x2c], edi
jae 0x58e21c
lea ebx, [ebx]
mov eax, dword [ebx + 0x20680]
test eax, eax
je 0x58e134
mov eax, dword [eax]
test eax, eax
jne 0x58f3a7
movsx ecx, word [esi]
cmp ecx, edi
jle 0x58e1f7
movsx edx, word [esi + 2]
cmp edx, edi
jle 0x58e1f7
movsx eax, word [esi + 4]
cmp eax, edi
jle 0x58e1f7
movsx eax, word [esi + 2]
cmp ecx, eax
mov edx, ecx
jle 0x58e163
mov edx, eax
jge 0x58e167
mov ecx, eax
movsx eax, word [esi + 4]
cmp edx, eax
jle 0x58e171
mov edx, eax
cmp ecx, eax
jge 0x58e177
mov ecx, eax
lea eax, [edi + edi]
cmp edx, eax
jl 0x58e187
mov word [esi + 2], cx
mov word [esi], cx
jmp 0x58e1f3
mov eax, edi
sub eax, edx
shl eax, 0xe
cdq
idiv edi
mov edi, ecx
add eax, 0x4000
mov edx, eax
imul edx, eax
sar edx, 0xe
mov eax, 0x4000
sub eax, edx
movzx edx, word [esi]
imul eax, eax
movsx edx, dx
sub edi, edx
movzx edx, word [esi]
sar eax, 0xe
imul edi, eax
sar edi, 0xe
add edi, edx
movzx edx, word [esi + 2]
mov word [esi], di
movsx edx, dx
mov edi, ecx
sub edi, edx
movzx edx, word [esi + 2]
imul edi, eax
sar edi, 0xe
add edi, edx
movzx edx, word [esi + 4]
mov word [esi + 2], di
movsx edi, dx
sub ecx, edi
mov edi, dword [esp + 0x2c]
imul ecx, eax
sar ecx, 0xe
add ecx, edx
mov word [esi + 4], cx
movzx eax, word [ebx + 0x462]
movzx ecx, word [ebx + 0x460]
mov edx, dword [ebx + 0x4d8]
imul eax, ecx
add esi, 8
lea eax, [edx + eax*8]
cmp esi, eax
jb 0x58e120
movzx ecx, word [ebx + 0x460]
mov eax, 2
or esi, 0xffffffff
sub ecx, eax
cmp ecx, eax
mov dword [esp + 0x18], esi
mov dword [esp + 0x20], eax
jle 0x58e534
lea ecx, [ecx]
add eax, 2
cmp esi, eax
jge 0x58e320
jmp 0x58e250
xor ecx, ecx
lea eax, [ecx + 5]
cdq
mov edi, 6
idiv edi
mov eax, dword [esp + ecx*4 + 0xe0]
add ecx, 1
cmp ecx, edi
mov dword [esp + edx*4 + 0xe0], eax
jl 0x58e252
movzx ecx, word [ebx + 0x462]
mov eax, dword [ebx + 0x4d8]
add esi, 1
mov edx, esi
imul edx, ecx
lea eax, [eax + edx*8 + 0x10]
mov edx, 2
add ecx, 0xfffffffe
cmp ecx, edx
mov dword [esp + 0x18], esi
jle 0x58e311
mov ecx, dword [esp + 0xf0]
add ecx, 0x20
lea esp, [esp]
movsx edi, word [eax - 8]
movsx esi, word [eax]
lea esi, [edi + esi*2 + 2]
movsx edi, word [eax + 8]
add esi, edi
sar esi, 2
mov dword [ecx - 8], esi
movsx edi, word [eax + 0xa]
movsx esi, word [eax + 2]
lea esi, [edi + esi*2 + 2]
movsx edi, word [eax - 6]
add esi, edi
sar esi, 2
mov dword [ecx - 4], esi
movsx edi, word [eax + 0xc]
movsx esi, word [eax + 4]
lea esi, [edi + esi*2 + 2]
movsx edi, word [eax - 4]
add esi, edi
sar esi, 2
mov dword [ecx], esi
movzx esi, word [ebx + 0x462]
add edx, 1
sub esi, 2
add eax, 8
add ecx, 0xc
cmp edx, esi
jl 0x58e2b0
mov esi, dword [esp + 0x18]
mov eax, dword [esp + 0x20]
add eax, 2
cmp esi, eax
jl 0x58e250
movzx ecx, word [ebx + 0x462]
imul ecx, dword [esp + 0x20]
mov edi, dword [ebx + 0x4d8]
mov edx, dword [esp + 0xe4]
mov eax, dword [esp + 0xe8]
lea ecx, [edi + ecx*8 + 0x10]
movzx edi, word [ebx + 0x462]
add edi, 0xfffffffe
cmp edi, 2
mov dword [esp + 0x30], 2
jle 0x58e517
lea esi, [eax + 0x18]
mov dword [esp + 0x34], esi
lea esi, [edx + 0x20]
mov dword [esp + 0x54], esi
mov esi, dword [esp + 0xec]
lea edi, [esi + 0x1c]
mov dword [esp + 0x38], edi
mov edi, eax
sub edi, esi
mov dword [esp + 0x68], edi
mov edi, edx
sub edi, esi
sub eax, edx
mov dword [esp + 0xfc], edi
mov dword [esp + 0x40], eax
mov esi, dword [esp + 0x38]
mov eax, dword [esp + 0x54]
mov edx, dword [esi - 4]
add edx, dword [eax - 8]
mov eax, dword [esp + 0x34]
mov eax, dword [eax]
movsx edi, word [ecx]
lea edx, [edx + eax*2]
sar edx, 2
sub edi, edx
mov eax, edi
cdq
xor eax, edx
sub eax, edx
mov edx, dword [esp + 0xd8]
mov dword [esp + 0x2c], eax
movsx eax, word [edx]
mov edx, dword [esp + 0x2c]
cmp edx, eax
jl 0x58e3d4
xor edi, edi
jmp 0x58e3f8
test edi, edi
jge 0x58e3ec
mov edx, dword [esp + 0xd8]
lea eax, [edi + edi]
sub edx, eax
movsx edi, word [edx + 2]
neg edi
jmp 0x58e3f8
mov eax, dword [esp + 0xd8]
movsx edi, word [eax + edi*2 + 2]
mov edx, dword [esp + 0x68]
mov eax, dword [edx + esi]
mov edx, dword [esp + 0xfc]
mov edx, dword [edx + esi]
lea eax, [edx + eax*2]
add eax, dword [esi]
movsx esi, word [ecx + 2]
sar eax, 2
sub esi, eax
mov eax, esi
cdq
xor eax, edx
sub eax, edx
mov edx, dword [esp + 0xd8]
mov dword [esp + 0x2c], eax
movsx eax, word [edx]
mov edx, dword [esp + 0x2c]
neg edi
cmp edx, eax
jl 0x58e43a
xor esi, esi
jmp 0x58e45e
test esi, esi
jge 0x58e452
mov edx, dword [esp + 0xd8]
lea eax, [esi + esi]
sub edx, eax
movsx esi, word [edx + 2]
neg esi
jmp 0x58e45e
mov eax, dword [esp + 0xd8]
movsx esi, word [eax + esi*2 + 2]
mov eax, dword [esp + 0x54]
mov edx, dword [esp + 0x40]
mov edx, dword [edx + eax]
mov eax, dword [esp + 0x38]
mov eax, dword [eax + 4]
lea edx, [eax + edx*2]
mov eax, dword [esp + 0x54]
add edx, dword [eax]
movsx eax, word [ecx + 4]
sar edx, 2
sub eax, edx
mov dword [esp + 0x1c], eax
cdq
xor eax, edx
sub eax, edx
mov edx, dword [esp + 0xd8]
mov dword [esp + 0x2c], eax
movsx eax, word [edx]
mov edx, dword [esp + 0x2c]
neg esi
cmp edx, eax
jl 0x58e4a7
xor edx, edx
jmp 0x58e4c7
mov eax, dword [esp + 0x1c]
test eax, eax
mov edx, dword [esp + 0xd8]
jge 0x58e4c2
add eax, eax
sub edx, eax
movsx edx, word [edx + 2]
neg edx
jmp 0x58e4c7
movsx edx, word [edx + eax*2 + 2]
neg edx
lea eax, [edx + esi]
add eax, edi
sar eax, 3
sub edx, eax
add word [ecx + 4], dx
sub edi, eax
add word [ecx], di
sub esi, eax
add word [ecx + 2], si
mov eax, dword [esp + 0x30]
mov edx, 0xc
add dword [esp + 0x34], edx
add dword [esp + 0x38], edx
add dword [esp + 0x54], edx
movzx edx, word [ebx + 0x462]
add eax, 1
sub edx, 2
add ecx, 8
cmp eax, edx
mov dword [esp + 0x30], eax
jl 0x58e394
mov esi, dword [esp + 0x18]
movzx ecx, word [ebx + 0x460]
mov eax, dword [esp + 0x20]
add eax, 1
sub ecx, 2
cmp eax, ecx
mov dword [esp + 0x20], eax
jl 0x58e240
movzx edx, word [ebx + 0x460]
mov ecx, 2
or esi, 0xffffffff
sub edx, ecx
cmp edx, ecx
mov dword [esp + 0x18], esi
mov dword [esp + 0x20], ecx
jle 0x58e88a
mov eax, dword [ebx + 0x20680]
test eax, eax
je 0x58e569
mov eax, dword [eax]
test eax, eax
jne 0x58f3a7
lea eax, [ecx + 2]
cmp esi, eax
jge 0x58e668
xor ecx, ecx
lea eax, [ecx + 5]
cdq
mov edi, 6
idiv edi
mov eax, dword [esp + ecx*4 + 0xe0]
add ecx, 1
cmp ecx, edi
mov dword [esp + edx*4 + 0xe0], eax
jl 0x58e576
movzx ecx, word [ebx + 0x462]
mov eax, dword [ebx + 0x4d8]
add esi, 1
mov edx, esi
imul edx, ecx
lea eax, [eax + edx*8 + 0x10]
mov edx, 2
add ecx, 0xfffffffe
cmp ecx, edx
mov dword [esp + 0x18], esi
jle 0x58e659
mov ecx, dword [esp + 0xf0]
add ecx, 0x20
lea ecx, [ecx]
movsx edi, word [eax + 0x10]
movsx esi, word [eax - 0x10]
add esi, edi
movsx edi, word [eax - 8]
add esi, edi
movsx edi, word [eax]
add esi, edi
movsx edi, word [eax + 8]
lea esi, [esi + edi + 2]
sar esi, 2
mov dword [ecx - 8], esi
movsx edi, word [eax - 0xe]
movsx esi, word [eax + 0x12]
add esi, edi
movsx edi, word [eax + 0xa]
add esi, edi
movsx edi, word [eax - 6]
add esi, edi
movsx edi, word [eax + 2]
lea esi, [esi + edi + 2]
sar esi, 2
mov dword [ecx - 4], esi
movsx edi, word [eax - 0xc]
movsx esi, word [eax + 0x14]
add esi, edi
movsx edi, word [eax + 0xc]
add esi, edi
movsx edi, word [eax - 4]
add esi, edi
movsx edi, word [eax + 4]
lea esi, [esi + edi + 2]
sar esi, 2
mov dword [ecx], esi
movzx esi, word [ebx + 0x462]
add edx, 1
sub esi, 2
add eax, 8
add ecx, 0xc
cmp edx, esi
jl 0x58e5d0
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x20]
lea eax, [ecx + 2]
cmp esi, eax
jl 0x58e574
movzx eax, word [ebx + 0x462]
mov edx, eax
imul edx, ecx
mov ecx, dword [ebx + 0x4d8]
add eax, 0xfffffffe
cmp eax, 2
lea edx, [ecx + edx*8 + 0x10]
mov dword [esp + 0x28], edx
mov dword [esp + 0x30], 2
jle 0x58e86d
mov ecx, 0x18
jmp 0x58e6a0
lea eax, [esp + 0xac]
mov dword [esp + 0xb8], 0x177
mov dword [esp + 0x44], 0x3c
xor esi, esi
mov dword [esp + 0x40], eax
mov dword [esp + 0x38], ecx
xor edx, edx
mov dword [eax], edx
xor ecx, ecx
lea ebx, [ebx]
mov eax, dword [esp + edx*4 + 0xe0]
mov edi, dword [esp + 0x38]
add ecx, dword [eax + edi]
add edx, 1
cmp edx, 5
jl 0x58e6d0
mov eax, dword [esp + 0x40]
mov edi, dword [esp + 0x28]
movsx edx, word [edi + esi*2]
add dword [esp + 0x38], 4
mov dword [eax], ecx
add dword [esp + 0xb8], ecx
mov ecx, dword [esp + 0x44]
add ecx, edx
add esi, 1
add eax, 4
cmp esi, 3
mov dword [esp + 0x44], ecx
mov dword [esp + 0x40], eax
jl 0x58e6c4
test ecx, ecx
jge 0x58e71f
xor ecx, ecx
cmp dword [esp + 0xb8], 0x177
jle 0x58e73f
mov eax, ecx
shl eax, 0x10
cdq
idiv dword [esp + 0xb8]
mov dword [esp + 0x28], eax
jmp 0x58e749
imul ecx, ecx, 0xae
mov dword [esp + 0x28], ecx
mov ecx, dword [esp + 0xac]
imul ecx, dword [esp + 0x28]
movzx eax, word [edi]
mov esi, dword [esp + 0xd4]
movsx eax, ax
add ecx, 0x8000
sar ecx, 0x10
sub ecx, eax
mov eax, ecx
cdq
xor eax, edx
sub eax, edx
movsx edx, word [esi]
cmp eax, edx
jl 0x58e77f
xor eax, eax
jmp 0x58e797
test ecx, ecx
jge 0x58e792
lea eax, [ecx + ecx]
mov ecx, esi
sub ecx, eax
movsx eax, word [ecx + 2]
neg eax
jmp 0x58e797
movsx eax, word [esi + ecx*2 + 2]
movzx ecx, word [edi]
add ecx, eax
movzx eax, word [edi + 2]
mov word [edi], cx
mov ecx, dword [esp + 0xb0]
imul ecx, dword [esp + 0x28]
movsx edx, ax
add ecx, 0x8000
sar ecx, 0x10
sub ecx, edx
mov eax, ecx
cdq
xor eax, edx
sub eax, edx
movsx edx, word [esi]
cmp eax, edx
jl 0x58e7cf
xor eax, eax
jmp 0x58e7e7
test ecx, ecx
jge 0x58e7e2
lea eax, [ecx + ecx]
mov ecx, esi
sub ecx, eax
movsx eax, word [ecx + 2]
neg eax
jmp 0x58e7e7
movsx eax, word [esi + ecx*2 + 2]
movzx ecx, word [edi + 2]
add ecx, eax
movzx eax, word [edi + 4]
mov word [edi + 2], cx
mov ecx, dword [esp + 0xb4]
imul ecx, dword [esp + 0x28]
movsx edx, ax
add ecx, 0x8000
sar ecx, 0x10
sub ecx, edx
mov eax, ecx
cdq
xor eax, edx
sub eax, edx
movsx edx, word [esi]
cmp eax, edx
jl 0x58e821
xor eax, eax
jmp 0x58e837
test ecx, ecx
jge 0x58e832
lea eax, [ecx + ecx]
sub esi, eax
movsx eax, word [esi + 2]
neg eax
jmp 0x58e837
movsx eax, word [esi + ecx*2 + 2]
movzx ecx, word [edi + 4]
add ecx, eax
mov eax, dword [esp + 0x30]
mov word [edi + 4], cx
movzx edx, word [ebx + 0x462]
mov ecx, dword [esp + 0x38]
add eax, 1
add edi, 8
sub edx, 2
cmp eax, edx
mov dword [esp + 0x28], edi
mov dword [esp + 0x30], eax
jl 0x58e6a0
mov esi, dword [esp + 0x18]
movzx eax, word [ebx + 0x460]
mov ecx, dword [esp + 0x20]
add ecx, 1
sub eax, 2
cmp ecx, eax
mov dword [esp + 0x20], ecx
jl 0x58e555
movzx ecx, word [ebx + 0x462]
movzx edx, word [ebx + 0x460]
mov esi, dword [ebx + 0x4d8]
imul ecx, edx
lea eax, [esi + ecx*8]
cmp esi, eax
jae 0x58eb4e
fld qword [0x6c1330]
fld qword [0x69f210]
fldz
movzx ecx, word [esi]
movsx edi, cx
mov eax, edi
cdq
xor eax, edx
sub eax, edx
mov edx, dword [esp + 0xbc]
movsx edx, word [edx]
cmp eax, edx
jl 0x58e8d9
xor eax, eax
jmp 0x58e8fd
test edi, edi
jge 0x58e8f1
mov edx, dword [esp + 0xbc]
lea eax, [edi + edi]
sub edx, eax
movsx eax, word [edx + 2]
neg eax
jmp 0x58e8fd
mov eax, dword [esp + 0xbc]
movsx eax, word [eax + edi*2 + 2]
sub ecx, eax
mov word [esi], cx
movzx ecx, word [esi + 2]
movsx edi, cx
mov eax, edi
cdq
xor eax, edx
sub eax, edx
mov edx, dword [esp + 0xc0]
movsx edx, word [edx]
cmp eax, edx
jl 0x58e922
xor eax, eax
jmp 0x58e946
test edi, edi
jge 0x58e93a
mov edx, dword [esp + 0xc0]
lea eax, [edi + edi]
sub edx, eax
movsx eax, word [edx + 2]
neg eax
jmp 0x58e946
mov eax, dword [esp + 0xc0]
movsx eax, word [eax + edi*2 + 2]
sub ecx, eax
mov word [esi + 2], cx
movzx ecx, word [esi + 4]
movsx edi, cx
mov eax, edi
cdq
xor eax, edx
sub eax, edx
mov edx, dword [esp + 0xc4]
movsx edx, word [edx]
cmp eax, edx
jl 0x58e96c
xor eax, eax
jmp 0x58e990
test edi, edi
jge 0x58e984
mov edx, dword [esp + 0xc4]
lea eax, [edi + edi]
sub edx, eax
movsx eax, word [edx + 2]
neg eax
jmp 0x58e990
mov eax, dword [esp + 0xc4]
movsx eax, word [eax + edi*2 + 2]
sub ecx, eax
mov word [esi + 4], cx
movsx edx, word [esi]
movsx ecx, word [esi + 2]
movsx eax, word [esi + 4]
lea ecx, [edx + ecx*2]
add ecx, eax
movzx eax, word [esi]
movsx edi, ax
sar ecx, 2
mov dword [esp + 0x2c], eax
sub edi, ecx
mov eax, edi
cdq
xor eax, edx
sub eax, edx
mov edx, dword [esp + 0xbc]
movsx edx, word [edx]
cmp eax, edx
jl 0x58e9ce
xor eax, eax
jmp 0x58e9f2
test edi, edi
jge 0x58e9e6
mov edx, dword [esp + 0xbc]
lea eax, [edi + edi]
sub edx, eax
movsx eax, word [edx + 2]
neg eax
jmp 0x58e9f2
mov eax, dword [esp + 0xbc]
movsx eax, word [eax + edi*2 + 2]
mov edx, dword [esp + 0x2c]
sub edx, eax
movzx eax, word [esi + 2]
movsx edi, ax
mov dword [esp + 0x2c], eax
sub edi, ecx
mov word [esi], dx
mov eax, edi
cdq
xor eax, edx
sub eax, edx
mov edx, dword [esp + 0xc0]
movsx edx, word [edx]
cmp eax, edx
jl 0x58ea21
xor eax, eax
jmp 0x58ea45
test edi, edi
jge 0x58ea39
mov edx, dword [esp + 0xc0]
lea eax, [edi + edi]
sub edx, eax
movsx eax, word [edx + 2]
neg eax
jmp 0x58ea45
mov eax, dword [esp + 0xc0]
movsx eax, word [eax + edi*2 + 2]
mov edx, dword [esp + 0x2c]
sub edx, eax
movzx eax, word [esi + 4]
movsx edi, ax
mov dword [esp + 0x2c], eax
sub edi, ecx
mov ecx, dword [esp + 0xc4]
mov word [esi + 2], dx
mov eax, edi
cdq
xor eax, edx
sub eax, edx
movsx edx, word [ecx]
cmp eax, edx
jl 0x58ea75
xor eax, eax
jmp 0x58ea99
test edi, edi
jge 0x58ea8d
mov ecx, dword [esp + 0xc4]
lea eax, [edi + edi]
sub ecx, eax
movsx eax, word [ecx + 2]
neg eax
jmp 0x58ea99
mov edx, dword [esp + 0xc4]
movsx eax, word [edx + edi*2 + 2]
mov ecx, dword [esp + 0x2c]
sub ecx, eax
mov word [esi + 4], cx
mov dword [esp + 0x40], 0
lea edi, [esp + 0x100]
xor eax, eax
fld st(0)
movsx ecx, word [esi + eax*2]
mov dword [esp + 0x2c], ecx
add eax, 1
add edi, 4
cmp eax, 3
fild dword [esp + 0x2c]
fmul dword [edi - 4]
faddp st(1)
jl 0x58eab6
fcom st(1)
fnstsw ax
test ah, 5
jp 0x58eae1
fstp st(0)
fld st(0)
jmp 0x58eaee
fcom st(3)
fnstsw ax
test ah, 0x41
jne 0x58eaee
fstp st(0)
fld st(2)
fadd st(2)
call fcn.0066a3f0
mov ecx, dword [esp + 0x40]
mov dword [esp + ecx*4 + 0x48], eax
add ecx, 1
cmp ecx, 3
mov dword [esp + 0x40], ecx
jl 0x58eab2
mov dx, word [esp + 0x48]
mov ax, word [esp + 0x4c]
mov cx, word [esp + 0x50]
mov word [esi], dx
mov word [esi + 2], ax
mov word [esi + 4], cx
movzx edx, word [ebx + 0x462]
movzx eax, word [ebx + 0x460]
mov ecx, dword [ebx + 0x4d8]
imul edx, eax
add esi, 8
lea edx, [ecx + edx*8]
cmp esi, edx
jb 0x58e8ba
fstp st(0)
fstp st(1)
fstp st(0)
movzx eax, word [ebx + 0x462]
movzx ecx, word [ebx + 0x460]
shr eax, 2
shr ecx, 2
imul eax, ecx
lea edi, [eax + eax*2]
add edi, edi
push edi
call fcn.0045d550
mov esi, eax
add esp, 4
test esi, esi
mov dword [esp + 0x3c], esi
je 0x58f397
push edi
push 0
push esi
call fcn.0060c930
movzx edi, word [ebx + 0x460]
add esp, 0xc
shr edi, 2
je 0x58ed7b
lea edx, [edi + 1]
mov dword [esp + 0x28], edx
sub dword [esp + 0x28], 1
sub edi, 1
xor edx, edx
test word [ebx + 0x462], 0xfffc
mov dword [esp + 0x20], edi
jbe 0x58ed73
movzx eax, word [ebx + 0x462]
mov esi, dword [ebx + 0x4d8]
mov dword [esp + 0x2c], eax
imul eax, edi
xor ecx, ecx
add eax, edx
shl eax, 5
lea eax, [eax + esi + 4]
mov dword [esp + 0x50], ecx
mov dword [esp + 0x4c], ecx
mov dword [esp + 0x34], eax
mov dword [esp + 0x1c], 4
mov eax, dword [esp + 0x34]
mov dword [esp + 0x40], 4
movsx esi, word [eax - 4]
add ecx, esi
movsx esi, word [eax - 2]
add dword [esp + 0x4c], esi
movsx esi, word [eax]
add dword [esp + 0x50], esi
add eax, 8
sub dword [esp + 0x40], 1
jne 0x58ec00
mov eax, dword [esp + 0x2c]
lea esi, [eax*8]
add dword [esp + 0x34], esi
sub dword [esp + 0x1c], 1
jne 0x58ebf4
movzx edi, word [ebx + 0x460]
mov esi, dword [esp + 0x28]
shr edi, 2
add esi, 1
shr eax, 2
cmp esi, edi
jle 0x58ec56
mov esi, dword [esp + 0x3c]
sar ecx, 4
jmp 0x58ec80
mov esi, dword [esp + 0x28]
imul ecx, ecx, 0x8d
imul esi, eax
add esi, edx
lea edi, [esi + esi*2]
mov esi, dword [esp + 0x3c]
movsx edi, word [esi + edi*2]
imul edi, edi, 0x730
lea ecx, [edi + ecx + 0x800]
sar ecx, 0xc
mov edi, dword [esp + 0x20]
imul eax, edi
add eax, edx
lea eax, [eax + eax*2]
mov word [esi + eax*2], cx
movzx ecx, word [ebx + 0x460]
mov eax, dword [esp + 0x28]
add eax, 1
shr ecx, 2
cmp eax, ecx
movzx eax, word [ebx + 0x462]
jle 0x58ecb8
mov ecx, dword [esp + 0x4c]
sar ecx, 4
shr eax, 2
jmp 0x58ecea
mov ecx, dword [esp + 0x28]
shr eax, 2
imul ecx, eax
add ecx, edx
lea ecx, [ecx + ecx*2]
movsx edi, word [esi + ecx*2 + 2]
mov ecx, dword [esp + 0x4c]
imul edi, edi, 0x730
imul ecx, ecx, 0x8d
lea ecx, [edi + ecx + 0x800]
mov edi, dword [esp + 0x20]
sar ecx, 0xc
imul eax, edi
add eax, edx
lea eax, [eax + eax*2]
mov word [esi + eax*2 + 2], cx
movzx ecx, word [ebx + 0x460]
mov eax, dword [esp + 0x28]
add eax, 1
shr ecx, 2
cmp eax, ecx
movzx eax, word [ebx + 0x462]
jle 0x58ed1f
mov ecx, dword [esp + 0x50]
sar ecx, 4
shr eax, 2
jmp 0x58ed51
mov ecx, dword [esp + 0x28]
shr eax, 2
imul ecx, eax
add ecx, edx
lea ecx, [ecx + ecx*2]
movsx edi, word [esi + ecx*2 + 4]
mov ecx, dword [esp + 0x50]
imul edi, edi, 0x730
imul ecx, ecx, 0x8d
lea ecx, [edi + ecx + 0x800]
mov edi, dword [esp + 0x20]
sar ecx, 0xc
imul eax, edi
add eax, edx
lea eax, [eax + eax*2]
mov word [esi + eax*2 + 4], cx
movzx ecx, word [ebx + 0x462]
add edx, 1
shr ecx, 2
cmp edx, ecx
jl 0x58ebc1
test edi, edi
jne 0x58eba4
movzx edx, word [ebx + 0x460]
xor ecx, ecx
test edx, 0xfffffffc
mov dword [esp + 0x20], ecx
jle 0x58f2a1
xor eax, eax
test cl, 3
mov dword [esp + 0x50], eax
mov dword [esp + 0x4c], eax
mov dword [esp + 0x48], eax
jne 0x58eea7
movzx edi, word [ebx + 0x462]
and edi, 0xfffffffc
je 0x58eea7
mov eax, ecx
mov ecx, dword [esp + 0xe0]
cdq
and edx, 3
add eax, edx
sar eax, 2
mov dword [esp + 0x34], eax
lea eax, [edi + edi*2]
lea ecx, [ecx + eax*4 + 8]
sub edi, 1
mov eax, edi
cdq
and edx, 3
add eax, edx
movzx edx, word [ebx + 0x462]
shr edx, 2
imul edx, dword [esp + 0x34]
sar eax, 2
add edx, eax
lea edx, [edx + edx*2]
movsx edx, word [esi + edx*2]
imul edx, edx, 0x5cd
mov dword [esp + 0x30], edi
mov edi, dword [esp + 0x48]
imul edi, edi, 0x1a33
lea edx, [edx + edi + 0x1000]
sar edx, 0xd
mov dword [ecx - 0x14], edx
mov dword [esp + 0x48], edx
movzx edx, word [ebx + 0x462]
mov edi, dword [esp + 0x4c]
shr edx, 2
imul edi, edi, 0x1a33
imul edx, dword [esp + 0x34]
sub ecx, 0xc
add edx, eax
lea edx, [edx + edx*2]
movsx edx, word [esi + edx*2 + 2]
imul edx, edx, 0x5cd
lea edx, [edx + edi + 0x1000]
sar edx, 0xd
mov dword [ecx - 4], edx
mov dword [esp + 0x4c], edx
movzx edx, word [ebx + 0x462]
shr edx, 2
imul edx, dword [esp + 0x34]
mov edi, dword [esp + 0x30]
add edx, eax
lea eax, [edx + edx*2]
movsx edx, word [esi + eax*2 + 4]
mov eax, dword [esp + 0x50]
imul edx, edx, 0x5cd
imul eax, eax, 0x1a33
lea eax, [edx + eax + 0x1000]
sar eax, 0xd
test edi, edi
mov dword [esp + 0x50], eax
mov dword [ecx], eax
jne 0x58edd8
xor eax, eax
movzx ecx, word [ebx + 0x462]
test ecx, 0xfffffffc
mov dword [esp + 0x50], eax
mov dword [esp + 0x4c], eax
mov dword [esp + 0x48], eax
mov dword [esp + 0x30], eax
jle 0x58ef76
mov eax, dword [esp + 0xe0]
mov edi, dword [esp + 0xe4]
mov edx, eax
sub eax, edi
lea ecx, [edi + 4]
mov dword [esp + 0x2c], eax
mov eax, dword [edx]
mov edi, dword [esp + 0x48]
imul eax, eax, 0x5cd
imul edi, edi, 0x1a33
lea eax, [eax + edi + 0x1000]
mov edi, dword [esp + 0x4c]
sar eax, 0xd
imul edi, edi, 0x1a33
mov dword [ecx - 4], eax
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x2c]
mov eax, dword [eax + ecx]
imul eax, eax, 0x5cd
lea eax, [eax + edi + 0x1000]
mov edi, dword [esp + 0x50]
sar eax, 0xd
imul edi, edi, 0x1a33
mov dword [ecx], eax
mov dword [esp + 0x4c], eax
mov eax, dword [edx + 8]
imul eax, eax, 0x5cd
lea eax, [eax + edi + 0x1000]
sar eax, 0xd
mov dword [ecx + 4], eax
movzx edi, word [ebx + 0x462]
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x30]
add eax, 1
and edi, 0xfffffffc
add edx, 0xc
add ecx, 0xc
cmp eax, edi
mov dword [esp + 0x30], eax
jl 0x58eee3
xor eax, eax
cmp dword [esp + 0x20], eax
jne 0x58efa8
movzx eax, word [ebx + 0x462]
mov edx, dword [esp + 0xe4]
lea ecx, [eax + eax*2]
mov eax, dword [esp + 0xe8]
add ecx, ecx
add ecx, ecx
push ecx
push edx
push eax
call fcn.0060d1b0
add esp, 0xc
jmp 0x58f05d
movzx ecx, word [ebx + 0x462]
test ecx, 0xfffffffc
mov dword [esp + 0x30], eax
jle 0x58f05f
mov eax, dword [esp + 0xe4]
mov ecx, dword [esp + 0xe8]
mov edx, eax
add ecx, 4
sub edx, dword [esp + 0xe8]
mov dword [esp + 0x2c], edx
lea ecx, [ecx]
mov edi, dword [eax]
mov edx, dword [ecx - 4]
imul edi, edi, 0x5cd
imul edx, edx, 0x1a33
lea edx, [edx + edi + 0x1000]
mov edi, dword [ecx]
sar edx, 0xd
imul edi, edi, 0x1a33
mov dword [ecx - 4], edx
mov edx, dword [esp + 0x2c]
mov edx, dword [edx + ecx]
imul edx, edx, 0x5cd
lea edx, [edx + edi + 0x1000]
mov edi, dword [ecx + 4]
sar edx, 0xd
imul edi, edi, 0x1a33
mov dword [ecx], edx
mov edx, dword [eax + 8]
imul edx, edx, 0x5cd
lea edx, [edx + edi + 0x1000]
sar edx, 0xd
mov dword [ecx + 4], edx
movzx edi, word [ebx + 0x462]
mov edx, dword [esp + 0x30]
add edx, 1
and edi, 0xfffffffc
add eax, 0xc
add ecx, 0xc
cmp edx, edi
mov dword [esp + 0x30], edx
jl 0x58efe0
xor eax, eax
mov dword [esp + 0x30], eax
movzx eax, word [ebx + 0x462]
test eax, 0xfffffffc
jle 0x58f284
mov ecx, dword [esp + 0xe8]
add ecx, 8
mov dword [esp + 0x58], ecx
jmp 0x58f090
movzx esi, word [ebx + 0x462]
imul esi, dword [esp + 0x20]
mov eax, dword [esp + 0x58]
mov edx, dword [eax]
mov ecx, dword [eax - 8]
mov edi, dword [eax - 4]
add esi, dword [esp + 0x30]
mov dword [esp + 0x68], edx
lea eax, [ecx + edi]
lea edx, [eax + edx + 0x1e]
mov eax, dword [ebx + 0x4d8]
mov dword [esp + 0x18], edx
add esi, esi
add esi, esi
movsx edx, word [eax + esi*2 + 4]
mov dword [esp + 0x40], edx
movsx edx, word [eax + esi*2 + 2]
movsx eax, word [eax + esi*2]
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x40]
add eax, edx
mov dword [esp + 0x2c], edx
mov edx, dword [esp + 0x34]
lea eax, [eax + edx + 0x1e]
shl eax, 0x10
cdq
idiv dword [esp + 0x18]
imul ecx, eax
add ecx, 0x8000
sar ecx, 0x10
sub ecx, dword [esp + 0x34]
mov dword [esp + 0x28], eax
mov eax, ecx
cdq
xor eax, edx
sub eax, edx
mov edx, dword [esp + 0xc8]
movsx edx, word [edx]
cmp eax, edx
jl 0x58f122
xor ecx, ecx
jmp 0x58f146
test ecx, ecx
jge 0x58f13a
lea eax, [ecx + ecx]
mov ecx, dword [esp + 0xc8]
sub ecx, eax
movsx ecx, word [ecx + 2]
neg ecx
jmp 0x58f146
mov edx, dword [esp + 0xc8]
movsx ecx, word [edx + ecx*2 + 2]
imul edi, dword [esp + 0x28]
add edi, 0x8000
sar edi, 0x10
sub edi, dword [esp + 0x2c]
mov dword [esp + 0x48], ecx
mov eax, edi
cdq
xor eax, edx
sub eax, edx
mov edx, dword [esp + 0xcc]
movsx edx, word [edx]
cmp eax, edx
jl 0x58f175
xor eax, eax
jmp 0x58f199
test edi, edi
jge 0x58f18d
mov edx, dword [esp + 0xcc]
lea eax, [edi + edi]
sub edx, eax
movsx eax, word [edx + 2]
neg eax
jmp 0x58f199
mov eax, dword [esp + 0xcc]
movsx eax, word [eax + edi*2 + 2]
add ecx, eax
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x68]
imul eax, dword [esp + 0x28]
add eax, 0x8000
sar eax, 0x10
sub eax, dword [esp + 0x40]
mov edi, eax
cdq
xor eax, edx
sub eax, edx
mov edx, dword [esp + 0xd0]
movsx edx, word [edx]
cmp eax, edx
jl 0x58f1cd
xor edi, edi
jmp 0x58f1f1
test edi, edi
jge 0x58f1e5
mov edx, dword [esp + 0xd0]
lea eax, [edi + edi]
sub edx, eax
movsx edi, word [edx + 2]
neg edi
jmp 0x58f1f1
mov eax, dword [esp + 0xd0]
movsx edi, word [eax + edi*2 + 2]
mov eax, dword [esp + 0x34]
add ecx, edi
sar ecx, 3
sub eax, ecx
add eax, dword [esp + 0x48]
mov edx, eax
jns 0x58f206
xor edx, edx
mov eax, dword [ebx + 0x4d8]
mov word [eax + esi*2], dx
movzx eax, word [ebx + 0x462]
imul eax, dword [esp + 0x20]
mov edx, dword [esp + 0x30]
mov esi, dword [ebx + 0x4d8]
add eax, edx
lea esi, [esi + eax*8 + 2]
movsx eax, word [esi]
sub eax, ecx
add eax, dword [esp + 0x4c]
jns 0x58f239
xor eax, eax
mov word [esi], ax
movzx eax, word [ebx + 0x462]
imul eax, dword [esp + 0x20]
mov esi, dword [ebx + 0x4d8]
add eax, edx
lea esi, [esi + eax*8 + 4]
movsx eax, word [esi]
sub eax, ecx
add eax, edi
jns 0x58f25f
xor eax, eax
add dword [esp + 0x58], 0xc
mov word [esi], ax
movzx ecx, word [ebx + 0x462]
add edx, 1
and ecx, 0xfffffffc
cmp edx, ecx
mov dword [esp + 0x30], edx
jl 0x58f090
mov esi, dword [esp + 0x3c]
movzx edx, word [ebx + 0x460]
mov ecx, dword [esp + 0x20]
add ecx, 1
and edx, 0xfffffffc
cmp ecx, edx
mov dword [esp + 0x20], ecx
jl 0x58ed94
push esi
call fcn.0045da90
mov eax, dword [esp + 0xfc]
add esp, 4
push eax
call fcn.0045da90
add esp, 4
xor esi, esi
lea esp, [esp]
mov ecx, dword [esp + esi*4 + 0xbc]
push ecx
call fcn.0045da90
add esi, 1
add esp, 4
cmp esi, 8
jl 0x58f2c0
mov edx, dword [esp + 0x128]
sub edx, dword [esp + 0x154]
mov eax, dword [esp + 0x130]
mov ecx, dword [esp + 0x12c]
sub ecx, dword [esp + 0x124]
sub eax, 2
sub eax, edx
xor esi, esi
test eax, eax
mov dword [esp + 0x128], edx
mov dword [esp + 0x18], ecx
mov dword [esp + 0x2c], eax
jle 0x58f36f
xor edi, edi
jmp 0x58f320
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x128]
mov eax, dword [ebx + 0x4d8]
add ecx, ecx
add ecx, ecx
add ecx, ecx
push ecx
movzx ecx, word [ebx + 0x462]
add edx, esi
imul edx, ecx
add edx, dword [esp + 0x128]
lea edx, [eax + edx*8]
push edx
add eax, edi
push eax
call fcn.0060d1b0
mov eax, dword [esp + 0x24]
add eax, eax
add eax, eax
add eax, eax
add esi, 1
add esp, 0xc
add edi, eax
cmp esi, dword [esp + 0x2c]
jl 0x58f320
mov cx, word [esp + 0x18]
mov word [ebx + 0x462], cx
mov word [ebx + 0x460], si
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x3f0]
xor ecx, esp
call fcn.00607d6d
mov esp, ebp
pop ebp
ret
push 1
add ebx, 0x968ec
push ebx
call fcn.0061b7d8
fstp st(0)
mov ecx, dword [esp + 0x3fc]
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.00607d6d
mov esp, ebp
pop ebp
ret