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

Disassembly:
mov eax, dword [esp + 8]
sub esp, 0x28
movups xmm0, xmmword [eax + 0x54]
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 0x40c4c1
nop dword [eax]
lea eax, [ecx - 1]
inc edx
and ecx, eax
jne 0x40c4a0
cmp edx, 1
je 0x40c4c1
test esi, 0x4000
je 0x40c4c1
and esi, 0xffffbfff
or esi, 0x8000
xor edx, edx
mov ecx, esi
test esi, esi
je 0x40c6d0
nop dword [eax]
lea eax, [ecx - 1]
inc edx
and ecx, eax
jne 0x40c4d0
cmp edx, 1
jbe 0x40c6d0
cmp edi, 8
jne 0x40c4f1
cmp esi, 0x20000
sete al
jmp 0x40c50f
test edi, edi
je 0x40c50d
cmp edi, 2
je 0x40c50d
cmp edi, 1
je 0x40c50d
cmp edi, 3
je 0x40c50d
cmp edi, 4
je 0x40c50d
xor al, al
jmp 0x40c50f
mov al, 1
test al, al
je 0x40c51d
mov esi, 0x20000
jmp 0x40c485
push 0x20
push 0
push 0x3e
call fcn.0040f5b0
mov ebx, dword [esp + 0x48]
push 0x20
push 1
push dword [ebx + 0xc]
test esi, 0x8000
je 0x40c612
mov ebp, eax
mov dword [esp + 0x64], edx
call fcn.004097b0
mov edi, eax
add esp, 0x18
test edi, edi
je 0x40c56a
mov eax, dword [esp + 0x4c]
push edi
mov dword [edi + 0x30], ebp
push ebx
mov dword [edi + 0x34], eax
call fcn.0041d130
add esp, 8
add edi, 0x18
push edi
push dword [esp + 0x48]
push 0x1ac
push ebx
call fcn.0041cdb0
push 0
push 2
push eax
push ebx
call fcn.00410260
push eax
push ebx
call fcn.0041d500
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.0040c460
add esp, 0x48
mov dword [esp + 0x4c], eax
push 0
push dword [esp + 0x40]
call fcn.0041d4a0
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.0040c460
push 0
push ebx
mov esi, eax
call fcn.0041d3e0
push esi
push dword [esp + 0x80]
push ebx
call fcn.0041d200
add esp, 0x3c
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x28
ret
mov edi, eax
mov ebp, edx
call fcn.004097b0
mov esi, eax
add esp, 0x18
test esi, esi
je 0x40c637
push esi
mov dword [esi + 0x30], edi
push ebx
mov dword [esi + 0x34], ebp
call fcn.0041d130
add esp, 8
add esi, 0x18
mov ebp, dword [esp + 0x44]
push esi
push ebp
push 0x1ac
push ebx
call fcn.0041cdb0
push 0
push 1
push eax
push ebx
call fcn.00410260
push eax
push ebx
call fcn.0041d500
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.0040c460
add esp, 0x48
mov ebp, eax
push 0
push dword [esp + 0x40]
call fcn.0041d4a0
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.0040c460
push 0
push ebx
mov esi, eax
call fcn.0041d3e0
push esi
push ebp
push ebx
call fcn.0041d200
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, 0xed
je 0x40c7a0
cmp esi, 0x200
je 0x40c764
mov ebx, dword [esp + 0x3c]
cmp esi, 0x10000
je 0x40c747
mov eax, 0x10a
push eax
push dword [ebx + 0xc]
mov dword [esp + 0x18], eax
call fcn.00409600
add esp, 8
mov ebp, eax
push esi
push edi
call fcn.0040bab0
add esp, 8
test al, al
je 0x40c9b5
push edi
push dword [esp + 0x48]
xorps xmm0, xmm0
push ebx
movups xmmword [esp + 0x34], xmm0
call fcn.0040bb80
mov dword [esp + 0x40], eax
add esp, 0xc
movups xmm0, xmmword [esp + 0x28]
movups xmmword [ebp + 0x54], xmm0
jmp 0x40ca1d
push 0x19d
push dword [ebx + 0xc]
call fcn.00409600
mov ecx, 0x19d
add esp, 8
mov ebp, eax
mov dword [esp + 0x10], ecx
jmp 0x40c70d
push esi
push edi
call fcn.0040bab0
add esp, 8
test al, al
je 0x40c796
mov ebx, dword [esp + 0x3c]
push 0x10a
push dword [ebx + 0xc]
call fcn.00409600
mov ebp, eax
add esp, 8
mov eax, 0x10a
mov dword [esp + 0x10], eax
jmp 0x40c70d
mov ecx, 0x1a4
jmp 0x40c896
cmp esi, 0x800
jg 0x40c862
je 0x40c85b
cmp esi, 0x100
jg 0x40c813
je 0x40c809
mov eax, esi
sub eax, 2
je 0x40c7ff
cmp edi, 3
jne 0x40c7d2
mov ecx, 0x10e
jmp 0x40c896
cmp edi, 4
jne 0x40c7e1
mov ecx, 0x10d
jmp 0x40c896
push esi
push edi
call fcn.0040bab0
add esp, 8
mov ecx, 0x1cf
test al, al
mov edx, 0x10c
cmovne ecx, edx
jmp 0x40c896
mov ecx, 0x124
jmp 0x40c896
mov ecx, 0x152
jmp 0x40c896
push esi
push edi
cmp esi, 0x200
je 0x40c842
call fcn.0040baf0
add esp, 8
test al, al
je 0x40c830
mov ecx, 0xe1
jmp 0x40c896
cmp edi, 2
mov ecx, 0x107
mov eax, 0x10c
cmovne ecx, eax
jmp 0x40c896
call fcn.0040bab0
add esp, 8
mov ecx, 0x106
test al, al
mov edx, 0x1a2
cmove ecx, edx
jmp 0x40c896
mov ecx, 0x1b7
jmp 0x40c896
cmp esi, 0x10000
jg 0x40c888
je 0x40c881
push esi
push edi
call fcn.0040baf0
add esp, 8
test al, al
je 0x40c888
mov ecx, 0x196
jmp 0x40c896
mov ecx, 0x19a
jmp 0x40c896
xor ecx, ecx
cmp edi, 2
sete cl
add ecx, 0x106
mov ebx, dword [esp + 0x3c]
push ecx
mov dword [esp + 0x14], ecx
push dword [ebx + 0xc]
call fcn.00409600
mov ecx, dword [esp + 0x18]
add esp, 8
mov ebp, eax
cmp ecx, 0x10e
jne 0x40c918
mov eax, dword [esp + 0x44]
cmp byte [eax + 0x10], 2
je 0x40c8ce
push 3
push eax
push ebx
call fcn.0040f420
add esp, 0xc
push eax
xorps xmm0, xmm0
push 0x14d
push ebx
movups xmmword [esp + 0x34], xmm0
call fcn.0041cd60
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 + 0x54], xmm0
mov dword [esp + 0x64], 3
xorps xmm0, xmm0
push ebx
movups xmmword [esp + 0x44], xmm0
call fcn.004119a0
add esp, 0x1c
jmp 0x40ca10
cmp ecx, 0x10d
jne 0x40c70d
push 2
push dword [esp + 0x48]
push ebx
call fcn.00411b00
push eax
xorps xmm0, xmm0
push 0x14d
push ebx
movups xmmword [esp + 0x40], xmm0
call fcn.0041cd60
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 + 0x54], xmm0
mov dword [esp + 0x70], 3
xorps xmm0, xmm0
push ebx
movups xmmword [esp + 0x50], xmm0
call fcn.004119a0
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 + 0x64], xmm0
mov dword [esp + 0x80], 2
xorps xmm0, xmm0
push ebx
movups xmmword [esp + 0x60], xmm0
call fcn.004119a0
mov dword [esp + 0x6c], eax
add esp, 0x38
movups xmm0, xmmword [esp + 0x28]
movups xmmword [ebp + 0x74], xmm0
jmp 0x40ca1d
push esi
push edi
call fcn.0040baf0
add esp, 8
xorps xmm0, xmm0
movups xmmword [esp + 0x28], xmm0
push edi
push dword [esp + 0x48]
push ebx
test al, al
je 0x40c9e8
call fcn.0040bc80
mov dword [esp + 0x40], eax
add esp, 0xc
movups xmm0, xmmword [esp + 0x28]
movups xmmword [ebp + 0x54], xmm0
jmp 0x40ca1d
call fcn.0040bc20
mov dword [esp + 0x40], eax
movups xmm0, xmmword [esp + 0x34]
push edi
push dword [esp + 0x54]
movups xmmword [ebp + 0x54], xmm0
push ebx
xorps xmm0, xmm0
movups xmmword [esp + 0x40], xmm0
call fcn.0040bc80
add esp, 0x18
mov dword [esp + 0x34], eax
movups xmm0, xmmword [esp + 0x28]
movups xmmword [ebp + 0x64], xmm0
mov edx, dword [ebp + 0x18]
imul eax, edx, 0x64
mov cl, byte [eax + 0x51987e]
test cl, cl
je 0x40ca4a
mov edx, dword [esp + 0x40]
movzx ecx, cl
imul eax, dword [edx + 0x18], 0x64
movzx eax, byte [eax + 0x51987e]
mov eax, dword [edx + eax*4 + 0x30]
mov dword [ebp + ecx*4 + 0x30], eax
mov edx, dword [ebp + 0x18]
mov eax, dword [esp + 0x10]
cmp eax, 0xe1
jne 0x40ca7d
imul eax, edx, 0x64
movzx eax, byte [eax + 0x51986d]
mov dword [ebp + eax*4 + 0x30], 0
imul eax, dword [ebp + 0x18], 0x64
mov edx, dword [ebx + 0xc]
movzx ecx, byte [eax + 0x519872]
mov eax, dword [edx + 0x188]
jmp 0x40cae7
cmp eax, 0x124
jne 0x40caac
imul eax, edx, 0x64
movzx eax, byte [eax + 0x51986d]
mov dword [ebp + eax*4 + 0x30], 0
imul eax, dword [ebp + 0x18], 0x64
mov edx, dword [ebx + 0xc]
movzx ecx, byte [eax + 0x519872]
mov eax, dword [edx + 0x174]
jmp 0x40cae7
cmp esi, 0x100
jne 0x40caeb
push dword [esp + 0x14]
call fcn.0040f680
imul ecx, edx, 0x64
push 0
movzx ecx, byte [ecx + 0x51986d]
mov dword [ebp + ecx*4 + 0x30], 0
push dword [eax + 8]
call fcn.0045e230
add esp, 0xc
imul ecx, dword [ebp + 0x18], 0x64
movzx ecx, byte [ecx + 0x519872]
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 + 0x20], eax
imul eax, dword [ebp + 0x18], 0x64
mov cl, byte [eax + 0x519881]
test cl, cl
je 0x40cb37
cmp byte [eax + 0x519882], 0
jbe 0x40cb37
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 + 0x519882]
mov eax, dword [esp + 0x54]
mov dword [ebp + ecx*4 + 0x30], eax
imul eax, dword [ebp + 0x18], 0x64
cmp byte [eax + 0x519871], 0
jbe 0x40cd11
mov eax, dword [esp + 0x14]
push 0
mov dword [esp + 0x50], 0
push dword [eax + 0x20]
call fcn.0045e230
mov ecx, dword [esp + 0x1c]
add esp, 8
mov dword [esp + 0x18], eax
nop dword [eax]
cmp dword [ecx + 0x18], 0
je case.default.0x40cba3
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]
dec eax
mov dword [esp + 0x1c], edx
cmp eax, 4
ja case.default.0x40cba3
jmp dword [eax*4 + 0x40ce40]
push ecx
call fcn.00416e40
add esp, 4
mov dword [esp + 0x24], eax
test eax, eax
je case.default.0x40cba3
mov edx, dword [esp + 0x1c]
test edx, edx
je case.default.0x40cba3
mov ecx, dword [esp + 0x14]
cmp dword [ecx + 0x18], 2
je 0x40cc22
movups xmm0, xmmword [ecx + 0x34]
psrldq xmm0, 0xc
movd eax, xmm0
mov eax, dword [eax]
cmp dword [eax + 0xc], 5
jne 0x40cc22
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.00407890
imul eax, dword [esp + 0x30]
add esp, 0xc
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x14], ecx
add dword [esp + 0x4c], eax
jmp 0x40cb70
push dword [edx + 0x20]
call fcn.0045ecc0
add esp, 4
test eax, eax
je case.default.0x40cba3
mov eax, dword [esp + 0x1c]
push dword [eax + 0x20]
call fcn.0045ecc0
mov ecx, dword [esp + 0x20]
dec eax
imul eax, dword [esp + 0x28]
add esp, 4
mov dword [esp + 0x14], ecx
add dword [esp + 0x18], eax
jmp 0x40cb70
test edx, edx
je case.default.0x40cba3
mov eax, dword [ecx + 0x34]
mov edx, dword [edx + 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, dword [esp + 0x1c]
mov dword [esp + 0x4c], edx
mov dword [esp + 0x14], ecx
jmp 0x40cb70
mov eax, dword [ecx + 0x30]
mov ecx, dword [eax]
mov eax, dword [ecx + 0xc]
sub eax, 4
je 0x40cccd
sub eax, 1
jne case.default.0x40cba3
mov eax, edi
sub eax, 5
je 0x40ccab
sub eax, 2
je 0x40ccbc
sub eax, 2
jne case.default.0x40cba3
mov eax, dword [esp + 0x4c]
add eax, dword [ecx + 0x38]
mov edx, dword [esp + 0x18]
mov dword [esp + 0x4c], eax
jmp 0x40ccef
mov eax, dword [esp + 0x4c]
add eax, dword [ecx + 0x40]
mov edx, dword [esp + 0x18]
mov dword [esp + 0x4c], eax
jmp 0x40ccef
cmp dword [ecx + 0x18], 0x1e6
jne case.default.0x40cba3
mov eax, dword [esp + 0x4c]
mov edx, dword [esp + 0x18]
mov dword [esp + 0x4c], eax
jmp 0x40ccef
mov dword [esp + 0x4c], 0
or edx, 0xffffffff
imul eax, dword [ebp + 0x18], 0x64
mov ecx, dword [esp + 0x4c]
movzx eax, byte [eax + 0x519871]
mov dword [ebp + eax*4 + 0x30], ecx
imul eax, dword [ebp + 0x18], 0x64
movzx eax, byte [eax + 0x519872]
mov dword [ebp + eax*4 + 0x30], edx
push dword [esp + 0x20]
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.00407af0
add esp, 0x10
cmp edi, 4
jne 0x40cd8e
cmp dword [esp + 0x10], 0x10d
je 0x40cd8e
push dword [esp + 0x20]
movzx eax, byte [ebp + 0x30]
push eax
push ebx
call fcn.00410370
mov edi, eax
mov eax, dword [esp + 0x2c]
shr eax, 3
push eax
push 4
push dword [esp + 0x58]
push ebx
call fcn.0040bb20
push eax
push ebx
call fcn.0041d500
push ebp
push ebx
call fcn.0041d130
push 0
push ebx
call fcn.0041d3e0
push edi
lea eax, [ebp + 0x1c]
push eax
push ebx
call fcn.0041d200
mov ebp, eax
add esp, 0x40
mov dword [esp + 0x4c], ebp
jmp 0x40cd9c
push ebp
push ebx
call fcn.0041d130
mov ebp, dword [esp + 0x54]
add esp, 8
mov eax, dword [esp + 0x40]
cmp byte [eax + 0x2d], 1
jne 0x40ce33
cmp esi, 0x10000
je 0x40ce19
cmp esi, 0x4000
je 0x40ce19
cmp esi, 0x8000
je 0x40ce19
movzx esi, byte [ebp + 0x11]
push esi
push 0
push 0
call fcn.0040f5b0
push esi
push 1
push dword [ebx + 0xc]
mov edi, eax
mov dword [esp + 0x58], edx
call fcn.004097b0
mov esi, eax
add esp, 0x18
test esi, esi
je 0x40ce01
mov eax, dword [esp + 0x40]
push esi
mov dword [esi + 0x30], edi
push ebx
mov dword [esi + 0x34], eax
call fcn.0041d130
add esp, 8
add esi, 0x18
push esi
push ebp
push 0x12d
push ebx
call fcn.0041cdb0
add esp, 0x10
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x28
ret
cmp byte [ebp + 0x11], 1
je 0x40ce33
push ebp
push 0x1a
push ebx
call fcn.0041cd60
add esp, 0xc
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x28
ret
mov eax, dword [esp + 0x4c]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x28
ret