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

Disassembly:
sub esp, 0x28
push ebx
push ebp
push esi
mov esi, dword [esp + 0x38]
xor ebx, ebx
mov ebp, 1
push edi
mov dword [esp + 0x10], ebx
mov word [esi + 0x10], bp
xor ecx, ecx
cmp word [esi + 0xec], bx
jle 0x4316de
mov edi, 3
cmp word [esi + 0x10], bp
jne 0x4316de
movsx eax, cx
mov eax, dword [esi + eax*4 + 0xdc]
cmp eax, ebx
mov dword [esp + 0x14], eax
je 0x4316d4
mov edx, dword [eax + 0x9c]
movsx eax, word [edx]
cmp eax, 0x40
ja case.0x431698.4
xor edx, edx
mov dl, byte [eax + 0x432158]
jmp dword [edx*4 + 0x432144]
mov word [esi + 0x10], bp
mov eax, dword [esi + 0x14]
or al, 2
mov dword [esi + 0x14], eax
jmp 0x4316d4
mov word [esi + 0x10], di
jmp 0x4316d4
test byte [esi + 0x14], 0x80
je 0x4316c8
mov edx, dword [esi + 0x14]
or edx, 0x10
mov dword [esi + 0x14], edx
mov word [esi + 0x10], bp
jmp 0x4316d4
mov eax, dword [esi + 0x14]
and al, 0xef
mov dword [esi + 0x14], eax
mov word [esi + 0x10], bx
inc ecx
cmp cx, word [esi + 0xec]
jl 0x43166a
xor edx, edx
cmp word [esi + 0xec], bx
jle 0x43170f
xor eax, eax
mov ecx, dword [esi + eax*4 + 0xdc]
inc edx
mov edi, dword [ecx + 0x44]
mov ecx, dword [ecx + 0x58]
mov dword [esp + eax*4 + 0x18], edi
mov dword [esp + eax*4 + 0x28], ecx
movsx eax, dx
movsx ecx, word [esi + 0xec]
cmp eax, ecx
jl 0x4316eb
movsx eax, word [esi + 0x10]
sub eax, ebx
je 0x431fad
dec eax
je 0x431727
sub eax, 2
jne 0x431fdd
mov edx, dword [esi + 0xc0]
mov dword [esi + 0x18], ebx
mov eax, dword [edx + 0xc]
mov ecx, dword [eax + 0x14]
and ecx, 0xffffffbf
mov dword [eax + 0x14], ecx
mov eax, dword [esi + 0xc4]
mov edx, dword [eax + 0x14]
and edx, 0xffffffbf
mov dword [eax + 0x14], edx
mov eax, dword [esi + 0xc8]
mov ecx, dword [eax + 0x14]
and ecx, 0xffffffbf
mov dword [eax + 0x14], ecx
mov al, byte [esi + 0x14]
test al, 1
je 0x431796
mov edx, dword [esi + 0xc0]
push edx
call fcn.00428a50
mov eax, dword [esi + 0xc4]
push eax
call fcn.00429830
mov ecx, dword [esi + 0xc8]
push ecx
call fcn.00429830
add esp, 0xc
mov edx, dword [esi + 0x14]
and edx, 0xffffff80
mov dword [esi + 0x14], edx
jmp 0x431fdd
test byte [esi + 0x14], 2
mov al, byte [esi + 0x14]
je 0x431b7c
test al, 4
jne 0x431b61
mov eax, dword [esi + 0xc0]
mov edi, dword [esi + 0xc4]
mov edx, dword [esi + 0xc8]
mov ecx, dword [eax + 0xc]
mov al, byte [esi + 0x14]
test al, 8
je 0x4317cf
mov eax, dword [ecx + 0x14]
or al, 0x80
mov dword [ecx + 0x14], eax
xor eax, eax
mov dword [ecx + 0x94], eax
mov dword [ecx + 0x98], eax
mov ebx, dword [edi + 0x18]
mov eax, dword [ecx + 0x18]
mov ebp, dword [edx + 0x18]
or eax, ebx
or eax, ebp
cmp eax, 0x200
ja 0x431936
je 0x431953
add eax, 0xfffffffc
cmp eax, 0xfc
ja case.0x431811.7
xor ebx, ebx
mov bl, byte [eax + 0x4321ac]
jmp dword [ebx*4 + 0x43219c]
xor edi, edi
mov dword [ecx + 0x18], ebp
cmp word [esi + 0xec], di
jle 0x43183f
xor eax, eax
mov ebx, dword [edx + eax*4 + 0x20]
inc edi
mov dword [ecx + eax*4 + 0x20], ebx
movsx eax, di
movsx ebx, word [esi + 0xec]
cmp eax, ebx
jl 0x431828
mov edi, dword [esi + 4]
mov ebx, edi
fld dword [esi + 8]
imul ebx, edi
fld st(0)
fmulp st(1)
movsx eax, word [edx + 0x84]
mov dword [esp + 0x3c], ebx
fild dword [esp + 0x3c]
mov eax, dword [edx + eax*4 + 0x20]
fstp dword [esp + 0x3c]
mov eax, dword [eax + 0xac]
fld st(0)
fmul dword [eax + 4]
fstp dword [ecx + 0x60]
fld dword [esp + 0x3c]
fmul dword [eax + 8]
fstp dword [ecx + 0x64]
fld st(0)
fmul dword [eax + 0x14]
fstp dword [ecx + 0x70]
fld dword [esp + 0x3c]
fmul dword [eax + 0x18]
fstp dword [ecx + 0x74]
fld st(0)
fmul dword [eax + 0x24]
fstp dword [ecx + 0x78]
fmul dword [esi + 8]
fild dword [esi + 4]
fmul dword [esp + 0x3c]
fstp dword [esp + 0x3c]
fld st(0)
fmul dword [eax + 0xc]
fstp dword [ecx + 0x68]
fld dword [esp + 0x3c]
fmul dword [eax + 0x10]
fstp dword [ecx + 0x6c]
fmul dword [eax + 0x1c]
fstp dword [ecx + 0x7c]
fld dword [esp + 0x3c]
fmul dword [eax + 0x20]
fstp dword [ecx + 0x80]
movsx eax, word [edx + 0x84]
mov eax, dword [edx + eax*4 + 0x20]
fld dword [eax + 0x58]
fmul dword [eax + 0xc]
fstp dword [ecx + 0x94]
movsx edi, word [edx + 0x84]
mov edx, dword [edx + edi*4 + 0x20]
fld dword [edx + 0x58]
fcomp dword [0x47363c]
fnstsw ax
test ah, 1
je 0x43190e
fld dword [0x47b290]
fstp dword [ecx + edi*4 + 0x84]
jmp case.0x431811.7
fld dword [0x473638]
fstp dword [ecx + edi*4 + 0x84]
jmp case.0x431811.7
movsx eax, word [ecx + 0x84]
mov edx, dword [ecx + 0x58]
mov dword [ecx + eax*4 + 0x84], edx
jmp case.0x431811.7
cmp eax, 0x2c0
ja 0x431a01
je 0x431953
sub eax, 0x240
je 0x431953
sub eax, 0x40
jne case.0x431811.7
movsx eax, word [ecx + 0x84]
fld dword [esi + 8]
fld st(0)
fmulp st(1)
mov edx, dword [ecx + eax*4 + 0x20]
mov eax, dword [edx + 0xac]
mov edx, dword [esi + 4]
mov edi, edx
imul edi, edx
mov dword [esp + 0x3c], edi
fild dword [esp + 0x3c]
fstp dword [esp + 0x3c]
fld st(0)
fmul dword [eax + 4]
fstp dword [ecx + 0x60]
fld dword [eax + 8]
fdiv st(1)
fstp dword [ecx + 0x64]
fld st(0)
fmul dword [eax + 0x14]
fstp dword [ecx + 0x70]
fld dword [eax + 0x18]
fdiv st(1)
fstp dword [ecx + 0x74]
fld st(0)
fmul dword [eax + 0x24]
fstp dword [ecx + 0x78]
fmul dword [esi + 8]
fild dword [esi + 4]
fmul dword [esp + 0x3c]
fstp dword [esp + 0x3c]
fld st(0)
fmul dword [eax + 0xc]
fstp dword [ecx + 0x68]
fld dword [esp + 0x3c]
fmul dword [eax + 0x10]
fstp dword [ecx + 0x6c]
fmul dword [eax + 0x1c]
fstp dword [ecx + 0x7c]
fld dword [esp + 0x3c]
fmul dword [eax + 0x20]
movsx eax, word [ecx + 0x84]
fstp dword [ecx + 0x80]
mov edx, dword [ecx + eax*4 + 0x20]
fld dword [edx + 0x58]
fmul dword [edx + 0xc]
fstp dword [ecx + 0x94]
mov dword [ecx + eax*4 + 0x84], 0x3f800000
jmp case.0x431811.7
sub eax, 0x400
je case.0x431811.6
sub eax, 0x40
jne case.0x431811.7
mov eax, dword [edi + 0x18]
xor edx, edx
mov dword [ecx + 0x18], eax
cmp word [esi + 0xec], dx
jle 0x431a3b
xor eax, eax
mov ebx, dword [edi + eax*4 + 0x20]
inc edx
mov dword [ecx + eax*4 + 0x20], ebx
movsx eax, dx
movsx ebx, word [esi + 0xec]
cmp eax, ebx
jl 0x431a24
movsx eax, word [edi + 0x84]
fld dword [esi + 8]
fld st(0)
fmulp st(1)
mov edx, dword [edi + eax*4 + 0x20]
mov eax, dword [edx + 0xac]
mov edx, dword [esi + 4]
mov ebx, edx
imul ebx, edx
mov dword [esp + 0x3c], ebx
fild dword [esp + 0x3c]
fstp dword [esp + 0x3c]
fld st(0)
fmul dword [eax + 4]
fstp dword [ecx + 0x60]
fld dword [esp + 0x3c]
fmul dword [eax + 8]
fstp dword [ecx + 0x64]
fld st(0)
fmul dword [eax + 0x14]
fstp dword [ecx + 0x70]
fld dword [esp + 0x3c]
fmul dword [eax + 0x18]
fstp dword [ecx + 0x74]
fld st(0)
fmul dword [eax + 0x24]
fstp dword [ecx + 0x78]
fmul dword [esi + 8]
fild dword [esi + 4]
fmul dword [esp + 0x3c]
fstp dword [esp + 0x3c]
fld st(0)
fmul dword [eax + 0xc]
fstp dword [ecx + 0x68]
fld dword [esp + 0x3c]
fmul dword [eax + 0x10]
fstp dword [ecx + 0x6c]
fmul dword [eax + 0x1c]
fstp dword [ecx + 0x7c]
fld dword [esp + 0x3c]
fmul dword [eax + 0x20]
fstp dword [ecx + 0x80]
movsx eax, word [edi + 0x84]
mov eax, dword [edi + eax*4 + 0x20]
fld dword [eax + 0x58]
fmul dword [eax + 0xc]
fstp dword [ecx + 0x94]
movsx edx, word [edi + 0x84]
mov eax, dword [edi + edx*4 + 0x20]
fld dword [eax + 0x58]
fcomp dword [0x47363c]
fnstsw ax
test ah, 1
je 0x431b00
fld dword [0x47b290]
jmp 0x431b06
fld dword [0x473638]
fstp dword [ecx + edx*4 + 0x84]
fld dword [ecx + 0x94]
fcomp dword [0x47363c]
fnstsw ax
test ah, 1
je 0x431b3a
fld dword [ecx + 0x94]
fchs
fstp dword [ecx + 0x94]
mov dword [ecx + 0x98], 0xbf800000
jmp 0x431b44
mov dword [ecx + 0x98], 0x3f800000
mov edx, dword [ecx + 0x98]
mov dword [ecx + 0x5c], 0
mov dword [ecx + 0x58], edx
mov eax, dword [esi + 0x14]
or al, 4
mov dword [esi + 0x14], eax
mov ebp, 1
mov ecx, dword [esi + 0xc0]
mov edx, dword [ecx + 0xc]
push edx
call fcn.00436b20
add esp, 4
mov dword [esp + 0x10], ebp
jmp 0x431fdd
test al, 0x10
je 0x431bb1
mov eax, dword [esi + 0xc0]
mov ecx, dword [eax + 0xc]
cmp dword [ecx + 0x18], ebx
jne 0x431ba8
mov edx, dword [esi + 0xc4]
cmp dword [edx + 0x18], ebx
jne 0x431ba8
mov eax, dword [esi + 0xc8]
cmp dword [eax + 0x18], ebx
je 0x431fdd
mov dword [esp + 0x10], ebp
jmp 0x431fdd
mov ebx, 0x20
mov al, byte [esi + 0x14]
test bl, al
je 0x431bed
mov ecx, dword [esi + 0xc0]
mov eax, dword [ecx + 0xc]
mov edx, dword [eax + 0x14]
or edx, 0x40
mov dword [eax + 0x14], edx
mov eax, dword [esi + 0xc4]
mov ecx, dword [eax + 0x14]
or ecx, 0x40
mov dword [eax + 0x14], ecx
mov eax, dword [esi + 0xc8]
mov edx, dword [eax + 0x14]
or edx, 0x40
mov dword [eax + 0x14], edx
test byte [esi + 0x14], 0x40
je 0x431c23
mov eax, dword [esi + 0xc0]
mov eax, dword [eax + 0xc]
mov ecx, dword [eax + 0x14]
or ecx, 0x40
mov dword [eax + 0x14], ecx
mov eax, dword [esi + 0xc4]
mov edx, dword [eax + 0x14]
or edx, 0x40
mov dword [eax + 0x14], edx
mov eax, dword [esi + 0xc8]
mov ecx, dword [eax + 0x14]
or ecx, 0x40
mov dword [eax + 0x14], ecx
mov eax, dword [esi + 0xc8]
test eax, eax
je 0x431c57
test byte [eax + 0x14], 1
je 0x431c57
cmp dword [eax + 0x18], 0x40
jne 0x431c57
mov ecx, dword [eax + 0x94]
test ecx, ecx
jne 0x431c57
movsx edx, word [eax + 0x84]
mov ecx, dword [eax + edx*4 + 0x20]
mov edx, dword [eax + 0x8c]
mov dword [ecx + 0x44], edx
mov eax, dword [esi + 0xc4]
test eax, eax
je 0x431cb3
test byte [eax + 0x14], 0x10
je 0x431c6f
push eax
call fcn.00429830
jmp 0x431cb0
mov ecx, dword [eax + 0x18]
test ecx, ecx
je 0x431c7a
mov dword [esp + 0x10], ebp
test byte [eax + 0x14], 1
je 0x431cb3
cmp ecx, 0x80
je 0x431ca1
cmp ecx, 0x400
jne 0x431cb3
mov edx, dword [esi + 0x18]
push eax
or dh, 4
mov dword [esi + 0x18], edx
call fcn.00435c60
jmp 0x431cb0
mov edx, dword [esi + 0x18]
push eax
or dl, 0x80
mov dword [esi + 0x18], edx
call fcn.00435670
add esp, 4
mov eax, dword [esi + 0xc0]
test eax, eax
je case.default.0x431d07
mov edx, dword [eax + 0xc]
test byte [edx + 0x14], 0x10
je 0x431cd1
push eax
call fcn.00428a50
add esp, 4
jmp case.default.0x431d07
mov ecx, dword [edx + 0x18]
test ecx, ecx
je 0x431cdc
mov dword [esp + 0x10], ebp
test byte [edx + 0x14], 1
je case.default.0x431d07
cmp ecx, 0x200
ja 0x431d8c
je 0x431d75
add ecx, 0xfffffffe
cmp ecx, 0xfe
ja case.default.0x431d07
xor edx, edx
mov dl, byte [ecx + 0x4322c0]
jmp dword [edx*4 + 0x4322ac]
mov edx, dword [esi + 0x18]
or edx, 4
mov dword [esi + 0x18], edx
mov eax, dword [eax + 0xc]
push eax
call fcn.00433280
add esp, 4
mov ebp, 1
mov eax, dword [esi + 0xc8]
test eax, eax
je 0x431fdd
test byte [eax + 0x14], 0x10
je 0x431f84
push eax
call fcn.00429830
add esp, 4
jmp 0x431fdd
mov edi, dword [esi + 0x18]
or edi, ebx
mov dword [esi + 0x18], edi
mov ecx, dword [eax + 0xc]
push ecx
call fcn.004336e0
jmp 0x431d20
mov edx, dword [esi + 0x18]
or dh, 1
mov dword [esi + 0x18], edx
mov edx, dword [eax + 0xc]
push edx
call fcn.00434140
jmp 0x431d20
mov edx, dword [esi + 0x18]
or dh, 2
mov dword [esi + 0x18], edx
mov eax, dword [eax + 0xc]
push eax
call fcn.00434aa0
add esp, 4
jmp case.default.0x431d07
cmp ecx, 0x4000
ja 0x431e4a
je 0x431e2d
cmp ecx, 0x800
je 0x431e13
cmp ecx, 0x1000
jne case.default.0x431d07
mov edx, dword [esi + 0x18]
or dh, 0x10
mov dword [esi + 0x18], edx
mov eax, dword [eax + 0xc]
test dword [eax + 0x14], 0x80000
jne case.default.0x431d07
cmp dword [eax + 0x8c], ebp
jne 0x431de9
mov ecx, dword [0x49be50]
mov dword [eax + 0x88], ecx
mov dword [eax + 0x8c], 0
mov edx, dword [0x49be50]
mov edi, dword [eax + 0x88]
mov ecx, dword [eax + 0x84]
sub edx, edi
cmp edx, ecx
jle case.default.0x431d07
push eax
call fcn.00429880
add esp, 4
jmp case.default.0x431d07
mov edx, dword [esi + 0x18]
or dh, 8
mov dword [esi + 0x18], edx
mov eax, dword [eax + 0xc]
push eax
call fcn.00434540
add esp, 4
jmp case.default.0x431d07
mov edi, dword [esi + 0x18]
or edi, 0x4000
mov dword [esi + 0x18], edi
mov ecx, dword [eax + 0xc]
push ecx
call fcn.00434f40
add esp, 4
jmp case.default.0x431d07
cmp ecx, 0x100000
je 0x431f6a
cmp ecx, 0x200000
jne case.default.0x431d07
mov edx, dword [esi + 0x18]
or edx, ecx
mov dword [esi + 0x18], edx
mov eax, dword [eax + 0xc]
test dword [eax + 0x14], 0x80000
jne case.default.0x431d07
movsx edx, word [eax + 0x86]
lea ecx, [edx*8]
sub ecx, edx
lea ecx, [ecx + ecx*2]
lea edx, [edx + ecx*2]
lea ecx, [edx*8 + 0x4c9e60]
mov dx, word [eax + 0x84]
cmp dx, 2
jne 0x431eee
mov edx, dword [eax + 0x8c]
test edx, edx
mov edx, dword [eax + 0x90]
je 0x431ed0
mov edi, dword [ecx + 0x154]
push eax
or edi, edx
mov dword [ecx + 0x154], edi
call fcn.00429880
add esp, 4
jmp case.default.0x431d07
mov edi, dword [ecx + 0x154]
push eax
not edx
and edi, edx
mov dword [ecx + 0x154], edi
call fcn.00429880
add esp, 4
jmp case.default.0x431d07
cmp dx, bp
jne 0x431f46
mov edx, dword [eax + 0x90]
mov ebx, dword [ecx + 0x110]
or ebx, edx
mov dword [ecx + 0x110], ebx
mov edx, dword [0x49be50]
movsx edi, word [eax + 0x88]
push eax
mov dword [ecx + edi*4 + 0x90], edx
mov edi, dword [eax + 0x94]
movsx edx, word [eax + 0x88]
mov dword [ecx + edx*4 + 0x10], edi
mov edx, dword [eax + 0x90]
or dword [ecx + 0x154], edx
call fcn.00429880
add esp, 4
jmp case.default.0x431d07
test dx, dx
jne 0x431f57
mov edx, dword [eax + 0x90]
mov dword [ecx + 0x154], edx
push eax
call fcn.00429880
add esp, 4
jmp case.default.0x431d07
mov ebp, 1
mov edx, dword [esi + 0x18]
or edx, 2
mov dword [esi + 0x18], edx
mov eax, dword [eax + 0xc]
push eax
call fcn.00432430
add esp, 4
jmp case.default.0x431d07
mov ecx, dword [eax + 0x18]
test ecx, ecx
je 0x431f8f
mov dword [esp + 0x10], ebp
test byte [eax + 0x14], 1
je 0x431fdd
cmp ecx, 0x40
jne 0x431fdd
mov edx, dword [esi + 0x18]
push eax
or edx, ecx
mov dword [esi + 0x18], edx
call fcn.00436650
add esp, 4
jmp 0x431fdd
mov ecx, dword [esi + 0xc0]
push ecx
call fcn.00428a50
mov edx, dword [esi + 0xc4]
push edx
call fcn.00429830
mov eax, dword [esi + 0xc8]
push eax
call fcn.00429830
add esp, 0xc
mov ecx, dword [esi + 0x14]
and ecx, 0xffffff80
mov dword [esi + 0x14], ecx
mov edx, dword [esi + 0xc0]
push edx
call fcn.00428c40
mov eax, dword [esi + 0xc0]
xor ebx, ebx
add esp, 4
mov cx, word [eax + 6]
cmp cx, bx
je 0x432035
cmp word [eax + 2], cx
jle 0x432035
xor edi, edi
cmp word [esi + 0xec], bx
jle 0x432035
xor eax, eax
mov eax, dword [esi + eax*4 + 0xdc]
push ebx
movsx ecx, word [eax]
push ecx
push 0xf
call fcn.00421ca0
add esp, 0xc
inc edi
movsx eax, di
movsx edx, word [esi + 0xec]
cmp eax, edx
jl 0x432010
cmp dword [esp + 0x10], ebx
jne 0x432097
cmp word [esi + 0xec], bx
je 0x432097
xor ecx, ecx
cmp word [esi + 0xec], bx
jle 0x432088
xor eax, eax
mov edx, dword [esi + eax*4 + 0xdc]
inc ecx
mov dword [edx + 0x58], ebx
mov edx, dword [esi + eax*4 + 0xdc]
mov dword [edx + 0x6c], ebx
mov edx, dword [esi + eax*4 + 0xdc]
mov dword [edx + 0xbc], ebx
mov dword [esi + eax*4 + 0xdc], ebx
movsx eax, cx
movsx edx, word [esi + 0xec]
cmp eax, edx
jl 0x432051
mov word [esi + 0xec], bx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x28
ret
xor edi, edi
cmp word [esi + 0xec], bx
jle 0x43213c
mov ebx, dword [esp + 0x14]
xor ecx, ecx
mov eax, dword [esi + ecx*4 + 0xdc]
fld dword [eax + 0x44]
fsub dword [esp + ecx*4 + 0x18]
fstp dword [eax + 0x58]
mov edx, dword [esi + ecx*4 + 0xdc]
fld dword [edx + 0x58]
fcomp dword [0x47aab0]
fld dword [edx + 0x58]
fnstsw ax
test ah, 1
jne 0x4320df
fsub dword [0x47aaac]
jmp 0x4320f5
fcomp dword [0x47aaa8]
fnstsw ax
test ah, 1
je 0x4320f8
fld dword [edx + 0x58]
fadd dword [0x47aaac]
fstp dword [edx + 0x58]
fild dword [ebx + 8]
mov eax, dword [esi + ecx*4 + 0xdc]
inc edi
fmul dword [eax + 0x58]
fstp dword [eax + 0x58]
mov eax, dword [esi + ecx*4 + 0xdc]
fld dword [eax + 0x58]
fsub dword [esp + ecx*4 + 0x28]
fstp dword [eax + 0x6c]
fild dword [ebx + 8]
mov ecx, dword [esi + ecx*4 + 0xdc]
fmul dword [ecx + 0x6c]
fstp dword [ecx + 0x6c]
movsx ecx, di
movsx eax, word [esi + 0xec]
cmp ecx, eax
jl 0x4320ac
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x28
ret