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

Disassembly:
sub esp, 0x28
push ebx
push ebp
push esi
mov esi, eax
mov eax, dword [esi + 4]
mov ecx, dword [esi + 0xc]
mov edx, dword [esi + 8]
xor ebp, ebp
mov dword [esp + 0x1c], eax
mov eax, dword [esi + 0x10]
push edi
mov edi, dword [esp + 0x3c]
mov dword [esp + 0x2c], eax
mov dword [esi + 0x1c], ebp
mov dword [esi + 0x28], ebp
mov dword [esi + 0x30], ebp
mov dword [esi + 0x3c], ebp
mov dword [esi + 0x4c], ebp
mov dword [esi + 0x58], ebp
movsx eax, word [edi]
mov dword [esp + 0x28], ecx
mov ecx, dword [esi + 0x24]
cmp eax, ecx
mov dword [esp + 0x24], edx
mov edx, dword [esi]
mov dword [esp + 0x10], ebp
mov dword [esp + 0x34], edx
jbe 0x1003a73f
lea ebx, [eax + 3]
lea eax, [esp + 0x10]
push eax
mov eax, dword [esi + 0x2c]
push eax
and ebx, 0xfffffffc
push ebx
push ecx
push 4
push edx
call fcn.1000ace0
mov dword [esi + 0x2c], eax
mov eax, dword [esp + 0x28]
add esp, 0x18
cmp eax, ebp
jne 0x1003a9f8
mov dword [esi + 0x24], ebx
movsx eax, word [edi + 2]
mov ecx, dword [esi + 0x18]
add eax, 2
cmp eax, ecx
jbe 0x1003a77f
lea ebx, [eax + 9]
mov eax, dword [esi + 0x20]
lea edx, [esp + 0x10]
push edx
push eax
and ebx, 0xfffffff8
push ebx
push ecx
mov ecx, dword [esp + 0x44]
push 0x28
push ecx
call fcn.1000ace0
mov dword [esi + 0x20], eax
mov eax, dword [esp + 0x28]
add esp, 0x18
cmp eax, ebp
jne 0x1003a9f8
mov dword [esi + 0x18], ebx
movsx edx, word [edi + 2]
mov dword [esi + 0x1c], edx
movsx eax, word [edi]
push edi
mov dword [esi + 0x28], eax
mov dword [esi + 0x48], 2
mov dword [esi + 0x64], 0xffffffff
call fcn.100080c0
add esp, 4
cmp eax, 1
jne 0x1003a7b2
mov dword [esi + 0x48], 0xfffffffe
mov dword [esi + 0x64], eax
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x28]
mov ebx, dword [esi + 0x20]
mov dword [esi + 8], eax
mov eax, dword [esi + 0x1c]
cmp eax, ebp
mov dword [esi + 4], ecx
mov ecx, dword [esp + 0x2c]
mov dword [esi + 0xc], edx
mov dword [esi + 0x10], ecx
mov dword [esi + 0x74], ebp
mov dword [esi + 0x78], ebp
je 0x1003a9f4
mov ecx, dword [edi + 0xc]
mov ebp, dword [edi + 4]
lea edx, [eax + eax*4]
mov eax, dword [edi + 8]
mov dword [esp + 0x18], eax
movsx eax, word [ecx]
lea edx, [ebx + edx*8]
cmp ebx, edx
lea eax, [eax + eax*4]
lea eax, [ebx + eax*8]
mov dword [esp + 0x1c], edx
mov dword [esp + 0x34], eax
mov dword [esp + 0x14], eax
mov dword [esp + 0x30], 0
mov edi, ebx
jae 0x1003a8e6
lea esp, [esp]
mov cx, word [ebp]
mov eax, dword [esp + 0x20]
mov word [edi + 0xc], cx
mov dx, word [ebp + 4]
mov word [edi + 0xe], dx
mov ecx, dword [ebp]
push eax
push ecx
call fcn.10006bc0
mov edx, dword [esp + 0x2c]
add eax, edx
mov dword [edi + 0x10], eax
mov dword [edi + 4], eax
mov eax, dword [esp + 0x30]
mov ecx, dword [ebp + 4]
push eax
push ecx
call fcn.10006bc0
mov edx, dword [esp + 0x3c]
add eax, edx
mov dword [edi + 0x14], eax
mov dword [edi + 8], eax
mov eax, dword [esp + 0x28]
movzx eax, byte [eax]
and eax, 3
add esp, 0x10
sub eax, 0
je 0x1003a889
sub eax, 2
je 0x1003a882
mov word [edi], 0
jmp 0x1003a88e
mov word [edi], 2
jmp 0x1003a88e
mov word [edi], 1
cmp edi, dword [esp + 0x34]
mov eax, dword [esp + 0x14]
mov dword [edi + 0x24], eax
mov dword [eax + 0x20], edi
mov dword [esp + 0x14], edi
jne 0x1003a8cd
mov ecx, dword [esp + 0x3c]
mov eax, dword [esp + 0x30]
movsx edx, word [ecx]
add eax, 1
cmp eax, edx
mov dword [esp + 0x30], eax
jge 0x1003a8cd
mov ecx, dword [ecx + 0xc]
movsx eax, word [ecx + eax*2]
lea edx, [eax + eax*4]
lea eax, [ebx + edx*8]
mov dword [esp + 0x34], eax
mov dword [esp + 0x14], eax
add dword [esp + 0x18], 1
add edi, 0x28
add ebp, 8
cmp edi, dword [esp + 0x1c]
jb 0x1003a820
mov edx, dword [esp + 0x1c]
mov eax, dword [esi + 0x2c]
mov ecx, dword [esi + 0x28]
lea edi, [eax + ecx*4]
mov ecx, dword [esp + 0x3c]
mov esi, dword [ecx + 0xc]
xor ecx, ecx
cmp eax, edi
jae 0x1003a91f
lea esp, [esp]
movsx ecx, cx
lea ecx, [ecx + ecx*4]
lea ecx, [ebx + ecx*8]
mov dword [eax], ecx
mov cx, word [esi]
add cx, 1
add eax, 4
add esi, 2
cmp eax, edi
movzx ecx, cx
jb 0x1003a900
xor ebp, ebp
cmp ebx, edx
mov eax, ebx
mov dword [esp + 0x34], eax
mov dword [esp + 0x18], ebp
mov dword [esp + 0x3c], 4
jae 0x1003a9f4
lea esi, [ebx + 0xc]
jmp 0x1003a944
mov eax, dword [esp + 0x34]
lea edx, [esi - 0xc]
cmp edx, eax
jne 0x1003a978
mov edi, dword [eax + 0x24]
movsx ebp, word [eax + 0xc]
movsx ecx, word [edi + 0xc]
movsx edx, word [eax + 0xe]
sub ebp, ecx
movsx ecx, word [edi + 0xe]
sub edx, ecx
mov eax, ebp
mov dword [esp + 0x18], edx
call fcn.1003a5a0
add edi, 0x28
mov dword [esp + 0x3c], eax
mov dword [esp + 0x34], edi
mov dl, byte [esp + 0x3c]
mov eax, dword [esi + 0x14]
movsx ecx, word [esi]
mov byte [esi - 0xa], dl
movsx edi, word [eax + 0xc]
movsx ebx, word [eax + 0xe]
movsx edx, word [esi + 2]
sub edi, ecx
sub ebx, edx
mov edx, ebx
mov eax, edi
call fcn.1003a5a0
test byte [esi - 0xc], 3
mov dword [esp + 0x3c], eax
mov byte [esi - 9], al
jne 0x1003a9d8
mov cl, byte [esi - 0xa]
cmp al, cl
jne 0x1003a9cc
cmp al, 4
jne 0x1003a9d8
mov eax, dword [esp + 0x18]
push ebx
push edi
push eax
push ebp
call fcn.10006de0
add esp, 0x10
test eax, eax
jne 0x1003a9d8
jmp 0x1003a9de
movsx edx, al
movsx eax, cl
neg edx
cmp eax, edx
jne 0x1003a9de
or word [esi - 0xc], 0x100
add esi, 0x28
lea ecx, [esi - 0xc]
cmp ecx, dword [esp + 0x1c]
mov ebp, edi
mov dword [esp + 0x18], ebx
jb 0x1003a940
mov eax, dword [esp + 0x10]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x28
ret