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

Disassembly:
sub esp, 0x28
push ebx
push ebp
push esi
mov esi, ecx
push edi
mov eax, dword [esi + 0xca0]
cmp eax, 0xffffffff
jne 0x1000a3b0
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x28
ret 0xc
cmp eax, 0xfffffffe
jne 0x1000a42c
mov al, byte [esi + 0xc9c]
test al, al
jne 0x1000a3ef
mov al, byte [esi + 0xc9b]
lea ecx, [esi + 0x20]
neg al
sbb eax, eax
and eax, 0x8000
add eax, 0x8000
push eax
call fcn.10020a9f
test al, al
jne 0x1000a3ef
pop edi
pop esi
pop ebp
mov eax, 0x8007000e
pop ebx
add esp, 0x28
ret 0xc
mov cl, byte [esi + 0xc9e]
push ecx
mov ecx, esi
call fcn.1000a330
test eax, eax
jne 0x1000ad18
mov dl, byte [esi + 0xc9c]
lea ecx, [esi + 0x20]
push edx
call fcn.1001a410
mov byte [esi + 0xc98], 0
mov dword [esi + 0xca0], 0
mov byte [esi + 0xc9f], 1
mov eax, dword [esi + 0xca0]
mov ebp, dword [esp + 0x3c]
test eax, eax
jle 0x1000a48a
test ebp, ebp
jbe 0x1000a486
mov edx, dword [esi + 0xca4]
dec eax
lea ecx, [esi + 0x20]
mov dword [esi + 0xca0], eax
mov edi, dword [ecx + 4]
mov eax, edi
sub eax, edx
dec eax
cmp edx, edi
jb 0x1000a45d
add eax, dword [ecx + 0x10]
mov edi, dword [ecx]
mov edx, dword [ecx + 4]
mov ebx, edi
inc edx
mov al, byte [edi + eax]
mov byte [ebx + edx - 1], al
mov eax, dword [ecx + 8]
cmp edx, eax
mov dword [ecx + 4], edx
jne 0x1000a47b
call fcn.10020bd7
mov eax, dword [esi + 0xca0]
dec ebp
test eax, eax
jg 0x1000a43a
mov dword [esp + 0x3c], ebp
mov eax, dword [esp + 0x44]
xor edi, edi
test eax, eax
mov dword [esp + 0x30], edi
mov dword [esp + 0x34], edi
je 0x1000a4d9
mov eax, dword [esi + 0x58]
mov ecx, dword [esi + 0x60]
mov ebx, dword [esi + 0x50]
sub eax, ecx
mov ecx, 0x20
cdq
sub ecx, ebx
mov edi, eax
shr ecx, 3
xor eax, eax
sub edi, ecx
mov ecx, dword [esi + 0x78]
sbb edx, eax
add edi, ecx
mov ecx, dword [esi + 0x68]
adc edx, eax
mov eax, dword [esi + 0x6c]
add edi, ecx
adc edx, eax
mov dword [esp + 0x30], edi
mov dword [esp + 0x34], edx
jmp 0x1000a4d9
mov edi, dword [esp + 0x30]
test ebp, ebp
ja 0x1000a4e9
mov al, byte [esp + 0x40]
test al, al
je 0x1000acea
mov eax, dword [esi + 0x78]
cmp eax, 4
ja 0x1000ad13
mov edx, dword [esi + 0x50]
mov ecx, 0x20
sub ecx, edx
lea edx, [eax*8]
cmp ecx, edx
jb 0x1000ad13
mov al, byte [esi + 0xc9f]
test al, al
je 0x1000a5b8
mov al, byte [esi + 0xc98]
test al, al
jne 0x1000ace0
mov eax, dword [esp + 0x44]
test eax, eax
je 0x1000a57d
mov eax, dword [esi + 0x58]
mov ecx, dword [esi + 0x60]
mov ebx, dword [esi + 0x50]
sub eax, ecx
mov ecx, 0x20
sub ecx, ebx
xor ebx, ebx
cdq
shr ecx, 3
sub eax, ecx
mov ecx, dword [esi + 0x78]
sbb edx, ebx
add eax, ecx
mov ecx, dword [esi + 0x6c]
adc edx, ebx
mov ebx, dword [esi + 0x68]
add eax, ebx
adc edx, ecx
mov ecx, dword [esp + 0x34]
sub eax, edi
sbb edx, ecx
xor ecx, ecx
cmp edx, ecx
ja 0x1000ad07
jb 0x1000a57d
cmp eax, dword [esp + 0x44]
jae 0x1000ad07
mov ecx, esi
call fcn.10009dc0
test al, al
je 0x1000ad13
mov eax, dword [esi + 0x78]
cmp eax, 4
ja 0x1000ad13
mov ebx, dword [esi + 0x50]
lea edx, [eax*8]
mov eax, 0x20
sub eax, ebx
cmp eax, edx
jb 0x1000ad13
mov byte [esi + 0xc9f], 0
mov al, byte [esi + 0xc99]
test al, al
je 0x1000a6a4
mov al, byte [esp + 0x40]
test al, al
je 0x1000a5e0
test ebp, ebp
jne 0x1000a5e0
mov eax, dword [esi + 0xc90]
test eax, eax
jne 0x1000ad13
mov eax, dword [esi + 0xc90]
test eax, eax
jbe 0x1000a696
test ebp, ebp
jbe 0x1000a62f
cmp dword [esi + 0x50], 0x20
je 0x1000a62f
mov ecx, esi
call fcn.10009c50
mov edx, dword [esi + 0x24]
mov ebx, dword [esi + 0x20]
lea ecx, [esi + 0x20]
mov byte [ebx + edx], al
inc edx
mov eax, dword [ecx + 8]
mov dword [ecx + 4], edx
cmp edx, eax
jne 0x1000a61b
call fcn.10020bd7
mov ebx, dword [esi + 0xc90]
dec ebx
dec ebp
mov eax, ebx
mov dword [esi + 0xc90], ebx
test eax, eax
ja 0x1000a5ee
mov eax, dword [esi + 0xc90]
mov dword [esp + 0x3c], ebp
test eax, eax
jbe 0x1000a696
test ebp, ebp
jbe 0x1000a68a
mov edx, dword [esi + 0x58]
mov eax, dword [esi + 0x5c]
lea ecx, [esi + 0x58]
cmp edx, eax
jb 0x1000a655
call fcn.1001f170
jmp 0x1000a65a
mov al, byte [edx]
inc edx
mov dword [ecx], edx
mov edx, dword [esi + 0x24]
mov ebx, dword [esi + 0x20]
lea ecx, [esi + 0x20]
mov byte [ebx + edx], al
inc edx
mov eax, dword [ecx + 8]
mov dword [ecx + 4], edx
cmp edx, eax
jne 0x1000a676
call fcn.10020bd7
mov ebx, dword [esi + 0xc90]
dec ebx
dec ebp
mov eax, ebx
mov dword [esi + 0xc90], ebx
test eax, eax
ja 0x1000a63d
mov eax, dword [esi + 0xc90]
mov dword [esp + 0x3c], ebp
test eax, eax
sete cl
mov byte [esi + 0xc9f], cl
jmp 0x1000a4d9
test ebp, ebp
jbe 0x1000ab9f
cmp dword [esi + 0x78], 4
ja 0x1000ad13
cmp dword [esi + 0x50], 8
jb 0x1000a721
lea edi, [esi + 0x58]
mov eax, dword [edi]
mov ecx, dword [edi + 4]
cmp eax, ecx
jb 0x1000a6d5
mov ecx, edi
call fcn.1001f170
mov byte [esp + 0x1c], al
jmp 0x1000a6de
mov dl, byte [eax]
inc eax
mov byte [esp + 0x1c], dl
mov dword [edi], eax
mov eax, dword [esp + 0x1c]
mov edx, dword [esi + 0x50]
and eax, 0xff
mov ecx, 0x20
sub ecx, edx
mov ebx, eax
shl ebx, cl
mov ecx, dword [esi + 0x80]
or ecx, ebx
mov dword [esi + 0x80], ecx
xor ecx, ecx
mov cl, byte [eax + 0x100e2a4c]
mov eax, dword [esi + 0x54]
shl eax, 8
or ecx, eax
lea eax, [edx - 8]
cmp eax, 8
mov dword [esi + 0x54], ecx
mov dword [esi + 0x50], eax
jae 0x1000a6bf
mov edi, dword [esi + 0x50]
mov eax, dword [esi + 0x54]
mov ecx, 8
sub ecx, edi
shr eax, cl
mov ecx, dword [esi + 0xac]
shr eax, 9
and eax, 0x7fff
cmp eax, ecx
jae 0x1000a76d
shr eax, 6
xor edx, edx
mov dx, word [esi + eax*2 + 0x10c]
mov ecx, edx
and ecx, 0xf
lea eax, [ecx + edi]
mov edi, dword [esi + 0x80]
shr edi, cl
mov dword [esi + 0x50], eax
shr edx, 4
mov dword [esi + 0x80], edi
jmp 0x1000a7d1
mov ebx, dword [esi + 0xb0]
lea ecx, [esi + 0xb0]
cmp eax, ebx
mov edx, 0xa
jb 0x1000a796
mov ebx, dword [ecx + 4]
add ecx, 4
inc edx
cmp eax, ebx
jae 0x1000a782
cmp edx, 0xf
ja 0x1000ad13
lea ecx, [edx + edi]
mov edi, dword [esi + 0x80]
mov dword [esi + 0x50], ecx
mov ecx, edx
shr edi, cl
mov dword [esi + 0x80], edi
mov ecx, dword [esi + edx*4 + 0x84]
sub eax, ecx
mov ecx, 0xf
sub ecx, edx
shr eax, cl
mov ecx, dword [esi + edx*4 + 0xcc]
add eax, ecx
xor edx, edx
mov dx, word [esi + eax*2 + 0x50c]
cmp edx, 0x100
jae 0x1000a7ff
mov eax, dword [esi + 0x24]
mov edi, dword [esi + 0x20]
lea ecx, [esi + 0x20]
mov byte [eax + edi], dl
inc eax
mov edx, dword [ecx + 8]
mov dword [ecx + 4], eax
cmp eax, edx
jne 0x1000a7f5
call fcn.10020bd7
dec ebp
mov dword [esp + 0x3c], ebp
jmp 0x1000ab74
je 0x1000ab82
cmp edx, 0x11e
jae 0x1000ad13
mov al, byte [esi + 0xc9b]
sub edx, 0x101
test al, al
je 0x1000a837
xor eax, eax
xor ecx, ecx
mov al, byte [edx + 0x100c6c8c]
mov cl, byte [edx + 0x100c6ccc]
mov dword [esp + 0x10], eax
jmp 0x1000a84b
xor eax, eax
xor ecx, ecx
mov al, byte [edx + 0x100c6c6c]
mov cl, byte [edx + 0x100c6cac]
mov dword [esp + 0x10], eax
mov eax, dword [esi + 0x50]
mov edi, ecx
cmp eax, 8
jb 0x1000a8c0
lea ebp, [esi + 0x58]
mov eax, dword [ebp]
mov ecx, dword [ebp + 4]
cmp eax, ecx
jb 0x1000a86f
mov ecx, ebp
call fcn.1001f170
mov byte [esp + 0x20], al
jmp 0x1000a879
mov dl, byte [eax]
inc eax
mov byte [esp + 0x20], dl
mov dword [ebp], eax
mov eax, dword [esp + 0x20]
mov edx, dword [esi + 0x50]
and eax, 0xff
mov ecx, 0x20
sub ecx, edx
mov ebx, eax
shl ebx, cl
mov ecx, dword [esi + 0x80]
or ecx, ebx
mov dword [esi + 0x80], ecx
xor ecx, ecx
mov cl, byte [eax + 0x100e2a4c]
mov eax, dword [esi + 0x54]
shl eax, 8
or ecx, eax
lea eax, [edx - 8]
cmp eax, 8
mov dword [esi + 0x54], ecx
mov dword [esi + 0x50], eax
jae 0x1000a858
mov ebp, dword [esp + 0x3c]
mov edx, dword [esi + 0x80]
mov eax, 1
mov ecx, edi
mov ebx, dword [esi + 0x50]
shl eax, cl
add ebx, edi
mov dword [esi + 0x50], ebx
dec eax
and eax, edx
shr edx, cl
mov ecx, dword [esp + 0x10]
lea eax, [ecx + eax + 3]
cmp eax, ebp
mov dword [esi + 0x80], edx
mov dword [esp + 0x10], eax
mov dword [esp + 0x18], eax
jbe 0x1000a8fa
mov dword [esp + 0x18], ebp
cmp dword [esi + 0x50], 8
jb 0x1000a965
lea edi, [esi + 0x58]
mov eax, dword [edi]
mov ecx, dword [edi + 4]
cmp eax, ecx
jb 0x1000a919
mov ecx, edi
call fcn.1001f170
mov byte [esp + 0x24], al
jmp 0x1000a922
mov dl, byte [eax]
inc eax
mov byte [esp + 0x24], dl
mov dword [edi], eax
mov eax, dword [esp + 0x24]
mov edx, dword [esi + 0x50]
and eax, 0xff
mov ecx, 0x20
sub ecx, edx
mov ebx, eax
shl ebx, cl
mov ecx, dword [esi + 0x80]
or ecx, ebx
mov dword [esi + 0x80], ecx
xor ecx, ecx
mov cl, byte [eax + 0x100e2a4c]
mov eax, dword [esi + 0x54]
shl eax, 8
or ecx, eax
lea eax, [edx - 8]
cmp eax, 8
mov dword [esi + 0x54], ecx
mov dword [esi + 0x50], eax
jae 0x1000a903
mov edi, dword [esi + 0x50]
mov eax, dword [esi + 0x54]
mov ecx, 8
sub ecx, edi
shr eax, cl
mov ecx, dword [esi + 0x770]
shr eax, 9
and eax, 0x7fff
cmp eax, ecx
jae 0x1000a9b2
shr eax, 6
xor edx, edx
mov dx, word [esi + eax*2 + 0x7d0]
mov ecx, edx
and ecx, 0xf
add edi, ecx
mov dword [esi + 0x50], edi
mov edi, dword [esi + 0x80]
shr edi, cl
shr edx, 4
mov dword [esi + 0x80], edi
mov edi, edx
jmp 0x1000aa16
mov ebx, dword [esi + 0x774]
lea ecx, [esi + 0x774]
cmp eax, ebx
mov edx, 0xa
jb 0x1000a9dc
mov ebx, dword [ecx + 4]
add ecx, 4
inc edx
cmp eax, ebx
jae 0x1000a9c7
cmp edx, 0xf
jbe 0x1000a9dc
or edi, 0xffffffff
jmp 0x1000aa16
add edi, edx
mov ecx, edx
mov dword [esi + 0x50], edi
mov edi, dword [esi + 0x80]
shr edi, cl
mov ecx, 0xf
sub ecx, edx
mov dword [esi + 0x80], edi
mov ebp, dword [esi + edx*4 + 0x748]
sub eax, ebp
shr eax, cl
mov ecx, dword [esi + edx*4 + 0x790]
add eax, ecx
xor edi, edi
mov di, word [esi + eax*2 + 0xbd0]
cmp edi, dword [esi + 0xc94]
jae 0x1000ad13
mov eax, dword [esi + 0x50]
xor ecx, ecx
mov cl, byte [edi + 0x100c6d6c]
cmp eax, 8
mov ebp, ecx
jb 0x1000aa98
mov eax, dword [esi + 0x58]
mov edx, dword [esi + 0x5c]
lea ecx, [esi + 0x58]
cmp eax, edx
jb 0x1000aa4c
call fcn.1001f170
mov byte [esp + 0x28], al
jmp 0x1000aa55
mov dl, byte [eax]
inc eax
mov byte [esp + 0x28], dl
mov dword [ecx], eax
mov eax, dword [esp + 0x28]
mov edx, dword [esi + 0x50]
and eax, 0xff
mov ecx, 0x20
sub ecx, edx
mov ebx, eax
shl ebx, cl
mov ecx, dword [esi + 0x80]
or ecx, ebx
mov dword [esi + 0x80], ecx
xor ecx, ecx
mov cl, byte [eax + 0x100e2a4c]
mov eax, dword [esi + 0x54]
shl eax, 8
or ecx, eax
lea eax, [edx - 8]
cmp eax, 8
mov dword [esi + 0x54], ecx
mov dword [esi + 0x50], eax
jae 0x1000aa34
mov edx, dword [esi + 0x80]
mov eax, 1
mov ecx, ebp
shl eax, cl
mov ecx, dword [esi + 0x50]
add ecx, ebp
mov dword [esi + 0x50], ecx
mov ecx, ebp
dec eax
and eax, edx
shr edx, cl
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x14], ecx
mov dword [esi + 0x80], edx
mov ebx, dword [edi*4 + 0x100c6cec]
lea edi, [esi + 0x20]
add ebx, eax
mov eax, dword [edi + 4]
mov ebp, eax
sub ebp, ebx
dec ebp
cmp ebx, eax
jb 0x1000aaf4
mov cl, byte [edi + 0x24]
test cl, cl
je 0x1000ad13
mov ecx, dword [edi + 0x10]
cmp ebx, ecx
jae 0x1000ad13
add ebp, ecx
mov ecx, dword [edi + 8]
mov edx, dword [esp + 0x18]
sub ecx, eax
cmp ecx, edx
jbe 0x1000ab29
mov ecx, dword [edi + 0x10]
sub ecx, ebp
cmp ecx, edx
jbe 0x1000ab29
mov ecx, dword [edi]
add ebp, ecx
add ecx, eax
add eax, edx
mov dword [edi + 4], eax
mov edi, dword [esp + 0x14]
mov al, byte [ebp]
mov byte [ecx], al
inc ecx
inc ebp
dec edi
jne 0x1000ab19
mov dword [esp + 0x14], edi
jmp 0x1000ab5e
cmp ebp, dword [edi + 0x10]
jne 0x1000ab30
xor ebp, ebp
mov ecx, dword [edi]
mov eax, dword [edi + 4]
inc eax
mov dl, byte [ecx + ebp]
inc ebp
mov byte [ecx + eax - 1], dl
mov ecx, dword [edi + 8]
cmp eax, ecx
mov dword [edi + 4], eax
jne 0x1000ab4f
mov ecx, edi
call fcn.10020bd7
mov eax, dword [esp + 0x14]
dec eax
mov dword [esp + 0x14], eax
jne 0x1000ab29
mov edx, dword [esp + 0x18]
mov ecx, dword [esp + 0x3c]
mov eax, dword [esp + 0x10]
sub ecx, edx
sub eax, edx
mov dword [esp + 0x3c], ecx
mov dword [esp + 0x10], eax
jne 0x1000ab8b
mov ebp, dword [esp + 0x3c]
test ebp, ebp
ja 0x1000a6ac
jmp 0x1000ab9f
mov byte [esi + 0xc9f], 1
jmp 0x1000ab9f
mov eax, dword [esp + 0x10]
mov ebp, dword [esp + 0x3c]
mov dword [esi + 0xca0], eax
mov dword [esi + 0xca4], ebx
mov al, byte [esp + 0x40]
test al, al
je 0x1000a4d5
test ebp, ebp
jne 0x1000a4d5
cmp dword [esi + 0x50], 8
jb 0x1000ac1e
lea edi, [esi + 0x58]
mov eax, dword [edi]
mov ecx, dword [edi + 4]
cmp eax, ecx
jb 0x1000abd2
mov ecx, edi
call fcn.1001f170
mov byte [esp + 0x2c], al
jmp 0x1000abdb
mov cl, byte [eax]
inc eax
mov byte [esp + 0x2c], cl
mov dword [edi], eax
mov eax, dword [esp + 0x2c]
mov edx, dword [esi + 0x50]
and eax, 0xff
mov ecx, 0x20
sub ecx, edx
mov ebx, eax
shl ebx, cl
mov ecx, dword [esi + 0x80]
or ecx, ebx
mov dword [esi + 0x80], ecx
xor ecx, ecx
mov cl, byte [eax + 0x100e2a4c]
mov eax, dword [esi + 0x54]
shl eax, 8
or ecx, eax
lea eax, [edx - 8]
cmp eax, 8
mov dword [esi + 0x54], ecx
mov dword [esi + 0x50], eax
jae 0x1000abbc
mov edi, dword [esi + 0x50]
mov eax, dword [esi + 0x54]
mov ecx, 8
sub ecx, edi
shr eax, cl
mov ecx, dword [esi + 0xac]
shr eax, 9
and eax, 0x7fff
cmp eax, ecx
jae 0x1000ac69
shr eax, 6
xor edx, edx
mov dx, word [esi + eax*2 + 0x10c]
mov ecx, edx
and ecx, 0xf
add edi, ecx
mov dword [esi + 0x50], edi
mov edi, dword [esi + 0x80]
shr edi, cl
shr edx, 4
mov dword [esi + 0x80], edi
jmp 0x1000accc
mov ebx, dword [esi + 0xb0]
lea ecx, [esi + 0xb0]
cmp eax, ebx
mov edx, 0xa
jb 0x1000ac92
mov ebx, dword [ecx + 4]
add ecx, 4
inc edx
cmp eax, ebx
jae 0x1000ac7e
cmp edx, 0xf
ja 0x1000ad13
add edi, edx
mov ecx, edx
mov dword [esi + 0x50], edi
mov edi, dword [esi + 0x80]
shr edi, cl
mov dword [esi + 0x80], edi
mov ecx, dword [esi + edx*4 + 0x84]
sub eax, ecx
mov ecx, 0xf
sub ecx, edx
shr eax, cl
mov ecx, dword [esi + edx*4 + 0xcc]
add eax, ecx
xor edx, edx
mov dx, word [esi + eax*2 + 0x50c]
cmp edx, 0x100
jne 0x1000ad13
mov byte [esi + 0xc9f], 1
jmp 0x1000a4d5
mov dword [esi + 0xca0], 0xffffffff
mov eax, dword [esi + 0x78]
cmp eax, 4
ja 0x1000ad13
mov edx, dword [esi + 0x50]
mov ecx, 0x20
sub ecx, edx
lea edx, [eax*8]
cmp ecx, edx
jb 0x1000ad13
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x28
ret 0xc
mov eax, 1
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x28
ret 0xc