Function at 0x40ca50
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 0x40cab7
nop dword [eax]
lea eax, [ecx - 1]
inc edx
and ecx, eax
jne 0x40ca90
cmp edx, 1
jne 0x40caa3
mov ecx, esi
xor edx, edx
jmp 0x40cac3
test esi, 0x4000
je 0x40cab7
and esi, 0xffffbfff
or esi, 0x8000
xor edx, edx
mov ecx, esi
test esi, esi
je 0x40ccbd
lea eax, [ecx - 1]
inc edx
and ecx, eax
jne 0x40cac3
cmp edx, 1
jbe 0x40ccbd
cmp edi, 8
jne 0x40cae4
cmp esi, 0x20000
sete al
jmp 0x40cb02
test edi, edi
je 0x40cb00
cmp edi, 2
je 0x40cb00
cmp edi, 1
je 0x40cb00
cmp edi, 3
je 0x40cb00
cmp edi, 4
je 0x40cb00
xor al, al
jmp 0x40cb02
mov al, 1
test al, al
je 0x40cb10
mov esi, 0x20000
jmp 0x40ca75
push 0x20
push 0
push 0x3e
call fcn.0040fdb0
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.00409c50
add esp, 0xc
test esi, 0x8000
je 0x40cc0b
mov edi, eax
test edi, edi
je 0x40cb63
mov eax, dword [esp + 0x4c]
push edi
mov dword [edi + 0x30], ebp
push ebx
mov dword [edi + 0x34], eax
call fcn.0041dcb0
add esp, 8
add edi, 0x18
push edi
push dword [esp + 0x48]
push 0x1c5
push ebx
call fcn.0041d920
push 0
push 2
push eax
push ebx
call fcn.00410a00
push eax
push ebx
call fcn.0041e090
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.0040ca50
add esp, 0x48
mov dword [esp + 0x4c], eax
push 0
push dword [esp + 0x40]
call fcn.0041e030
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.0040ca50
push 0
push ebx
mov esi, eax
call fcn.0041df70
push esi
push dword [esp + 0x80]
push ebx
call fcn.0041dd80
add esp, 0x3c
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x28
ret
mov esi, eax
test esi, esi
je 0x40cc24
push esi
mov dword [esi + 0x30], ebp
push ebx
mov dword [esi + 0x34], edi
call fcn.0041dcb0
add esp, 8
add esi, 0x18
mov ebp, dword [esp + 0x44]
push esi
push ebp
push 0x1c5
push ebx
call fcn.0041d920
push 0
push 1
push eax
push ebx
call fcn.00410a00
push eax
push ebx
call fcn.0041e090
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.0040ca50
add esp, 0x48
mov ebp, eax
push 0
push dword [esp + 0x40]
call fcn.0041e030
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.0040ca50
push 0
push ebx
mov esi, eax
call fcn.0041df70
push esi
push ebp
push ebx
call fcn.0041dd80
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 0x40cd5d
cmp esi, 0x200
je 0x40cd3a
mov eax, dword [esp + 0x3c]
cmp esi, 0x10000
je 0x40cd33
mov ebx, 0x11e
push ebx
push dword [eax + 0x10]
call fcn.00409aa0
mov ebp, eax
add esp, 8
push esi
push edi
call fcn.0040c0e0
add esp, 8
test al, al
je 0x40cf81
push edi
push dword [esp + 0x48]
xorps xmm0, xmm0
push dword [esp + 0x44]
movups xmmword [esp + 0x34], xmm0
call fcn.0040c1b0
mov dword [esp + 0x40], eax
add esp, 0xc
movups xmm0, xmmword [esp + 0x28]
movups xmmword [ebp + 0x58], xmm0
jmp 0x40cfef
mov ebx, 0x1b9
jmp 0x40cce8
push esi
push edi
call fcn.0040c0e0
add esp, 8
test al, al
je 0x40cd53
mov eax, dword [esp + 0x3c]
mov ebx, 0x11e
jmp 0x40cce8
mov ebx, 0x1c2
jmp 0x40ce53
cmp esi, 0x800
jg 0x40ce1f
je 0x40ce18
cmp esi, 0x100
jg 0x40cdd0
je 0x40cdc6
mov eax, esi
sub eax, 2
je 0x40cdbc
cmp edi, 3
jne 0x40cd8f
mov ebx, 0x122
jmp 0x40ce53
cmp edi, 4
jne 0x40cd9e
mov ebx, 0x121
jmp 0x40ce53
push esi
push edi
call fcn.0040c0e0
add esp, 8
mov ebx, 0x1f1
test al, al
mov ecx, 0x120
cmovne ebx, ecx
jmp 0x40ce53
mov ebx, 0x13d
jmp 0x40ce53
mov ebx, 0x16c
jmp 0x40ce53
push esi
push edi
cmp esi, 0x200
je 0x40cdff
call fcn.0040c120
add esp, 8
test al, al
je 0x40cded
mov ebx, 0xf1
jmp 0x40ce53
cmp edi, 2
mov ebx, 0x120
mov eax, 0x11b
cmove ebx, eax
jmp 0x40ce53
call fcn.0040c0e0
add esp, 8
mov ebx, 0x11a
test al, al
mov ecx, 0x1c0
cmove ebx, ecx
jmp 0x40ce53
mov ebx, 0x1d6
jmp 0x40ce53
cmp esi, 0x10000
jg 0x40ce45
je 0x40ce3e
push esi
push edi
call fcn.0040c120
add esp, 8
test al, al
je 0x40ce45
mov ebx, 0x1b0
jmp 0x40ce53
mov ebx, 0x1b6
jmp 0x40ce53
xor ebx, ebx
cmp edi, 2
sete bl
add ebx, 0x11a
mov eax, dword [esp + 0x3c]
push ebx
push dword [eax + 0x10]
call fcn.00409aa0
mov ecx, ebx
add esp, 8
mov ebp, eax
cmp ecx, 0x122
jne 0x40ced8
mov eax, dword [esp + 0x44]
cmp byte [eax + 0x10], 2
je 0x40ce88
push 3
push eax
push dword [esp + 0x44]
call fcn.0040fc10
add esp, 0xc
push eax
push 0x167
push dword [esp + 0x44]
xorps xmm0, xmm0
movups xmmword [esp + 0x34], xmm0
call fcn.0041d8d0
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.00412190
add esp, 0x1c
jmp 0x40cfe2
cmp ecx, 0x121
jne 0x40ccf6
push 2
push dword [esp + 0x48]
push dword [esp + 0x44]
call fcn.00412300
push eax
push 0x167
push dword [esp + 0x50]
xorps xmm0, xmm0
movups xmmword [esp + 0x40], xmm0
call fcn.0041d8d0
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.00412190
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.00412190
mov dword [esp + 0x6c], eax
add esp, 0x38
movups xmm0, xmmword [esp + 0x28]
movups xmmword [ebp + 0x78], xmm0
jmp 0x40cfef
push esi
push edi
call fcn.0040c120
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 0x40cfb7
call fcn.0040c2b0
mov dword [esp + 0x40], eax
add esp, 0xc
movups xmm0, xmmword [esp + 0x28]
movups xmmword [ebp + 0x58], xmm0
jmp 0x40cfef
call fcn.0040c250
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.0040c2b0
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 0x40d01c
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 0x40d051
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 0x40d0bf
cmp eax, 0x13d
jne 0x40d084
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 0x40d0bf
cmp esi, 0x100
jne 0x40d0c3
push dword [esp + 0x14]
call fcn.0040fe80
imul ecx, edx, 0x64
push 0
movzx ecx, byte [ecx + 0x52382d]
mov dword [ebp + ecx*4 + 0x30], 0
push dword [eax + 8]
call fcn.0045d0e0
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 0x40d10f
cmp byte [eax + 0x523842], 0
jbe 0x40d10f
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 0x40d2ce
mov eax, dword [esp + 0x14]
push 0
mov dword [esp + 0x50], 0
push dword [eax + 0x20]
call fcn.0045d0e0
mov ecx, dword [esp + 0x1c]
add esp, 8
mov dword [esp + 0x10], eax
cmp dword [ecx + 0x18], 0
je case.default.0x40d17a
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.0x40d17a
jmp dword [eax*4 + 0x40d448]
push ecx
call fcn.004176e0
add esp, 4
mov dword [esp + 0x20], eax
test eax, eax
je 0x40d25d
mov esi, dword [esp + 0x24]
test esi, esi
je 0x40d25d
mov ecx, dword [esp + 0x14]
cmp dword [ecx + 0x18], 2
je 0x40d1fb
movups xmm0, xmmword [ecx + 0x34]
psrldq xmm0, 0xc
movd eax, xmm0
mov eax, dword [eax]
cmp dword [eax + 0xc], 5
jne 0x40d1fb
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.00407d60
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 0x40d141
push dword [esi + 0x20]
call fcn.0045db80
add esp, 4
test eax, eax
je 0x40d25d
push dword [esi + 0x20]
call fcn.0045db80
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 0x40d141
mov esi, dword [esp + 0x24]
test esi, esi
je 0x40d296
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 0x40d141
mov esi, dword [esp + 0x18]
jmp case.default.0x40d17a
mov eax, dword [ecx + 0x30]
mov ecx, dword [eax]
mov eax, dword [ecx + 0xc]
sub eax, 4
je 0x40d375
sub eax, 1
jne 0x40d296
mov eax, edi
sub eax, 5
je 0x40d363
sub eax, 2
je 0x40d351
sub eax, 2
je 0x40d363
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.00407f50
add esp, 0x10
cmp edi, 4
jne 0x40d399
cmp ebx, 0x121
je 0x40d399
push dword [esp + 0x1c]
movzx eax, byte [ebp + 0x30]
mov ebx, dword [esp + 0x40]
push eax
push ebx
call fcn.00410b10
mov edi, eax
mov eax, dword [esp + 0x28]
shr eax, 3
push eax
push 4
push dword [esp + 0x58]
push ebx
call fcn.0040c150
push eax
push ebx
call fcn.0041e090
push ebp
push ebx
call fcn.0041dcb0
push 0
push ebx
call fcn.0041df70
push edi
lea eax, [ebp + 0x1c]
push eax
push ebx
call fcn.0041dd80
add esp, 0x40
mov ebp, eax
jmp 0x40d3ab
mov eax, dword [esp + 0x4c]
mov esi, edx
add eax, dword [ecx + 0x40]
mov dword [esp + 0x4c], eax
jmp 0x40d2a8
mov eax, dword [esp + 0x4c]
mov esi, edx
add eax, dword [ecx + 0x38]
mov dword [esp + 0x4c], eax
jmp 0x40d2a8
cmp dword [ecx + 0x18], 0x20a
mov esi, edx
jne case.default.0x40d17a
mov eax, dword [esp + 0x4c]
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x10]
mov dword [esp + 0x10], eax
jmp 0x40d2a8
mov ebx, dword [esp + 0x3c]
push ebp
push ebx
call fcn.0041dcb0
mov ebp, dword [esp + 0x54]
add esp, 8
mov eax, dword [esp + 0x40]
cmp byte [eax + 0x2d], 1
jne 0x40d43e
cmp esi, 0x10000
je 0x40d42a
cmp esi, 0x4000
je 0x40d42a
cmp esi, 0x8000
je 0x40d42a
movzx esi, byte [ebp + 0x11]
push esi
push 0
push 0
call fcn.0040fdb0
push esi
push 1
push dword [ebx + 0x10]
mov edi, eax
mov dword [esp + 0x58], edx
call fcn.00409c50
mov esi, eax
add esp, 0x18
test esi, esi
je 0x40d410
mov eax, dword [esp + 0x40]
push esi
mov dword [esi + 0x30], edi
push ebx
mov dword [esi + 0x34], eax
call fcn.0041dcb0
add esp, 8
add esi, 0x18
push esi
push ebp
push 0x146
push ebx
call fcn.0041d920
add esp, 0x10
mov ebp, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x28
ret
cmp byte [ebp + 0x11], 1
je 0x40d43e
push ebp
push 0x1a
push ebx
call fcn.0041d8d0
add esp, 0xc
mov ebp, eax
pop edi
pop esi
mov eax, ebp
pop ebp
pop ebx
add esp, 0x28
ret