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

Disassembly:
fld dword [0x54fb38]
sub esp, 0x3c
push esi
mov esi, ecx
fld dword [esi + 0x24]
fucompp
fnstsw ax
test ah, 0x44
jnp 0x417983
mov eax, dword [esi + 0x244]
test eax, eax
je 0x417983
mov eax, dword [esi + 0x6c]
test eax, eax
je 0x417929
mov eax, dword [esi + 0x178]
mov ecx, dword [eax + 0xf8]
test ecx, ecx
je 0x417983
mov eax, dword [esi + 0x68]
test eax, eax
push ebx
push ebp
push edi
je 0x41798a
mov eax, dword [esi + 0x19c]
xor edi, edi
test eax, eax
jle 0x417980
mov ebx, dword [esp + 0x5c]
mov ebp, dword [esp + 0x58]
test edi, edi
jl 0x4183f3
cmp edi, dword [esi + 0x19c]
jge 0x4183f3
mov ecx, dword [esp + 0x54]
mov edx, dword [esp + 0x50]
mov eax, dword [esi + 0x198]
push ebx
push ebp
push ecx
mov ecx, dword [eax + edi*4]
push edx
call fcn.004178f0
mov eax, dword [esi + 0x19c]
inc edi
cmp edi, eax
jl 0x417947
pop edi
pop ebp
pop ebx
pop esi
add esp, 0x3c
ret 0x10
mov edi, dword [sym.imp.opengl32.dll_glEnable]
push 0xbe2
call edi
push 0xde1
call edi
mov edi, dword [sym.imp.opengl32.dll_glTexParameteri]
push 0x2900
push 0x2802
push 0xde1
call edi
push 0x2900
push 0x2803
push 0xde1
call edi
call dword [sym.imp.opengl32.dll_glLoadIdentity]
mov edx, dword [esi + 0x40]
mov eax, dword [esi + 0x54]
dec edx
test eax, eax
mov dword [esp + 0x20], edx
mov dword [esp + 0x38], 0xffffffff
je 0x4179f1
xor edx, edx
mov dword [esp + 0x20], edx
mov dword [esp + 0x38], 1
mov ebp, dword [sym.imp.opengl32.dll_glTranslatef]
mov ebx, dword [sym.imp.opengl32.dll_glRotatef]
mov ecx, edx
mov eax, dword [esi + 0x54]
test eax, eax
mov dword [esp + 0x18], ecx
je 0x417a4d
cmp ecx, dword [esi + 0x40]
jl 0x417a51
mov ebx, edx
mov eax, dword [esi + 0x54]
test eax, eax
mov dword [esp + 0x18], ebx
je 0x417da7
cmp ebx, dword [esi + 0x40]
jl 0x417daf
call dword [sym.imp.opengl32.dll_glFlush]
mov esi, dword [sym.imp.opengl32.dll_glDisable]
push 0xbe2
call esi
push 0xde1
call esi
pop edi
pop ebp
pop ebx
pop esi
add esp, 0x3c
ret 0x10
test ecx, ecx
jl 0x417a0f
test ecx, ecx
jl 0x4183f3
cmp ecx, dword [esi + 0x40]
jge 0x4183f3
mov eax, dword [esi + 0x3c]
mov edi, dword [eax + ecx*4]
fld dword [edi + 0x34]
fcomp dword [0x54fb38]
fnstsw ax
test ah, 0x41
jne 0x417d9e
mov eax, dword [edi + 0xe4]
cmp dword [eax + 0x114], 0
je 0x417d9e
cmp dword [eax + 0x11c], 0
je 0x417d9e
movzx ecx, byte [edi + 0xc7]
mov dword [esp + 0x48], ecx
fild dword [esp + 0x48]
fmul dword [eax + 0x50]
mov eax, dword [esi + 0x6c]
test eax, eax
fmul dword [0x54fea0]
je 0x417ada
mov edx, dword [esi + 0x178]
mov eax, dword [esi + 0x70]
fld dword [edx + 0xe4]
fmul dword [eax + 0x1d0]
fmul st(1)
fstp dword [esp + 0x28]
fstp st(0)
jmp 0x417ae4
fmul dword [esi + 0x1d0]
fstp dword [esp + 0x28]
call dword [sym.imp.opengl32.dll_glLoadIdentity]
fild dword [esp + 0x54]
mov eax, dword [esi + 0x50]
push 0
sub esp, 8
test eax, eax
jne 0x417b07
fadd dword [edi + 0x38]
fstp dword [esp + 4]
fild dword [esp + 0x5c]
jmp 0x417b4f
fstp dword [esp + 4]
fild dword [esp + 0x5c]
fstp dword [esp]
call ebp
mov ecx, dword [esi + 0x190]
fld dword [ecx + 0x168]
push 0x3f800000
push 0
fchs
push 0
push ecx
fstp dword [esp]
call ebx
mov eax, dword [esi + 0x190]
fld dword [eax + 0x154]
push 0
fadd dword [edi + 0x38]
sub esp, 8
fstp dword [esp + 4]
fld dword [eax + 0x150]
fadd dword [edi + 0x3c]
fstp dword [esp]
call ebp
mov edx, dword [edi + 0x40]
push 0x3f800000
push 0
push 0
push edx
call ebx
mov eax, dword [edi + 0x48]
mov ecx, dword [edi + 0x50]
push eax
push ecx
mov edx, eax
push edx
call dword [sym.imp.opengl32.dll_glScalef]
mov eax, dword [esi + 0x60]
mov ecx, dword [esi + 0x50]
mov edx, dword [edi + 0xe4]
push eax
mov eax, dword [edx + 0x9c]
push ecx
mov ecx, dword [esi + 4]
push eax
call fcn.0049c110
mov edx, dword [edi + 0xf8]
mov ebp, eax
mov eax, dword [edi + 0xe4]
mov ecx, dword [eax + 0x9c]
cmp edx, dword [ecx + 0xc]
jl 0x417bb7
mov dword [edi + 0xf8], 0
mov edx, dword [edi + 0xf8]
fld dword [0x54fb34]
mov ecx, dword [eax + 0xc0]
add ebp, edx
test ecx, ecx
mov dword [esp + 0x2c], 0x3f800000
je 0x417bdf
mov dword [esp + 0x2c], 0xbf800000
mov ecx, dword [eax + 0xc4]
test ecx, ecx
je 0x417bf1
fstp st(0)
fld dword [0x550e20]
mov eax, dword [eax + 0x9c]
mov ecx, dword [eax + 0xc]
add eax, 4
test ecx, ecx
jle 0x4183f1
mov eax, dword [eax + 4]
fld dword [0x54fb34]
mov ebx, dword [eax]
mov eax, dword [ebx + 4]
mov ecx, dword [ebx + 8]
cmp eax, ecx
mov dword [esp + 0x10], 0x3f800000
mov dword [esp + 0x34], eax
mov dword [esp + 0x30], ecx
jle 0x417c38
fild dword [esp + 0x30]
fidiv dword [esp + 0x34]
fstp dword [esp + 0x10]
jmp 0x417c44
jge 0x417c44
fstp st(0)
fild dword [esp + 0x34]
fidiv dword [esp + 0x30]
fmul dword [esp + 0x2c]
push 0x303
push 0x302
fstp dword [esp + 0x2c]
fld dword [esp + 0x18]
fmul st(1)
fstp dword [esp + 0x18]
fstp st(0)
call dword [sym.imp.opengl32.dll_glBlendFunc]
mov eax, dword [esi + 0x50]
test eax, eax
mov ecx, dword [esi + 4]
push ebp
je 0x417c83
add ecx, 0x644
call fcn.00417770
mov ecx, dword [eax]
push ecx
jmp 0x417ca8
mov eax, dword [esi + 0x60]
test eax, eax
je 0x417c9a
add ecx, 0x738
call fcn.00417770
mov edx, dword [eax]
push edx
jmp 0x417ca8
add ecx, 0x61c
call fcn.00417770
mov eax, dword [eax]
push eax
push 0xde1
call dword [sym.imp.opengl32.dll_glBindTexture]
mov ecx, dword [esp + 0x28]
push ecx
push 0
push 0
push 0
call dword [sym.imp.opengl32.dll_glColor4f]
mov edi, dword [edi + 0xe4]
fld dword [edi + 0x120]
push 7
fmul qword [0x550e18]
fidiv dword [ebx + 4]
fstp dword [esp + 0x34]
fld dword [edi + 0x124]
fmul qword [0x550e18]
fidiv dword [ebx + 8]
fstp dword [esp + 0x38]
call dword [sym.imp.opengl32.dll_glBegin]
mov ebp, dword [sym.imp.opengl32.dll_glTexCoord2f]
push 0
push 0
call ebp
fld dword [esp + 0x34]
fsub dword [esp + 0x10]
fstp dword [esp + 0x48]
fld dword [esp + 0x30]
mov edi, dword [esp + 0x48]
fsub dword [esp + 0x24]
push edi
fstp dword [esp + 0x48]
mov ebx, dword [esp + 0x48]
push ebx
call dword [sym.imp.opengl32.dll_glVertex2f]
push 0x3f800000
push 0
call ebp
fld dword [esp + 0x34]
fadd dword [esp + 0x10]
fstp dword [esp + 0x48]
mov ebp, dword [esp + 0x48]
push ebp
push ebx
mov ebx, dword [sym.imp.opengl32.dll_glVertex2f]
call ebx
push 0x3f800000
push 0x3f800000
call dword [sym.imp.opengl32.dll_glTexCoord2f]
fld dword [esp + 0x30]
fadd dword [esp + 0x24]
push ebp
fstp dword [esp + 0x4c]
mov ebp, dword [esp + 0x4c]
push ebp
call ebx
push 0
push 0x3f800000
call dword [sym.imp.opengl32.dll_glTexCoord2f]
push edi
push ebp
call ebx
call dword [sym.imp.opengl32.dll_glEnd]
mov edx, dword [esp + 0x20]
mov ecx, dword [esp + 0x18]
mov ebp, dword [sym.imp.opengl32.dll_glTranslatef]
mov ebx, dword [sym.imp.opengl32.dll_glRotatef]
add ecx, dword [esp + 0x38]
jmp 0x4179ff
test ebx, ebx
jl 0x417a29
test ebx, ebx
jl 0x4183f3
cmp ebx, dword [esi + 0x40]
jge 0x4183f3
mov edx, dword [esi + 0x3c]
mov edi, dword [edx + ebx*4]
fld dword [edi + 0x34]
fcomp dword [0x54fb38]
fnstsw ax
test ah, 0x41
jne 0x4183e8
mov eax, dword [edi + 0xe4]
mov ecx, dword [eax + 0x11c]
test ecx, ecx
je 0x4183e8
mov ecx, dword [eax + 0x9c]
mov edx, dword [ecx + 0xc]
add ecx, 4
test edx, edx
jle 0x4183f3
fld dword [eax + 0x124]
mov ecx, dword [ecx + 4]
fld dword [eax + 0x120]
mov ecx, dword [ecx]
fadd st(0), st(0)
lea edx, [esp + 0x28]
push edx
lea eax, [esp + 0x28]
fidiv dword [ecx + 4]
push eax
push ecx
fstp dword [esp + 0x30]
mov edx, dword [esp + 0x30]
fadd st(0), st(0)
fidiv dword [ecx + 8]
fstp dword [esp + 0x34]
fld dword [edi + 0x40]
mov ecx, dword [esp + 0x34]
fchs
fstp dword [esp]
push ecx
push edx
call fcn.0049ba90
fld dword [esi + 0x1ac]
fmul dword [edi + 0x48]
mov eax, dword [esi + 0x190]
lea ecx, [esp + 0x34]
push ecx
fmul dword [0x550df4]
lea edx, [esp + 0x34]
push edx
fstp dword [esp + 0x5c]
fld dword [esi + 0x1b0]
fmul dword [edi + 0x50]
fmul dword [0x550df4]
fstp dword [esp + 0x50]
fild dword [esp + 0x74]
fstp dword [esp + 0x64]
fild dword [esp + 0x78]
fstp dword [esp + 0x58]
fld dword [esp + 0x40]
fmul dword [edi + 0x48]
fsubr dword [edi + 0x3c]
fadd dword [eax + 0x150]
fstp dword [esp + 0x38]
mov edx, dword [esp + 0x38]
fld dword [esp + 0x44]
fmul dword [edi + 0x50]
fsubr dword [edi + 0x38]
fadd dword [eax + 0x154]
fstp dword [esp + 0x3c]
mov eax, dword [eax + 0x168]
mov ecx, dword [esp + 0x3c]
push eax
push ecx
push edx
call fcn.0049ba90
mov eax, dword [esp + 0x80]
add esp, 0x28
test eax, eax
jl 0x417f3d
mov eax, dword [esp + 0x5c]
test eax, eax
jl 0x417f3d
fld dword [esp + 0x48]
fadd dword [esp + 0x40]
fld st(0)
fchs
fcomp dword [esp + 0x1c]
fnstsw ax
test ah, 5
jp 0x4183e6
fld dword [esp + 0x1c]
fcomp st(1)
fnstsw ax
fstp st(0)
test ah, 5
jp 0x4183e8
fld dword [esp + 0x3c]
fadd dword [esp + 0x34]
fld st(0)
fchs
fcomp dword [esp + 0x20]
fnstsw ax
test ah, 5
jp 0x4183e6
fld dword [esp + 0x20]
fcomp st(1)
fnstsw ax
fstp st(0)
test ah, 5
jp 0x4183e8
movzx eax, byte [edi + 0xc7]
mov ecx, dword [edi + 0xe4]
mov dword [esp + 0x48], eax
mov eax, dword [esi + 0x6c]
test eax, eax
fild dword [esp + 0x48]
fmul dword [ecx + 0x50]
fmul dword [0x54fea0]
je 0x417f81
mov edx, dword [esi + 0x178]
mov eax, dword [esi + 0x70]
fld dword [edx + 0xe4]
fmul dword [eax + 0x1d0]
fmul st(1)
fstp dword [esp + 0x10]
fstp st(0)
jmp 0x417f8b
fmul dword [esi + 0x1d0]
fstp dword [esp + 0x10]
movzx ecx, byte [edi + 0xc4]
fld dword [0x54fb34]
fsub dword [esi + 0x1e4]
movzx edx, byte [edi + 0xc5]
mov dword [esp + 0x48], ecx
movzx eax, byte [edi + 0xc6]
fild dword [esp + 0x48]
mov dword [esp + 0x48], edx
fmul dword [0x54fea0]
fmul st(1)
fild dword [esi + 0x204]
fmul dword [0x54fea0]
fmul dword [esi + 0x1e4]
faddp st(1)
fstp dword [esp + 0x34]
fild dword [esp + 0x48]
mov dword [esp + 0x48], eax
fmul dword [0x54fea0]
fmul st(1)
fild dword [esi + 0x208]
fmul dword [0x54fea0]
fmul dword [esi + 0x1e4]
faddp st(1)
fstp dword [esp + 0x30]
fild dword [esp + 0x48]
fmul dword [0x54fea0]
fmul st(1)
fild dword [esi + 0x20c]
fmul dword [0x54fea0]
fmul dword [esi + 0x1e4]
faddp st(1)
fstp dword [esp + 0x2c]
fstp st(0)
call dword [sym.imp.opengl32.dll_glLoadIdentity]
mov eax, dword [esi + 0x50]
fild dword [esp + 0x54]
push 0
sub esp, 8
test eax, eax
jne 0x418049
fadd dword [edi + 0x38]
fstp dword [esp + 4]
fild dword [esp + 0x5c]
jmp 0x418095
fstp dword [esp + 4]
fild dword [esp + 0x5c]
fstp dword [esp]
call ebp
mov ecx, dword [esi + 0x190]
fld dword [ecx + 0x168]
push 0x3f800000
push 0
fchs
push 0
push ecx
fstp dword [esp]
call dword [sym.imp.opengl32.dll_glRotatef]
mov eax, dword [esi + 0x190]
fld dword [eax + 0x154]
push 0
fadd dword [edi + 0x38]
sub esp, 8
fstp dword [esp + 4]
fld dword [eax + 0x150]
fadd dword [edi + 0x3c]
fstp dword [esp]
call ebp
mov edx, dword [edi + 0x40]
push 0x3f800000
push 0
push 0
push edx
call dword [sym.imp.opengl32.dll_glRotatef]
mov eax, dword [edi + 0x48]
mov ecx, dword [edi + 0x50]
push eax
push ecx
mov edx, eax
push edx
call dword [sym.imp.opengl32.dll_glScalef]
mov eax, dword [esi + 0x60]
mov ecx, dword [esi + 0x50]
mov edx, dword [edi + 0xe4]
push eax
mov eax, dword [edx + 0x9c]
push ecx
mov ecx, dword [esi + 4]
push eax
call fcn.0049c110
mov edx, dword [edi + 0xf8]
mov ebx, eax
mov eax, dword [edi + 0xe4]
mov ecx, dword [eax + 0x9c]
cmp edx, dword [ecx + 0xc]
jl 0x418101
mov dword [edi + 0xf8], 0
mov edx, dword [edi + 0xf8]
fld dword [0x54fb34]
mov ecx, dword [eax + 0xc0]
add ebx, edx
test ecx, ecx
mov dword [esp + 0x44], 0x3f800000
je 0x418129
mov dword [esp + 0x44], 0xbf800000
mov ecx, dword [eax + 0xc4]
test ecx, ecx
je 0x41813b
fstp st(0)
fld dword [0x550e20]
mov ecx, dword [eax + 0x9c]
mov edx, dword [ecx + 0xc]
add ecx, 4
test edx, edx
jle 0x4183f1
mov ecx, dword [ecx + 4]
fld dword [0x54fb34]
mov ebp, dword [ecx]
mov ecx, dword [ebp + 4]
mov edx, dword [ebp + 8]
cmp ecx, edx
mov dword [esp + 0x14], 0x3f800000
mov dword [esp + 0x3c], ecx
mov dword [esp + 0x40], edx
jle 0x418182
fild dword [esp + 0x40]
fidiv dword [esp + 0x3c]
fstp dword [esp + 0x14]
jmp 0x41818e
jge 0x41818e
fstp st(0)
fild dword [esp + 0x3c]
fidiv dword [esp + 0x40]
fmul dword [esp + 0x44]
mov edx, dword [esi + 4]
mov ecx, dword [edx + 0x38c]
test ecx, ecx
fstp dword [esp + 0x48]
fld dword [esp + 0x14]
fmul st(1)
fstp dword [esp + 0x14]
fstp st(0)
je 0x4181dd
mov ecx, dword [eax + 0x108]
test ecx, ecx
je 0x4181dd
fld dword [esp + 0x34]
fmul dword [esp + 0x10]
fstp dword [esp + 0x34]
fld dword [esp + 0x30]
fmul dword [esp + 0x10]
fstp dword [esp + 0x30]
fld dword [esp + 0x2c]
fmul dword [esp + 0x10]
fstp dword [esp + 0x2c]
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x30]
push eax
mov eax, dword [esp + 0x38]
push ecx
push edx
push eax
call dword [sym.imp.opengl32.dll_glColor4f]
mov eax, dword [esi + 0x50]
mov ecx, dword [edi + 0xe4]
test eax, eax
mov eax, dword [ecx + 0x108]
je 0x418282
test eax, eax
je 0x418251
mov edx, dword [esi + 4]
mov eax, dword [edx + 0x38c]
test eax, eax
push 1
je 0x418221
push 1
jmp 0x418226
push 0x302
call dword [sym.imp.opengl32.dll_glBlendFunc]
mov eax, dword [esi + 4]
add eax, 0x658
test ebx, ebx
jl 0x4183f3
cmp ebx, dword [eax + 8]
jge 0x4183f3
mov eax, dword [eax + 4]
mov ecx, dword [eax + ebx*4]
push ecx
jmp 0x418300
push 0x303
push 0x302
call dword [sym.imp.opengl32.dll_glBlendFunc]
mov eax, dword [esi + 4]
add eax, 0x644
test ebx, ebx
jl 0x4183f3
cmp ebx, dword [eax + 8]
jge 0x4183f3
mov edx, dword [eax + 4]
mov eax, dword [edx + ebx*4]
jmp 0x4182ff
test eax, eax
je 0x4182c7
mov edx, dword [esi + 4]
mov eax, dword [edx + 0x38c]
test eax, eax
push 1
je 0x418299
push 1
jmp 0x41829e
push 0x302
call dword [sym.imp.opengl32.dll_glBlendFunc]
mov eax, dword [esi + 0x60]
test eax, eax
mov ecx, dword [esi + 4]
push ebx
je 0x4182b7
add ecx, 0x74c
jmp 0x4182f8
add ecx, 0x630
call fcn.00417770
mov ecx, dword [eax]
push ecx
jmp 0x418300
push 0x303
push 0x302
call dword [sym.imp.opengl32.dll_glBlendFunc]
mov eax, dword [esi + 0x60]
test eax, eax
mov ecx, dword [esi + 4]
push ebx
je 0x4182f2
add ecx, 0x738
call fcn.00417770
mov edx, dword [eax]
push edx
jmp 0x418300
add ecx, 0x61c
call fcn.00417770
mov eax, dword [eax]
push eax
push 0xde1
call dword [sym.imp.opengl32.dll_glBindTexture]
mov edi, dword [edi + 0xe4]
fld dword [edi + 0x120]
push 7
fmul qword [0x550e18]
fidiv dword [ebp + 4]
fstp dword [esp + 0x40]
fld dword [edi + 0x124]
fmul qword [0x550e18]
fidiv dword [ebp + 8]
fstp dword [esp + 0x44]
call dword [sym.imp.opengl32.dll_glBegin]
mov ebp, dword [sym.imp.opengl32.dll_glTexCoord2f]
push 0
push 0
call ebp
fld dword [esp + 0x40]
fsub dword [esp + 0x14]
fstp dword [esp + 0x34]
fld dword [esp + 0x3c]
mov edi, dword [esp + 0x34]
fsub dword [esp + 0x48]
push edi
fstp dword [esp + 0x34]
mov ebx, dword [esp + 0x34]
push ebx
call dword [sym.imp.opengl32.dll_glVertex2f]
push 0x3f800000
push 0
call ebp
fld dword [esp + 0x40]
fadd dword [esp + 0x14]
fstp dword [esp + 0x40]
mov ebp, dword [esp + 0x40]
push ebp
push ebx
mov ebx, dword [sym.imp.opengl32.dll_glVertex2f]
call ebx
push 0x3f800000
push 0x3f800000
call dword [sym.imp.opengl32.dll_glTexCoord2f]
fld dword [esp + 0x3c]
fadd dword [esp + 0x48]
push ebp
fstp dword [esp + 0x4c]
mov ebp, dword [esp + 0x4c]
push ebp
call ebx
push 0
push 0x3f800000
call dword [sym.imp.opengl32.dll_glTexCoord2f]
push edi
push ebp
call ebx
call dword [sym.imp.opengl32.dll_glEnd]
mov ebx, dword [esp + 0x18]
mov eax, dword [esp + 0x38]
mov ebp, dword [sym.imp.opengl32.dll_glTranslatef]
add ebx, eax
jmp 0x417a11
fstp st(0)
add ebx, dword [esp + 0x38]
jmp 0x417a11
fstp st(0)
call fcn.004fd76e
int3