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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x1f4
push ebx
mov ebx, dword [ebp + 8]
cmp byte [ebx + 0xde], 0
push esi
push edi
jne 0x414886
xor eax, eax
jmp 0x414fdc
mov eax, dword [ebx + 0xd4]
xor esi, esi
cmp eax, esi
mov dword [esp + 0x40], eax
je 0x41487f
mov edi, dword [ebx]
cmp edi, 0xffffffff
je 0x4148c3
call fcn.00412bbf
imul edi, edi, 0x34
add eax, edi
mov ecx, dword [eax]
mov edx, dword [ecx + 0x10]
mov ecx, dword [edx]
add ecx, dword [esp + 0x40]
mov dword [edx], ecx
mov eax, dword [eax + 4]
mov eax, dword [eax + 0x10]
mov edx, dword [eax]
cmp ecx, edx
cmovb ecx, edx
mov dword [eax], ecx
mov eax, dword [0x69e824]
cmp eax, dword [0x69e820]
ja 0x41487f
mov eax, dword [esp + 0x40]
add dword [0x69e824], eax
mov eax, dword [ebx + 8]
mov al, byte [eax + 0x36]
test al, al
xorps xmm0, xmm0
mov byte [esp + 0x17], 1
je 0x4149a5
cmp al, 3
je 0x4149a5
cmp al, 1
jne 0x414927
movss xmm1, dword [0x55b520]
movss dword [esp + 0x24], xmm1
movss dword [esp + 0x28], xmm0
movss dword [esp + 0x2c], xmm0
movss dword [esp + 0x34], xmm0
movss dword [esp + 0x38], xmm1
jmp 0x414a0c
cmp al, 2
jne 0x414a12
mov ax, word [ebx + 0xdc]
movss xmm1, dword [0x55b520]
add ax, 0x4000
movzx eax, ax
movss dword [esp + 0x34], xmm0
movss dword [esp + 0x38], xmm0
movss dword [esp + 0x28], xmm0
movss dword [esp + 0x2c], xmm0
cvtsi2ss xmm0, eax
mulss xmm0, dword [0x57f940]
push ecx
lea eax, [esp + 0x184]
movss dword [esp], xmm0
push eax
mov byte [esp + 0x1f], 0
movss dword [esp + 0x44], xmm1
movss dword [esp + 0x2c], xmm1
call fcn.004030d7
lea eax, [esp + 0x188]
push eax
lea eax, [esp + 0x30]
push eax
push eax
call fcn.004152ae
add esp, 0x14
jmp 0x414a12
mov eax, dword [ebp + 0xc]
mov ecx, dword [eax + 0x50]
mov eax, dword [ecx]
lea edx, [esp + 0x100]
push edx
call dword [eax + 4]
movss xmm0, dword [esp + 0x100]
movss dword [esp + 0x24], xmm0
movss xmm0, dword [esp + 0x110]
movss dword [esp + 0x28], xmm0
movss xmm0, dword [esp + 0x120]
movss dword [esp + 0x2c], xmm0
movss xmm0, dword [esp + 0x104]
movss dword [esp + 0x34], xmm0
movss xmm0, dword [esp + 0x114]
movss dword [esp + 0x38], xmm0
movss xmm0, dword [esp + 0x124]
movss dword [esp + 0x3c], xmm0
xor edi, edi
inc edi
push edi
call fcn.0043a27d
pop ecx
push esi
mov eax, edi
call fcn.0043a222
xor eax, eax
cmp byte [esp + 0x1b], al
pop ecx
setne al
push eax
push 6
pop eax
call fcn.0043a222
cmp byte [0x69e788], 0
pop ecx
je 0x414a4a
push esi
xor eax, eax
call fcn.0043a222
pop ecx
mov eax, dword [ebx + 8]
test byte [eax + 0x37], 1
jne 0x414a5f
mov eax, dword [ebx + 4]
cmp eax, esi
je 0x414a68
cmp dword [eax + 0x1c], esi
je 0x414a68
push esi
xor eax, eax
call fcn.0043a222
pop ecx
mov eax, dword [ebx + 8]
movzx eax, byte [eax + 0x35]
sub eax, esi
je 0x414a7a
dec eax
jne 0x414a84
push 3
jmp 0x414a7b
push edi
push 5
pop eax
call fcn.0043a222
pop ecx
push edi
push 3
pop eax
call fcn.0043a222
test byte [0x6ab898], 1
mov eax, dword [0x6975c0]
pop ecx
mov dword [0x6975b4], eax
jne 0x414ab6
or dword [0x6ab898], edi
mov edx, str.global_white
call fcn.0040df49
mov dword [0x6ab894], eax
mov eax, dword [ebx + 8]
cmp dword [eax + 0x54], 0xffffffff
je 0x414e65
movss xmm0, dword [0x57f8dc]
push 0x10
pop ecx
lea esi, [ebx + 0x60]
lea edi, [esp + 0xc0]
rep movsd dword es:[edi], dword [esi]
movaps xmm1, xmm0
subss xmm1, dword [esp + 0xe0]
movaps xmm2, xmm0
subss xmm0, dword [esp + 0xe8]
subss xmm2, dword [esp + 0xe4]
movss dword [esp + 0xe8], xmm0
xorps xmm0, xmm0
movss dword [esp + 0xe0], xmm1
movss dword [esp + 0xe4], xmm2
movss dword [esp + 0xec], xmm0
movzx ecx, byte [eax + 0x35]
sub ecx, 0
je 0x414b38
dec ecx
jne 0x414b40
mov dword [esp + 0x5c], 3
jmp 0x414b40
mov dword [esp + 0x5c], 1
mov cl, byte [eax + 0x37]
and cl, 2
neg cl
lea eax, [ebx + 0x60]
sbb ecx, ecx
and ecx, eax
mov eax, dword [ebx + 0xa8]
test eax, eax
mov dword [esp + 0x30], ecx
jne 0x414b61
xor ecx, ecx
jmp 0x414b63
mov ecx, dword [eax]
test ecx, ecx
mov dword [esp + 0x20], ecx
mov dword [esp + 0x1c], eax
je 0x414fd8
mov eax, dword [esp + 0x20]
mov edi, dword [eax + 8]
xor esi, esi
cmp dword [ebx + 0xe0], esi
jne 0x414b99
mov eax, dword [ebx + 0xe4]
push esi
push esi
push eax
call fcn.00439e3e
add esp, 0xc
mov dword [esp + 0x18], eax
push dword [esp + 0x30]
lea eax, [esp + 0x38]
push eax
lea eax, [esp + 0x2c]
push eax
push dword [ebx + 8]
lea eax, [esp + 0x78]
push edi
push eax
push ebx
call fcn.004144d6
fld dword [esp + 0x94]
sub esp, 0xc
fstp dword [esp + 8]
lea eax, [esp + 0x18c]
fld dword [esp + 0xa0]
fstp dword [esp + 4]
fld dword [esp + 0xa0]
fstp dword [esp]
push eax
call fcn.00403233
mov eax, dword [ebx + 8]
mov al, byte [eax + 0x36]
add esp, 0x10
cmp al, 3
je 0x414c60
test al, al
movss xmm0, dword [esp + 0x98]
mulss xmm0, dword [0x57f93c]
movss dword [esp + 0x60], xmm0
jne 0x414c32
mov ax, word [ebx + 0xdc]
add ax, 0x8000
movzx eax, ax
cvtsi2ss xmm1, eax
mulss xmm1, dword [0x57f940]
addss xmm1, xmm0
movss dword [esp + 0x60], xmm1
fld dword [esp + 0x60]
push ecx
lea eax, [esp + 0x1c4]
fstp dword [esp]
push eax
call fcn.004030d7
lea eax, [esp + 0x1c8]
push eax
lea eax, [esp + 0x18c]
push eax
push eax
call fcn.00410ef1
add esp, 0x14
lea eax, [esp + 0x180]
push eax
lea eax, [esp + 0xc4]
push eax
lea eax, [esp + 0x148]
push eax
call sub.d3dx9_33.dll_D3DXMatrixMultiply
movss xmm0, dword [esp + 0x88]
movss dword [esp + 0x170], xmm0
movss xmm0, dword [esp + 0x8c]
movss dword [esp + 0x174], xmm0
movss xmm0, dword [esp + 0x90]
lea eax, [esp + 0x140]
movss dword [esp + 0x178], xmm0
movss xmm0, dword [0x55b520]
push eax
movss dword [esp + 0x180], xmm0
call fcn.00410f24
mov dword [esp + 0x68], eax
mov eax, dword [ebx + 0xe0]
cmp eax, esi
pop ecx
je 0x414d0e
mov ecx, dword [ebx + 8]
test byte [ecx + 0x37], 8
jne 0x414d05
movss xmm0, dword [edi + 0x58]
mulss xmm0, dword [edi + 4]
mov ecx, eax
cvtsi2ss xmm1, dword [ecx + 4]
jmp 0x414d00
subss xmm0, xmm1
comiss xmm0, xmm1
jae 0x414cfc
call fcn.0043d20e
mov dword [esp + 0x18], eax
test byte [0x6ab898], 2
jne 0x414d2d
or dword [0x6ab898], 2
mov edx, str.constantcolour
call fcn.0040df5e
mov dword [0x6ab890], eax
mov eax, dword [esp + 0x18]
mov esi, dword [eax + 8]
mov eax, dword [eax + 4]
imul eax, eax, 0x38
add eax, esi
cmp esi, eax
jae 0x414e2e
lea edi, [esi + 0x1c]
push dword [0x6ab890]
mov eax, esi
call fcn.00439eff
test eax, eax
je 0x414dca
movzx eax, byte [esp + 0xb8]
movss xmm0, dword [0x57f8f0]
cvtsi2ss xmm1, eax
movzx eax, byte [esp + 0xb9]
mulss xmm1, xmm0
movss dword [esp + 0x44], xmm1
cvtsi2ss xmm1, eax
movzx eax, byte [esp + 0xba]
mulss xmm1, xmm0
movss dword [esp + 0x48], xmm1
cvtsi2ss xmm1, eax
movzx eax, byte [esp + 0xbb]
mulss xmm1, xmm0
movss dword [esp + 0x4c], xmm1
cvtsi2ss xmm1, eax
lea eax, [esp + 0x44]
push eax
push dword [0x6ab890]
mulss xmm1, xmm0
mov eax, esi
movss dword [esp + 0x58], xmm1
call fcn.00439f27
push 0
push 6
pop eax
call fcn.0043a253
pop ecx
push dword [esp + 0x5c]
push 5
pop eax
call fcn.0043a253
pop ecx
push 1
push 3
pop eax
call fcn.0043a253
pop ecx
push 3
push 4
pop eax
call fcn.0043a253
mov eax, dword [ebx + 8]
test byte [eax + 0x37], 4
pop ecx
je 0x414e0c
xor eax, eax
push 0
inc eax
call fcn.0043a253
pop ecx
mov eax, dword [esp + 0x64]
mov dword [edi - 4], eax
mov eax, dword [esp + 0x18]
mov ecx, dword [eax + 4]
imul ecx, ecx, 0x38
add ecx, dword [eax + 8]
add esi, 0x38
add edi, 0x38
cmp esi, ecx
jb 0x414d47
push dword [esp + 0x64]
mov eax, dword [esp + 0x1c]
call fcn.00439de3
mov edx, dword [ebx + 0x24]
mov ecx, dword [ebp + 0xc]
mov eax, dword [ecx]
inc edx
push edx
push dword [esp + 0x1c]
call dword [eax + 8]
lea eax, [esp + 0x1c]
call fcn.0049774e
cmp dword [esp + 0x20], 0
jne 0x414b73
jmp 0x414fd8
mov ecx, dword [0x69e78c]
cmp ecx, esi
jne 0x414faf
mov eax, dword [ebx + 0xd4]
imul eax, eax, 6
push esi
push eax
lea eax, [esp + 0x4c]
push eax
xor eax, eax
mov dword [esp + 0x50], esi
mov dword [esp + 0x54], esi
mov dword [esp + 0x58], esi
mov dword [esp + 0x5c], esi
mov dword [esp + 0x60], esi
mov dword [esp + 0x64], esi
call fcn.0050c175
test al, al
je 0x414fd8
mov eax, dword [ebx + 8]
mov cl, byte [eax + 0x37]
and cl, 2
neg cl
lea eax, [ebx + 0x60]
sbb ecx, ecx
and ecx, eax
mov eax, dword [ebx + 0xa8]
cmp eax, esi
mov dword [esp + 0x30], ecx
jne 0x414ece
xor ecx, ecx
jmp 0x414ed0
mov ecx, dword [eax]
cmp ecx, esi
mov dword [esp + 0x20], ecx
mov dword [esp + 0x1c], eax
je 0x414f7e
push dword [esp + 0x30]
lea eax, [esp + 0x38]
push eax
lea eax, [esp + 0x2c]
push eax
push dword [ebx + 8]
mov eax, dword [esp + 0x30]
push dword [eax + 8]
lea eax, [esp + 0x7c]
push eax
push ebx
call fcn.004144d6
mov edi, 0x5951c8
mov eax, dword [edi]
mov ecx, dword [esp + 0x54]
lea eax, [esp + eax*8 + 0x68]
fld dword [eax]
push 4
fstp dword [ecx]
pop esi
fld dword [eax + 4]
add ecx, esi
fstp dword [ecx]
add ecx, esi
mov dword [esp + 0x54], ecx
lea eax, [esp + 0xb8]
lea ecx, [esp + 0x44]
call fcn.0040f3a5
mov eax, dword [edi]
mov ecx, dword [esp + 0x50]
imul eax, eax, 0xc
lea eax, [esp + eax + 0x88]
add edi, esi
fld dword [eax]
fstp dword [ecx]
add ecx, esi
fld dword [eax + 4]
fstp dword [ecx]
add ecx, esi
fld dword [eax + 8]
fstp dword [ecx]
add ecx, esi
cmp edi, 0x5951e0
mov dword [esp + 0x50], ecx
jl 0x414f08
lea eax, [esp + 0x1c]
call fcn.0049774e
cmp dword [esp + 0x20], 0
jne 0x414ee0
xor esi, esi
push esi
push dword [ebx + 0xa4]
lea eax, [esp + 0x4c]
push eax
xor al, al
call fcn.0040f3ca
lea esi, [esp + 0x44]
call fcn.0050c233
test al, al
je 0x414fd8
push dword [ebx + 0x24]
mov ecx, dword [ebp + 0xc]
push dword [esp + 0x4c]
mov eax, dword [ecx]
call dword [eax + 8]
jmp 0x414fd8
mov al, byte [eax + 0x37]
and al, 2
neg al
lea esi, [ebx + 0x60]
sbb eax, eax
and eax, esi
push eax
lea eax, [esp + 0x38]
push eax
lea eax, [esp + 0x2c]
push eax
lea eax, [ebx + 0xa8]
push eax
push dword [ebp + 0xc]
push ebx
call ecx
add esp, 0x18
mov eax, dword [esp + 0x40]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8