Function at 0x40c9c0
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 0x40ca27
nop dword [eax]
lea eax, [ecx - 1]
inc edx
and ecx, eax
jne 0x40ca00
cmp edx, 1
jne 0x40ca13
mov ecx, esi
xor edx, edx
jmp 0x40ca33
test esi, 0x4000
je 0x40ca27
and esi, 0xffffbfff
or esi, 0x8000
xor edx, edx
mov ecx, esi
test esi, esi
je 0x40cc2d
lea eax, [ecx - 1]
inc edx
and ecx, eax
jne 0x40ca33
cmp edx, 1
jbe 0x40cc2d
cmp edi, 8
jne 0x40ca54
cmp esi, 0x20000
sete al
jmp 0x40ca72
test edi, edi
je 0x40ca70
cmp edi, 2
je 0x40ca70
cmp edi, 1
je 0x40ca70
cmp edi, 3
je 0x40ca70
cmp edi, 4
je 0x40ca70
xor al, al
jmp 0x40ca72
mov al, 1
test al, al
je 0x40ca80
mov esi, 0x20000
jmp 0x40c9e5
push 0x20
push 0
push 0x3e
call fcn.0040fd20
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.00409be0
add esp, 0xc
test esi, 0x8000
je 0x40cb7b
mov edi, eax
test edi, edi
je 0x40cad3
mov eax, dword [esp + 0x4c]
push edi
mov dword [edi + 0x30], ebp
push ebx
mov dword [edi + 0x34], eax
call fcn.0041dc20
add esp, 8
add edi, 0x18
push edi
push dword [esp + 0x48]
push 0x1c5
push ebx
call fcn.0041d890
push 0
push 2
push eax
push ebx
call fcn.00410970
push eax
push ebx
call fcn.0041e000
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.0040c9c0
add esp, 0x48
mov dword [esp + 0x4c], eax
push 0
push dword [esp + 0x40]
call fcn.0041dfa0
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.0040c9c0
push 0
push ebx
mov esi, eax
call fcn.0041dee0
push esi
push dword [esp + 0x80]
push ebx
call fcn.0041dcf0
add esp, 0x3c
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x28
ret
mov esi, eax
test esi, esi
je 0x40cb94
push esi
mov dword [esi + 0x30], ebp
push ebx
mov dword [esi + 0x34], edi
call fcn.0041dc20
add esp, 8
add esi, 0x18
mov ebp, dword [esp + 0x44]
push esi
push ebp
push 0x1c5
push ebx
call fcn.0041d890
push 0
push 1
push eax
push ebx
call fcn.00410970
push eax
push ebx
call fcn.0041e000
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.0040c9c0
add esp, 0x48
mov ebp, eax
push 0
push dword [esp + 0x40]
call fcn.0041dfa0
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.0040c9c0
push 0
push ebx
mov esi, eax
call fcn.0041dee0
push esi
push ebp
push ebx
call fcn.0041dcf0
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, 0x100
je 0x40cccd
cmp esi, 0x200
je 0x40ccaa
mov eax, dword [esp + 0x3c]
cmp esi, 0x10000
je 0x40cca3
mov ebx, 0x11e
push ebx
push dword [eax + 0x10]
call fcn.00409a30
mov ebp, eax
add esp, 8
push esi
push edi
call fcn.0040c060
add esp, 8
test al, al
je 0x40cef1
push edi
push dword [esp + 0x48]
xorps xmm0, xmm0
push dword [esp + 0x44]
movups xmmword [esp + 0x34], xmm0
call fcn.0040c130
mov dword [esp + 0x40], eax
add esp, 0xc
movups xmm0, xmmword [esp + 0x28]
movups xmmword [ebp + 0x58], xmm0
jmp 0x40cf5f
mov ebx, 0x1b9
jmp 0x40cc58
push esi
push edi
call fcn.0040c060
add esp, 8
test al, al
je 0x40ccc3
mov eax, dword [esp + 0x3c]
mov ebx, 0x11e
jmp 0x40cc58
mov ebx, 0x1c2
jmp 0x40cdc3
cmp esi, 0x800
jg 0x40cd8f
je 0x40cd88
cmp esi, 0x100
jg 0x40cd40
je 0x40cd36
mov eax, esi
sub eax, 2
je 0x40cd2c
cmp edi, 3
jne 0x40ccff
mov ebx, 0x122
jmp 0x40cdc3
cmp edi, 4
jne 0x40cd0e
mov ebx, 0x121
jmp 0x40cdc3
push esi
push edi
call fcn.0040c060
add esp, 8
mov ebx, 0x1f1
test al, al
mov ecx, 0x120
cmovne ebx, ecx
jmp 0x40cdc3
mov ebx, 0x13d
jmp 0x40cdc3
mov ebx, 0x16c
jmp 0x40cdc3
push esi
push edi
cmp esi, 0x200
je 0x40cd6f
call fcn.0040c0a0
add esp, 8
test al, al
je 0x40cd5d
mov ebx, 0xf1
jmp 0x40cdc3
cmp edi, 2
mov ebx, 0x120
mov eax, 0x11b
cmove ebx, eax
jmp 0x40cdc3
call fcn.0040c060
add esp, 8
mov ebx, 0x11a
test al, al
mov ecx, 0x1c0
cmove ebx, ecx
jmp 0x40cdc3
mov ebx, 0x1d6
jmp 0x40cdc3
cmp esi, 0x10000
jg 0x40cdb5
je 0x40cdae
push esi
push edi
call fcn.0040c0a0
add esp, 8
test al, al
je 0x40cdb5
mov ebx, 0x1b0
jmp 0x40cdc3
mov ebx, 0x1b6
jmp 0x40cdc3
xor ebx, ebx
cmp edi, 2
sete bl
add ebx, 0x11a
mov eax, dword [esp + 0x3c]
push ebx
push dword [eax + 0x10]
call fcn.00409a30
mov ecx, ebx
add esp, 8
mov ebp, eax
cmp ecx, 0x122
jne 0x40ce48
mov eax, dword [esp + 0x44]
cmp byte [eax + 0x10], 2
je 0x40cdf8
push 3
push eax
push dword [esp + 0x44]
call fcn.0040fb80
add esp, 0xc
push eax
push 0x167
push dword [esp + 0x44]
xorps xmm0, xmm0
movups xmmword [esp + 0x34], xmm0
call fcn.0041d840
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.00412100
add esp, 0x1c
jmp 0x40cf52
cmp ecx, 0x121
jne 0x40cc66
push 2
push dword [esp + 0x48]
push dword [esp + 0x44]
call fcn.00412270
push eax
push 0x167
push dword [esp + 0x50]
xorps xmm0, xmm0
movups xmmword [esp + 0x40], xmm0
call fcn.0041d840
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.00412100
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.00412100
mov dword [esp + 0x6c], eax
add esp, 0x38
movups xmm0, xmmword [esp + 0x28]
movups xmmword [ebp + 0x78], xmm0
jmp 0x40cf5f
push esi
push edi
call fcn.0040c0a0
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 0x40cf27
call fcn.0040c230
mov dword [esp + 0x40], eax
add esp, 0xc
movups xmm0, xmmword [esp + 0x28]
movups xmmword [ebp + 0x58], xmm0
jmp 0x40cf5f
call fcn.0040c1d0
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.0040c230
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 + 0x52383e]
test cl, cl
je 0x40cf8c
mov edx, dword [esp + 0x40]
movzx ecx, cl
imul eax, dword [edx + 0x18], 0x64
movzx eax, byte [eax + 0x52383e]
mov eax, dword [edx + eax*4 + 0x30]
mov dword [ebp + ecx*4 + 0x30], eax
mov edx, dword [ebp + 0x18]
mov eax, ebx
cmp eax, 0xf1
jne 0x40cfc1
imul eax, edx, 0x64
movzx eax, byte [eax + 0x52382d]
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 + 0x523832]
mov eax, dword [edx + 0x190]
jmp 0x40d02f
cmp eax, 0x13d
jne 0x40cff4
imul eax, edx, 0x64
movzx eax, byte [eax + 0x52382d]
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 + 0x523832]
mov eax, dword [edx + 0x17c]
jmp 0x40d02f
cmp esi, 0x100
jne 0x40d033
push dword [esp + 0x14]
call fcn.0040fdf0
imul ecx, edx, 0x64
push 0
movzx ecx, byte [ecx + 0x52382d]
mov dword [ebp + ecx*4 + 0x30], 0
push dword [eax + 8]
call fcn.0045d060
add esp, 0xc
imul ecx, dword [ebp + 0x18], 0x64
movzx ecx, byte [ecx + 0x523832]
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 + 0x523841]
test cl, cl
je 0x40d07f
cmp byte [eax + 0x523842], 0
jbe 0x40d07f
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 + 0x523842]
mov eax, dword [esp + 0x54]
mov dword [ebp + ecx*4 + 0x30], eax
imul eax, dword [ebp + 0x18], 0x64
cmp byte [eax + 0x523831], 0
jbe 0x40d23e
mov eax, dword [esp + 0x14]
push 0
mov dword [esp + 0x50], 0
push dword [eax + 0x20]
call fcn.0045d060
mov ecx, dword [esp + 0x1c]
add esp, 8
mov dword [esp + 0x10], eax
cmp dword [ecx + 0x18], 0
je case.default.0x40d0ea
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.0x40d0ea
jmp dword [eax*4 + 0x40d3b8]
push ecx
call fcn.00417650
add esp, 4
mov dword [esp + 0x20], eax
test eax, eax
je 0x40d1cd
mov esi, dword [esp + 0x24]
test esi, esi
je 0x40d1cd
mov ecx, dword [esp + 0x14]
cmp dword [ecx + 0x18], 2
je 0x40d16b
movups xmm0, xmmword [ecx + 0x34]
psrldq xmm0, 0xc
movd eax, xmm0
mov eax, dword [eax]
cmp dword [eax + 0xc], 5
jne 0x40d16b
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.00407cf0
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 0x40d0b1
push dword [esi + 0x20]
call fcn.0045db00
add esp, 4
test eax, eax
je 0x40d1cd
push dword [esi + 0x20]
call fcn.0045db00
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 0x40d0b1
mov esi, dword [esp + 0x24]
test esi, esi
je 0x40d206
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 0x40d0b1
mov esi, dword [esp + 0x18]
jmp case.default.0x40d0ea
mov eax, dword [ecx + 0x30]
mov ecx, dword [eax]
mov eax, dword [ecx + 0xc]
sub eax, 4
je 0x40d2e5
sub eax, 1
jne 0x40d206
mov eax, edi
sub eax, 5
je 0x40d2d3
sub eax, 2
je 0x40d2c1
sub eax, 2
je 0x40d2d3
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 + 0x523831]
mov dword [ebp + eax*4 + 0x30], ecx
imul eax, dword [ebp + 0x18], 0x64
mov ecx, dword [esp + 0x10]
movzx eax, byte [eax + 0x523832]
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.00407ee0
add esp, 0x10
cmp edi, 4
jne 0x40d309
cmp ebx, 0x121
je 0x40d309
push dword [esp + 0x1c]
movzx eax, byte [ebp + 0x30]
mov ebx, dword [esp + 0x40]
push eax
push ebx
call fcn.00410a80
mov edi, eax
mov eax, dword [esp + 0x28]
shr eax, 3
push eax
push 4
push dword [esp + 0x58]
push ebx
call fcn.0040c0d0
push eax
push ebx
call fcn.0041e000
push ebp
push ebx
call fcn.0041dc20
push 0
push ebx
call fcn.0041dee0
push edi
lea eax, [ebp + 0x1c]
push eax
push ebx
call fcn.0041dcf0
add esp, 0x40
mov ebp, eax
jmp 0x40d31b
mov eax, dword [esp + 0x4c]
mov esi, edx
add eax, dword [ecx + 0x40]
mov dword [esp + 0x4c], eax
jmp 0x40d218
mov eax, dword [esp + 0x4c]
mov esi, edx
add eax, dword [ecx + 0x38]
mov dword [esp + 0x4c], eax
jmp 0x40d218
cmp dword [ecx + 0x18], 0x20a
mov esi, edx
jne case.default.0x40d0ea
mov eax, dword [esp + 0x4c]
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x10]
mov dword [esp + 0x10], eax
jmp 0x40d218
mov ebx, dword [esp + 0x3c]
push ebp
push ebx
call fcn.0041dc20
mov ebp, dword [esp + 0x54]
add esp, 8
mov eax, dword [esp + 0x40]
cmp byte [eax + 0x2d], 1
jne 0x40d3ae
cmp esi, 0x10000
je 0x40d39a
cmp esi, 0x4000
je 0x40d39a
cmp esi, 0x8000
je 0x40d39a
movzx esi, byte [ebp + 0x11]
push esi
push 0
push 0
call fcn.0040fd20
push esi
push 1
push dword [ebx + 0x10]
mov edi, eax
mov dword [esp + 0x58], edx
call fcn.00409be0
mov esi, eax
add esp, 0x18
test esi, esi
je 0x40d380
mov eax, dword [esp + 0x40]
push esi
mov dword [esi + 0x30], edi
push ebx
mov dword [esi + 0x34], eax
call fcn.0041dc20
add esp, 8
add esi, 0x18
push esi
push ebp
push 0x146
push ebx
call fcn.0041d890
add esp, 0x10
mov ebp, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x28
ret
cmp byte [ebp + 0x11], 1
je 0x40d3ae
push ebp
push 0x1a
push ebx
call fcn.0041d840
add esp, 0xc
mov ebp, eax
pop edi
pop esi
mov eax, ebp
pop ebp
pop ebx
add esp, 0x28
ret