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

Disassembly:
push 0xffffffffffffffff
push 0x10080ff0
mov eax, dword fs:[0]
push eax
sub esp, 0xc8
mov eax, dword [0x10097288]
xor eax, esp
mov dword [esp + 0xc0], eax
push ebx
push ebp
push esi
push edi
mov eax, dword [0x10097288]
xor eax, esp
push eax
lea eax, [esp + 0xdc]
mov dword fs:[0], eax
mov edi, edx
mov dword [esp + 0x48], edi
mov esi, ecx
mov dword [esp + 0x28], esi
mov ecx, dword [esi]
mov eax, dword [esp + 0xf4]
mov dword [esp + 0x68], eax
mov ebx, dword [ecx + 0x24]
mov dword [esp + 0x84], ebx
cmp ebx, 3
jle 0x1003bc5e
cmp byte [ecx + 0x3c], 0
mov byte [esp + 0x27], 1
jne 0x1003bc63
mov byte [esp + 0x27], 0
cmp ebx, 5
sete byte [esp + 0x3f]
call fcn.10009fd0
mov ebp, dword [esp + 0xec]
mov dword [esp + 0x80], eax
mov eax, 0x2e8ba2e9
mov dword [esp + 0xd0], 0
lea ecx, [ebp + 6]
imul ecx
mov eax, 0x55555556
sar edx, 1
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
mov dword [esp + 0xc0], ecx
lea ecx, [ebp + 1]
imul ecx
lea ecx, [ebp + 2]
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [esp + 0xc4], eax
mov eax, 0x55555556
imul ecx
mov ecx, dword [esp + 0x80]
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [esp + 0xc8], eax
mov eax, 0x66666667
imul ebp
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [esp + 0xcc], eax
lea eax, [ecx + 1]
mov dword [esp + 0xb4], eax
imul eax, ebx
dec eax
mov dword [esp + 0x78], eax
js 0x1003c7b7
jmp 0x1003bd17
mov ecx, dword [esp + 0x80]
mov edx, dword [esi]
push edi
push eax
push 0
push ecx
lea ecx, [esp + 0xc8]
call fcn.10052dd0
mov ebx, dword [esp + 0xcc]
add esp, 0x10
cmp ebx, 7
jg 0x1003c7a8
cmp ebp, 0x64
jge 0x1003bd4b
cmp ebx, 5
jg 0x1003c7a8
cmp ebp, 0x46
jge 0x1003bd59
cmp ebx, 3
jg 0x1003c7a8
cmp ebp, 0x14
jge 0x1003bd67
cmp ebx, 1
jg 0x1003c7a8
mov eax, dword [edi]
mov ecx, edi
mov ebp, dword [esp + 0xb8]
push ebp
call dword [eax + 0xc]
mov edx, dword [edi]
mov ecx, edi
push ebp
mov esi, eax
call dword [edx + 8]
cmp eax, esi
jge 0x1003c79d
cmp dword [esp + 0x84], 3
lea esi, [ebp*4]
jle 0x1003bda1
mov eax, dword [esi + 0x1008c910]
jmp 0x1003bda7
mov eax, dword [esi + 0x1008c990]
push eax
lea ecx, [esp + 0x8c]
call fcn.10018f50
mov dword [esp + 0xe4], 0
mov eax, dword [esp + esi + 0xc0]
mov dword [esp + 0xa0], eax
test eax, eax
jne 0x1003be1a
mov dword [esp + 0xe4], 0xffffffff
mov eax, dword [esp + 0x88]
test eax, eax
je 0x1003c79d
push eax
call fcn.1006f76a
add esp, 4
mov dword [esp + 0x88], 0
mov dword [esp + 0x8c], 0
mov dword [esp + 0x90], 0
jmp 0x1003c79d
mov ecx, 0xff
cmp ebx, 4
jle 0x1003be2e
mov eax, 0x3fc
cdq
idiv ebx
mov ecx, eax
mov eax, dword [esp + 0x80]
sub eax, ebx
imul eax, ecx
cdq
idiv dword [esp + 0x80]
mov dword [esp + 0x2c], eax
test ebx, ebx
jne 0x1003be56
mov ecx, dword [esp + 0xec]
lea eax, [eax + ecx*2]
jmp 0x1003be62
cmp ebx, 1
jne 0x1003be66
add eax, dword [esp + 0xec]
mov dword [esp + 0x2c], eax
mov eax, ebx
and eax, 0x80000001
jns 0x1003be74
dec eax
or eax, 0xfffffffe
inc eax
mov eax, dword [esp + 0x28]
jne 0x1003c2f7
mov eax, dword [eax]
mov edi, 1
mov dword [esp + 0x30], eax
mov dword [esp + 0x18], edi
mov esi, dword [eax + 0x18]
lea eax, [ebx + 1]
cdq
sub eax, edx
mov edx, edi
sar eax, 1
mov ecx, eax
lea eax, [esi - 1]
shl edx, cl
mov dword [esp + 0x60], edx
xor edx, edx
mov ecx, dword [esp + 0x60]
div ecx
cmp eax, edi
jbe 0x1003c759
mov esi, dword [esp + 0x30]
mov eax, ebx
cdq
sub eax, edx
sar eax, 1
mov dword [esp + 0x64], eax
lea eax, [ecx*4]
mov dword [esp + 0x38], eax
lea eax, [ecx*8]
mov dword [esp + 0x74], eax
lea ebx, [ebx]
mov eax, dword [esp + 0x28]
xor ecx, ecx
mov dword [esp + 0x40], ecx
mov ecx, dword [eax + 4]
mov eax, 0x4bda12f7
sub ecx, esi
imul ecx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
test eax, eax
jle 0x1003c2c7
xor eax, eax
mov dword [esp + 0x34], eax
mov edi, edi
add eax, esi
mov dword [esp + 0x1c], eax
cmp dword [eax + 0x58], 0
jge 0x1003c290
mov eax, dword [eax + 0x40]
mov edi, 1
mov ecx, dword [esp + 0x64]
xor edx, edx
shl edi, cl
mov ecx, dword [esp + 0x38]
mov eax, dword [eax + ecx]
div edi
mov ecx, dword [esp + 0x34]
xor edx, edx
mov esi, eax
mov eax, dword [esp + 0x30]
mov eax, dword [eax + ecx + 0x4c]
mov ecx, dword [esp + 0x38]
mov eax, dword [eax + ecx]
dec eax
div edi
inc eax
mov dword [esp + 0x7c], eax
cmp esi, eax
jae 0x1003c28c
cmp byte [esp + 0xf0], 0
je 0x1003bfa4
mov eax, dword [esp + 0x68]
mov edi, dword [esp + 0x18]
inc edi
push esi
mov ecx, dword [eax]
lea eax, [edi - 2]
push eax
mov edx, dword [ecx]
push ebx
call dword [edx + 8]
cmp eax, 0xff
je 0x1003c27b
mov eax, dword [esp + 0x68]
push esi
push edi
push ebx
mov ecx, dword [eax]
mov eax, dword [ecx]
call dword [eax + 8]
cmp eax, 0xff
je 0x1003c27b
cmp byte [esp + 0x27], 0
mov edi, dword [esp + 0x1c]
je 0x1003bfca
cmp ebp, 3
jge 0x1003bfca
mov ecx, dword [edi + 0xc]
push esi
push dword [esp + 0x1c]
mov eax, dword [ecx]
push ebx
call dword [eax + 8]
test eax, eax
je 0x1003c27b
cmp byte [esp + 0x3f], 0
je 0x1003bfec
cmp ebp, 4
jge 0x1003bfec
mov ecx, dword [edi + 0x10]
push esi
push dword [esp + 0x1c]
mov eax, dword [ecx]
push ebx
call dword [eax + 8]
test eax, eax
jg 0x1003c27b
mov edx, dword [esp + 0x48]
lea eax, [esp + 0x50]
push 0
push eax
lea eax, [esp + 0x5c]
push eax
push esi
push dword [esp + 0x28]
lea ecx, [esp + 0x9c]
push ebp
push ebx
push edi
call fcn.10052a20
mov ecx, dword [edi + ebp*4]
add esp, 0x20
mov dword [esp + 0x94], eax
lea eax, [edi + ebp*4]
mov dword [esp + 0x4c], eax
mov edx, dword [ecx]
push esi
push dword [esp + 0x1c]
push ebx
call dword [edx + 8]
cmp byte [esp + 0xf0], 0
mov dword [esp + 0x5c], eax
je 0x1003c05a
mov eax, dword [esp + 0x68]
push esi
push dword [esp + 0x1c]
mov ecx, dword [eax]
push ebx
mov edx, dword [ecx]
call dword [edx + 8]
mov ecx, dword [esp + 0x2c]
sub ecx, eax
mov dword [esp + 0x58], ecx
jmp 0x1003c062
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x58], eax
cmp dword [esp + 0x84], 3
jle 0x1003c080
mov ecx, dword [edi + 0xc]
push esi
push dword [esp + 0x1c]
mov eax, dword [ecx]
push ebx
call dword [eax + 8]
mov dword [esp + 0x30], eax
jmp 0x1003c088
mov dword [esp + 0x30], 0xff
mov ecx, dword [edi + ebp*4]
push esi
push dword [esp + 0x1c]
mov eax, dword [ecx]
push ebx
call dword [eax + 8]
mov ecx, dword [edi]
push esi
push dword [esp + 0x1c]
mov dword [esp + 0x74], eax
mov edx, dword [ecx]
push ebx
call dword [edx + 8]
mov ecx, eax
cmp ebp, 4
jne 0x1003c0b5
mov ecx, 0xff
jmp 0x1003c110
test ebp, ebp
je 0x1003c102
cmp ebx, 1
jg 0x1003c102
mov edi, dword [esp + 0xec]
cmp edi, 0x64
jg 0x1003c102
mov eax, dword [esp + 0x6c]
cdq
xor eax, edx
sub eax, edx
cmp eax, 0x20
jle 0x1003c0dd
cmp ecx, 0x40
jg 0x1003c102
mov eax, ecx
cdq
and edx, 3
lea ecx, [edx + eax]
mov eax, dword [esp + 0x30]
cdq
sub eax, edx
sar ecx, 2
sar eax, 1
add ecx, eax
mov eax, edi
cdq
sub eax, edx
sar eax, 1
add eax, 0xf
add ecx, eax
jmp 0x1003c110
mov eax, dword [esp + 0x30]
cdq
sub eax, edx
mov ecx, eax
sar ecx, 1
sub ecx, 0xffffff80
mov eax, dword [esp + 0xa0]
imul eax, dword [esp + 0x58]
cdq
idiv ecx
mov ecx, eax
mov eax, dword [esp + 0x5c]
sub eax, dword [esp + 0x94]
mov dword [esp + 0x5c], eax
cdq
mov edi, eax
mov dword [esp + 0x6c], ecx
xor edi, edx
lea ecx, [ecx + ecx*2]
sub edi, edx
add ecx, ecx
mov eax, 0x66666667
imul ecx
sar edx, 1
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp edi, eax
jg 0x1003c27b
test ebx, ebx
jle 0x1003c166
cmp edi, dword [esp + 0x6c]
jg 0x1003c27b
mov eax, dword [esp + 0x4c]
mov edi, dword [esp + 0x18]
inc edi
push esi
mov ecx, dword [eax]
lea edx, [edi - 2]
push edx
mov eax, dword [ecx]
push ebx
mov dword [esp + 0x64], edx
call dword [eax + 8]
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x4c]
push esi
push edi
push ebx
mov ecx, dword [eax]
mov eax, dword [ecx]
call dword [eax + 8]
mov edi, eax
mov eax, 0x55555556
imul dword [esp + 0x5c]
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
add dword [esp + 0x44], ecx
add edi, ecx
mov dword [esp + 0x9c], edi
xor edi, edi
test ebp, ebp
jle 0x1003c1d8
mov eax, dword [esp + 0x1c]
push esi
push dword [esp + 0x5c]
mov ecx, dword [eax + edi*4]
push ebx
mov eax, dword [ecx]
call dword [eax + 8]
mov ecx, dword [esp + 0x88]
mov dword [ecx + edi*4], eax
inc edi
cmp edi, ebp
jl 0x1003c1b7
mov ecx, dword [esp + 0x48]
lea edx, [esp + 0x44]
push edx
lea edx, [esp + 0x54]
push edx
mov eax, dword [ecx]
lea edx, [esp + 0x5c]
push edx
lea edx, [esp + 0x94]
push edx
push ebp
call dword [eax + 0x14]
xor edi, edi
test ebp, ebp
jle 0x1003c22a
nop
mov eax, dword [esp + 0x1c]
mov edx, dword [esp + 0x18]
mov ebx, dword [esp + 0xbc]
inc edx
push esi
mov ecx, dword [eax + edi*4]
push edx
push ebx
mov eax, dword [ecx]
call dword [eax + 8]
mov ecx, dword [esp + 0x88]
mov dword [ecx + edi*4], eax
inc edi
cmp edi, ebp
jl 0x1003c200
mov ecx, dword [esp + 0x48]
lea edx, [esp + 0x9c]
push edx
lea edx, [esp + 0x54]
push edx
mov eax, dword [ecx]
lea edx, [esp + 0x5c]
push edx
lea edx, [esp + 0x94]
push edx
push ebp
call dword [eax + 0x14]
mov edi, dword [esp + 0x4c]
push dword [esp + 0x44]
push esi
mov ecx, dword [edi]
push dword [esp + 0x60]
push ebx
mov eax, dword [ecx]
call dword [eax]
mov ecx, dword [edi]
push dword [esp + 0x9c]
mov edi, dword [esp + 0x1c]
push esi
mov eax, dword [ecx]
lea edx, [edi + 1]
push edx
push ebx
call dword [eax]
jmp 0x1003c27f
mov edi, dword [esp + 0x18]
inc esi
cmp esi, dword [esp + 0x7c]
jb 0x1003bf60
jmp 0x1003c290
mov edi, dword [esp + 0x18]
mov eax, dword [esp + 0x28]
inc dword [esp + 0x40]
add dword [esp + 0x34], 0x6c
mov esi, dword [eax]
mov ecx, dword [eax + 4]
mov eax, 0x4bda12f7
sub ecx, esi
mov dword [esp + 0x30], esi
imul ecx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp dword [esp + 0x40], eax
mov eax, dword [esp + 0x34]
jl 0x1003bf10
mov eax, dword [esp + 0x74]
xor edx, edx
add dword [esp + 0x38], eax
add edi, 2
mov eax, dword [esp + 0x28]
mov dword [esp + 0x18], edi
mov esi, dword [eax]
mov dword [esp + 0x30], esi
mov eax, dword [esi + 0x18]
dec eax
div dword [esp + 0x60]
cmp edi, eax
jb 0x1003bee0
jmp 0x1003c759
mov esi, dword [eax]
xor edi, edi
lea eax, [ebx + 1]
mov dword [esp + 0x74], esi
cdq
sub eax, edx
mov edx, 1
mov esi, dword [esi + 0x18]
sar eax, 1
mov ecx, eax
shl edx, cl
mov dword [esp + 0x64], edx
lea eax, [esi - 1]
mov ecx, dword [esp + 0x64]
xor edx, edx
div ecx
inc eax
je 0x1003c759
mov esi, dword [esp + 0x74]
mov eax, ebx
cdq
sub eax, edx
mov dword [esp + 0x30], edi
sar eax, 1
mov dword [esp + 0x7c], eax
lea eax, [ecx*4]
mov dword [esp + 0x98], eax
lea ebx, [ebx]
mov eax, dword [esp + 0x28]
xor ecx, ecx
mov dword [esp + 0x4c], ecx
mov ecx, dword [eax + 4]
mov eax, 0x4bda12f7
sub ecx, esi
imul ecx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
test eax, eax
jle 0x1003c734
xor eax, eax
mov dword [esp + 0x5c], eax
mov edi, edi
add eax, esi
mov dword [esp + 0x18], eax
cmp dword [eax + 0x58], 0
jge 0x1003c701
mov eax, dword [eax + 0x40]
mov esi, 1
mov ecx, dword [esp + 0x7c]
xor edx, edx
shl esi, cl
mov ecx, dword [esp + 0x30]
mov eax, dword [eax + ecx]
div esi
xor edx, edx
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x18]
mov ecx, dword [eax + 0x4c]
mov eax, dword [esp + 0x30]
mov eax, dword [ecx + eax]
dec eax
div esi
mov edx, dword [esp + 0x1c]
inc eax
or eax, 1
cmp edx, 1
jbe 0x1003c3d3
test dl, 1
jne 0x1003c3d3
dec edx
test edx, edx
mov ecx, 1
cmove edx, ecx
dec eax
mov dword [esp + 0x1c], edx
mov dword [esp + 0x6c], eax
cmp edx, eax
jae 0x1003c701
mov edi, edi
cmp byte [esp + 0xf0], 0
je 0x1003c436
mov eax, dword [esp + 0x68]
lea esi, [edx + 1]
mov ecx, dword [eax]
lea eax, [esi - 2]
push eax
push edi
push ebx
mov edx, dword [ecx]
call dword [edx + 8]
cmp eax, 0xff
je 0x1003c6ec
mov eax, dword [esp + 0x68]
push esi
push edi
push ebx
mov ecx, dword [eax]
mov eax, dword [ecx]
call dword [eax + 8]
cmp eax, 0xff
je 0x1003c6ec
mov edx, dword [esp + 0x1c]
cmp byte [esp + 0x27], 0
mov esi, dword [esp + 0x18]
je 0x1003c459
cmp ebp, 3
jge 0x1003c459
mov ecx, dword [esi + 0xc]
push edx
push edi
push ebx
mov eax, dword [ecx]
call dword [eax + 8]
test eax, eax
je 0x1003c6ec
cmp byte [esp + 0x3f], 0
je 0x1003c47e
cmp ebp, 4
jge 0x1003c47e
mov ecx, dword [esi + 0x10]
mov esi, dword [esp + 0x1c]
push esi
push edi
mov eax, dword [ecx]
push ebx
call dword [eax + 8]
test eax, eax
jg 0x1003c6ec
jmp 0x1003c482
mov esi, dword [esp + 0x1c]
mov edx, dword [esp + 0x48]
lea eax, [esp + 0x50]
push 0
push eax
lea eax, [esp + 0x5c]
push eax
mov eax, dword [esp + 0x24]
lea ecx, [esp + 0x94]
push esi
push edi
push ebp
push ebx
push eax
call fcn.10052a20
mov dword [esp + 0xb4], eax
add esp, 0x20
mov eax, dword [esp + 0x18]
mov ecx, dword [eax + ebp*4]
lea eax, [eax + ebp*4]
mov dword [esp + 0x34], eax
push esi
push edi
mov edx, dword [ecx]
push ebx
call dword [edx + 8]
cmp byte [esp + 0xf0], 0
mov dword [esp + 0x40], eax
je 0x1003c4ef
mov eax, dword [esp + 0x68]
push esi
push edi
push ebx
mov ecx, dword [eax]
mov edx, dword [ecx]
call dword [edx + 8]
mov ecx, dword [esp + 0x2c]
sub ecx, eax
mov dword [esp + 0x60], ecx
jmp 0x1003c4f7
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x60], eax
cmp dword [esp + 0x84], 3
jle 0x1003c516
mov eax, dword [esp + 0x18]
push esi
push edi
push ebx
mov ecx, dword [eax + 0xc]
mov eax, dword [ecx]
call dword [eax + 8]
mov dword [esp + 0x38], eax
jmp 0x1003c51e
mov dword [esp + 0x38], 0xff
mov ecx, dword [esp + 0x34]
push esi
push edi
push ebx
mov ecx, dword [ecx]
mov eax, dword [ecx]
call dword [eax + 8]
mov dword [esp + 0x74], eax
mov eax, dword [esp + 0x18]
push esi
push edi
push ebx
mov ecx, dword [eax]
mov edx, dword [ecx]
call dword [edx + 8]
mov ecx, eax
cmp ebp, 4
jne 0x1003c54c
mov ecx, 0xff
jmp 0x1003c5aa
test ebp, ebp
je 0x1003c59c
cmp ebx, 1
jg 0x1003c59c
cmp dword [esp + 0xec], 0x64
jg 0x1003c59c
mov eax, dword [esp + 0x74]
cdq
xor eax, edx
sub eax, edx
cmp eax, 0x20
jle 0x1003c572
cmp ecx, 0x40
jg 0x1003c59c
mov eax, ecx
cdq
and edx, 3
lea ecx, [edx + eax]
mov eax, dword [esp + 0x38]
cdq
sub eax, edx
sar ecx, 2
sar eax, 1
add ecx, eax
mov eax, dword [esp + 0xec]
cdq
sub eax, edx
sar eax, 1
add eax, 0xf
add ecx, eax
jmp 0x1003c5aa
mov eax, dword [esp + 0x38]
cdq
sub eax, edx
mov ecx, eax
sar ecx, 1
sub ecx, 0xffffff80
mov eax, dword [esp + 0xa0]
imul eax, dword [esp + 0x60]
cdq
idiv ecx
mov ecx, eax
mov eax, dword [esp + 0x40]
sub eax, dword [esp + 0x94]
mov dword [esp + 0x40], eax
cdq
xor eax, edx
sub eax, edx
cmp eax, ecx
jg 0x1003c6ec
mov eax, dword [esp + 0x34]
inc esi
mov dword [esp + 0x58], esi
mov ecx, dword [eax]
lea edx, [esi - 2]
push edx
push edi
push ebx
mov eax, dword [ecx]
mov dword [esp + 0x6c], edx
call dword [eax + 8]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x34]
push esi
push edi
push ebx
mov ecx, dword [eax]
mov eax, dword [ecx]
call dword [eax + 8]
mov esi, eax
mov eax, 0x55555556
imul dword [esp + 0x40]
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
add dword [esp + 0x20], ecx
add esi, ecx
mov dword [esp + 0xa4], esi
xor esi, esi
test ebp, ebp
jle 0x1003c651
jmp 0x1003c630
mov eax, dword [esp + 0x18]
push dword [esp + 0x60]
push edi
mov ecx, dword [eax + esi*4]
push ebx
mov eax, dword [ecx]
call dword [eax + 8]
mov ecx, dword [esp + 0x88]
mov dword [ecx + esi*4], eax
inc esi
cmp esi, ebp
jl 0x1003c630
mov ecx, dword [esp + 0x48]
lea edx, [esp + 0x20]
push edx
lea edx, [esp + 0x54]
push edx
mov eax, dword [ecx]
lea edx, [esp + 0x5c]
push edx
lea edx, [esp + 0x94]
push edx
push ebp
call dword [eax + 0x14]
xor esi, esi
test ebp, ebp
jle 0x1003c6a1
jmp 0x1003c680
mov eax, dword [esp + 0x18]
push dword [esp + 0x58]
push edi
mov ecx, dword [eax + esi*4]
push ebx
mov eax, dword [ecx]
call dword [eax + 8]
mov ecx, dword [esp + 0x88]
mov dword [ecx + esi*4], eax
inc esi
cmp esi, ebp
jl 0x1003c680
mov ecx, dword [esp + 0x48]
lea edx, [esp + 0xa4]
push edx
lea edx, [esp + 0x54]
push edx
mov eax, dword [ecx]
lea edx, [esp + 0x5c]
push edx
lea edx, [esp + 0x94]
push edx
push ebp
call dword [eax + 0x14]
mov esi, dword [esp + 0x34]
push dword [esp + 0x20]
push dword [esp + 0x64]
mov ecx, dword [esi]
push edi
push ebx
mov eax, dword [ecx]
call dword [eax]
push dword [esp + 0xa4]
mov ecx, dword [esi]
push dword [esp + 0x5c]
push edi
mov eax, dword [ecx]
push ebx
call dword [eax]
mov edx, dword [esp + 0x1c]
add edx, 2
mov dword [esp + 0x1c], edx
cmp edx, dword [esp + 0x6c]
jb 0x1003c3f0
mov eax, dword [esp + 0x28]
inc dword [esp + 0x4c]
add dword [esp + 0x5c], 0x6c
mov ecx, dword [eax + 4]
mov esi, dword [eax]
sub ecx, esi
mov eax, 0x4bda12f7
imul ecx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp dword [esp + 0x4c], eax
mov eax, dword [esp + 0x5c]
jl 0x1003c380
mov eax, dword [esp + 0x98]
xor edx, edx
add dword [esp + 0x30], eax
inc edi
mov eax, dword [esp + 0x28]
mov esi, dword [eax]
mov eax, dword [esi + 0x18]
dec eax
div dword [esp + 0x64]
inc eax
cmp edi, eax
jb 0x1003c350
mov dword [esp + 0xe4], 0xffffffff
mov eax, dword [esp + 0x88]
test eax, eax
je 0x1003c799
push eax
call fcn.1006f76a
add esp, 4
mov dword [esp + 0x88], 0
mov dword [esp + 0x8c], 0
mov dword [esp + 0x90], 0
mov edi, dword [esp + 0x48]
mov ebp, dword [esp + 0xec]
mov esi, dword [esp + 0x28]
mov eax, dword [esp + 0x78]
dec eax
mov dword [esp + 0x78], eax
jns 0x1003bd10
mov ecx, dword [esi]
xor edx, edx
mov eax, dword [esp + 0xb4]
mov dword [esp + 0x58], edx
imul eax, dword [ecx + 0x24]
test eax, eax
jle 0x1003d1bd
push edi
push edx
push 0
push dword [esp + 0x8c]
mov edx, ecx
lea ecx, [esp + 0x7c]
call fcn.10052dd0
mov eax, dword [edi]
add esp, 0x10
mov ebx, dword [esp + 0x6c]
mov ecx, edi
push ebx
call dword [eax + 0xc]
mov edx, dword [edi]
mov ecx, edi
push ebx
mov esi, eax
call dword [edx + 8]
cmp eax, esi
jge 0x1003d19b
shl ebx, 2
cmp dword [esp + 0x84], 3
mov dword [esp + 0x5c], ebx
jle 0x1003c822
mov eax, dword [ebx + 0x1008c910]
jmp 0x1003c828
mov eax, dword [ebx + 0x1008c990]
push eax
lea ecx, [esp + 0xac]
call fcn.10018f50
lea eax, [esp + 0xc0]
mov dword [esp + 0xe4], 1
add eax, ebx
mov dword [esp + 0x30], eax
cmp dword [eax], 0
jne 0x1003c89b
mov dword [esp + 0xe4], 0xffffffff
mov eax, dword [esp + 0xa8]
test eax, eax
je 0x1003d19b
push eax
call fcn.1006f76a
add esp, 4
mov dword [esp + 0xa8], 0
mov dword [esp + 0xac], 0
mov dword [esp + 0xb0], 0
jmp 0x1003d19b
mov ebp, dword [esp + 0x70]
mov eax, ebp
and eax, 0x80000001
jns 0x1003c8ad
dec eax
or eax, 0xfffffffe
inc eax
mov eax, dword [esp + 0x28]
mov ebx, dword [eax]
lea eax, [ebp + 1]
cdq
mov esi, dword [ebx + 0x18]
jne 0x1003cd06
sub eax, edx
mov edi, 1
sar eax, 1
mov edx, edi
mov ecx, eax
mov dword [esp + 0x2c], edi
shl edx, cl
lea eax, [esi - 1]
mov dword [esp + 0x60], edx
xor edx, edx
mov ecx, dword [esp + 0x60]
div ecx
inc eax
cmp eax, edi
jbe 0x1003d157
mov eax, ebp
cdq
sub eax, edx
sar eax, 1
mov dword [esp + 0x98], eax
lea eax, [ecx*4]
mov dword [esp + 0x18], eax
lea eax, [ecx*8]
mov dword [esp + 0x7c], eax
nop
mov eax, dword [esp + 0x28]
xor esi, esi
mov dword [esp + 0x4c], esi
mov ecx, dword [eax + 4]
mov eax, 0x4bda12f7
sub ecx, ebx
imul ecx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
test eax, eax
jle 0x1003ccd9
xor eax, eax
mov dword [esp + 0x44], eax
mov edi, edi
add ebx, eax
mov dword [esp + 0x1c], ebx
cmp dword [ebx + 0x58], 0
jge 0x1003cca5
mov ecx, dword [esp + 0x98]
mov esi, 1
mov eax, dword [ebx + 0x40]
xor edx, edx
shl esi, cl
mov ecx, dword [esp + 0x18]
mov eax, dword [eax + ecx]
div esi
mov ecx, dword [ebx + 0x4c]
xor edx, edx
mov dword [esp + 0x78], eax
mov eax, dword [esp + 0x18]
mov eax, dword [ecx + eax]
dec eax
mov ecx, dword [esp + 0x78]
div esi
mov ebx, ecx
inc eax
mov dword [esp + 0xa0], eax
cmp ecx, eax
jae 0x1003cc9d
lea eax, [ecx*2 + 1]
mov dword [esp + 0x34], eax
cmp byte [esp + 0xf0], 0
je 0x1003c9c3
mov eax, dword [esp + 0x68]
push ebx
push edi
push ebp
mov ecx, dword [eax]
mov eax, dword [ecx]
call dword [eax + 8]
cmp eax, 0xff
je 0x1003cc8a
cmp byte [esp + 0x27], 0
mov eax, dword [esp + 0x6c]
mov esi, dword [esp + 0x1c]
je 0x1003c9ee
cmp eax, 3
jge 0x1003c9ee
mov ecx, dword [esi + 0xc]
push ebx
push edi
push ebp
mov eax, dword [ecx]
call dword [eax + 8]
test eax, eax
je 0x1003cc8a
mov eax, dword [esp + 0x6c]
cmp byte [esp + 0x3f], 0
je 0x1003ca0d
cmp eax, 4
jge 0x1003ca0d
mov ecx, dword [esi + 0x10]
push ebx
push edi
push ebp
mov eax, dword [ecx]
call dword [eax + 8]
test eax, eax
jg 0x1003cc8a
mov edx, dword [esp + 0x48]
lea eax, [esp + 0x50]
push 0
push eax
lea eax, [esp + 0x5c]
push eax
push ebx
push edi
push dword [esp + 0x80]
lea ecx, [esp + 0xc0]
push ebp
push esi
call fcn.10052a20
add esi, dword [esp + 0x7c]
add esp, 0x20
mov dword [esp + 0x64], eax
mov dword [esp + 0x40], esi
mov ecx, dword [esi]
push ebx
push edi
push ebp
mov edx, dword [ecx]
call dword [edx + 8]
mov dword [esp + 0x38], eax
mov ecx, 0xff
mov dword [esp + 0x20], ecx
cmp ebp, 2
jle 0x1003cb11
lea ecx, [ebx + 1]
cmp ecx, dword [esp + 0xa0]
jae 0x1003cb0d
cmp ebx, dword [esp + 0x78]
jbe 0x1003cb0d
mov ecx, dword [esi]
lea edi, [ebp - 1]
mov eax, dword [esp + 0x34]
add eax, 0xfffffffe
push eax
push dword [esp + 0x30]
mov edx, dword [ecx]
push edi
call dword [edx + 8]
mov ecx, dword [esp + 0x40]
mov esi, eax
push dword [esp + 0x34]
push dword [esp + 0x30]
mov ecx, dword [ecx]
push edi
mov edx, dword [ecx]
call dword [edx + 8]
mov ecx, eax
mov eax, dword [esp + 0x38]
sub eax, esi
cdq
mov esi, eax
mov eax, dword [esp + 0x30]
xor esi, edx
sub esi, edx
mov eax, dword [eax]
lea edi, [eax + eax]
cmp esi, edi
jge 0x1003cb09
mov eax, dword [esp + 0x38]
sub eax, ecx
cdq
mov ecx, eax
xor ecx, edx
sub ecx, edx
cmp ecx, edi
mov edi, dword [esp + 0x2c]
jge 0x1003cb0d
mov eax, dword [esp + 0x38]
sub eax, dword [esp + 0x64]
cdq
xor eax, edx
sub eax, edx
add eax, ecx
mov ecx, dword [esp + 0x30]
add eax, esi
shl eax, 6
cdq
idiv dword [ecx]
lea ecx, [eax + 0x40]
mov eax, 0xff
cmp ecx, 0xff
cmovg ecx, eax
jmp 0x1003cb11
mov edi, dword [esp + 0x2c]
mov ecx, dword [esp + 0x20]
cmp ebp, 4
jle 0x1003cb22
lea eax, [ecx*4]
cdq
idiv ebp
mov ecx, eax
mov eax, dword [esp + 0x80]
sub eax, ebp
imul eax, ecx
cdq
idiv dword [esp + 0x80]
mov esi, eax
test ebp, ebp
jne 0x1003cb46
mov eax, dword [esp + 0xec]
lea esi, [esi + eax*2]
cmp byte [esp + 0xf0], 0
je 0x1003cb60
mov eax, dword [esp + 0x68]
push ebx
push edi
push ebp
mov ecx, dword [eax]
mov eax, dword [ecx]
call dword [eax + 8]
sub esi, eax
cmp dword [esp + 0x84], 3
jle 0x1003cb7f
mov ecx, dword [esp + 0x1c]
push ebx
push edi
push ebp
mov ecx, dword [ecx + 0xc]
mov eax, dword [ecx]
call dword [eax + 8]
mov dword [esp + 0x20], eax
jmp 0x1003cb87
mov dword [esp + 0x20], 0xff
mov eax, dword [esp + 0x40]
push ebx
push edi
push ebp
mov ecx, dword [eax]
mov eax, dword [ecx]
call dword [eax + 8]
mov dword [esp + 0x74], eax
mov eax, dword [esp + 0x1c]
push ebx
push edi
push ebp
mov ecx, dword [eax]
mov edx, dword [ecx]
call dword [edx + 8]
mov ecx, eax
mov eax, dword [esp + 0x6c]
cmp eax, 4
jne 0x1003cbbc
mov ecx, 0xff
jmp 0x1003cc1a
test eax, eax
je 0x1003cc0c
cmp ebp, 1
jg 0x1003cc0c
cmp dword [esp + 0xec], 0x64
jg 0x1003cc0c
mov eax, dword [esp + 0x74]
cdq
xor eax, edx
sub eax, edx
cmp eax, 0x20
jle 0x1003cbe2
cmp ecx, 0x40
jg 0x1003cc0c
mov eax, ecx
cdq
and edx, 3
lea ecx, [edx + eax]
mov eax, dword [esp + 0x20]
cdq
sub eax, edx
sar ecx, 2
sar eax, 1
add ecx, eax
mov eax, dword [esp + 0xec]
cdq
sub eax, edx
sar eax, 1
add eax, 0xf
add ecx, eax
jmp 0x1003cc1a
mov eax, dword [esp + 0x20]
cdq
sub eax, edx
mov ecx, eax
sar ecx, 1
sub ecx, 0xffffff80
mov eax, dword [esp + 0x30]
mov eax, dword [eax]
imul eax, esi
mov esi, dword [esp + 0x64]
cdq
idiv ecx
mov edx, dword [esp + 0x50]
mov ecx, dword [esp + 0x54]
sub edx, esi
push eax
mov eax, dword [esp + 0x3c]
sub ecx, esi
sub eax, esi
push eax
call fcn.1003b6e0
mov ecx, dword [esp + 0x50]
lea edx, [esp + 0xac]
add esp, 8
add eax, esi
mov dword [esp + 0xa4], eax
mov eax, dword [ecx]
push edx
lea edx, [esp + 0x54]
push edx
lea edx, [esp + 0x5c]
push edx
lea edx, [esp + 0xb4]
push edx
push dword [esp + 0x7c]
call dword [eax + 0x14]
mov eax, dword [esp + 0x40]
push dword [esp + 0xa4]
push ebx
mov ecx, dword [eax]
push edi
push ebp
mov eax, dword [ecx]
call dword [eax]
add dword [esp + 0x34], 2
inc ebx
cmp ebx, dword [esp + 0xa0]
jb 0x1003c9a0
mov esi, dword [esp + 0x4c]
mov eax, dword [esp + 0x44]
add eax, 0x6c
inc esi
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x28]
mov dword [esp + 0x4c], esi
mov ecx, dword [eax + 4]
mov ebx, dword [eax]
sub ecx, ebx
mov eax, 0x4bda12f7
imul ecx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp esi, eax
mov eax, dword [esp + 0x44]
jl 0x1003c940
mov eax, dword [esp + 0x7c]
xor edx, edx
add dword [esp + 0x18], eax
add edi, 2
mov eax, dword [esp + 0x28]
mov dword [esp + 0x2c], edi
mov ebx, dword [eax]
mov eax, dword [ebx + 0x18]
dec eax
div dword [esp + 0x60]
inc eax
cmp edi, eax
jb 0x1003c910
jmp 0x1003d157
sub eax, edx
xor edi, edi
sar eax, 1
mov edx, 1
mov ecx, eax
mov dword [esp + 0x1c], edi
shl edx, cl
lea eax, [esi - 1]
mov dword [esp + 0x44], edx
xor edx, edx
mov esi, dword [esp + 0x44]
div esi
inc eax
je 0x1003d157
mov eax, ebp
cdq
sub eax, edx
sar eax, 1
mov dword [esp + 0x98], eax
lea ecx, [ecx]
mov eax, dword [esp + 0x28]
mov dword [esp + 0x34], 0
mov ecx, dword [eax + 4]
mov eax, 0x4bda12f7
sub ecx, ebx
imul ecx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
test eax, eax
jle 0x1003d13b
xor eax, eax
mov dword [esp + 0x40], eax
mov esi, eax
add eax, ebx
mov dword [esp + 0x2c], eax
cmp dword [eax + 0x58], 0
jge 0x1003d105
mov eax, dword [eax + 0x40]
mov esi, edi
imul esi, dword [esp + 0x44]
xor edx, edx
mov ecx, dword [esp + 0x98]
mov edi, 1
shl edi, cl
mov ecx, dword [esp + 0x2c]
mov ecx, dword [ecx + 0x4c]
mov eax, dword [eax + esi*4]
div edi
xor edx, edx
mov ebx, eax
mov eax, dword [ecx + esi*4]
dec eax
div edi
inc eax
or eax, 1
mov dword [esp + 0x94], eax
cmp ebx, 1
jbe 0x1003cdc8
test bl, 1
jne 0x1003cdc8
dec ebx
mov edi, dword [esp + 0x1c]
test ebx, ebx
mov ecx, 1
cmove ebx, ecx
mov dword [esp + 0x18], ebx
cmp ebx, eax
jae 0x1003d101
cmp byte [esp + 0xf0], 0
je 0x1003ce05
mov eax, dword [esp + 0x68]
push ebx
push edi
push ebp
mov ecx, dword [eax]
mov eax, dword [ecx]
call dword [eax + 8]
cmp eax, 0xff
je 0x1003d0ed
cmp byte [esp + 0x27], 0
mov eax, dword [esp + 0x6c]
mov esi, dword [esp + 0x2c]
je 0x1003ce30
cmp eax, 3
jge 0x1003ce30
mov ecx, dword [esi + 0xc]
push ebx
push edi
push ebp
mov eax, dword [ecx]
call dword [eax + 8]
test eax, eax
je 0x1003d0ed
mov eax, dword [esp + 0x6c]
cmp byte [esp + 0x3f], 0
je 0x1003ce4f
cmp eax, 4
jge 0x1003ce4f
mov ecx, dword [esi + 0x10]
push ebx
push edi
push ebp
mov eax, dword [ecx]
call dword [eax + 8]
test eax, eax
jg 0x1003d0ed
mov edx, dword [esp + 0x48]
lea eax, [esp + 0x50]
push 0
push eax
lea eax, [esp + 0x5c]
push eax
push ebx
push edi
push dword [esp + 0x80]
lea ecx, [esp + 0xc0]
push ebp
push esi
call fcn.10052a20
add esi, dword [esp + 0x7c]
add esp, 0x20
mov dword [esp + 0x78], eax
mov dword [esp + 0x64], esi
mov ecx, dword [esi]
push ebx
push edi
push ebp
mov edx, dword [ecx]
call dword [edx + 8]
mov dword [esp + 0x38], eax
mov ecx, 0xff
mov dword [esp + 0x20], ecx
cmp ebp, 2
jle 0x1003cf67
mov eax, dword [esp + 0x28]
xor edx, edx
mov ecx, dword [eax]
mov eax, dword [ecx + 0x18]
lea ecx, [edi + 1]
lea eax, [eax - 1]
div dword [esp + 0x44]
inc eax
cmp ecx, eax
jae 0x1003cf63
test edi, edi
je 0x1003cf63
mov ecx, dword [esi]
lea eax, [edi*2 - 1]
push dword [esp + 0x18]
lea ebx, [ebp - 1]
push eax
mov edx, dword [ecx]
push ebx
call dword [edx + 8]
mov ecx, dword [esi]
mov edi, eax
mov edx, dword [esp + 0x1c]
push dword [esp + 0x18]
mov esi, dword [ecx]
lea edx, [edx*2 + 1]
push edx
push ebx
call dword [esi + 8]
mov ecx, eax
mov eax, dword [esp + 0x38]
sub eax, edi
cdq
mov esi, eax
mov eax, dword [esp + 0x30]
xor esi, edx
sub esi, edx
mov ebx, dword [eax]
lea edi, [ebx + ebx]
cmp esi, edi
jge 0x1003cf5b
mov eax, dword [esp + 0x38]
sub eax, ecx
cdq
mov ecx, eax
xor ecx, edx
sub ecx, edx
cmp ecx, edi
mov edi, dword [esp + 0x1c]
jge 0x1003cf5f
mov eax, dword [esp + 0x38]
sub eax, dword [esp + 0x78]
cdq
xor eax, edx
sub eax, edx
add eax, ecx
add eax, esi
shl eax, 6
cdq
idiv ebx
mov ebx, dword [esp + 0x18]
lea ecx, [eax + 0x40]
mov eax, 0xff
cmp ecx, 0xff
cmovg ecx, eax
jmp 0x1003cf67
mov edi, dword [esp + 0x1c]
mov ebx, dword [esp + 0x18]
mov ecx, dword [esp + 0x20]
cmp ebp, 4
jle 0x1003cf78
lea eax, [ecx*4]
cdq
idiv ebp
mov ecx, eax
mov eax, dword [esp + 0x80]
sub eax, ebp
imul eax, ecx
cdq
idiv dword [esp + 0x80]
mov esi, eax
cmp ebp, 1
jne 0x1003cf9a
add esi, dword [esp + 0xec]
cmp byte [esp + 0xf0], 0
je 0x1003cfb4
mov eax, dword [esp + 0x68]
push ebx
push edi
push ebp
mov ecx, dword [eax]
mov eax, dword [ecx]
call dword [eax + 8]
sub esi, eax
cmp dword [esp + 0x84], 3
jle 0x1003cfd3
mov ecx, dword [esp + 0x2c]
push ebx
push edi
push ebp
mov ecx, dword [ecx + 0xc]
mov eax, dword [ecx]
call dword [eax + 8]
mov dword [esp + 0x20], eax
jmp 0x1003cfdb
mov dword [esp + 0x20], 0xff
mov ecx, dword [esp + 0x64]
push ebx
push edi
push ebp
mov ecx, dword [ecx]
mov eax, dword [ecx]
call dword [eax + 8]
mov dword [esp + 0x74], eax
mov eax, dword [esp + 0x2c]
push ebx
push edi
push ebp
mov ecx, dword [eax]
mov edx, dword [ecx]
call dword [edx + 8]
mov ecx, eax
mov eax, dword [esp + 0x6c]
mov dword [esp + 0x7c], ecx
cmp eax, 4
jne 0x1003d014
mov ecx, 0xff
jmp 0x1003d07d
test eax, eax
je 0x1003d06f
cmp ebp, 1
jg 0x1003d06f
cmp dword [esp + 0xec], 0x64
jg 0x1003d06f
mov eax, dword [esp + 0x74]
cdq
xor eax, edx
sub eax, edx
cmp eax, 0x20
jle 0x1003d042
cmp ecx, 0x40
jg 0x1003d06f
mov eax, dword [esp + 0x20]
cdq
sub eax, edx
mov ecx, eax
mov eax, dword [esp + 0x7c]
cdq
and edx, 3
sar ecx, 1
add eax, edx
sar eax, 2
add ecx, eax
mov eax, dword [esp + 0xec]
cdq
sub eax, edx
sar eax, 1
add eax, 0xf
add ecx, eax
jmp 0x1003d07d
mov eax, dword [esp + 0x20]
cdq
sub eax, edx
mov ecx, eax
sar ecx, 1
sub ecx, 0xffffff80
mov eax, dword [esp + 0x30]
mov eax, dword [eax]
imul eax, esi
mov esi, dword [esp + 0x78]
cdq
idiv ecx
mov edx, dword [esp + 0x50]
mov ecx, dword [esp + 0x54]
sub edx, esi
push eax
mov eax, dword [esp + 0x3c]
sub ecx, esi
sub eax, esi
push eax
call fcn.1003b6e0
mov ecx, dword [esp + 0x50]
lea edx, [esp + 0xa4]
add esp, 8
add eax, esi
mov dword [esp + 0x9c], eax
mov eax, dword [ecx]
push edx
lea edx, [esp + 0x54]
push edx
lea edx, [esp + 0x5c]
push edx
lea edx, [esp + 0xb4]
push edx
push dword [esp + 0x7c]
call dword [eax + 0x14]
mov eax, dword [esp + 0x64]
push dword [esp + 0x9c]
push ebx
mov ecx, dword [eax]
push edi
push ebp
mov eax, dword [ecx]
call dword [eax]
add ebx, 2
mov dword [esp + 0x18], ebx
cmp ebx, dword [esp + 0x94]
jb 0x1003cde2
mov esi, dword [esp + 0x34]
mov eax, dword [esp + 0x28]
inc esi
add dword [esp + 0x40], 0x6c
mov dword [esp + 0x34], esi
mov ecx, dword [eax + 4]
mov ebx, dword [eax]
sub ecx, ebx
mov eax, 0x4bda12f7
imul ecx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp esi, eax
mov eax, dword [esp + 0x40]
jl 0x1003cd72
mov esi, dword [esp + 0x44]
mov eax, dword [esp + 0x28]
xor edx, edx
inc edi
mov dword [esp + 0x1c], edi
mov ebx, dword [eax]
mov eax, dword [ebx + 0x18]
dec eax
div esi
inc eax
cmp edi, eax
jb 0x1003cd40
mov dword [esp + 0xe4], 0xffffffff
mov eax, dword [esp + 0xa8]
test eax, eax
je 0x1003d197
push eax
call fcn.1006f76a
add esp, 4
mov dword [esp + 0xa8], 0
mov dword [esp + 0xac], 0
mov dword [esp + 0xb0], 0
mov edi, dword [esp + 0x48]
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0x58]
inc edx
mov dword [esp + 0x58], edx
mov ecx, dword [eax]
mov eax, dword [ecx + 0x24]
imul eax, dword [esp + 0xb4]
cmp edx, eax
jl 0x1003c7d2
mov ecx, dword [esp + 0xdc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0xc0]
xor ecx, esp
call fcn.1006ece9
add esp, 0xd4
ret