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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x8c
push ebx
push esi
mov esi, ecx
push edi
mov edi, dword [esi + 0x8c]
mov dword [esp + 0x1c], edi
test edi, edi
jg 0x4a7146
call fcn.0049226c
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0x18]
mov edi, eax
mov dword [esp + 0x1c], eax
xor ebx, ebx
cmp dword [esi + 0x18], edi
jle 0x4a7154
mov al, 1
cmp dword [esi + 0x1c], edi
jg 0x4a7156
mov al, bl
cmp byte [esi + 0x98], bl
je 0x4a7164
mov cl, 1
test al, al
jne 0x4a7166
mov cl, bl
mov byte [esp + 0xf], cl
cmp byte [esi + 0x99], bl
je 0x4a7178
test al, al
mov al, 1
jne 0x4a717a
mov al, bl
mov byte [esp + 0xe], al
mov dword [esp + 0x18], 2
jmp 0x4a7190
mov al, byte [esp + 0xe]
mov cl, byte [esp + 0xf]
test cl, cl
je 0x4a71a1
mov byte [esp + 0x14], 1
cmp byte [esi + 0x2f6], bl
je 0x4a71a5
mov byte [esp + 0x14], bl
test al, al
je 0x4a71b6
mov byte [esp + 0x10], 1
cmp byte [esi + 0x1f6], bl
je 0x4a71ba
mov byte [esp + 0x10], bl
lea eax, [esp + 0x68]
mov ecx, esi
push eax
call fcn.0049255e
mov ecx, dword [eax]
mov dword [esp + 0x20], ecx
mov ecx, dword [eax + 4]
mov dword [esp + 0x24], ecx
mov ecx, dword [eax + 8]
mov eax, dword [eax + 0xc]
mov dword [esp + 0x2c], eax
mov eax, dword [esi + 0x78]
mov dword [esp + 0x28], ecx
test eax, eax
je 0x4a71ed
mov eax, dword [eax + 8]
jmp 0x4a71ef
mov eax, ebx
test eax, eax
je 0x4a7340
mov eax, dword [esi + 0x78]
test eax, eax
je 0x4a7203
mov eax, dword [eax + 8]
jmp 0x4a7205
mov eax, ebx
add eax, 0x10
lea ecx, [esp + 0x20]
push eax
call fcn.00474342
test al, al
jne 0x4a7340
cmp byte [esp + 0xf], bl
je 0x4a7257
cmp byte [esp + 0x14], bl
jne 0x4a7253
mov eax, dword [esi + 0x78]
test eax, eax
je 0x4a7232
mov eax, dword [eax + 8]
jmp 0x4a7234
mov eax, ebx
cmp dword [eax + 0x10], ebx
jl 0x4a7253
mov ecx, dword [esi + 0x78]
test ecx, ecx
je 0x4a7245
mov ecx, dword [ecx + 8]
jmp 0x4a7247
mov ecx, ebx
mov eax, dword [ecx + 0x18]
add eax, dword [ecx + 0x10]
cmp eax, dword [esp + 0x28]
jle 0x4a7257
mov cl, 1
jmp 0x4a7259
mov cl, bl
mov byte [esp + 0x14], cl
cmp byte [esp + 0xe], bl
je 0x4a72a8
mov al, byte [esp + 0x10]
test al, al
jne 0x4a7298
mov eax, dword [esi + 0x78]
test eax, eax
je 0x4a7277
mov eax, dword [eax + 8]
jmp 0x4a7279
mov eax, ebx
cmp dword [eax + 0x14], ebx
jl 0x4a7298
mov edx, dword [esi + 0x78]
test edx, edx
je 0x4a728a
mov edx, dword [edx + 8]
jmp 0x4a728c
mov edx, ebx
mov eax, dword [edx + 0x1c]
add eax, dword [edx + 0x14]
cmp eax, dword [esp + 0x2c]
jle 0x4a72a8
mov eax, dword [esi + 0x18]
sub eax, edi
mov byte [esp + 0x10], 1
mov dword [esp + 0x28], eax
jmp 0x4a72ac
mov byte [esp + 0x10], bl
test cl, cl
je 0x4a72b9
mov eax, dword [esi + 0x1c]
sub eax, edi
mov dword [esp + 0x2c], eax
mov eax, dword [esi + 0x78]
test eax, eax
je 0x4a72c5
mov eax, dword [eax + 8]
jmp 0x4a72c7
mov eax, ebx
add eax, 0x10
lea ecx, [esp + 0x20]
push eax
call fcn.00474342
test al, al
jne 0x4a7340
cmp byte [esp + 0xf], bl
je 0x4a7305
cmp byte [esp + 0x14], bl
jne 0x4a72fe
mov ecx, dword [esi + 0x78]
test ecx, ecx
je 0x4a72f0
mov ecx, dword [ecx + 8]
jmp 0x4a72f2
mov ecx, ebx
mov eax, dword [ecx + 0x18]
add eax, dword [ecx + 0x10]
cmp eax, dword [esp + 0x28]
jle 0x4a7305
mov byte [esp + 0x14], 1
jmp 0x4a7309
mov byte [esp + 0x14], bl
cmp byte [esp + 0xe], bl
je 0x4a7338
mov al, byte [esp + 0x10]
test al, al
jne 0x4a7331
mov ecx, dword [esi + 0x78]
test ecx, ecx
je 0x4a7323
mov ecx, dword [ecx + 8]
jmp 0x4a7325
mov ecx, ebx
mov eax, dword [ecx + 0x1c]
add eax, dword [ecx + 0x14]
cmp eax, dword [esp + 0x2c]
jle 0x4a7338
mov byte [esp + 0x10], 1
jmp 0x4a7348
mov al, bl
mov byte [esp + 0x10], al
jmp 0x4a7344
mov al, byte [esp + 0x10]
test al, al
je 0x4a7351
mov eax, dword [esi + 0x18]
sub eax, edi
mov dword [esp + 0x28], eax
cmp byte [esp + 0x14], bl
je 0x4a7360
mov eax, dword [esi + 0x1c]
sub eax, edi
mov dword [esp + 0x2c], eax
mov eax, dword [esi + 0x78]
test eax, eax
je 0x4a736c
mov eax, dword [eax + 8]
jmp 0x4a736e
mov eax, ebx
test eax, eax
je 0x4a73d7
mov ecx, dword [esi + 0x78]
test ecx, ecx
je 0x4a737e
mov ecx, dword [ecx + 8]
jmp 0x4a7380
mov ecx, ebx
mov eax, dword [ecx + 0x10]
mov dword [esp + 0x58], eax
mov eax, dword [ecx + 0x14]
mov dword [esp + 0x5c], eax
mov eax, dword [ecx + 0x18]
mov dword [esp + 0x60], eax
mov eax, dword [ecx + 0x1c]
lea ecx, [esi + 0xa0]
mov dword [esp + 0x64], eax
lea eax, [esp + 0x20]
push eax
call fcn.00491084
mov eax, dword [esi + 0x78]
test eax, eax
je 0x4a73b8
mov eax, dword [eax + 8]
jmp 0x4a73ba
mov eax, ebx
add eax, 0x10
lea ecx, [esp + 0x58]
push eax
call fcn.004d5f6c
test al, al
jne 0x4a73e7
dec dword [esp + 0x18]
jns 0x4a7188
jmp 0x4a73e7
lea eax, [esp + 0x20]
push eax
lea ecx, [esi + 0xa0]
call fcn.00491084
mov eax, dword [esi + 0x78]
xorps xmm0, xmm0
movdqu xmmword [esp + 0x40], xmm0
test eax, eax
je 0x4a73fc
mov eax, dword [eax + 8]
jmp 0x4a73fe
mov eax, ebx
test eax, eax
je 0x4a7452
mov eax, dword [esi + 0x78]
test eax, eax
je 0x4a740e
mov ecx, dword [eax + 8]
jmp 0x4a7410
mov ecx, ebx
mov eax, dword [esi + 0x78]
test eax, eax
je 0x4a741c
mov edi, dword [eax + 8]
jmp 0x4a741e
mov edi, ebx
lea eax, [esp + 0x78]
push eax
call fcn.0049255e
push eax
push edi
lea eax, [esp + 0x90]
push eax
lea ecx, [esi + 0xa0]
call fcn.00490db1
mov ecx, dword [eax + 8]
mov edx, dword [eax]
mov edi, dword [eax + 4]
mov eax, dword [eax + 0xc]
mov dword [esp + 0x48], ecx
mov dword [esp + 0x4c], eax
jmp 0x4a745a
mov edi, dword [esp + 0x44]
mov edx, dword [esp + 0x40]
push dword [esp + 0x1c]
neg edx
lea ecx, [esi + 0x210]
push dword [esp + 0x2c]
mov dword [esp + 0x20], edx
neg edi
push dword [esp + 0x34]
push ebx
call fcn.00490e53
movd xmm0, dword [esp + 0x48]
xorps xmm2, xmm2
cvtdq2pd xmm3, xmm0
push ecx
lea ecx, [esi + 0x210]
call fcn.004a5a97
movd xmm0, dword [esp + 0x28]
movd xmm1, dword [esp + 0x18]
cvtdq2pd xmm3, xmm0
push ecx
lea ecx, [esi + 0x210]
cvtdq2pd xmm2, xmm1
call fcn.004a5be4
movd xmm0, dword [esi + 0x90]
xor ecx, ecx
mov eax, dword [esi + 0x284]
cvtdq2pd xmm0, xmm0
add eax, 8
movsd qword [esi + 0x2c0], xmm0
xchg dword [eax], ecx
cmp byte [esp + 0xf], bl
je 0x4a74eb
mov eax, dword [esp + 0x18]
xor ecx, ecx
cmp byte [esp + 0x14], cl
cmove eax, ecx
mov dword [esp + 0x18], eax
push dword [esp + 0x2c]
lea ecx, [esi + 0x110]
push dword [esp + 0x20]
push ebx
push dword [esp + 0x34]
call fcn.00490e53
movd xmm0, dword [esp + 0x4c]
xorps xmm2, xmm2
cvtdq2pd xmm3, xmm0
push ecx
lea ecx, [esi + 0x110]
call fcn.004a5a97
movd xmm0, dword [esp + 0x2c]
movd xmm1, edi
cvtdq2pd xmm3, xmm0
push ecx
lea ecx, [esi + 0x110]
cvtdq2pd xmm2, xmm1
call fcn.004a5be4
movd xmm0, dword [esi + 0x94]
xor ecx, ecx
mov eax, dword [esi + 0x184]
cvtdq2pd xmm0, xmm0
add eax, 8
movsd qword [esi + 0x1c0], xmm0
xchg dword [eax], ecx
cmp byte [esp + 0xe], bl
je 0x4a756a
xor eax, eax
cmp byte [esp + 0x10], al
cmove edi, eax
push dword [esp + 0x14]
lea ecx, [esi + 0x210]
mov eax, dword [ecx]
call dword [eax + 0x28]
push dword [esp + 0x10]
lea ecx, [esi + 0x110]
mov eax, dword [ecx]
call dword [eax + 0x28]
mov eax, dword [esi + 0x78]
test eax, eax
je 0x4a7594
mov eax, dword [eax + 8]
jmp 0x4a7596
mov eax, ebx
test eax, eax
je 0x4a75f2
push ecx
push ecx
mov ecx, dword [esp + 0x20]
mov eax, esp
mov dword [eax], ecx
mov ecx, esi
mov dword [eax + 4], edi
lea eax, [esp + 0x58]
push eax
call fcn.004a6e1e
mov eax, dword [esi + 0x78]
test eax, eax
je 0x4a75bf
mov eax, dword [eax + 8]
jmp 0x4a75c1
mov eax, ebx
mov edx, dword [esp + 0x50]
mov ecx, dword [esp + 0x54]
cmp dword [eax + 0x10], edx
jne 0x4a75d3
cmp dword [eax + 0x14], ecx
je 0x4a75f2
push ecx
push ecx
mov eax, esp
mov dword [eax], edx
mov dword [eax + 4], ecx
mov eax, dword [esi + 0x78]
test eax, eax
je 0x4a75e6
mov ebx, dword [eax + 8]
mov ecx, ebx
call fcn.0049106c
jmp 0x4a767f
mov edx, dword [esp + 0x18]
mov eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x4c]
sub eax, edx
sub ecx, edi
mov dword [esp + 0x30], edx
cmp dword [esp + 0x28], eax
mov dword [esp + 0x34], edi
cmovl eax, dword [esp + 0x28]
cmp dword [esp + 0x2c], ecx
mov dword [esp + 0x38], eax
lea eax, [esp + 0x30]
cmovl ecx, dword [esp + 0x2c]
mov dword [esp + 0x3c], ecx
lea ecx, [esi + 0x7c]
push eax
call fcn.0040699e
test al, al
je 0x4a7669
mov eax, dword [esp + 0x30]
lea ecx, [esp + 0x30]
mov dword [esi + 0x7c], eax
mov eax, dword [esp + 0x34]
mov dword [esi + 0x80], eax
mov eax, dword [esp + 0x38]
mov dword [esi + 0x84], eax
mov eax, dword [esp + 0x3c]
mov dword [esi + 0x88], eax
mov eax, dword [esi]
push ecx
mov ecx, esi
call dword [eax + 0xac]
lea ecx, [esi + 0x280]
call fcn.00442b33
lea ecx, [esi + 0x180]
call fcn.00442b33
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret