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

Disassembly:
sub esp, 0xec
mov ecx, dword [0x87fe74]
mov edx, dword [ecx + 0x34]
and eax, 0xffff
imul eax, eax, 0x64
add eax, edx
mov edx, dword [0x746eac]
push ebx
mov ebx, eax
mov eax, dword [edx + 0x46c]
push ebp
movsx ebp, word [ebx + 2]
imul ebp, ebp, 0x74
add ebp, eax
movsx eax, word [esp + 0xf8]
push esi
mov esi, eax
imul esi, esi, 0x54
push edi
mov edi, dword [ebp + 0x54]
mov ax, word [esi + edi + 4]
add esi, edi
or ecx, 0xffffffff
cmp ax, 1
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x1c], ebp
mov dword [esp + 0x24], esi
mov dword [esp + 0x28], ecx
mov dword [esp + 0x50], ecx
mov dword [esp + 0x38], 0x7f7fffff
mov byte [esp + 0x15], 0
mov byte [esp + 0x13], 0
jne 0x43170b
mov dword [esp + 0x28], 0
mov byte [esp + 0x13], al
jmp 0x431c43
cmp ax, 6
mov byte [esp + 0x14], 0
mov byte [esp + 0x17], 0
mov byte [esp + 0x16], 0
mov dword [esp + 0x30], ecx
mov dword [esp + 0x3c], 0
je 0x431732
cmp ax, 7
jne 0x431737
mov byte [esp + 0x14], 1
mov edx, dword [ebp + 0x50]
xor edi, edi
xor ecx, ecx
test edx, edx
mov dword [esp + 0x34], edi
jle 0x4317a6
xor eax, eax
jmp 0x431750
mov eax, dword [ebx + eax*4 + 0x28]
cmp eax, 0xffffffff
je 0x43179e
mov ebx, dword [0x87ff00]
mov ebx, dword [ebx + 0x34]
and eax, 0xffff
imul eax, eax, 0x724
lea ebx, [eax + ebx + 0x12c]
movsx eax, di
mov edi, dword [ebx]
lea eax, [eax + eax*2]
lea eax, [esp + eax*4 + 0x9c]
mov dword [eax], edi
mov edi, dword [ebx + 4]
mov dword [eax + 4], edi
mov edi, dword [ebx + 8]
mov ebx, dword [esp + 0x2c]
mov dword [eax + 8], edi
mov edi, dword [esp + 0x34]
inc edi
mov dword [esp + 0x34], edi
inc ecx
movsx eax, cx
cmp eax, edx
jl 0x431750
mov ax, word [esi + 8]
test di, di
sete byte [esp + 0x44]
or ecx, 0xffffffff
cmp ax, cx
je 0x4317e9
test ax, ax
jl 0x4317dc
cmp ax, 0x200
jge 0x4317dc
mov edx, dword [0x6b8be0]
movsx ecx, ax
mov eax, dword [edx + ecx*4]
mov dword [esp + 0x30], eax
mov byte [esp + 0x17], 1
jmp 0x431850
mov eax, ecx
mov dword [esp + 0x30], eax
mov byte [esp + 0x17], 1
jmp 0x431850
mov eax, dword [esi + 0x44]
cmp eax, ecx
je 0x431807
push eax
lea ecx, [esp + 0x88]
call fcn.00432650
add esp, 4
mov byte [esp + 0x16], 1
jmp 0x431850
mov eax, dword [0x87fef4]
mov dl, byte [eax + 1]
test dl, dl
je 0x431850
mov eax, dword [0x87fe68]
mov dword [esp + 0x5c], eax
xor eax, 0x69746572
mov word [esp + 0x60], 0
mov dword [esp + 0x64], ecx
mov dword [esp + 0x68], eax
mov byte [esp + 0x6c], 0
mov dword [esp + 0x74], ecx
mov dword [esp + 0x70], ecx
mov byte [esp + 0x6d], 1
jmp 0x431850
mov ebp, dword [esp + 0x1c]
fstp st(0)
lea ebx, [ebx]
mov al, byte [esp + 0x17]
test al, al
mov dword [esp + 0x58], 0
mov dword [esp + 0x48], 0x7f7fffff
mov dword [esp + 0x40], 0
je 0x431911
mov ecx, dword [esp + 0x30]
xor esi, esi
cmp ecx, 0xffffffff
je 0x4318b9
mov edx, ecx
sar edx, 0x10
test cx, cx
jl 0x4318b9
mov edi, dword [0x85ff50]
cmp cx, word [edi + 0x20]
jge 0x4318b9
movsx eax, word [edi + 0x22]
mov ebx, dword [edi + 0x34]
movsx ecx, cx
imul eax, ecx
mov cx, word [eax + ebx]
add eax, ebx
test cx, cx
je 0x4318b9
test dx, dx
je 0x4318b7
cmp cx, dx
jne 0x4318b9
mov esi, eax
xor eax, eax
test esi, esi
je 0x4318d1
mov cl, byte [esi + 3]
mov edx, 1
shl edx, cl
test dl, 3
je 0x4318d1
mov eax, dword [esi + 8]
or edi, 0xffffffff
xor esi, esi
test eax, eax
mov dword [esp + 0x18], edi
je 0x431907
mov eax, dword [eax + 0x1f4]
cmp eax, 0xffffffff
je 0x431907
mov edi, eax
mov eax, dword [0x87ff00]
mov ecx, dword [eax + 0x34]
mov esi, edi
and esi, 0xffff
imul esi, esi, 0x724
mov dword [esp + 0x18], edi
add esi, ecx
mov dword [esp + 0x30], 0xffffffff
jmp 0x431941
mov al, byte [esp + 0x16]
test al, al
je 0x43192e
lea edx, [esp + 0x84]
call fcn.004326d0
mov edi, dword [esp + 0x94]
jmp 0x43193b
lea eax, [esp + 0x5c]
call fcn.00436a70
mov edi, dword [esp + 0x70]
mov esi, eax
mov dword [esp + 0x18], edi
test esi, esi
je 0x431c3b
mov ebx, dword [esi + 0x18]
cmp ebx, 0xffffffff
je 0x431850
mov cx, word [esi + 4]
mov edx, dword [esp + 0x24]
cmp cx, word [edx + 6]
jne 0x431850
mov edx, dword [ebp + 0x50]
xor ecx, ecx
test edx, edx
jle 0x431988
mov ebp, dword [esp + 0x2c]
xor eax, eax
cmp edi, dword [ebp + eax*4 + 0x28]
je 0x431984
inc ecx
movsx eax, cx
cmp eax, edx
jl 0x431976
mov ebp, dword [esp + 0x1c]
movsx eax, cx
cmp eax, edx
jl 0x431850
mov eax, dword [esp + 0x44]
lea ecx, [esp + 0x48]
push ecx
lea edx, [esp + 0x58]
push edx
push eax
call fcn.004303f0
fstp dword [esp + 0x58]
mov eax, dword [esp + 0x60]
add esp, 0xc
cmp eax, 0xffffffff
jne 0x4319c9
mov al, byte [esp + 0x14]
test al, al
jne 0x4319e8
mov byte [esp + 0x15], 1
jmp 0x431850
mov edx, dword [0x85ff50]
fld dword [esp + 0x4c]
and eax, 0xffff
lea ecx, [eax + eax*2]
mov eax, dword [edx + 0x34]
mov ecx, dword [eax + ecx*4 + 8]
mov dword [esp + 0x40], ecx
jmp 0x4319f0
fld dword [esp + 0x58]
mov ecx, dword [esp + 0x40]
mov edx, dword [esp + 0x24]
movsx eax, word [edx + 4]
cmp eax, 7
ja case.0x4319fd.1
jmp dword [eax*4 + 0x431ce8]
test ecx, ecx
je case.0x4319fd.1
mov cx, word [ecx + 0xb8]
mov dx, word [esi + 0x3e]
call fcn.0045beb0
test al, al
je case.0x4319fd.1
jmp 0x431848
test ecx, ecx
je 0x431848
mov eax, dword [ecx + 0x11c]
cmp eax, 0xffffffff
je 0x431848
cmp dword [esi + 0x158], eax
jne 0x431848
mov al, byte [esi + 0x161]
test al, al
je case.0x4319fd.1
fadd dword [0x672afc]
jmp case.0x4319fd.1
cmp dword [esi + 0x158], 0xffffffff
je case.0x4319fd.1
jmp 0x431848
mov al, byte [esi + 0x1c]
test al, al
je case.0x4319fd.1
fadd dword [0x672cdc]
mov al, byte [esp + 0x44]
test al, al
je 0x431aae
mov al, byte [esp + 0x14]
test al, al
jne 0x431aae
fld dword [esp + 0x4c]
fcomp dword [0x672c1c]
fnstsw ax
test ah, 5
jp 0x431aae
fld dword [0x672af8]
fld dword [ebp + 0x28]
fucompp
fnstsw ax
test ah, 0x44
jp 0x431aae
mov byte [esp + 0x15], 1
jmp 0x431848
mov eax, dword [esp + 0x34]
test ax, ax
jle 0x431b46
mov dword [esp + 0x20], 0x7f7fffff
lea ecx, [esp + 0xa4]
movzx edx, ax
lea ecx, [ecx]
fld dword [ecx - 8]
fsub dword [esi + 0x12c]
fld dword [ecx - 4]
fsub dword [esi + 0x130]
fld dword [ecx]
fsub dword [esi + 0x134]
fld st(0)
fmul st(1)
fld st(2)
fmul st(3)
faddp st(1)
fld st(3)
fmul st(4)
faddp st(1)
fstp st(3)
fstp st(0)
fstp st(0)
fld dword [esp + 0x20]
fcomp st(1)
fnstsw ax
test ah, 0x41
jne 0x431b13
fstp dword [esp + 0x20]
jmp 0x431b15
fstp st(0)
add ecx, 0xc
dec edx
jne 0x431ad0
fld dword [esp + 0x20]
fcomp dword [0x67319c]
fnstsw ax
test ah, 5
jp 0x431b46
fld dword [esp + 0x20]
fsqrt
fsub dword [0x672cdc]
fmul dword [0x672b94]
fsubr dword [0x672afc]
faddp st(1)
mov eax, dword [esi + 0x18]
mov ecx, dword [0x85ff50]
mov edx, dword [ecx + 0x34]
mov ebp, dword [esp + 0x24]
and eax, 0xffff
lea eax, [eax + eax*2]
mov eax, dword [edx + eax*4 + 8]
mov di, word [eax + 0xbe]
xor edx, edx
or esi, 0xffffffff
xor bl, bl
xor eax, eax
movsx ecx, ax
mov cx, word [ebp + ecx*2 + 0x18]
cmp cx, 0xffff
je 0x431ba5
cmp cx, di
je 0x431bba
test cx, cx
jne 0x431b90
mov esi, eax
mov bl, 1
jmp 0x431ba5
cmp di, 0x64
jge 0x431ba5
cmp cx, 0x64
jge 0x431ba5
movsx ecx, dx
mov word [esp + ecx*2 + 0x78], ax
inc edx
inc eax
cmp ax, 6
jl 0x431b72
test bl, bl
je 0x431bc6
fadd dword [0x672cc8]
mov ecx, esi
jmp 0x431c06
fadd dword [0x672cc8]
mov esi, eax
mov ecx, esi
jmp 0x431c06
test dx, dx
jle 0x431844
cmp dx, 1
jne 0x431bdb
mov ecx, dword [esp + 0x78]
jmp 0x431c06
mov eax, dword [0x719bf8]
imul eax, eax, 0x19660d
add eax, 0x3c6ef35f
movsx ecx, dx
mov edx, eax
shr edx, 0x10
imul ecx, edx
shr ecx, 0x10
mov dword [0x719bf8], eax
movsx eax, cx
mov cx, word [esp + eax*2 + 0x78]
fcom dword [esp + 0x3c]
fnstsw ax
test ah, 0x41
jne 0x431844
mov edx, dword [esp + 0x18]
fstp dword [esp + 0x3c]
mov eax, dword [esp + 0x48]
mov ebp, dword [esp + 0x1c]
mov dword [esp + 0x50], edx
mov dword [esp + 0x38], eax
mov dword [esp + 0x28], ecx
mov byte [esp + 0x13], 1
jmp 0x431850
mov al, byte [esp + 0x13]
test al, al
je 0x431c80
movsx ecx, word [esp + 0x100]
mov eax, dword [esp + 0x2c]
mov esi, dword [eax + 0x14]
mov edx, 1
shl edx, cl
or esi, edx
mov edx, dword [esp + 0x50]
mov dword [eax + 0x14], esi
mov si, word [esp + 0x28]
mov dword [eax + ecx*4 + 0x28], edx
mov word [eax + ecx*2 + 0x18], si
mov eax, dword [esp + 0x104]
test eax, eax
je 0x431c98
cmp edx, 0xffffffff
jmp 0x431c93
mov eax, dword [esp + 0x24]
test byte [eax + 2], 2
je 0x431c98
mov eax, dword [esp + 0x108]
test eax, eax
je 0x431c98
mov byte [eax], 1
mov al, byte [esp + 0x15]
test al, al
pop edi
pop esi
pop ebp
pop ebx
je 0x431cb2
mov eax, dword [esp + 0xfc]
test eax, eax
je 0x431cb2
mov byte [eax], 1
mov ecx, dword [esp + 0x100]
test ecx, ecx
je 0x431cdb
fld dword [ecx]
fcomp dword [esp + 0x28]
fnstsw ax
mov al, byte [esp + 3]
test ah, 0x41
jne 0x431cdf
mov edx, dword [esp + 0x28]
mov dword [ecx], edx
add esp, 0xec
ret
mov al, byte [esp + 3]
add esp, 0xec
ret