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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
mov eax, 0x18914
call fcn.00628480
mov eax, dword [ebp + 8]
mov ecx, dword [0x87ff00]
and eax, 0xffff
imul eax, eax, 0x724
push ebx
push esi
push edi
mov edi, dword [ecx + 0x34]
mov ecx, dword [edi + eax + 0x34]
add edi, eax
or esi, 0xffffffff
cmp ecx, esi
mov dword [esp + 0x40], eax
mov eax, esi
mov dword [esp + 0x3c], edi
mov dword [esp + 0x30], eax
mov dword [esp + 0x44], 0
je 0x4136f1
mov edx, dword [edi + 0x58]
mov eax, dword [0x87b7b4]
and edx, 0xffff
shl edx, 5
mov ecx, dword [edx + eax + 0x14]
mov edx, dword [edi + 0x5c]
and edx, 0xffff
shl edx, 5
mov eax, dword [edx + eax + 0x14]
mov edx, dword [0x746eac]
mov ebx, dword [edx + 0x430]
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x34], eax
mov eax, dword [edi + 0x34]
mov ecx, eax
and ecx, 0xffff
imul ecx, ecx, 0xb0
add ecx, ebx
mov dword [esp + 0x14], ecx
xor ecx, ecx
lea ebx, [esp + 0x890]
mov dword [esp + 0x10], ecx
mov byte [esp + 0x27], cl
call fcn.004360d0
mov ax, word [edi + 0x3b8]
cmp ax, si
je 0x412c6d
movsx eax, ax
mov dword [esp + eax*4 + 0x890], esi
cmp word [edi + 0x15e], 0
jne 0x412c7f
fld dword [0x672c88]
jmp 0x412c85
fld dword [0x6731c0]
mov esi, dword [ebp + 0xc]
fld st(0)
fstp dword [esi + 0x18]
fld dword [0x672af8]
fld dword [esi + 0x1c]
fucompp
fnstsw ax
test ah, 0x44
jp 0x412ca4
fstp dword [esi + 0x1c]
jmp 0x412ca6
fstp st(0)
cmp word [esi + 4], 5
mov cl, byte [esi + 0x20]
sete al
test cl, cl
mov byte [esi + 0x42], al
mov byte [esi + 0x5fc], 0
je 0x412d9c
lea ecx, [esi + 0x24]
lea eax, [esi + 0x604]
mov edx, ecx
mov ebx, dword [edx]
mov edi, eax
mov dword [edi], ebx
mov ebx, dword [edx + 4]
mov edx, dword [edx + 8]
mov dword [edi + 4], ebx
mov dword [edi + 8], edx
mov edi, dword [ecx]
lea edx, [esi + 0x634]
mov dword [edx], edi
mov edi, dword [ecx + 4]
mov ecx, dword [ecx + 8]
mov dword [edx + 4], edi
mov edi, dword [esp + 0x3c]
mov dword [edx + 8], ecx
mov edx, dword [esi + 0x30]
mov cx, word [esi + 0x34]
mov word [esi + 0x640], cx
mov byte [esi + 0x5fc], 1
mov dword [esi + 0x630], edx
fld dword [eax]
fsub dword [edi + 0x12c]
push 0
fld dword [eax + 4]
push 0
fsub dword [edi + 0x130]
or ecx, 0xffffffff
fld dword [eax + 8]
push eax
fsub dword [edi + 0x134]
mov dword [esi + 0x644], ecx
mov dword [esi + 0x62c], ecx
mov dword [esi + 0x658], 0
fld st(0)
lea ebx, [esi + 0x610]
fmul st(1)
push 1
fld st(2)
mov eax, ebx
fmul st(3)
faddp st(1)
fld st(3)
fmul st(4)
faddp st(1)
fsqrt
fstp dword [esi + 0x600]
mov edx, dword [edi + 0x18]
push edx
fstp st(0)
fstp st(0)
fstp st(0)
call fcn.005695c0
mov ecx, dword [ebx]
mov edx, dword [ebx + 4]
lea eax, [esi + 0x61c]
mov dword [eax], ecx
mov ecx, dword [ebx + 8]
mov dword [eax + 4], edx
add esp, 0x14
mov dword [eax + 8], ecx
jmp 0x412f3d
cmp word [edi + 0x6c], 4
jne 0x412dae
mov ecx, dword [edi + 0xb8]
cmp ecx, 0xffffffff
jne 0x412dbd
mov ecx, dword [edi + 0x270]
cmp ecx, 0xffffffff
je 0x412f3d
cmp ecx, 0xffffffff
mov dword [esp + 0x28], ecx
je 0x412f3d
mov edx, dword [0x87fe60]
mov ebx, ecx
mov ecx, dword [edx + 0x34]
and ebx, 0xffff
imul ebx, ebx, 0x138
add ebx, ecx
test al, al
je 0x412e00
mov ax, word [ebx + 0x24]
cmp ax, 2
jl 0x412e00
cmp ax, 3
jg 0x412e00
mov eax, dword [esp + 0x28]
call fcn.0041f3a0
mov byte [esi + 0x5fc], 1
lea eax, [ebx + 0xbc]
mov edx, dword [eax]
lea ecx, [esi + 0x604]
mov dword [ecx], edx
mov edx, dword [eax + 4]
mov dword [ecx + 4], edx
mov eax, dword [eax + 8]
mov dword [ecx + 8], eax
lea ecx, [ebx + 0xf0]
mov eax, dword [ecx]
lea edx, [esi + 0x634]
mov dword [edx], eax
mov eax, dword [ecx + 4]
mov dword [edx + 4], eax
mov ecx, dword [ecx + 8]
mov dword [edx + 8], ecx
mov edx, dword [ebx + 0xec]
mov dword [esi + 0x630], edx
mov ax, word [ebx + 0x100]
mov edx, dword [esp + 0x28]
mov word [esi + 0x640], ax
mov ecx, dword [ebx + 0x11c]
mov dword [esi + 0x600], ecx
mov dword [esi + 0x644], edx
lea eax, [ebx + 0x104]
mov edx, dword [eax]
lea ecx, [esi + 0x610]
mov dword [ecx], edx
mov edx, dword [eax + 4]
mov dword [ecx + 4], edx
mov eax, dword [eax + 8]
mov dword [ecx + 8], eax
mov ecx, dword [ebx + 0x110]
mov al, byte [esi + 0x41]
test al, al
mov dword [esi + 0x62c], ecx
mov edx, dword [ebx + 0x20]
mov dword [esi + 0x658], edx
je 0x412ece
cmp dword [ebx + 0x8c], 0xffffffff
je 0x412ece
lea eax, [ebx + 0x90]
mov edx, dword [eax]
lea ecx, [esi + 0x61c]
mov dword [ecx], edx
mov edx, dword [eax + 4]
mov dword [ecx + 4], edx
mov eax, dword [eax + 8]
mov dword [ecx + 8], eax
jmp 0x412eee
mov edx, dword [ebx + 0x104]
lea ecx, [esi + 0x61c]
mov dword [ecx], edx
mov eax, dword [ebx + 0x108]
mov dword [ecx + 4], eax
mov edx, dword [ebx + 0x10c]
mov dword [ecx + 8], edx
mov ax, word [ebx + 0x24]
cmp ax, 4
jl 0x412f1e
cmp ax, 5
jg 0x412f1e
mov byte [esi + 0x648], 1
add ebx, 0x40
mov ecx, dword [ebx]
lea eax, [esi + 0x64c]
mov dword [eax], ecx
mov edx, dword [ebx + 4]
mov dword [eax + 4], edx
mov ecx, dword [ebx + 8]
mov dword [eax + 8], ecx
mov ax, word [esi + 4]
cmp ax, 4
je 0x412f32
cmp ax, 6
je 0x412f32
xor eax, eax
jmp 0x412f37
mov eax, 1
mov byte [esi + 0x628], al
mov ecx, dword [esp + 0x34]
fld dword [ecx + 0xac]
mov ebx, dword [esp + 0x2c]
fld dword [ecx + 0xa8]
fld dword [ecx + 0xa4]
fld st(0)
fmul st(1)
fld st(2)
fmul st(3)
faddp st(1)
fld st(3)
fmul st(4)
faddp st(1)
fcomp dword [0x672bf4]
fstp st(0)
fnstsw ax
fstp st(0)
test ah, 0x41
fstp st(0)
jne 0x412fa3
mov byte [esi + 0x5dc], 1
mov eax, dword [ecx + 0xa4]
lea edx, [esi + 0x5e0]
mov dword [edx], eax
mov eax, dword [ecx + 0xa8]
mov dword [edx + 4], eax
mov eax, dword [ecx + 0xac]
mov dword [edx + 8], eax
jmp 0x412ff6
fld dword [ebx + 0x3c]
fld dword [ebx + 0x38]
fld dword [ebx + 0x34]
fld st(0)
fmul st(1)
fld st(2)
fmul st(3)
faddp st(1)
fld st(3)
fmul st(4)
faddp st(1)
fcomp dword [0x672bf4]
fstp st(0)
fnstsw ax
fstp st(0)
test ah, 0x41
fstp st(0)
jne 0x412fef
mov byte [esi + 0x5dc], 1
mov eax, dword [ebx + 0x34]
lea edx, [esi + 0x5e0]
mov dword [edx], eax
mov eax, dword [ebx + 0x38]
mov dword [edx + 4], eax
mov eax, dword [ebx + 0x3c]
mov dword [edx + 8], eax
jmp 0x412ff6
mov byte [esi + 0x5dc], 0
fld dword [ecx + 0xb8]
add ecx, 0xb0
fld dword [ecx + 4]
fld dword [ecx]
fld st(0)
fmul st(1)
fld st(2)
fmul st(3)
faddp st(1)
fld st(3)
fmul st(4)
faddp st(1)
fcomp dword [0x672bf4]
fstp st(0)
fnstsw ax
fstp st(0)
test ah, 0x41
fstp st(0)
jne 0x413049
mov byte [esi + 0x5ec], 1
mov eax, dword [ecx]
lea edx, [esi + 0x5f0]
mov dword [edx], eax
mov eax, dword [ecx + 4]
mov dword [edx + 4], eax
mov ecx, dword [ecx + 8]
mov dword [edx + 8], ecx
jmp 0x41309c
fld dword [ebx + 0x48]
fld dword [ebx + 0x44]
fld dword [ebx + 0x40]
fld st(0)
fmul st(1)
fld st(2)
fmul st(3)
faddp st(1)
fld st(3)
fmul st(4)
faddp st(1)
fcomp dword [0x672bf4]
fstp st(0)
fnstsw ax
fstp st(0)
test ah, 0x41
fstp st(0)
jne 0x413095
mov byte [esi + 0x5ec], 1
mov eax, dword [ebx + 0x40]
lea edx, [esi + 0x5f0]
mov dword [edx], eax
mov ecx, dword [ebx + 0x44]
mov dword [edx + 4], ecx
mov eax, dword [ebx + 0x48]
mov dword [edx + 8], eax
jmp 0x41309c
mov byte [esi + 0x5ec], 0
cmp word [edi + 0x280], 0
jle 0x4130cd
mov al, byte [edi + 0x287]
test al, al
je 0x4130cd
fld dword [edi + 0x2d8]
fadd dword [0x672c74]
fcomp dword [edi + 0x2d4]
fnstsw ax
test ah, 0x41
jne 0x4130cd
mov byte [esi + 0x40], 1
mov cl, byte [edi + 0x99]
mov byte [esi + 0x44], cl
cmp word [edi + 0x15e], 4
jne 0x4130e8
mov byte [esi + 0x45], 1
mov byte [esi + 0x46], 1
mov dword [esi + 0x50], 0
mov al, byte [edi + 0x3d8]
test al, al
je 0x413125
lea edx, [edi + 0x3dc]
mov ecx, dword [edx]
lea eax, [esi + 0x58]
mov dword [eax], ecx
mov ecx, dword [edx + 4]
mov dword [eax + 4], ecx
mov edx, dword [edx + 8]
mov dword [eax + 8], edx
mov eax, dword [esi + 0x50]
mov ecx, dword [ebx + 0x3c8]
shl eax, 4
mov dword [eax + esi + 0x54], ecx
inc dword [esi + 0x50]
fld dword [ebx + 0x3cc]
fcomp dword [0x672af8]
fnstsw ax
test ah, 0x41
jne 0x413200
movsx eax, word [esi + 4]
test eax, eax
je 0x413152
cmp eax, 3
je 0x413152
cmp eax, 6
jne 0x413200
mov edx, dword [0x87ff00]
mov eax, dword [edx + 0x34]
mov ecx, dword [esp + 0x40]
mov edx, dword [eax + ecx + 0x50]
cmp dword [esi + 0x50], 0x20
jge 0x413200
lea ecx, [ecx]
cmp edx, 0xffffffff
je 0x413200
mov eax, edx
mov edx, dword [0x87fe60]
mov ecx, dword [edx + 0x34]
and eax, 0xffff
imul eax, eax, 0x138
mov edx, dword [eax + ecx + 8]
add eax, ecx
mov cx, word [eax + 0x24]
cmp cx, 2
jl 0x4131f6
cmp cx, 3
jg 0x4131f6
mov cl, byte [eax + 0x60]
test cl, cl
jne 0x4131f6
mov cl, byte [eax + 0x127]
test cl, cl
jne 0x4131f6
mov cl, byte [eax + 0x12e]
test cl, cl
jne 0x4131f6
mov ecx, dword [esi + 0x50]
add eax, 0xbc
mov ebx, dword [eax]
shl ecx, 4
lea ecx, [ecx + esi + 0x58]
mov dword [ecx], ebx
mov ebx, dword [eax + 4]
mov dword [ecx + 4], ebx
mov eax, dword [eax + 8]
mov ebx, dword [esp + 0x2c]
mov dword [ecx + 8], eax
mov ecx, dword [esi + 0x50]
mov eax, dword [ebx + 0x3cc]
shl ecx, 4
mov dword [ecx + esi + 0x54], eax
inc dword [esi + 0x50]
cmp dword [esi + 0x50], 0x20
jl 0x413170
xor eax, eax
mov word [esi + 0x254], ax
mov word [esi + 0x256], ax
mov word [esi + 0x258], ax
mov eax, dword [ebx]
xor cl, cl
test eax, eax
jns 0x413232
cmp word [edi + 0x6e], 3
jl 0x413232
mov al, byte [edi + 0x200]
test al, al
jle 0x413232
mov cl, 1
test byte [ebx + 4], 1
je 0x413241
cmp word [edi + 0x6e], 3
jl 0x413241
mov cl, 1
movsx eax, word [esi + 4]
cmp eax, 6
ja case.0x413255.1
movzx edx, byte [eax + 0x413e44]
jmp dword [edx*4 + 0x413e3c]
test cl, cl
je case.0x413255.1
mov eax, dword [0x87ff00]
mov ecx, dword [eax + 0x34]
mov edx, dword [esp + 0x40]
mov eax, dword [ecx + edx + 0x50]
mov dword [esp + 0x38], eax
jmp 0x413280
mov eax, dword [esp + 0x38]
mov edi, edi
cmp eax, 0xffffffff
je case.0x413255.1
mov ebx, dword [esp + 0x38]
mov ecx, dword [0x87fe60]
mov edx, dword [ecx + 0x34]
and ebx, 0xffff
imul ebx, ebx, 0x138
mov cx, word [ebx + edx + 0x24]
add ebx, edx
cmp cx, 2
mov edx, dword [ebx + 8]
mov dword [esp + 0x38], edx
jl 0x413424
cmp cx, 3
jg 0x413424
mov cl, byte [ebx + 0x127]
test cl, cl
jne 0x413424
mov cl, byte [ebx + 0x60]
test cl, cl
jne 0x413381
mov cl, byte [ebx + 0x12e]
test cl, cl
jne 0x4132f4
cmp dword [ebx + 0x110], 0xffffffff
jne 0x413381
lea ecx, [esp + 0x18]
push ecx
mov ecx, dword [ebp + 8]
call fcn.00420970
add esp, 4
test al, al
je 0x413381
mov al, byte [ebx + 0x12e]
xor edx, edx
test al, al
movsx eax, word [esi + 0x254]
setne dl
imul eax, eax, 0x1c
mov word [eax + esi + 0x25c], dx
movsx edx, word [esi + 0x254]
imul edx, edx, 0x1c
lea eax, [edx + esi + 0x260]
lea ecx, [ebx + 0xbc]
mov edx, dword [ecx]
mov dword [eax], edx
mov edx, dword [ecx + 4]
mov dword [eax + 4], edx
mov ecx, dword [ecx + 8]
mov dword [eax + 8], ecx
movsx edx, word [esi + 0x254]
mov ecx, dword [esp + 0x18]
imul edx, edx, 0x1c
lea eax, [edx + esi + 0x26c]
mov edx, dword [esp + 0x1c]
mov dword [eax], ecx
mov ecx, dword [esp + 0x20]
mov dword [eax + 4], edx
mov dword [eax + 8], ecx
inc word [esi + 0x254]
inc word [esi + 0x256]
mov al, byte [ebx + 0x60]
test al, al
je 0x413424
mov edx, dword [esp + 0x2c]
mov al, byte [edx + 4]
mov cl, byte [ebx + 0xa4]
and al, 1
test cl, cl
je 0x4133b3
mov cl, byte [ebx + 0x12e]
test cl, cl
jne 0x4133b7
mov cl, byte [ebx + 0x12f]
test cl, cl
jne 0x4133b7
test al, al
je 0x413424
mov ecx, dword [ebx + 0x110]
cmp ecx, 0xffffffff
jne 0x4133c5
mov ecx, dword [ebx + 0x18]
movsx eax, word [esi + 0x254]
imul eax, eax, 0x1c
mov word [eax + esi + 0x25c], 2
movsx edx, word [esi + 0x254]
imul edx, edx, 0x1c
lea eax, [edx + esi + 0x260]
add ebx, 0xbc
mov edx, dword [ebx]
mov dword [eax], edx
mov edx, dword [ebx + 4]
mov dword [eax + 4], edx
mov edx, dword [ebx + 8]
mov dword [eax + 8], edx
movsx eax, word [esi + 0x254]
imul eax, eax, 0x1c
lea eax, [eax + esi + 0x26c]
call fcn.00569b20
inc word [esi + 0x254]
inc word [esi + 0x258]
cmp word [esi + 0x254], 0x20
jl 0x41327a
mov ecx, dword [ebp + 0x1c]
mov edx, dword [esp + 0x14]
mov byte [ecx], 0
mov ecx, dword [edx + 0x98]
xor eax, eax
cmp ecx, eax
mov byte [esp + 0x26], 0
mov dword [esp + 0x28], eax
jle 0x4136a7
mov dword [esp + 0x34], eax
lea esp, [esp]
mov ecx, dword [esp + 0x14]
mov eax, dword [esp + 0x34]
mov edx, dword [ecx + 0x9c]
lea eax, [eax + eax*2]
mov cl, byte [edx + eax*8 + 0xc]
lea ebx, [edx + eax*8]
mov eax, 1
shl eax, cl
test dword [esi], eax
je 0x41367d
mov al, byte [esi + 0x44]
test al, al
jne 0x413498
cmp dword [ebx + 0x14], 0xffffffff
je 0x41367d
cmp word [esi + 4], 5
jne 0x4134b9
mov ecx, dword [ebx + 0x14]
mov edx, dword [ebp + 8]
push 1
push ecx
push ebx
call fcn.00412960
add esp, 0xc
test al, al
je 0x41367d
mov edx, dword [esp + 0x34]
mov eax, dword [esp + edx*4 + 0x890]
cmp eax, 0xffffffff
je 0x4135b0
cmp word [esi + 4], 4
jne 0x41350a
mov ecx, dword [esi + 0x50]
cmp ecx, 0x20
jge 0x41350a
shl ecx, 4
lea ecx, [ecx + esi + 0x58]
mov edx, ebx
mov edi, dword [edx]
mov dword [ecx], edi
mov edi, dword [edx + 4]
mov dword [ecx + 4], edi
mov edx, dword [edx + 8]
mov edi, dword [esp + 0x3c]
mov dword [ecx + 8], edx
mov ecx, dword [esi + 0x50]
shl ecx, 4
mov dword [ecx + esi + 0x54], 0x40800000
inc dword [esi + 0x50]
mov edx, dword [0x87ff00]
fld dword [ebx]
mov ecx, dword [edx + 0x34]
and eax, 0xffff
imul eax, eax, 0x724
fsub dword [eax + ecx + 0x12c]
fld dword [ebx + 4]
fsub dword [eax + ecx + 0x130]
fld dword [ebx + 8]
fsub dword [eax + ecx + 0x134]
fld st(0)
lea eax, [eax + ecx + 0x12c]
fmul st(1)
fld st(2)
fmul st(3)
faddp st(1)
fld st(3)
fmul st(4)
faddp st(1)
fsqrt
fstp st(3)
fstp st(0)
fstp st(0)
fld dword [ebx]
fsub dword [edi + 0x12c]
fld dword [ebx + 4]
fsub dword [edi + 0x130]
fld dword [ebx + 8]
fsub dword [edi + 0x134]
fld st(3)
fcomp dword [0x672afc]
fnstsw ax
test ah, 5
jnp 0x413675
fld st(0)
fmul st(1)
fld st(2)
fmul st(3)
faddp st(1)
fld st(3)
fmul st(4)
faddp st(1)
fsqrt
fstp st(3)
fstp st(0)
fstp st(0)
fadd st(0), st(0)
fxch st(1)
fcompp
fnstsw ax
test ah, 5
jnp 0x41367d
mov eax, dword [esp + 0x10]
cmp ax, 0x200
jge 0x413666
mov dx, word [esp + 0x28]
movsx eax, ax
imul eax, eax, 0x3c
mov word [esp + eax + 0x1094], dx
mov edx, dword [0x696714]
mov dword [esp + eax + 0x1090], ebx
mov word [esp + eax + 0x1096], 0
mov dword [esp + eax + 0x1098], 0x7f7fffff
mov ebx, dword [edx]
lea ecx, [esp + eax + 0x109c]
mov dword [ecx], ebx
mov ebx, dword [edx + 4]
mov dword [ecx + 4], ebx
mov edx, dword [edx + 8]
mov dword [ecx + 8], edx
mov edx, dword [0x696714]
mov ecx, 0x7f7fffff
mov dword [esp + eax + 0x10a8], ecx
mov dword [esp + eax + 0x10ac], ecx
mov ebx, dword [edx]
lea ecx, [esp + eax + 0x10b0]
mov dword [ecx], ebx
mov ebx, dword [edx + 4]
mov dword [ecx + 4], ebx
mov edx, dword [edx + 8]
mov dword [ecx + 8], edx
xor ecx, ecx
mov dword [esp + eax + 0x10bc], ecx
mov dword [esp + eax + 0x10c4], ecx
mov dword [esp + eax + 0x10c8], ecx
mov byte [esp + eax + 0x10c0], 1
mov byte [esp + eax + 0x10c1], cl
inc dword [esp + 0x10]
jmp 0x41367d
mov al, byte [esp + 0x26]
test al, al
jne 0x41367d
mov byte [esp + 0x26], 1
jmp 0x41367d
fstp st(0)
fstp st(0)
fstp st(0)
fstp st(0)
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x14]
mov edx, dword [ecx + 0x98]
inc eax
mov dword [esp + 0x28], eax
movsx eax, ax
cmp eax, edx
mov dword [esp + 0x34], eax
jl 0x413460
cmp word [esp + 0x10], 0
jne 0x4136f8
mov edx, dword [0x87ff00]
mov eax, dword [edx + 0x34]
add eax, dword [esp + 0x40]
mov word [eax + 0x3c6], 0
lea ecx, [eax + 0x3ca]
mov edx, 4
jmp 0x4136d0
mov word [ecx], 0xffff
add ecx, 4
dec edx
jne 0x4136d0
mov cl, byte [eax + 0x3d8]
test cl, cl
je 0x4136ec
mov byte [eax + 0x3d8], 0
mov ax, word [esp + 0x30]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov al, byte [esi + 0x5fc]
test al, al
je 0x4138ed
mov al, byte [esi + 0x42]
test al, al
je 0x4138ed
mov al, byte [esi + 0x44]
test al, al
je 0x4137e7
cmp word [esp + 0x10], 0
jle 0x4138ed
movzx eax, word [esp + 0x10]
lea edi, [esi + 0x604]
lea ebx, [esp + 0x1090]
mov dword [esp + 0x14], eax
mov edi, edi
mov ecx, dword [ebx]
fld dword [ecx]
fsub dword [edi]
fstp dword [esp + 0x18]
fld dword [ecx + 4]
fsub dword [edi + 4]
fstp dword [esp + 0x1c]
fld dword [ecx + 8]
fsub dword [edi + 8]
fstp dword [esp + 0x20]
fld dword [esp + 0x18]
fmul dword [esp + 0x18]
fld dword [esp + 0x20]
fmul dword [esp + 0x20]
faddp st(1)
fld dword [esp + 0x1c]
fmul dword [esp + 0x1c]
faddp st(1)
fcomp dword [0x673180]
fnstsw ax
test ah, 5
jp 0x4137d0
mov edx, dword [0x746ebc]
push 0
mov eax, ecx
push edx
xor esi, esi
mov ecx, edi
call fcn.0043a0a0
add esp, 8
test al, al
je 0x4137cd
lea ecx, [esp + 0x18]
call fcn.00401990
fstp dword [ebx + 0x18]
mov eax, dword [ebp + 0xc]
mov cl, byte [eax + 0x43]
test cl, cl
je 0x4137cd
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0x20]
mov dword [ebx + 0x20], ecx
mov dword [ebx + 0x24], edx
mov dword [ebx + 0x28], eax
mov esi, dword [ebp + 0xc]
mov eax, dword [esp + 0x14]
add ebx, 0x3c
dec eax
mov dword [esp + 0x14], eax
jne 0x413740
jmp 0x4138ed
mov edx, dword [esi + 0x630]
cmp edx, 0xffffffff
je 0x4138ed
xor eax, eax
mov ecx, 0x12
lea edi, [esp + 0x48]
rep stosd dword es:[edi], eax
mov ecx, dword [esp + 0x2c]
mov eax, dword [ecx + 0x8c]
mov ecx, dword [esp + 0x3c]
mov dword [esp + 0x48], eax
mov al, byte [ecx + 0x376]
mov byte [esp + 0x4c], al
add esi, 0x634
mov ecx, dword [esi]
mov eax, 0xffffffff
mov dword [esp + 0x50], eax
mov dword [esp + 0x54], eax
mov eax, dword [esi + 4]
mov dword [esp + 0x5c], ecx
mov ecx, dword [esi + 8]
mov dword [esp + 0x64], ecx
mov dword [esp + 0x60], eax
xor eax, eax
mov dword [esp + 0x68], edx
mov edx, dword [0x746ebc]
mov ecx, 0x4023
lea edi, [esp + 0x8890]
rep stosd dword es:[edi], eax
mov dword [esp + 0x88f4], edx
mov ecx, 0x12
lea esi, [esp + 0x48]
lea edi, [esp + 0x8890]
mov byte [esp + 0x58], 1
mov byte [esp + 0x88], 1
mov dword [esp + 0x8c], 0x41a00000
rep movsd dword es:[edi], dword [esi]
mov dword [esp + 0x88d8], eax
lea eax, [esp + 0x8890]
call fcn.0043a8b0
mov eax, dword [esp + 0x10]
test ax, ax
jle 0x4138ea
lea esi, [esp + 0x1090]
movzx ebx, ax
mov eax, dword [ebp + 0xc]
mov cl, byte [eax + 0x43]
test cl, cl
je 0x4138c6
lea ecx, [esi + 0x20]
jmp 0x4138c8
xor ecx, ecx
mov eax, dword [esi]
push ecx
push 0
lea ecx, [esi + 0x18]
push ecx
push eax
mov eax, dword [eax + 0x14]
lea edi, [esp + 0x88a0]
call fcn.0043a310
add esp, 0x10
add esi, 0x3c
dec ebx
jne 0x4138b7
mov esi, dword [ebp + 0xc]
mov al, byte [esi + 0x44]
test al, al
jne 0x413a17
mov eax, dword [ebp + 8]
lea ebx, [esp + 0x48]
call fcn.0041a9c0
mov al, byte [esi + 0x36]
test al, al
mov edx, dword [esi + 0x1c]
mov bl, 1
mov byte [esp + 0x88], bl
mov dword [esp + 0x8c], edx
je 0x413982
mov al, byte [esi + 0x5fc]
test al, al
je 0x413982
mov eax, dword [esi + 0x644]
or ecx, 0xffffffff
cmp eax, 0xffffffff
je 0x41394e
mov ecx, dword [0x87fe60]
mov edx, dword [ecx + 0x34]
and eax, 0xffff
imul eax, eax, 0x138
mov ecx, dword [eax + edx + 0x18]
lea eax, [esi + 0x604]
mov edx, dword [eax]
mov dword [esp + 0x70], edx
mov edx, dword [eax + 4]
mov eax, dword [eax + 8]
mov dword [esp + 0x74], edx
mov edx, dword [esi + 0x3c]
mov dword [esp + 0x78], eax
mov eax, dword [esi + 0x38]
mov dword [esp + 0x80], edx
mov dword [esp + 0x7c], ecx
mov dword [esp + 0x84], eax
jmp 0x4139d6
mov eax, dword [esp + 0x3c]
cmp word [eax + 0x280], 0
jle 0x4139da
mov ecx, dword [esp + 0x2c]
test byte [ecx + 4], 0x10
jne 0x4139da
lea edx, [eax + 0x2b0]
mov ecx, dword [edx]
mov dword [esp + 0x70], ecx
mov ecx, dword [edx + 4]
mov edx, dword [edx + 8]
mov dword [esp + 0x74], ecx
mov ecx, dword [eax + 0x294]
mov dword [esp + 0x78], edx
mov edx, dword [eax + 0x28c]
mov dword [esp + 0x80], ecx
mov dword [esp + 0x7c], edx
mov dword [esp + 0x84], 0x41200000
mov byte [esp + 0x6c], bl
mov edx, dword [ebp + 0x18]
xor eax, eax
mov edi, edx
mov ecx, 0x4023
rep stosd dword es:[edi], eax
mov eax, dword [0x746ebc]
mov dword [edx + 0x64], eax
mov edi, edx
mov ecx, 0x12
lea esi, [esp + 0x48]
mov eax, edx
rep movsd dword es:[edi], dword [esi]
mov dword [edx + 0x48], 0
call fcn.0043a8b0
test al, al
mov esi, dword [ebp + 0xc]
je 0x413a17
mov ecx, dword [ebp + 0x1c]
mov byte [ecx], bl
cmp word [esp + 0x10], 0
jle 0x413bb5
mov edi, dword [esp + 0x3c]
movzx edx, word [esp + 0x10]
add edi, 0x12c
mov dword [esp + 0x28], edi
lea ebx, [esp + 0x109c]
mov dword [esp + 0x14], edx
mov al, byte [esi + 0x5fc]
test al, al
je 0x413a81
mov eax, dword [ebx - 0xc]
fld dword [eax]
fsub dword [esi + 0x604]
fld dword [eax + 4]
fsub dword [esi + 0x608]
fld dword [eax + 8]
fsub dword [esi + 0x60c]
fld st(2)
fmul st(3)
fld st(1)
fmul st(2)
faddp st(1)
fld st(2)
fmul st(3)
faddp st(1)
fstp dword [ebx + 0x20]
fstp st(0)
fstp st(0)
fstp st(0)
mov ecx, dword [ebx - 0xc]
fld dword [ecx]
fsub dword [edi]
fstp dword [esp + 0x18]
fld dword [ecx + 4]
fsub dword [edi + 4]
fstp dword [esp + 0x1c]
fld dword [ecx + 8]
fsub dword [edi + 8]
fstp dword [esp + 0x20]
fld dword [esp + 0x18]
fmul dword [esp + 0x18]
fld dword [esp + 0x20]
fmul dword [esp + 0x20]
faddp st(1)
fld dword [esp + 0x1c]
fmul dword [esp + 0x1c]
faddp st(1)
fst dword [esp + 0x34]
fld dword [esi + 0x1c]
fld st(0)
fmul st(1)
fxch st(1)
fxch st(2)
fcompp
fnstsw ax
fstp st(0)
test ah, 5
jp 0x413b8b
mov al, byte [esi + 0x44]
test al, al
je 0x413b66
lea edx, [esi + 0x604]
lea ecx, [esp + 0x18]
mov eax, edi
call fcn.004cde70
fsqrt
fstp dword [ebx + 0x10]
fld dword [esp + 0x34]
fsqrt
fld st(0)
fabs
fcomp qword [0x672c10]
fnstsw ax
test ah, 5
jnp 0x413b3c
fld dword [0x672afc]
fdiv st(1)
fld dword [esp + 0x18]
fmul st(1)
fstp dword [esp + 0x18]
fld dword [esp + 0x1c]
fmul st(1)
fstp dword [esp + 0x1c]
fld dword [esp + 0x20]
fmul st(1)
fstp dword [esp + 0x20]
fstp st(0)
jmp 0x413b44
fstp st(0)
fld dword [0x672af8]
mov al, byte [esi + 0x40]
fstp dword [ebx - 4]
test al, al
je 0x413b8b
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x1c]
mov eax, ebx
mov dword [eax], ecx
mov ecx, dword [esp + 0x20]
mov dword [eax + 4], edx
mov dword [eax + 8], ecx
jmp 0x413b8b
mov al, byte [esi + 0x40]
mov edi, dword [ebp + 0x18]
neg al
lea edx, [ebx + 0x10]
sbb eax, eax
and eax, ebx
push eax
push edx
lea eax, [ebx - 4]
push eax
mov eax, dword [ecx + 0x14]
push ecx
call fcn.0043a310
mov edi, dword [esp + 0x38]
add esp, 0x10
fld dword [ebx - 4]
fcomp dword [esi + 0x1c]
fnstsw ax
test ah, 5
jp 0x413b9f
mov byte [esp + 0x27], 1
jmp 0x413ba3
mov byte [ebx + 0x24], 0
mov eax, dword [esp + 0x14]
add ebx, 0x3c
dec eax
mov dword [esp + 0x14], eax
jne 0x413a41
mov al, byte [esi + 0x15]
test al, al
je 0x413caf
mov al, byte [esp + 0x27]
test al, al
jne 0x413caf
mov ecx, dword [0x719bf8]
movsx edx, word [esp + 0x10]
imul ecx, ecx, 0x19660d
add ecx, 0x3c6ef35f
mov eax, ecx
shr eax, 0x10
imul eax, edx
mov edx, dword [0x87ff00]
mov dword [0x719bf8], ecx
mov ecx, dword [ebp + 0x1c]
mov byte [ecx], 0
mov ecx, dword [edx + 0x34]
mov edx, dword [esp + 0x40]
shr eax, 0x10
add ecx, edx
mov dword [esp + 0x30], eax
mov word [ecx + 0x3c6], 0
lea edx, [ecx + 0x3ca]
mov edi, 4
mov word [edx], 0xffff
add edx, 4
dec edi
jne 0x413c21
mov dl, byte [ecx + 0x3d8]
test dl, dl
je 0x413c3d
mov byte [ecx + 0x3d8], 0
movsx ebx, ax
imul ebx, ebx, 0x3c
lea ebx, [esp + ebx + 0x1090]
xor eax, eax
mov dword [ebx + 0x38], eax
mov dword [ebx + 0x34], eax
mov byte [ebx + 0x31], al
mov eax, dword [ebp + 8]
push 1
push eax
mov edi, esi
mov byte [ebx + 0x30], 1
call fcn.004126f0
mov al, byte [ebx + 0x30]
add esp, 8
test al, al
je 0x413ca3
mov al, byte [esi + 0x5fc]
test al, al
je 0x413c84
mov eax, dword [ebp + 8]
mov ecx, esi
call fcn.004120f0
mov edx, dword [ebp + 8]
mov ecx, dword [ebx + 0x38]
push edx
mov edi, esi
mov dword [ebx + 0x34], ecx
call fcn.00412730
add esp, 4
test al, al
mov byte [ebx + 0x30], al
jne 0x413de4
mov eax, 0xffffffff
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [esp + 0x10]
mov ecx, dword [ebp + 8]
push eax
push ecx
lea ebx, [esp + 0x1098]
mov edi, esi
call fcn.004126f0
add esp, 8
cmp word [esp + 0x10], 0
jle 0x413ce9
movzx edx, word [esp + 0x10]
xor eax, eax
lea ecx, [esp + 0x90]
nop
mov dword [ecx], eax
inc eax
add ecx, 4
dec edx
jne 0x413ce0
mov eax, dword [esp + 0x10]
mov word [0x6f0bb8], ax
lea edx, [esp + 0x1090]
movsx eax, ax
push 0x4127b0
lea ecx, [esp + 0x94]
mov dword [0x6f0bbc], edx
call fcn.00449700
mov ebx, dword [ebp + 8]
add esp, 4
mov edi, esi
call fcn.00412770
cmp word [esp + 0x10], 0
mov byte [esi + 0x65c], al
mov dword [esp + 0x14], 0
jle 0x4136ec
jmp 0x413d40
movsx eax, word [esp + 0x14]
movsx eax, word [esp + eax*4 + 0x90]
movsx ebx, ax
imul ebx, ebx, 0x3c
lea ebx, [esp + ebx + 0x1090]
mov dword [esp + 0x34], eax
mov al, byte [ebx + 0x30]
test al, al
je 0x413de4
mov al, byte [esi + 0x65c]
test al, al
je 0x413d87
fld dword [ebx + 0x38]
fadd dword [esi + 0x660]
fcomp dword [esp + 0x44]
fnstsw ax
test ah, 0x41
jnp 0x413de4
mov al, byte [esi + 0x5fc]
test al, al
je 0x413d9b
mov eax, dword [ebp + 8]
mov ecx, esi
call fcn.004120f0
mov edx, dword [ebp + 8]
mov ecx, dword [ebx + 0x38]
push edx
mov edi, esi
mov dword [ebx + 0x34], ecx
call fcn.00412730
add esp, 4
test al, al
je 0x413dd0
fld dword [ebx + 0x38]
fcomp dword [esp + 0x44]
fnstsw ax
test ah, 0x41
jne 0x413dd0
mov eax, dword [esp + 0x34]
mov ecx, dword [ebx + 0x38]
mov dword [esp + 0x30], eax
mov dword [esp + 0x44], ecx
mov eax, dword [esp + 0x14]
inc eax
cmp ax, word [esp + 0x10]
mov dword [esp + 0x14], eax
jl 0x413d40
mov eax, dword [esp + 0x30]
cmp ax, 0xffff
je 0x4136f1
mov edi, dword [ebp + 0x10]
test edi, edi
je 0x413e0d
movsx esi, ax
imul esi, esi, 0x3c
lea esi, [esp + esi + 0x1090]
mov ecx, 0xf
rep movsd dword es:[edi], dword [esi]
movsx edx, word [esp + 0x30]
mov ecx, dword [ebp + 0x14]
imul edx, edx, 0x3c
test ecx, ecx
mov ax, word [esp + edx + 0x1094]
je 0x4136f1
movsx edx, ax
mov edx, dword [esp + edx*4 + 0x890]
pop edi
pop esi
mov dword [ecx], edx
pop ebx
mov esp, ebp
pop ebp
ret