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

Disassembly:
mov eax, dword [esp + 8]
sub esp, 0x28
movups xmm0, xmmword [eax + 0x58]
push ebx
push ebp
psrldq xmm0, 0xc
movd eax, xmm0
push esi
mov esi, dword [esp + 0x48]
push edi
mov edi, dword [esp + 0x48]
mov ebx, dword [eax]
mov ebp, dword [ebx + 0xc]
xor eax, eax
mov ecx, esi
cmp ebp, 1
cmove eax, ebx
xor edx, edx
mov dword [esp + 0x14], eax
test esi, esi
je 0x40ca07
nop dword [eax]
lea eax, [ecx - 1]
inc edx
and ecx, eax
jne 0x40c9e0
cmp edx, 1
jne 0x40c9f3
mov ecx, esi
xor edx, edx
jmp 0x40ca13
test esi, 0x4000
je 0x40ca07
and esi, 0xffffbfff
or esi, 0x8000
xor edx, edx
mov ecx, esi
test esi, esi
je 0x40cc0d
lea eax, [ecx - 1]
inc edx
and ecx, eax
jne 0x40ca13
cmp edx, 1
jbe 0x40cc0d
cmp edi, 8
jne 0x40ca34
cmp esi, 0x20000
sete al
jmp 0x40ca52
test edi, edi
je 0x40ca50
cmp edi, 2
je 0x40ca50
cmp edi, 1
je 0x40ca50
cmp edi, 3
je 0x40ca50
cmp edi, 4
je 0x40ca50
xor al, al
jmp 0x40ca52
mov al, 1
test al, al
je 0x40ca60
mov esi, 0x20000
jmp 0x40c9c5
push 0x20
push 0
push 0x3e
call fcn.0040fcf0
mov ebx, dword [esp + 0x48]
add esp, 0xc
mov ebp, eax
mov edi, edx
mov dword [esp + 0x4c], edi
mov eax, dword [ebx + 0x10]
push 0x20
push 1
push eax
call fcn.00409bc0
add esp, 0xc
test esi, 0x8000
je 0x40cb5b
mov edi, eax
test edi, edi
je 0x40cab3
mov eax, dword [esp + 0x4c]
push edi
mov dword [edi + 0x30], ebp
push ebx
mov dword [edi + 0x34], eax
call fcn.0041dbe0
add esp, 8
add edi, 0x18
push edi
push dword [esp + 0x48]
push 0x1c5
push ebx
call fcn.0041d850
push 0
push 2
push eax
push ebx
call fcn.00410940
push eax
push ebx
call fcn.0041dfc0
mov ebp, dword [esp + 0x80]
mov ebx, dword [esp + 0x7c]
mov edi, dword [esp + 0x78]
push ebp
push ebx
push edi
push 0x8000
push 8
push dword [esp + 0x80]
push dword [esp + 0x80]
push dword [esp + 0x80]
call fcn.0040c9a0
add esp, 0x48
mov dword [esp + 0x4c], eax
push 0
push dword [esp + 0x40]
call fcn.0041df60
push ebp
push ebx
mov ebx, dword [esp + 0x4c]
and esi, 0xffff7fff
push edi
push esi
push 8
push dword [esp + 0x60]
push dword [esp + 0x60]
push ebx
call fcn.0040c9a0
push 0
push ebx
mov esi, eax
call fcn.0041dea0
push esi
push dword [esp + 0x80]
push ebx
call fcn.0041dcb0
add esp, 0x3c
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x28
ret
mov esi, eax
test esi, esi
je 0x40cb74
push esi
mov dword [esi + 0x30], ebp
push ebx
mov dword [esi + 0x34], edi
call fcn.0041dbe0
add esp, 8
add esi, 0x18
mov ebp, dword [esp + 0x44]
push esi
push ebp
push 0x1c5
push ebx
call fcn.0041d850
push 0
push 1
push eax
push ebx
call fcn.00410940
push eax
push ebx
call fcn.0041dfc0
mov ebx, dword [esp + 0x80]
mov edi, dword [esp + 0x7c]
mov esi, dword [esp + 0x78]
push ebx
push edi
push esi
push 0x10000
push 8
push ebp
push dword [esp + 0x80]
push dword [esp + 0x80]
call fcn.0040c9a0
add esp, 0x48
mov ebp, eax
push 0
push dword [esp + 0x40]
call fcn.0041df60
push ebx
mov ebx, dword [esp + 0x48]
push edi
push esi
push 0x20000
push 8
push dword [esp + 0x60]
push dword [esp + 0x60]
push ebx
call fcn.0040c9a0
push 0
push ebx
mov esi, eax
call fcn.0041dea0
push esi
push ebp
push ebx
call fcn.0041dcb0
add esp, 0x3c
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x28
ret
mov eax, dword [esp + 0x40]
mov eax, dword [eax + 0x18]
sub eax, 0xff
je 0x40ccad
cmp esi, 0x200
je 0x40cc8a
mov eax, dword [esp + 0x3c]
cmp esi, 0x10000
je 0x40cc83
mov ebx, 0x11d
push ebx
push dword [eax + 0x10]
call fcn.00409a10
mov ebp, eax
add esp, 8
push esi
push edi
call fcn.0040c040
add esp, 8
test al, al
je 0x40ced1
push edi
push dword [esp + 0x48]
xorps xmm0, xmm0
push dword [esp + 0x44]
movups xmmword [esp + 0x34], xmm0
call fcn.0040c110
mov dword [esp + 0x40], eax
add esp, 0xc
movups xmm0, xmmword [esp + 0x28]
movups xmmword [ebp + 0x58], xmm0
jmp 0x40cf3f
mov ebx, 0x1b8
jmp 0x40cc38
push esi
push edi
call fcn.0040c040
add esp, 8
test al, al
je 0x40cca3
mov eax, dword [esp + 0x3c]
mov ebx, 0x11d
jmp 0x40cc38
mov ebx, 0x1c1
jmp 0x40cda3
cmp esi, 0x800
jg 0x40cd6f
je 0x40cd68
cmp esi, 0x100
jg 0x40cd20
je 0x40cd16
mov eax, esi
sub eax, 2
je 0x40cd0c
cmp edi, 3
jne 0x40ccdf
mov ebx, 0x121
jmp 0x40cda3
cmp edi, 4
jne 0x40ccee
mov ebx, 0x120
jmp 0x40cda3
push esi
push edi
call fcn.0040c040
add esp, 8
mov ebx, 0x1f0
test al, al
mov ecx, 0x11f
cmovne ebx, ecx
jmp 0x40cda3
mov ebx, 0x13c
jmp 0x40cda3
mov ebx, 0x16b
jmp 0x40cda3
push esi
push edi
cmp esi, 0x200
je 0x40cd4f
call fcn.0040c080
add esp, 8
test al, al
je 0x40cd3d
mov ebx, 0xf0
jmp 0x40cda3
cmp edi, 2
mov ebx, 0x11f
mov eax, 0x11a
cmove ebx, eax
jmp 0x40cda3
call fcn.0040c040
add esp, 8
mov ebx, 0x119
test al, al
mov ecx, 0x1bf
cmove ebx, ecx
jmp 0x40cda3
mov ebx, 0x1d5
jmp 0x40cda3
cmp esi, 0x10000
jg 0x40cd95
je 0x40cd8e
push esi
push edi
call fcn.0040c080
add esp, 8
test al, al
je 0x40cd95
mov ebx, 0x1af
jmp 0x40cda3
mov ebx, 0x1b5
jmp 0x40cda3
xor ebx, ebx
cmp edi, 2
sete bl
add ebx, 0x119
mov eax, dword [esp + 0x3c]
push ebx
push dword [eax + 0x10]
call fcn.00409a10
mov ecx, ebx
add esp, 8
mov ebp, eax
cmp ecx, 0x121
jne 0x40ce28
mov eax, dword [esp + 0x44]
cmp byte [eax + 0x10], 2
je 0x40cdd8
push 3
push eax
push dword [esp + 0x44]
call fcn.0040fb50
add esp, 0xc
push eax
push 0x167
push dword [esp + 0x44]
xorps xmm0, xmm0
movups xmmword [esp + 0x34], xmm0
call fcn.0041d800
mov dword [esp + 0x40], eax
lea eax, [esp + 0x58]
movups xmm0, xmmword [esp + 0x34]
push 1
push eax
push dword [esp + 0x58]
movups xmmword [ebp + 0x58], xmm0
mov dword [esp + 0x64], 3
push dword [esp + 0x54]
xorps xmm0, xmm0
movups xmmword [esp + 0x44], xmm0
call fcn.004120d0
add esp, 0x1c
jmp 0x40cf32
cmp ecx, 0x120
jne 0x40cc46
push 2
push dword [esp + 0x48]
push dword [esp + 0x44]
call fcn.00412240
push eax
push 0x167
push dword [esp + 0x50]
xorps xmm0, xmm0
movups xmmword [esp + 0x40], xmm0
call fcn.0041d800
mov dword [esp + 0x4c], eax
lea eax, [esp + 0x64]
movups xmm0, xmmword [esp + 0x40]
push 1
push eax
push dword [esp + 0x64]
movups xmmword [ebp + 0x58], xmm0
mov dword [esp + 0x70], 3
push dword [esp + 0x60]
xorps xmm0, xmm0
movups xmmword [esp + 0x50], xmm0
call fcn.004120d0
mov dword [esp + 0x5c], eax
lea eax, [esp + 0x74]
movups xmm0, xmmword [esp + 0x50]
push 1
push eax
push dword [esp + 0x74]
movups xmmword [ebp + 0x68], xmm0
mov dword [esp + 0x80], 2
push dword [esp + 0x70]
xorps xmm0, xmm0
movups xmmword [esp + 0x60], xmm0
call fcn.004120d0
mov dword [esp + 0x6c], eax
add esp, 0x38
movups xmm0, xmmword [esp + 0x28]
movups xmmword [ebp + 0x78], xmm0
jmp 0x40cf3f
push esi
push edi
call fcn.0040c080
add esp, 8
xorps xmm0, xmm0
movups xmmword [esp + 0x28], xmm0
push edi
push dword [esp + 0x48]
push dword [esp + 0x44]
test al, al
je 0x40cf07
call fcn.0040c210
mov dword [esp + 0x40], eax
add esp, 0xc
movups xmm0, xmmword [esp + 0x28]
movups xmmword [ebp + 0x58], xmm0
jmp 0x40cf3f
call fcn.0040c1b0
mov dword [esp + 0x40], eax
movups xmm0, xmmword [esp + 0x34]
push edi
push dword [esp + 0x54]
movups xmmword [ebp + 0x58], xmm0
push dword [esp + 0x50]
xorps xmm0, xmm0
movups xmmword [esp + 0x40], xmm0
call fcn.0040c210
add esp, 0x18
mov dword [esp + 0x34], eax
movups xmm0, xmmword [esp + 0x28]
movups xmmword [ebp + 0x68], xmm0
mov edx, dword [ebp + 0x18]
imul eax, edx, 0x64
mov cl, byte [eax + 0x5237e6]
test cl, cl
je 0x40cf6c
mov edx, dword [esp + 0x40]
movzx ecx, cl
imul eax, dword [edx + 0x18], 0x64
movzx eax, byte [eax + 0x5237e6]
mov eax, dword [edx + eax*4 + 0x30]
mov dword [ebp + ecx*4 + 0x30], eax
mov edx, dword [ebp + 0x18]
mov eax, ebx
cmp eax, 0xf0
jne 0x40cfa1
imul eax, edx, 0x64
movzx eax, byte [eax + 0x5237d5]
mov dword [ebp + eax*4 + 0x30], 0
mov eax, dword [esp + 0x3c]
mov edx, dword [eax + 0x10]
imul eax, dword [ebp + 0x18], 0x64
movzx ecx, byte [eax + 0x5237da]
mov eax, dword [edx + 0x190]
jmp 0x40d00f
cmp eax, 0x13c
jne 0x40cfd4
imul eax, edx, 0x64
movzx eax, byte [eax + 0x5237d5]
mov dword [ebp + eax*4 + 0x30], 0
mov eax, dword [esp + 0x3c]
mov edx, dword [eax + 0x10]
imul eax, dword [ebp + 0x18], 0x64
movzx ecx, byte [eax + 0x5237da]
mov eax, dword [edx + 0x17c]
jmp 0x40d00f
cmp esi, 0x100
jne 0x40d013
push dword [esp + 0x14]
call fcn.0040fdc0
imul ecx, edx, 0x64
push 0
movzx ecx, byte [ecx + 0x5237d5]
mov dword [ebp + ecx*4 + 0x30], 0
push dword [eax + 8]
call fcn.0045cf80
add esp, 0xc
imul ecx, dword [ebp + 0x18], 0x64
movzx ecx, byte [ecx + 0x5237da]
mov dword [ebp + ecx*4 + 0x30], eax
mov eax, dword [esp + 0x40]
mov ecx, 0x20
movzx eax, byte [eax + 0x2d]
cmp eax, 1
cmove eax, ecx
mov dword [esp + 0x1c], eax
imul eax, dword [ebp + 0x18], 0x64
mov cl, byte [eax + 0x5237e9]
test cl, cl
je 0x40d05f
cmp byte [eax + 0x5237ea], 0
jbe 0x40d05f
mov eax, dword [esp + 0x50]
movzx ecx, cl
mov dword [ebp + ecx*4 + 0x30], eax
imul eax, dword [ebp + 0x18], 0x64
movzx ecx, byte [eax + 0x5237ea]
mov eax, dword [esp + 0x54]
mov dword [ebp + ecx*4 + 0x30], eax
imul eax, dword [ebp + 0x18], 0x64
cmp byte [eax + 0x5237d9], 0
jbe 0x40d21e
mov eax, dword [esp + 0x14]
push 0
mov dword [esp + 0x50], 0
push dword [eax + 0x20]
call fcn.0045cf80
mov ecx, dword [esp + 0x1c]
add esp, 8
mov dword [esp + 0x10], eax
cmp dword [ecx + 0x18], 0
je case.default.0x40d0ca
movups xmm0, xmmword [ecx + 0x24]
xor edx, edx
psrldq xmm0, 0xc
movd eax, xmm0
mov eax, dword [eax]
cmp dword [eax + 0xc], 1
cmove edx, eax
mov eax, dword [ecx + 0x18]
mov dword [esp + 0x24], edx
dec eax
mov edx, esi
mov dword [esp + 0x18], edx
cmp eax, 4
ja case.default.0x40d0ca
jmp dword [eax*4 + 0x40d398]
push ecx
call fcn.00417620
add esp, 4
mov dword [esp + 0x20], eax
test eax, eax
je 0x40d1ad
mov esi, dword [esp + 0x24]
test esi, esi
je 0x40d1ad
mov ecx, dword [esp + 0x14]
cmp dword [ecx + 0x18], 2
je 0x40d14b
movups xmm0, xmmword [ecx + 0x34]
psrldq xmm0, 0xc
movd eax, xmm0
mov eax, dword [eax]
cmp dword [eax + 0xc], 5
jne 0x40d14b
movups xmm0, xmmword [ecx + 0x34]
psrldq xmm0, 0xc
movd eax, xmm0
mov ecx, dword [eax]
movzx eax, byte [ecx + 0x29]
push eax
push dword [ecx + 0x34]
push dword [ecx + 0x30]
call fcn.00407cd0
imul eax, dword [esp + 0x2c]
mov ecx, esi
mov esi, dword [esp + 0x24]
add esp, 0xc
mov dword [esp + 0x14], ecx
add dword [esp + 0x4c], eax
jmp 0x40d091
push dword [esi + 0x20]
call fcn.0045da20
add esp, 4
test eax, eax
je 0x40d1ad
push dword [esi + 0x20]
call fcn.0045da20
dec eax
mov ecx, esi
imul eax, dword [esp + 0x24]
add esp, 4
mov esi, dword [esp + 0x18]
mov dword [esp + 0x14], ecx
add dword [esp + 0x10], eax
jmp 0x40d091
mov esi, dword [esp + 0x24]
test esi, esi
je 0x40d1e6
mov eax, dword [ecx + 0x34]
mov edx, dword [esi + 0x20]
lea ecx, [eax + eax*8]
mov eax, dword [edx + 0x24]
mov edx, dword [esp + 0x4c]
add edx, dword [eax + ecx*4 + 0x10]
mov ecx, esi
mov esi, dword [esp + 0x18]
mov dword [esp + 0x4c], edx
mov dword [esp + 0x14], ecx
jmp 0x40d091
mov esi, dword [esp + 0x18]
jmp case.default.0x40d0ca
mov eax, dword [ecx + 0x30]
mov ecx, dword [eax]
mov eax, dword [ecx + 0xc]
sub eax, 4
je 0x40d2c5
sub eax, 1
jne 0x40d1e6
mov eax, edi
sub eax, 5
je 0x40d2b3
sub eax, 2
je 0x40d2a1
sub eax, 2
je 0x40d2b3
mov esi, edx
mov dword [esp + 0x4c], 0
mov dword [esp + 0x10], 0xffffffff
imul eax, dword [ebp + 0x18], 0x64
mov ecx, dword [esp + 0x4c]
movzx eax, byte [eax + 0x5237d9]
mov dword [ebp + eax*4 + 0x30], ecx
imul eax, dword [ebp + 0x18], 0x64
mov ecx, dword [esp + 0x10]
movzx eax, byte [eax + 0x5237da]
mov dword [ebp + eax*4 + 0x30], ecx
push dword [esp + 0x1c]
mov eax, dword [esp + 0x5c]
lea ecx, [ebp + 0x1c]
push eax
push ecx
push ebp
mov byte [ebp + 0x30], al
mov dword [esp + 0x5c], ecx
call fcn.00407ec0
add esp, 0x10
cmp edi, 4
jne 0x40d2e9
cmp ebx, 0x120
je 0x40d2e9
push dword [esp + 0x1c]
movzx eax, byte [ebp + 0x30]
mov ebx, dword [esp + 0x40]
push eax
push ebx
call fcn.00410a50
mov edi, eax
mov eax, dword [esp + 0x28]
shr eax, 3
push eax
push 4
push dword [esp + 0x58]
push ebx
call fcn.0040c0b0
push eax
push ebx
call fcn.0041dfc0
push ebp
push ebx
call fcn.0041dbe0
push 0
push ebx
call fcn.0041dea0
push edi
lea eax, [ebp + 0x1c]
push eax
push ebx
call fcn.0041dcb0
add esp, 0x40
mov ebp, eax
jmp 0x40d2fb
mov eax, dword [esp + 0x4c]
mov esi, edx
add eax, dword [ecx + 0x40]
mov dword [esp + 0x4c], eax
jmp 0x40d1f8
mov eax, dword [esp + 0x4c]
mov esi, edx
add eax, dword [ecx + 0x38]
mov dword [esp + 0x4c], eax
jmp 0x40d1f8
cmp dword [ecx + 0x18], 0x209
mov esi, edx
jne case.default.0x40d0ca
mov eax, dword [esp + 0x4c]
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x10]
mov dword [esp + 0x10], eax
jmp 0x40d1f8
mov ebx, dword [esp + 0x3c]
push ebp
push ebx
call fcn.0041dbe0
mov ebp, dword [esp + 0x54]
add esp, 8
mov eax, dword [esp + 0x40]
cmp byte [eax + 0x2d], 1
jne 0x40d38e
cmp esi, 0x10000
je 0x40d37a
cmp esi, 0x4000
je 0x40d37a
cmp esi, 0x8000
je 0x40d37a
movzx esi, byte [ebp + 0x11]
push esi
push 0
push 0
call fcn.0040fcf0
push esi
push 1
push dword [ebx + 0x10]
mov edi, eax
mov dword [esp + 0x58], edx
call fcn.00409bc0
mov esi, eax
add esp, 0x18
test esi, esi
je 0x40d360
mov eax, dword [esp + 0x40]
push esi
mov dword [esi + 0x30], edi
push ebx
mov dword [esi + 0x34], eax
call fcn.0041dbe0
add esp, 8
add esi, 0x18
push esi
push ebp
push 0x146
push ebx
call fcn.0041d850
add esp, 0x10
mov ebp, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x28
ret
cmp byte [ebp + 0x11], 1
je 0x40d38e
push ebp
push 0x1a
push ebx
call fcn.0041d800
add esp, 0xc
mov ebp, eax
pop edi
pop esi
mov eax, ebp
pop ebp
pop ebx
add esp, 0x28
ret