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

Disassembly:
sub esp, 0x68
mov eax, dword [esp + 0x6c]
mov edx, dword [eax + 0x18]
push ebx
push ebp
push esi
mov esi, dword [eax + 0x14]
mov eax, dword [eax]
mov ecx, eax
and ecx, 7
add ecx, ecx
mov ebp, 0xba50
shr ebp, cl
sar eax, 3
and eax, 0x3f
push edi
mov edi, dword [esp + 0x80]
mov ebx, dword [edi + 0x18]
and ebp, 3
mov ecx, ebp
mov ebp, 1
add eax, ebp
shl eax, cl
mov dword [esp + 0x34], ebx
mov dword [esp + 0x40], edx
mov dword [esp + 0x14], 0x80000000
mov dword [esp + 0x1c], eax
xor eax, eax
cmp ebx, 2
mov dword [esp + 0x48], eax
mov dword [esp + 0x4c], eax
mov dword [esp + 0x50], eax
mov dword [esp + 0x54], eax
jl 0x1003cb36
cmp dword [edi + 0x44], eax
jl 0x1003cb36
cmp dword [edi + 0x3c], esi
jge 0x1003cb36
cmp dword [edi + 0x40], eax
jl 0x1003cb36
cmp dword [edi + 0x38], edx
jge 0x1003cb36
push eax
push 0x1003a1b0
push edi
call sym.cxcore099.dll_cvSeqSort
push 0
lea eax, [esp + 0x68]
push eax
push edi
call sym.cxcore099.dll_cvStartReadSeq
add esp, 0x18
test ebx, ebx
jle 0x1003c8e6
mov ecx, dword [esp + 0x64]
mov eax, dword [ecx + 0xc]
cmp dword [esp + 0x14], eax
jge 0x1003c8c3
mov dword [esp + 0x14], eax
add ecx, 0x10
cmp ecx, dword [esp + 0x6c]
mov dword [esp + 0x64], ecx
jb 0x1003c8e2
lea ecx, [esp + 0x58]
push ebp
push ecx
call sym.cxcore099.dll_cvChangeSeqBlock
mov ecx, dword [esp + 0x6c]
add esp, 8
sub ebx, ebp
jne 0x1003c8b6
lea edx, [esp + 0x48]
push edx
push edi
mov dword [esp + 0x58], 0x7fffffff
call sym.cxcore099.dll_cvSeqPush
xor ebx, ebx
push ebx
lea eax, [esp + 0x64]
push eax
push edi
mov dword [esp + 0x34], ebx
mov dword [esp + 0x64], ebx
call sym.cxcore099.dll_cvStartReadSeq
mov eax, dword [esp + 0x78]
add esp, 0x14
cmp dword [esp + 0x14], esi
mov edx, eax
mov dword [esp + 0x18], edx
jle 0x1003c926
mov dword [esp + 0x14], esi
mov esi, dword [eax + 8]
cmp esi, dword [esp + 0x14]
mov dword [esp + 0x10], esi
jge 0x1003cb36
mov ecx, dword [esp + 0x50]
jmp 0x1003c94a
mov edx, dword [esp + 0x18]
mov esi, dword [esp + 0x10]
xor ebx, ebx
xor eax, eax
cmp esi, ebx
setl al
mov dword [esp + 0x30], ebx
mov dword [esp + 0x28], ebx
lea ebx, [esp + 0x48]
mov edi, ecx
mov dword [esp + 0x38], eax
mov dword [esp + 0x24], edi
test edi, edi
jne 0x1003c998
cmp dword [edx + 8], esi
jne 0x1003cacd
test edi, edi
mov ebp, ebx
mov dword [esp + 0x3c], ebp
je 0x1003c9a8
cmp dword [edx + 8], esi
jg 0x1003c989
mov eax, dword [edi]
cmp eax, dword [edx]
jge 0x1003c9a8
mov ebx, edi
mov edi, dword [edi + 8]
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x24], edi
jmp 0x1003c9fc
cmp dword [edi + 0xc], esi
jne 0x1003c974
mov ecx, dword [edi + 8]
mov dword [ebx + 8], ecx
mov edi, dword [edi + 8]
jmp 0x1003c963
mov ecx, dword [esp + 0x34]
cmp dword [esp + 0x20], ecx
jge 0x1003cac8
mov dword [ebx + 8], edx
mov dword [edx + 8], edi
mov eax, dword [esp + 0x64]
mov ebx, edx
mov dword [esp + 0x2c], edx
mov edx, dword [esp + 0x80]
add eax, dword [edx + 0x1c]
cmp eax, dword [esp + 0x6c]
mov dword [esp + 0x64], eax
jb 0x1003c9f1
lea eax, [esp + 0x58]
push 1
push eax
call sym.cxcore099.dll_cvChangeSeqBlock
mov eax, dword [esp + 0x6c]
mov esi, dword [esp + 0x18]
add esp, 8
add dword [esp + 0x20], 1
mov dword [esp + 0x18], eax
mov edx, eax
cmp dword [esp + 0x28], 0
je 0x1003cab9
cmp dword [esp + 0x38], 0
jne 0x1003caae
mov eax, dword [esp + 0x7c]
mov edx, dword [eax + 4]
imul edx, dword [esp + 0x10]
add edx, dword [eax + 0x10]
mov ecx, dword [ebp]
mov eax, dword [ebx]
cmp ecx, eax
jle 0x1003ca30
mov esi, ecx
mov ecx, eax
mov eax, esi
mov esi, dword [esp + 0x40]
add ecx, 0xffff
sar ecx, 0x10
sar eax, 0x10
cmp ecx, esi
jge 0x1003caa6
test eax, eax
jl 0x1003caa6
test ecx, ecx
jge 0x1003ca4e
xor ecx, ecx
cmp eax, esi
jl 0x1003ca55
lea eax, [esi - 1]
mov esi, dword [esp + 0x1c]
imul eax, esi
imul ecx, esi
add eax, edx
add ecx, edx
mov edx, eax
cmp ecx, edx
ja 0x1003caa6
mov ebp, esi
mov esi, dword [esp + 0x84]
neg ebp
sub esi, ecx
cmp dword [esp + 0x1c], 0
jle 0x1003ca98
mov edi, dword [esp + 0x1c]
mov eax, ecx
mov bl, byte [esi + eax]
mov byte [eax], bl
add eax, 1
sub edi, 1
jne 0x1003ca83
mov ebx, dword [esp + 0x2c]
mov edi, dword [esp + 0x24]
add ecx, dword [esp + 0x1c]
add esi, ebp
cmp ecx, edx
jbe 0x1003ca76
mov ebp, dword [esp + 0x3c]
mov esi, dword [esp + 0x10]
mov edx, dword [esp + 0x18]
mov ecx, dword [ebp + 4]
add dword [ebp], ecx
mov eax, dword [ebx + 4]
add dword [ebx], eax
xor dword [esp + 0x28], 1
mov ebp, 1
jmp 0x1003c967
mov ebp, 1
mov ecx, dword [esp + 0x50]
xor esi, esi
cmp ecx, esi
lea edx, [esp + 0x48]
je 0x1003cb0d
jmp 0x1003cae0
mov eax, dword [ecx + 8]
test eax, eax
je 0x1003cb09
mov edi, dword [ecx]
cmp edi, dword [eax]
jle 0x1003cb01
mov dword [edx + 8], eax
mov edx, dword [eax + 8]
mov dword [ecx + 8], edx
mov dword [eax + 8], ecx
mov edx, eax
mov dword [esp + 0x30], ebp
jmp 0x1003cb05
mov edx, ecx
mov ecx, eax
cmp ecx, esi
jne 0x1003cae0
mov ecx, dword [esp + 0x50]
cmp dword [esp + 0x30], 0
mov esi, edx
je 0x1003cb22
cmp edx, ecx
je 0x1003cb22
lea eax, [esp + 0x48]
cmp edx, eax
jne 0x1003cad3
mov eax, dword [esp + 0x10]
add eax, ebp
cmp eax, dword [esp + 0x14]
mov dword [esp + 0x10], eax
jl 0x1003c940
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x68
ret