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

Disassembly:
sub esp, 0x90
push ebx
push ebp
xor ecx, ecx
xorps xmm0, xmm0
push esi
push edi
movlpd qword [esp + 0x68], xmm0
cmp word [esp + 0xb4], cx
je 0x100a0604
mov eax, dword [esp + 0xa4]
mov eax, dword [eax]
mov eax, dword [eax]
test byte [eax + 0x50], 0x40
jne 0x100a0f51
mov eax, dword [esp + 0xa8]
movzx eax, word [eax]
mov dword [esp + 0x7c], eax
cmp eax, 0x3f
ja 0x100a0f51
movzx edi, ax
xor edx, edx
xor ebx, ebx
mov ebp, dword [esp + 0x6c]
mov eax, edi
movlpd qword [esp + 0x40], xmm0
bts edx, eax
movlpd qword [esp + 0x38], xmm0
cmp eax, 0x20
mov byte [esp + 0x18], 1
mov dword [esp + 0x34], edi
cmovae ebx, edx
mov dword [esp + 0x1c], ebp
xor edx, ebx
cmp eax, 0x40
mov eax, dword [esp + 0xb0]
cmovae ebx, edx
add edx, 0xffffffff
mov dword [esp + 0x78], edx
mov edx, dword [esp + 0x68]
adc ebx, 0xffffffff
and eax, 0x803
mov dword [esp + 0x74], ebx
mov ebx, dword [esp + 0x18]
neg eax
mov dword [esp + 0x14], edx
sbb eax, eax
neg eax
add eax, 0x182
xor esi, esi
movzx eax, ax
mov dword [esp + 0x70], eax
mov eax, dword [esp + 0x44]
mov dword [esp + 0x60], eax
mov eax, dword [esp + 0x40]
mov dword [esp + 0x5c], eax
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x38]
mov dword [esp + 0x64], esi
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x74]
cmp ebp, eax
ja 0x100a0eca
jb 0x100a06c8
cmp edx, dword [esp + 0x78]
jae 0x100a0ece
movzx eax, word [esp + 0xb4]
cmp esi, eax
jg 0x100a0ef5
test esi, esi
jle 0x100a06f6
mov edi, dword [esp + 0x4c]
or edi, dword [ecx + 8]
mov dword [esp + 0x4c], edi
mov edi, dword [esp + 0x50]
or edi, dword [ecx + 0xc]
mov dword [esp + 0x50], edi
mov edi, dword [esp + 0x34]
cmp esi, eax
jge 0x100a0720
mov eax, dword [esp + 0xac]
mov eax, dword [eax + 0x18]
mov esi, dword [eax + esi*4]
mov eax, dword [esp + 0xb0]
mov dword [esp + 0x24], esi
test eax, 0x800
je 0x100a0732
mov ecx, esi
jmp 0x100a0eb5
mov esi, dword [esp + 0xb8]
mov eax, dword [esp + 0xb0]
mov dword [esp + 0x24], esi
test dword [esi + 0x2c], 0x400
jne 0x100a0ee3
and eax, 0x80
mov dword [esp + 0x40], eax
je 0x100a0750
xor eax, eax
mov word [esi + 0x1e], ax
movzx eax, byte [esi + 0x10]
lea ecx, [eax + eax*8]
mov eax, dword [esp + 0xa4]
mov eax, dword [eax + 4]
mov edi, dword [eax + ecx*8 + 0x34]
xor eax, eax
mov dword [esp + 0x30], edi
mov dword [esp + 0x28], eax
cmp dword [esp + 0x34], eax
jbe 0x100a08e9
mov ebx, dword [esp + 0xa8]
add ebx, 8
mov dword [esp + 0x20], ebx
xor ebp, ebp
xor edx, edx
bts ebp, eax
cmp eax, 0x20
cmovae edx, ebp
xor ebp, edx
cmp eax, 0x40
mov ecx, ebp
cmovae edx, ebp
and ecx, dword [esp + 0x14]
mov eax, edx
mov dword [esp + 0x38], edx
and eax, dword [esp + 0x1c]
or ecx, eax
jne 0x100a08c9
mov esi, dword [ebx]
test esi, esi
je 0x100a08c9
nop
mov eax, dword [esi + 4]
test eax, 0x82000
je 0x100a07e5
test eax, 0x80000
je 0x100a07d9
mov eax, dword [esi + 0x14]
mov esi, dword [eax + 8]
jmp 0x100a07dc
mov esi, dword [esi + 0xc]
test esi, esi
jne 0x100a07c0
jmp 0x100a08c9
mov al, byte [esi]
cmp al, 0xa7
je 0x100a07f3
cmp al, 0xa9
jne 0x100a08c9
cmp dword [esi + 0x1c], edi
jne 0x100a08c9
mov eax, dword [esp + 0x70]
mov ecx, dword [esp + 0x4c]
movzx eax, ax
not ecx
push 0
push eax
mov eax, dword [esp + 0x58]
not eax
push eax
movsx eax, word [esi + 0x20]
push ecx
push eax
mov eax, dword [esp + 0xb8]
add eax, 0x50
push edi
push eax
call fcn.1008edc0
mov edi, eax
add esp, 0x1c
test edi, edi
je 0x100a08c5
movzx ebx, word [edi + 0xc]
cmp ebx, 1
jne 0x100a0861
mov eax, dword [esp + 0x24]
xor ecx, ecx
movzx edx, word [eax + 0x30]
test edx, edx
je 0x100a085d
mov eax, dword [eax + 0x38]
cmp edi, dword [eax]
je 0x100a085d
inc ecx
add eax, 4
cmp ecx, edx
jl 0x100a0851
cmp ecx, edx
jge 0x100a08c5
test bl, 0x82
je 0x100a08af
cmp word [esi + 0x20], 0
jl 0x100a08af
mov eax, dword [esp + 0xa4]
mov esi, dword [eax]
mov eax, dword [esp + 0x20]
push dword [eax]
push esi
call fcn.100592a0
mov ebx, eax
add esp, 8
test ebx, ebx
jne 0x100a0890
mov eax, dword [esi]
mov ebx, dword [eax + 8]
push dword [edi]
push esi
call fcn.100596d0
add esp, 8
test eax, eax
je 0x100a08c5
push dword [eax]
push dword [ebx]
call fcn.100762a0
add esp, 8
test eax, eax
jne 0x100a08c5
mov edx, dword [esp + 0x14]
or edx, ebp
mov ebp, dword [esp + 0x1c]
or ebp, dword [esp + 0x38]
mov dword [esp + 0x14], edx
mov dword [esp + 0x1c], ebp
mov edi, dword [esp + 0x30]
mov eax, dword [esp + 0x28]
add dword [esp + 0x20], 0x14
inc eax
mov ebx, dword [esp + 0x20]
mov dword [esp + 0x28], eax
cmp eax, dword [esp + 0x34]
jl 0x100a0787
mov esi, dword [esp + 0x24]
mov eax, dword [esi + 0x2c]
test eax, 0x1000
jne 0x100a0d25
test eax, 0x100
je 0x100a0915
mov dword [esp + 0x48], 0
mov ecx, 1
mov dword [esp + 0x38], 0
jmp 0x100a0951
mov edx, dword [esi + 0x20]
mov dword [esp + 0x48], edx
test edx, edx
je 0x100a0f51
test byte [edx + 0x38], 4
jne 0x100a0f51
cmp byte [edx + 0x36], 0
movzx ecx, word [edx + 0x32]
mov dword [esp + 0x38], ecx
movzx ecx, word [edx + 0x34]
je 0x100a094c
mov byte [esp + 0x18], 1
test eax, 0x8000
je 0x100a0951
mov byte [esp + 0x18], 0
xor al, al
xor dl, dl
mov byte [esp + 0x13], al
xor ebp, ebp
mov dword [esp + 0x28], eax
movzx eax, cx
mov byte [esp + 0x12], dl
mov dword [esp + 0x20], ebp
mov dword [esp + 0x68], eax
test eax, eax
je 0x100a0d25
mov dword [esp + 0x58], ebp
nop word [eax + eax]
movzx edi, word [esi + 0x18]
mov bh, 1
mov byte [esp + 0x11], bh
cmp ebp, edi
jge 0x100a09f2
movzx eax, word [esi + 0x32]
cmp ebp, eax
jl 0x100a09f2
mov ebx, dword [esi + 0x38]
mov eax, dword [esp + 0x70]
mov esi, dword [ebx + ebp*4]
movzx ecx, word [esi + 0xc]
and eax, ecx
test ax, ax
je 0x100a09c9
mov eax, dword [esp + 0x18]
test ecx, 0x180
mov ecx, 0
movzx eax, al
cmove ecx, eax
mov byte [esp + 0x18], cl
jmp 0x100a0ce6
test cl, 1
je 0x100a09ee
mov esi, dword [esi]
lea edx, [ebp + 1]
cmp edx, edi
jge 0x100a09ee
lea ecx, [ebp + 1]
lea ecx, [ebx + ecx*4]
nop dword [eax]
mov eax, dword [ecx]
cmp dword [eax], esi
je 0x100a0a21
inc edx
add ecx, 4
cmp edx, edi
jl 0x100a09e0
mov bh, byte [esp + 0x11]
mov edx, dword [esp + 0x48]
test edx, edx
je 0x100a0a25
mov eax, dword [edx + 4]
movsx esi, word [eax + ebp*2]
mov eax, dword [edx + 0x1c]
mov cl, byte [eax + ebp]
mov eax, dword [edx + 0xc]
and cl, 1
mov byte [esp + 0x11], cl
movsx eax, word [eax + 0x20]
cmp esi, eax
mov eax, 0xffffffff
cmove esi, eax
jmp 0x100a0a2d
xor bh, bh
jmp 0x100a09f2
or esi, 0xffffffff
mov byte [esp + 0x11], 0
mov eax, dword [esp + 0x18]
mov dword [esp + 0x54], esi
test al, al
je 0x100a0a68
test esi, esi
js 0x100a0a59
cmp ebp, edi
jl 0x100a0a68
mov eax, dword [edx + 0xc]
mov ecx, esi
add ecx, ecx
mov eax, dword [eax + 4]
test byte [eax + ecx*8 + 4], 0xf
jne 0x100a0a68
mov byte [esp + 0x18], 0
jmp 0x100a0a68
xor ecx, ecx
movzx eax, al
cmp esi, 0xfffffffe
cmove eax, ecx
mov dword [esp + 0x18], eax
xor edi, edi
test bh, bh
je 0x100a0d03
mov ebp, dword [esp + 0xa8]
add ebp, 8
nop dword [eax]
cmp edi, dword [esp + 0x34]
jge 0x100a0cff
xor edx, edx
xor ecx, ecx
mov eax, edi
bts edx, eax
cmp eax, 0x20
cmovae ecx, edx
xor edx, ecx
cmp eax, 0x40
cmovae ecx, edx
and edx, dword [esp + 0x14]
and ecx, dword [esp + 0x1c]
or edx, ecx
jne 0x100a0bdb
mov eax, dword [ebp]
test eax, eax
je 0x100a0bdb
nop dword [eax]
mov ecx, dword [eax + 4]
test ecx, 0x82000
je 0x100a0ae7
test ecx, 0x80000
je 0x100a0adb
mov ecx, dword [eax + 0x14]
mov eax, dword [ecx + 8]
jmp 0x100a0ade
mov eax, dword [eax + 0xc]
test eax, eax
jne 0x100a0ac0
jmp 0x100a0bdb
mov cl, byte [esp + 0xb0]
and cl, 0xc0
neg cl
sbb cl, cl
and bh, cl
mov bl, bh
cmp esi, 0xffffffff
jl 0x100a0b25
mov cl, byte [eax]
cmp cl, 0xa7
je 0x100a0b0e
cmp cl, 0xa9
jne 0x100a0bdb
mov ecx, dword [esp + 0x30]
mov bh, bl
cmp dword [eax + 0x1c], ecx
jne 0x100a0bdb
movsx eax, word [eax + 0x20]
cmp eax, esi
jmp 0x100a0b96
mov ecx, dword [esp + 0x48]
mov edx, dword [esp + 0x58]
mov ecx, dword [ecx + 0x28]
mov edx, dword [ecx + edx + 8]
test edx, edx
je 0x100a0b62
nop dword [eax + eax]
mov ecx, dword [edx + 4]
test ecx, 0x82000
je 0x100a0b62
test ecx, 0x80000
je 0x100a0b5b
mov ecx, dword [edx + 0x14]
mov edx, dword [ecx + 8]
jmp 0x100a0b5e
mov edx, dword [edx + 0xc]
test edx, edx
jne 0x100a0b40
mov ecx, dword [eax + 4]
test ecx, 0x82000
je 0x100a0b84
test ecx, 0x80000
je 0x100a0b7d
mov ecx, dword [eax + 0x14]
mov eax, dword [ecx + 8]
jmp 0x100a0b80
mov eax, dword [eax + 0xc]
test eax, eax
jne 0x100a0b62
push dword [esp + 0x30]
push edx
push eax
push 0
call fcn.10059460
add esp, 0x10
test eax, eax
jne 0x100a0bdb
cmp esi, 0xffffffff
je 0x100a0bf4
mov eax, dword [esp + 0xa4]
push dword [ebp]
mov esi, dword [eax]
push esi
call fcn.100592a0
mov ecx, eax
add esp, 8
test ecx, ecx
jne 0x100a0bbd
mov eax, dword [esi]
mov ecx, dword [eax + 8]
mov eax, dword [esp + 0x48]
mov bh, bl
mov edx, dword [esp + 0x20]
mov eax, dword [eax + 0x20]
push dword [eax + edx*4]
push dword [ecx]
call fcn.100762a0
add esp, 8
test eax, eax
je 0x100a0bf0
inc edi
add ebp, 0x14
test bh, bh
je 0x100a0cff
mov esi, dword [esp + 0x54]
jmp 0x100a0a80
mov esi, dword [esp + 0x54]
cmp word [esp + 0x40], 0
mov ebp, dword [esp + 0x20]
je 0x100a0c0b
mov ecx, dword [esp + 0x24]
lea eax, [ebp + 1]
mov word [ecx + 0x1e], ax
test byte [esp + 0xb0], 0x40
mov byte [esp + 0x2f], 1
jne 0x100a0c8f
mov ecx, dword [esp + 0xa8]
lea eax, [edi + edi*4]
mov bh, byte [esp + 0x13]
mov dl, byte [ecx + eax*4 + 0x10]
and dl, 1
test bh, bh
je 0x100a0c5b
mov dh, byte [esp + 0x12]
xor ecx, ecx
mov bl, byte [esp + 0x11]
movzx eax, byte [esp + 0x2f]
xor bl, dh
cmp bl, dl
mov byte [esp + 0x12], dh
mov byte [esp + 0x13], bh
cmove ecx, eax
test cl, cl
je 0x100a0d03
jmp 0x100a0c8f
xor dl, byte [esp + 0x11]
mov byte [esp + 0x12], dl
je 0x100a0c8a
mov eax, dword [esp + 0x64]
xor ecx, ecx
bts ecx, eax
xor edx, edx
cmp eax, 0x20
cmovae edx, ecx
xor ecx, edx
cmp eax, 0x40
mov eax, dword [esp + 0xbc]
cmovae edx, ecx
or dword [eax], ecx
or dword [eax + 4], edx
mov byte [esp + 0x13], 1
mov ecx, dword [esp + 0xa8]
lea eax, [edi + edi*4]
test byte [ecx + eax*4 + 0x10], 2
je 0x100a0cb3
mov ecx, dword [esp + 0x24]
movzx eax, word [ecx + 0x18]
cmp ebp, eax
jne 0x100a0d03
or dword [ecx + 0x2c], 0x80000
mov edx, dword [esp + 0x28]
cmp esi, 0xffffffff
mov eax, 1
movzx edx, dl
cmove edx, eax
xor eax, eax
xor ecx, ecx
mov dword [esp + 0x28], edx
bts eax, edi
cmp edi, 0x20
cmovae ecx, eax
xor eax, ecx
cmp edi, 0x40
cmovae ecx, eax
or dword [esp + 0x14], eax
or dword [esp + 0x1c], ecx
add dword [esp + 0x58], 0x14
inc ebp
mov dword [esp + 0x20], ebp
cmp ebp, dword [esp + 0x68]
jge 0x100a0d17
mov esi, dword [esp + 0x24]
jmp 0x100a0980
mov ebp, dword [esp + 0x20]
test ebp, ebp
je 0x100a0d12
mov eax, dword [esp + 0x38]
movzx eax, ax
cmp ebp, eax
jge 0x100a0d17
mov byte [esp + 0x18], 0
cmp byte [esp + 0x28], 0
je 0x100a0d25
mov byte [esp + 0x18], 1
jmp 0x100a0d30
cmp byte [esp + 0x18], 0
je 0x100a0ea1
mov ecx, dword [esp + 0x24]
mov eax, dword [esp + 0x5c]
mov edi, dword [esp + 0x34]
mov ebp, dword [esp + 0x1c]
or eax, dword [ecx + 8]
mov dword [esp + 0x5c], eax
mov eax, dword [esp + 0x60]
or eax, dword [ecx + 0xc]
mov dword [esp + 0x60], eax
xor eax, eax
mov dword [esp + 0x38], eax
test edi, edi
je 0x100a0ead
mov esi, dword [esp + 0xa8]
add esi, 8
mov dword [esp + 0x28], esi
nop
xor edi, edi
xor edx, edx
bts edi, eax
cmp eax, 0x20
cmovae edx, edi
xor edi, edx
cmp eax, 0x40
mov ecx, edi
cmovae edx, edi
and ecx, dword [esp + 0x14]
mov eax, edx
mov dword [esp + 0x68], edx
and eax, ebp
or ecx, eax
jne 0x100a0e79
mov ecx, dword [esp + 0xa4]
mov esi, dword [esi]
add ecx, 0x1f0
test esi, esi
je 0x100a0de4
cmp byte [esi], 0xa7
jne 0x100a0dcb
test byte [esi + 4], 0x20
jne 0x100a0dcb
push dword [esi + 0x1c]
push ecx
call fcn.1008ee60
add esp, 8
mov ebx, eax
mov ebp, edx
jmp 0x100a0df5
test dword [esi + 4], 0x810000
jne 0x100a0de4
push esi
push ecx
call fcn.1008ec60
add esp, 8
mov ebx, eax
mov ebp, edx
jmp 0x100a0df5
xorps xmm0, xmm0
movlpd qword [esp + 0x40], xmm0
mov ebx, dword [esp + 0x40]
mov ebp, dword [esp + 0x44]
mov eax, ebx
or eax, ebp
jne 0x100a0e49
mov dword [esp + 0x88], fcn.1002ae90
mov eax, 1
mov word [esp + 0x98], ax
mov dword [esp + 0x8c], 0x100748d0
mov dword [esp + 0x9c], 0
test esi, esi
je 0x100a0e49
lea eax, [esp + 0x84]
push esi
push eax
call fcn.1009cbd0
add esp, 8
cmp word [esp + 0x98], 0
je 0x100a0e75
mov ecx, dword [esp + 0x5c]
mov eax, dword [esp + 0x60]
not ecx
mov edx, dword [esp + 0x14]
not eax
and eax, ebp
and ecx, ebx
or ecx, eax
mov ebp, dword [esp + 0x1c]
jne 0x100a0e7d
or edx, edi
or ebp, dword [esp + 0x68]
mov dword [esp + 0x14], edx
mov dword [esp + 0x1c], ebp
jmp 0x100a0e7d
mov ebp, dword [esp + 0x1c]
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x38]
add dword [esp + 0x28], 0x14
inc eax
mov edi, dword [esp + 0x34]
mov esi, dword [esp + 0x28]
mov dword [esp + 0x38], eax
cmp eax, edi
jl 0x100a0d70
mov ecx, dword [esp + 0x24]
jmp 0x100a0eb1
mov ecx, dword [esp + 0x24]
mov ebp, dword [esp + 0x1c]
mov edi, dword [esp + 0x34]
mov edx, dword [esp + 0x14]
mov ebx, dword [esp + 0x18]
mov esi, dword [esp + 0x64]
inc esi
mov dword [esp + 0x64], esi
test bl, bl
jne 0x100a06b0
mov eax, dword [esp + 0x74]
cmp edx, dword [esp + 0x78]
jne 0x100a0ef5
cmp ebp, eax
jne 0x100a0ef5
mov al, byte [esp + 0x7c]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x90
ret
cmp byte [esi + 0x20], 0
je 0x100a0ef5
and eax, 0x280
cmp eax, 0x80
jne 0x100a0ed4
test bl, bl
jne 0x100a0f6b
lea ebx, [edi - 1]
test ebx, ebx
jle 0x100a0f51
mov edi, dword [esp + 0x14]
cmp ebx, 0x40
jge 0x100a0f28
xor ecx, ecx
xor edx, edx
mov eax, ebx
bts ecx, eax
cmp eax, 0x20
cmovae edx, ecx
xor ecx, edx
cmp eax, 0x40
cmovae edx, ecx
add ecx, 0xffffffff
adc edx, 0xffffffff
jmp 0x100a0f3c
xorps xmm0, xmm0
movlpd qword [esp + 0x7c], xmm0
mov edx, dword [esp + 0x80]
mov ecx, dword [esp + 0x7c]
mov eax, ecx
mov esi, edx
and eax, edi
and esi, ebp
cmp eax, ecx
jne 0x100a0f4c
cmp esi, edx
je 0x100a0f5e
dec ebx
test ebx, ebx
jg 0x100a0f04
pop edi
pop esi
pop ebp
xor al, al
pop ebx
add esp, 0x90
ret
pop edi
pop esi
pop ebp
mov al, bl
pop ebx
add esp, 0x90
ret
pop edi
pop esi
pop ebp
or al, 0xff
pop ebx
add esp, 0x90
ret