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

Disassembly:
sub esp, 0x88
mov edx, dword [esp + 0x90]
push ebx
mov ebx, dword [esp + 0x9c]
push ebp
push esi
mov esi, ecx
mov eax, dword [esi + 8]
mov ecx, dword [eax + 0x3f4]
mov eax, dword [esp + 0xac]
mov eax, dword [eax]
push edi
mov edi, dword [esp + 0xa4]
mov dword [esp + 0x14], ecx
mov ecx, dword [esp + 0x9c]
push eax
add edx, edi
push ecx
mov dword [esp + 0x4c], ebx
mov dword [esp + 0x30], edx
xor ebp, ebp
mov dword [esp + 0x2c], eax
call fcn.10018ee0
mov ecx, dword [esi + 8]
mov dl, byte [ecx + 0x540]
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0xb4]
mov byte [esp + 0x20], dl
mov edx, dword [ecx + 0x53c]
lea eax, [edx + eax*2]
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0xb4]
add esp, 8
cmp byte [esp + 0x18], 2
lea edx, [edx + eax*4]
mov dword [esp + 0x58], edx
jne 0x10012036
mov edx, dword [esp + 0x48]
lea eax, [edi + ebx - 1]
mov dword [esp + 0x30], eax
xor eax, eax
mov dword [ecx + 0x6e8], eax
mov ecx, dword [esi + 8]
mov dword [ecx + 0x6ec], eax
mov ecx, dword [esp + 0xa0]
mov dword [esp + 0x5c], edx
mov edx, dword [esp + 0xb0]
mov eax, dword [edx]
push eax
push edi
push ecx
lea edx, [esp + 0x34]
push edx
mov edx, dword [esp + 0x4c]
lea eax, [esp + 0x48]
push eax
lea ecx, [esp + 0x44]
push ecx
mov ecx, dword [esp + 0x30]
push edx
mov edx, dword [esp + 0x78]
lea eax, [esp + 0x60]
push eax
push ecx
push edx
mov ecx, esi
mov dword [esp + 0x60], edi
call fcn.10010eb0
mov ebx, dword [esp + 0x44]
mov ecx, dword [esi + 8]
mov dword [esp + 0x40], ebx
add ebx, 3
and ebx, 0xfffffffc
mov edi, ebx
imul edi, dword [esp + 0xc4]
add ecx, 0x6dc
test al, al
mov byte [esp + 0x12], al
mov dword [esp + 0x34], ebx
mov dword [esp + 0x6c], ebp
mov byte [esp + 0x11], 0
mov dword [esp + 0x2c], ecx
mov dword [ecx], ebp
mov byte [esp + 0x13], 0
je 0x100120f3
mov eax, edi
imul eax, dword [esp + 0x14]
cmp eax, dword [esp + 0xb8]
jbe 0x1001221d
mov byte [esp + 0x12], 0
mov byte [esp + 0x13], 1
mov ecx, dword [esp + 0x18]
push ecx
mov ecx, dword [esp + 0x40]
mov edx, ecx
imul edx, edx, 0xaa
mov eax, 0x51eb851f
mul edx
shr edx, 5
lea eax, [edx + ecx + 0x28]
mov ecx, dword [esp + 0x30]
push eax
push ecx
mov ecx, esi
call fcn.10018660
mov ebp, eax
test ebp, ebp
jge 0x10012137
mov edx, dword [esp + 0xb0]
mov dword [edx], 0
jmp 0x100128b3
mov eax, dword [esp + 0xb8]
xor edx, edx
div dword [esp + 0x14]
mov ecx, dword [esp + 0x3c]
add ecx, 3
mov dword [esp + 0x20], ecx
cmp ecx, eax
jbe 0x10012157
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x2c]
mov ebp, dword [eax]
mov ecx, dword [ebp + 0xc]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
and dword [esp + 0x20], 0xfffffffc
call eax
add eax, dword [ebp]
cmp byte [esp + 0x18], 2
mov ecx, dword [esp + 0x30]
mov edx, dword [esp + 0x38]
push eax
mov eax, dword [esp + 0x24]
push ecx
push edx
lea ecx, [esp + 0x48]
push eax
push ecx
mov ecx, esi
jne 0x10012199
mov edx, dword [esp + 0x5c]
push edx
call fcn.1000b7a0
jmp 0x100121a3
mov edx, dword [esp + 0x6c]
push edx
call fcn.1000b930
mov ebp, eax
test ebp, ebp
jl 0x10012218
mov eax, dword [esp + 0x2c]
mov ecx, dword [eax]
push 0
push 0
push ecx
mov ecx, dword [esi + 0xc]
call fcn.100156b0
mov ebp, eax
test ebp, ebp
jl 0x10012218
mov edx, dword [esi + 8]
mov eax, dword [edx + 0x5a4]
mov ecx, dword [esp + 0x9c]
lea edi, [eax + 3]
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x3c]
and edi, 0xfffffffc
push eax
mov dword [esp + 0x38], edi
imul edi, dword [esp + 0xc8]
push ecx
call fcn.10018f40
mov edx, dword [esp + 0xb8]
mov ebx, dword [esp + 0x3c]
mov dword [edx], eax
mov eax, dword [esp + 0xa8]
add esp, 8
mov dword [esp + 0x28], 0
mov dword [esp + 0x6c], eax
jmp 0x1001221d
mov byte [esp + 0x11], 1
mov ecx, dword [esp + 0x9c]
cmp ecx, 5
mov edx, dword [esp + 0xb0]
jne 0x10012242
mov eax, dword [edx]
cmp eax, 1
jbe 0x10012242
cmp eax, dword [esp + 0x24]
jae 0x10012242
and eax, 0xfffffffe
mov dword [edx], eax
cmp byte [esp + 0x13], 0
je 0x1001225b
cmp byte [esp + 0x11], 0
je 0x1001225b
mov dword [edx], 0
jmp 0x100128b3
cmp byte [esp + 0x12], 0
jne 0x1001226d
cmp byte [esp + 0x11], 0
jne 0x1001226d
mov al, 1
jmp 0x1001226f
xor al, al
mov edx, dword [esi + 8]
mov byte [edx + 0x574], al
mov eax, dword [esi + 8]
add eax, 0x6e0
mov dword [esp + 0x1c], eax
mov dword [esp + 0x68], 0
mov dword [eax], 0
lea eax, [esp + 0xbc]
push eax
mov eax, dword [esp + 0x18]
lea edx, [esp + 0x6c]
push edx
push ecx
mov ecx, edi
imul ecx, ecx, 0xaa
push eax
mov eax, 0x51eb851f
mul ecx
mov eax, dword [esp + 0x24]
shr edx, 5
lea edx, [edx + edi + 0x28]
imul edi, eax
imul edx, eax
push edx
push edi
mov ecx, esi
call fcn.100184a0
mov ebp, eax
test ebp, ebp
jge 0x100122e6
mov eax, dword [esp + 0xb0]
mov dword [eax], 0
jmp 0x100128b3
mov ecx, dword [esp + 0x14]
mov eax, dword [esp + 0x68]
xor edx, edx
div ecx
mov edx, dword [esp + 0x1c]
push ecx
mov ecx, dword [esp + 0xc0]
push eax
push ecx
push edx
mov ecx, esi
call fcn.100185c0
cmp dword [esp + 0xbc], 1
mov ecx, dword [esi + 8]
mov ebp, eax
sete al
test ebp, ebp
mov byte [ecx + 0x6e4], al
jge 0x10012334
mov edx, dword [esp + 0xb0]
mov dword [edx], 0
jmp 0x100128b3
cmp dword [0x1007a11c], 0
mov edi, dword [esp + 0x9c]
push edi
mov ecx, esi
setne byte [esp + 0x16]
call fcn.10018e60
mov ecx, dword [esi + 8]
mov edx, dword [esp + 0x1c]
mov byte [ecx + 0x6ac], al
mov ebp, dword [edx]
mov ecx, dword [ebp + 0xc]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
call edx
mov ecx, dword [esp + 0x6c]
mov edx, dword [esp + 0xc0]
add eax, dword [ebp]
mov ebp, dword [esi + 8]
push ecx
mov ecx, dword [esp + 0xc8]
push edx
mov edx, dword [esp + 0x20]
push ecx
movzx ecx, byte [ebp + 0x574]
push edx
movzx edx, byte [ebp + 0x89]
push ecx
mov ecx, dword [esp + 0x3c]
push edx
mov edx, dword [esp + 0x58]
push ecx
push edx
push eax
push edi
mov ecx, esi
call fcn.100199f0
cmp edi, 6
jne 0x1001240d
mov eax, dword [esi + 8]
cmp byte [eax + 0x5a9], 0
je 0x1001240d
cmp byte [esp + 0x18], 2
jne 0x100123e9
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x1c]
mov eax, dword [edx]
push ecx
mov ecx, dword [esp + 0x30]
mov edx, dword [ecx]
mov ecx, dword [esp + 0x3c]
push eax
mov eax, dword [esp + 0x64]
push edx
push eax
push ecx
mov ecx, esi
call fcn.1000ba80
jmp 0x1001240d
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x1c]
mov ecx, dword [eax]
push edx
mov edx, dword [esp + 0x30]
mov eax, dword [edx]
mov edx, dword [esp + 0x3c]
push ecx
mov ecx, dword [esp + 0x64]
push eax
push ecx
push edx
mov ecx, esi
call fcn.1000bb80
mov eax, dword [esp + 0x1c]
mov ecx, dword [eax]
push 0
push 0
push ecx
mov ecx, dword [esi + 0xc]
call fcn.100156b0
mov ebp, eax
test ebp, ebp
jge 0x10012438
mov edx, dword [esp + 0xb0]
mov dword [edx], 0
jmp 0x100128b3
mov eax, dword [esi + 8]
xor edi, edi
cmp byte [eax + 0x88], 0
mov byte [esp + 0x11], 0
mov byte [esp + 0x13], 1
je 0x10012486
mov edi, dword [eax + 0x404]
movq mm0, qword [eax + 0x410]
call fcn.1002ab80
mov byte [esp + 0x11], al
mov eax, dword [esi + 8]
movq mm0, qword [eax + 0x418]
call fcn.1002ab20
mov byte [esp + 0x13], al
emms
cmp byte [esp + 0x11], 0
jne 0x100128b3
lea ecx, [esp + 0x78]
push ecx
mov ecx, esi
call fcn.100187d0
cmp dword [0x1007a120], 0
je 0x100124b1
cmp byte [esp + 0x12], 0
je 0x100124b1
cmp dword [esp + 0x9c], 4
mov byte [esp + 0x12], 1
je 0x100124b6
mov byte [esp + 0x12], 0
cmp dword [esp + 0xc4], 0
mov dword [esp + 0x20], 0
jbe 0x100128b3
mov ecx, dword [esp + 0x38]
xor eax, eax
mov dword [esp + 0x4c], eax
mov dword [esp + 0x30], eax
mov eax, ecx
neg eax
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0x14]
mov edx, ebx
imul ecx, eax
imul edx, eax
mov eax, edx
neg eax
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0xc4]
neg ecx
mov dword [esp + 0x74], edx
imul edx, eax
mov dword [esp + 0x50], edi
mov dword [esp + 0x48], ecx
mov dword [esp + 0x44], edx
cmp eax, 1
jbe 0x10012550
mov edx, dword [esi + 8]
mov eax, dword [edx + 0x430]
mov ecx, dword [esp + 0x20]
movzx edx, word [eax + ecx*2]
push edx
call fcn.1002ab00
mov edx, dword [esp + 0x24]
mov byte [esp + 0x17], al
mov eax, dword [esi + 8]
mov ecx, dword [eax + 0x434]
movzx eax, word [ecx + edx*2]
push eax
call fcn.1002ab70
add esp, 8
mov byte [esp + 0x11], al
cmp byte [esp + 0x11], 0
jne 0x10012867
mov ecx, dword [esp + 0x1c]
mov edx, dword [ecx]
mov ecx, dword [esi + 0xc]
push edx
call fcn.100156d0
mov ebp, eax
test ebp, ebp
jl 0x100128a6
mov edx, dword [esi + 8]
mov eax, dword [esp + 0x4c]
mov ecx, dword [esp + 0x30]
xor edi, edi
cmp byte [edx + 0x574], 0
mov dword [esp + 0x24], eax
mov dword [esp + 0x60], ecx
je 0x100125a5
mov eax, dword [esp + 0x2c]
mov ecx, dword [eax]
call fcn.1000a7a0
mov ecx, dword [esp + 0x60]
mov ebx, eax
jmp 0x100125bd
mov ecx, dword [esp + 0x58]
mov ebx, dword [esp + 0x5c]
mov edi, dword [esp + 0x38]
mov dword [esp + 0x24], ecx
mov ecx, dword [esp + 0x48]
mov dword [esp + 0x60], ecx
cmp byte [esp + 0x13], 0
mov edx, dword [esi + 8]
mov eax, dword [esp + 0x34]
mov dword [esp + 0x64], ebx
mov dword [edx + 0x6e8], eax
je 0x1001279d
mov edx, dword [esp + 0xb0]
mov eax, dword [edx]
mov edx, dword [esp + 0x40]
mov dword [esp + 0x70], eax
lea eax, [edi + edx - 1]
mov edx, dword [esi + 8]
cmp byte [edx + 0x89], 0
mov dword [esp + 0x28], eax
je 0x10012687
mov ebp, dword [esp + 0x1c]
mov ecx, dword [ebp]
mov eax, dword [ecx + 0xc]
cmp dword [eax + 0x24], 1
jne 0x10012667
movzx ecx, byte [esp + 0x18]
push ebx
push ecx
mov ecx, dword [edx]
call fcn.10005950
mov edx, dword [esi + 8]
mov ecx, dword [edx]
push 0
call fcn.10005880
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0xb0]
mov eax, dword [ebp]
mov eax, dword [eax]
push ecx
mov ecx, dword [edx]
mov edx, dword [esp + 0x44]
push ecx
push edx
xor edx, edx
div dword [esp + 0x20]
push edi
mov ecx, esi
add eax, dword [esp + 0x34]
push eax
mov eax, dword [esp + 0xb0]
push eax
call fcn.1000b640
mov ebp, eax
jmp 0x10012863
lea edx, [esp + 0x78]
push edx
call fcn.1000a7a0
add eax, dword [esp + 0x34]
mov ecx, esi
push eax
mov eax, dword [esp + 0x48]
push eax
call fcn.10018810
jmp 0x1001275c
cmp byte [esp + 0x12], 0
je 0x10012764
mov cl, byte [edx + 0x88]
neg cl
sbb ecx, ecx
and ecx, dword [esp + 0x50]
cmp byte [edx + 0x6ac], 0
mov dword [esp + 0x24], ecx
je 0x100126bc
mov edx, dword [edx + 0x6b8]
mov eax, dword [esp + 0x4c]
lea ebx, [edx + eax*8]
jmp 0x100126be
xor ebx, ebx
mov ecx, dword [esp + 0x1c]
mov ecx, dword [ecx]
call fcn.1000a7a0
add eax, dword [esp + 0x60]
cmp byte [esp + 0x18], 2
jne 0x10012713
mov edx, dword [esp + 0x80]
mov ecx, dword [esp + 0x14]
push edx
push ecx
push eax
lea edx, [esp + 0x70]
push edx
lea eax, [esp + 0x38]
push eax
mov eax, dword [esp + 0xc4]
lea ecx, [esp + 0x7c]
push ecx
mov ecx, dword [eax]
lea edx, [esp + 0x88]
push edx
mov edx, dword [esp + 0x40]
push ecx
push edi
push ebx
push edx
mov ecx, esi
call fcn.1000ea20
jmp 0x10012750
mov ecx, dword [esp + 0x80]
mov edx, dword [esp + 0x14]
push ecx
push edx
push eax
lea eax, [esp + 0x70]
push eax
lea ecx, [esp + 0x38]
push ecx
mov ecx, dword [esp + 0xc4]
lea edx, [esp + 0x7c]
push edx
mov edx, dword [ecx]
lea eax, [esp + 0x88]
push eax
mov eax, dword [esp + 0x40]
push edx
push edi
push ebx
push eax
mov ecx, esi
call fcn.1000ec00
test eax, eax
je 0x10012863
mov ebx, dword [esp + 0x64]
mov ecx, dword [esp + 0x60]
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0x1c]
mov edx, dword [edx]
mov edx, dword [edx]
push 0
push ebx
movzx ebx, byte [esp + 0x20]
push ebx
mov ebx, dword [esp + 0x7c]
push ebx
push 0
sub eax, edi
add eax, 1
push eax
mov eax, dword [esp + 0xb4]
add edx, ecx
mov ecx, dword [esi + 8]
mov ecx, dword [ecx]
push edi
push edx
push eax
call fcn.10005ad0
jmp 0x1001285d
mov eax, dword [esi + 8]
cmp byte [eax + 0x89], 0
je 0x100127f0
movzx edx, byte [esp + 0x18]
mov ecx, dword [eax]
push ebx
push edx
call fcn.10005950
mov eax, dword [esp + 0x1c]
mov ecx, dword [eax]
mov eax, dword [ecx]
mov edx, dword [esp + 0x18]
mov ecx, dword [esp + 0xb0]
push edx
mov edx, dword [ecx]
push edx
xor edx, edx
div dword [esp + 0x1c]
mov ecx, dword [esp + 0x48]
mov edx, dword [esp + 0xa4]
push ecx
push edi
mov ecx, esi
add eax, dword [esp + 0x34]
push eax
push edx
call fcn.1000e920
jmp 0x1001285d
cmp byte [eax + 0x6ac], 0
je 0x10012808
mov eax, dword [eax + 0x6b8]
mov edx, dword [esp + 0x4c]
lea edx, [eax + edx*8]
jmp 0x1001280a
xor edx, edx
mov ebp, dword [esp + 0x6c]
push ebp
mov eax, dword [esp + 0x48]
lea ebp, [esp + 0x7c]
push ebp
mov ebp, dword [esp + 0x28]
push ebp
mov ebp, dword [esp + 0xbc]
mov ebp, dword [ebp]
push ebp
push edx
mov edx, dword [esp + 0x64]
push edx
mov edx, dword [esp + 0x2c]
push edi
push edx
mov edx, dword [esp + 0xbc]
add eax, ecx
cmp byte [esp + 0x38], 2
push ebx
push eax
mov eax, dword [esp + 0x44]
push ecx
mov ecx, dword [eax]
push ecx
push edx
mov ecx, esi
jne 0x10012858
call fcn.10011420
jmp 0x1001285d
call fcn.100119e0
mov ebp, eax
test ebp, ebp
jl 0x100128b3
mov ebx, dword [esp + 0x34]
mov eax, dword [esp + 0x74]
add dword [esp + 0x30], eax
add dword [esp + 0x48], eax
mov ecx, dword [esp + 0x20]
add dword [esp + 0x4c], ebx
add dword [esp + 0x58], ebx
lea eax, [ebx + ebx]
add dword [esp + 0x50], eax
mov eax, dword [esp + 0x54]
add dword [esp + 0x44], eax
mov eax, dword [esp + 0xc4]
add ecx, 1
cmp ecx, eax
mov dword [esp + 0x20], ecx
jb 0x10012512
jmp 0x100128b3
mov ecx, dword [esp + 0xb0]
mov dword [ecx], 0
mov edx, dword [esp + 0x2c]
mov eax, dword [edx]
test eax, eax
je 0x100128d9
movzx ecx, byte [esp + 0x18]
imul ecx, dword [esp + 0x3c]
lea edx, [esp + 0x54]
push edx
mov dword [esp + 0x58], ecx
mov ecx, dword [esi + 0xc]
push eax
call fcn.10015690
mov eax, dword [esp + 0x1c]
mov ecx, dword [eax]
test ecx, ecx
je 0x10012911
mov eax, dword [esi + 8]
mov edx, dword [eax + 0x6e8]
imul edx, dword [esp + 0xc4]
add edx, dword [eax + 0x6ec]
lea eax, [esp + 0x54]
imul edx, dword [esp + 0x14]
push eax
push ecx
mov ecx, dword [esi + 0xc]
mov dword [esp + 0x5c], edx
call fcn.10015690
mov ecx, dword [esi + 8]
mov eax, dword [ecx + 0x40]
mov edx, dword [eax + 0x2cc]
add edx, dword [eax + 0x2c0]
add edx, dword [eax + 0x2b4]
test edx, edx
jle 0x1001293b
mov ecx, esi
call fcn.100099c0
mov ecx, esi
call fcn.10009560
pop edi
pop esi
mov eax, ebp
pop ebp
pop ebx
add esp, 0x88
ret 0x2c