Function at 0x1009e4e0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x38
mov eax, dword [0x10305014]
xor eax, ebp
mov dword [ebp - 0x10], eax
push 0x16a0
call fcn.100602f0
add esp, 4
mov dword [ebp - 0x18], eax
mov ebx, 0xfffffff4
test eax, eax
je 0x1009e943
mov edi, eax
xor esi, esi
push esi
push esi
push 0x1009fb40
push 0x16a0
push eax
call sym.ffmpeg.dll_av_buffer_create
add esp, 0x14
mov dword [ebp - 0x14], eax
test eax, eax
je 0x1009e6f2
mov ebx, dword [ebp + 8]
mov eax, dword [ebx + 4]
sub eax, dword [ebx]
mov ecx, 0x1000
cmp eax, ecx
cmovae eax, ecx
mov dword [edi + 0x169c], eax
mov ecx, edi
add ecx, 0x69c
push eax
push dword [ebx]
push ecx
call fcn.10132610
add esp, 0xc
mov dword [edi + 0x2c], 0x10001
mov word [edi + 0x30], 0x101
mov byte [edi + 0x35], 0
mov dword [edi + 0x38], esi
mov dword [edi + 0x3c], esi
mov byte [edi + 0x659], 2
mov ecx, ebx
call fcn.100771b0
cmp eax, 0x3f
ja 0x1009e92d
mov esi, eax
mov ecx, ebx
call fcn.100771b0
mov dword [edi], eax
mov edx, dword [ebp - 0x18]
mov eax, dword [edx]
cmp eax, 0xf
ja 0x1009e92d
mov ecx, dword [ebp + 0x10]
mov eax, dword [ecx + eax*4 + 0x40]
test eax, eax
je 0x1009e92d
mov dword [ebp - 0x44], esi
mov dword [ebp - 0x1c], edx
mov ecx, dword [ebx]
mov dword [ebp - 0x2c], ecx
mov ecx, dword [ebx + 8]
mov esi, ebx
mov ebx, ecx
shr ebx, 3
xor edx, edx
cmp ecx, dword [esi + 0x10]
setl dl
add edx, ecx
mov edi, dword [ebp - 0x2c]
movzx ebx, byte [edi + ebx]
and cl, 7
shl ebx, cl
mov eax, dword [eax + 4]
mov dword [ebp - 0x2c], eax
mov dword [esi + 8], edx
shr bl, 7
mov eax, dword [ebp - 0x1c]
mov byte [eax + 0x29], bl
mov edx, dword [esi]
mov ecx, dword [esi + 8]
mov edi, ecx
shr edi, 3
xor eax, eax
cmp ecx, dword [esi + 0x10]
setl al
add eax, ecx
movzx edx, byte [edx + edi]
and cl, 7
shl edx, cl
mov dword [esi + 8], eax
shr dl, 7
mov ebx, dword [ebp - 0x1c]
mov byte [ebx + 0x27], dl
mov ecx, dword [esi]
mov eax, dword [esi + 8]
mov edx, eax
shr edx, 3
mov edx, dword [ecx + edx]
bswap edx
mov ecx, eax
and cl, 7
shl edx, cl
mov ecx, dword [esi + 0x10]
shr edx, 0xfd
add eax, 3
cmp ecx, eax
cmovb eax, ecx
mov dword [esi + 8], eax
mov dword [ebx + 0x654], edx
mov edx, dword [esi]
mov ecx, dword [esi + 8]
mov edi, ecx
shr edi, 3
xor eax, eax
cmp ecx, dword [esi + 0x10]
setl al
add eax, ecx
movzx edx, byte [edx + edi]
and cl, 7
shl edx, cl
mov dword [esi + 8], eax
shr dl, 7
mov byte [ebx + 4], dl
mov edx, dword [esi]
mov ecx, dword [esi + 8]
mov edi, ecx
shr edi, 3
xor eax, eax
cmp ecx, dword [esi + 0x10]
movzx edx, byte [edx + edi]
setl al
add eax, ecx
and cl, 7
shl edx, cl
mov dword [esi + 8], eax
shr dl, 7
mov edi, ebx
mov byte [ebx + 5], dl
lea eax, [esi + 8]
mov dword [ebp - 0x24], eax
mov ecx, esi
call fcn.100771b0
inc eax
mov dword [ebx + 8], eax
mov ecx, esi
call fcn.100771b0
inc eax
mov dword [ebx + 0xc], eax
mov edi, dword [esi]
mov ebx, dword [esi + 8]
mov edx, dword [esi + 0x10]
mov eax, ebx
shr eax, 3
mov eax, dword [edi + eax]
bswap eax
mov ecx, ebx
and cl, 7
shl eax, cl
cmp eax, 0x8000000
jb 0x1009e703
shr eax, 0x17
movzx ecx, byte [eax + 0x102b0dc9]
add ebx, ecx
cmp edx, ebx
cmovb ebx, edx
mov ecx, dword [ebp - 0x24]
mov dword [ecx], ebx
movsx edi, byte [eax + 0x102b11c9]
jmp 0x1009e748
lea eax, [ebp - 0x18]
push eax
call fcn.10127460
add esp, 4
jmp 0x1009e943
or eax, 1
bsr esi, eax
mov eax, esi
xor eax, 0x1f
add eax, ebx
cmp edx, eax
cmovb eax, edx
mov ecx, eax
shr ecx, 3
mov edi, dword [edi + ecx]
bswap edi
mov ecx, eax
and cl, 7
shl edi, cl
mov ecx, esi
sub eax, esi
shr edi, cl
add eax, 0x20
cmp edx, eax
cmovb eax, edx
mov ecx, dword [ebp - 0x24]
mov dword [ecx], eax
mov eax, edi
and eax, 1
mov ecx, eax
neg ecx
shr edi, 1
xor edi, ecx
add edi, eax
mov ebx, dword [ebp - 0x1c]
mov dword [ebx + 0x10], edi
mov esi, dword [ebp + 8]
mov edx, dword [esi]
mov ecx, dword [esi + 8]
mov edi, ecx
shr edi, 3
xor eax, eax
cmp ecx, dword [esi + 0x10]
setl al
add eax, ecx
movzx edx, byte [edx + edi]
and cl, 7
shl edx, cl
mov dword [esi + 8], eax
shr dl, 7
mov byte [ebx + 0x14], dl
mov edx, dword [esi]
mov ecx, dword [esi + 8]
mov edi, ecx
shr edi, 3
xor eax, eax
cmp ecx, dword [esi + 0x10]
movzx edx, byte [edx + edi]
setl al
add eax, ecx
and cl, 7
shl edx, cl
mov dword [esi + 8], eax
shr dl, 7
mov byte [ebx + 0x15], dl
mov eax, dword [esi]
mov ecx, dword [esi + 8]
mov edx, ecx
shr edx, 3
movzx eax, byte [eax + edx]
xor edx, edx
cmp ecx, dword [esi + 0x10]
setl dl
add edx, ecx
mov dword [esi + 8], edx
and cl, 7
shl eax, cl
mov ecx, eax
shr cl, 7
mov byte [ebx + 0x16], cl
mov dword [ebx + 0x18], 0
test al, al
js 0x1009e7d8
mov edx, dword [ebp - 0x18]
mov eax, dword [edx + 0x18]
jmp 0x1009e7e5
mov ecx, esi
call fcn.100771b0
mov edx, dword [ebp - 0x18]
mov dword [edx + 0x18], eax
test eax, eax
js 0x1009e92d
mov ecx, dword [ebp - 0x2c]
cmp eax, dword [ecx + 0x3464]
ja 0x1009e92d
mov edi, dword [esi]
mov ebx, dword [esi + 8]
mov esi, dword [esi + 0x10]
mov eax, ebx
shr eax, 3
mov eax, dword [edi + eax]
bswap eax
mov ecx, ebx
and cl, 7
shl eax, cl
cmp eax, 0x8000000
mov dword [ebp - 0x1c], edx
jb 0x1009e83e
shr eax, 0x17
movzx ecx, byte [eax + 0x102b0dc9]
add ebx, ecx
cmp esi, ebx
cmovb ebx, esi
mov ecx, dword [ebp - 0x24]
mov dword [ecx], ebx
movsx edi, byte [eax + 0x102b11c9]
jmp 0x1009e886
or eax, 1
bsr edx, eax
mov eax, edx
xor eax, 0x1f
add eax, ebx
cmp esi, eax
cmovb eax, esi
mov ecx, eax
shr ecx, 3
mov edi, dword [edi + ecx]
bswap edi
mov ecx, eax
and cl, 7
shl edi, cl
sub eax, edx
mov ecx, edx
mov edx, dword [ebp - 0x1c]
shr edi, cl
add eax, 0x20
cmp esi, eax
cmovb eax, esi
mov ecx, dword [ebp - 0x24]
mov dword [ecx], eax
mov eax, edi
and eax, 1
mov ecx, eax
neg ecx
shr edi, 1
xor edi, ecx
add edi, eax
mov dword [edx + 0x1c], edi
add edi, 0xfffffff3
cmp edi, 0xffffffe7
mov eax, dword [ebp + 8]
jb 0x1009e92d
mov edi, dword [eax]
mov ebx, dword [eax + 8]
mov esi, dword [eax + 0x10]
mov eax, ebx
shr eax, 3
mov eax, dword [edi + eax]
bswap eax
mov ecx, ebx
and cl, 7
shl eax, cl
cmp eax, 0x8000000
jb 0x1009e8d7
shr eax, 0x17
movzx ecx, byte [eax + 0x102b0dc9]
add ebx, ecx
cmp esi, ebx
cmovb ebx, esi
mov ecx, dword [ebp - 0x24]
mov dword [ecx], ebx
movsx edi, byte [eax + 0x102b11c9]
jmp 0x1009e91f
or eax, 1
bsr eax, eax
mov edx, eax
xor edx, 0x1f
add edx, ebx
cmp esi, edx
cmovb edx, esi
mov ecx, edx
shr ecx, 3
mov edi, dword [edi + ecx]
bswap edi
mov ecx, edx
and cl, 7
shl edi, cl
sub edx, eax
mov ecx, eax
shr edi, cl
add edx, 0x20
cmp esi, edx
cmovb edx, esi
mov eax, dword [ebp - 0x24]
mov dword [eax], edx
mov edx, dword [ebp - 0x1c]
mov eax, edi
and eax, 1
mov ecx, eax
neg ecx
shr edi, 1
xor edi, ecx
add edi, eax
mov dword [edx + 0x20], edi
add edi, 0xfffffff3
cmp edi, 0xffffffe7
mov ebx, dword [ebp + 8]
jae 0x1009e957
mov dword [ebp - 0x20], 0xbebbb1b7
lea eax, [ebp - 0x14]
push eax
call fcn.10127400
add esp, 4
mov ebx, dword [ebp - 0x20]
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.10130483
mov eax, ebx
add esp, 0x38
pop esi
pop edi
pop ebx
pop ebp
ret
mov edx, dword [ebx]
mov ecx, dword [ebx + 8]
mov esi, ecx
shr esi, 3
xor eax, eax
cmp ecx, dword [ebx + 0x10]
setl al
add eax, ecx
movzx edx, byte [edx + esi]
and cl, 7
shl edx, cl
mov dword [ebx + 8], eax
shr dl, 7
mov eax, dword [ebp - 0x1c]
mov byte [eax + 0x24], dl
mov edx, dword [ebx]
mov ecx, dword [ebx + 8]
mov esi, ecx
shr esi, 3
xor eax, eax
cmp ecx, dword [ebx + 0x10]
setl al
add eax, ecx
movzx edx, byte [edx + esi]
and cl, 7
shl edx, cl
mov dword [ebx + 8], eax
shr dl, 7
mov eax, dword [ebp - 0x1c]
mov byte [eax + 0x25], dl
mov edx, dword [ebx]
mov ecx, dword [ebx + 8]
mov esi, ecx
shr esi, 3
xor eax, eax
cmp ecx, dword [ebx + 0x10]
setl al
add eax, ecx
movzx edx, byte [edx + esi]
and cl, 7
shl edx, cl
mov dword [ebx + 8], eax
shr dl, 7
mov eax, dword [ebp - 0x1c]
mov byte [eax + 0x26], dl
mov edx, dword [ebx]
mov ecx, dword [ebx + 8]
mov esi, ecx
shr esi, 3
xor eax, eax
cmp ecx, dword [ebx + 0x10]
setl al
add eax, ecx
movzx edx, byte [edx + esi]
and cl, 7
shl edx, cl
mov dword [ebx + 8], eax
shr dl, 7
mov eax, dword [ebp - 0x1c]
mov byte [eax + 0x28], dl
mov edx, dword [ebx]
mov ecx, dword [ebx + 8]
mov esi, ecx
shr esi, 3
xor eax, eax
cmp ecx, dword [ebx + 0x10]
movzx edx, byte [edx + esi]
setl al
add eax, ecx
and cl, 7
shl edx, cl
mov dword [ebx + 8], eax
shr dl, 7
mov eax, dword [ebp - 0x1c]
mov byte [eax + 0x2a], dl
mov eax, dword [ebx]
mov ecx, dword [ebx + 8]
mov edx, ecx
shr edx, 3
movzx eax, byte [eax + edx]
xor edx, edx
cmp ecx, dword [ebx + 0x10]
setl dl
add edx, ecx
mov dword [ebx + 8], edx
mov edx, dword [ebp - 0x1c]
and cl, 7
shl eax, cl
shr al, 7
mov byte [edx + 0x2b], al
cmp byte [edx + 0x2a], 0
je 0x1009ea9d
mov edx, dword [ebx]
mov eax, dword [ebx + 8]
mov esi, dword [ebx + 0x10]
mov ecx, eax
shr ecx, 3
mov edi, dword [edx + ecx]
bswap edi
mov ecx, eax
and cl, 7
shl edi, cl
cmp edi, 0x8000000
jb 0x1009eff8
shr edi, 0x17
movzx ecx, byte [edi + 0x102b0dc9]
add eax, ecx
cmp esi, eax
cmovb eax, esi
mov ebx, dword [ebp - 0x24]
mov dword [ebx], eax
movzx ecx, byte [edi + 0x102b0fc9]
mov dword [ebp - 0x20], ecx
jmp 0x1009f030
mov esi, dword [ebp - 0x18]
mov edx, dword [ebx]
mov ecx, dword [ebx + 8]
mov edi, ecx
shr edi, 3
xor eax, eax
cmp ecx, dword [ebx + 0x10]
movzx edx, byte [edx + edi]
setl al
add eax, ecx
and cl, 7
shl edx, cl
mov dword [ebx + 8], eax
shr dl, 7
mov byte [esi + 0x32], dl
mov eax, dword [ebx]
mov ecx, dword [ebx + 8]
mov edx, ecx
shr edx, 3
movzx eax, byte [eax + edx]
xor edx, edx
cmp ecx, dword [ebx + 0x10]
setl dl
add edx, ecx
mov dword [ebx + 8], edx
and cl, 7
shl eax, cl
mov ecx, eax
shr cl, 7
mov byte [esi + 0x33], cl
test al, al
js 0x1009f1a5
mov eax, dword [ebx]
mov ecx, dword [ebx + 8]
mov edx, ecx
shr edx, 3
movzx eax, byte [eax + edx]
xor edx, edx
cmp ecx, dword [ebx + 0x10]
setl dl
add edx, ecx
mov dword [ebx + 8], edx
and cl, 7
shl eax, cl
mov ecx, eax
shr cl, 7
mov byte [esi + 0x40], cl
test al, al
jns 0x1009edb3
lea edx, [esi + 0x41]
movaps xmm0, xmmword [0x102db660]
movups xmmword [esi + 0x41], xmm0
movups xmmword [esi + 0x81], xmm0
movups xmmword [esi + 0xc1], xmm0
movups xmmword [esi + 0x101], xmm0
movups xmmword [esi + 0x141], xmm0
movups xmmword [esi + 0x181], xmm0
mov eax, 0x10101010
mov dword [esi + 0x641], eax
mov dword [esi + 0x645], eax
mov dword [esi + 0x649], eax
movups xmm0, xmmword [0x102e132c]
movups xmmword [esi + 0x1c1], xmm0
movups xmm1, xmmword [0x102e133c]
movups xmmword [esi + 0x1d1], xmm1
movups xmm3, xmmword [0x102e134c]
movups xmmword [esi + 0x1e1], xmm3
movups xmm5, xmmword [0x102e135c]
movups xmmword [esi + 0x1f1], xmm5
movups xmmword [esi + 0x231], xmm5
movups xmmword [esi + 0x221], xmm3
movups xmmword [esi + 0x211], xmm1
movups xmmword [esi + 0x201], xmm0
movups xmmword [esi + 0x271], xmm5
movups xmmword [esi + 0x261], xmm3
movups xmmword [esi + 0x251], xmm1
movups xmmword [esi + 0x241], xmm0
movups xmm2, xmmword [0x102e136c]
movups xmmword [esi + 0x281], xmm2
movups xmm4, xmmword [0x102e137c]
movups xmmword [esi + 0x291], xmm4
movups xmm6, xmmword [0x102e138c]
movups xmmword [esi + 0x2a1], xmm6
movups xmm7, xmmword [0x102e139c]
movups xmmword [esi + 0x2b1], xmm7
movups xmmword [esi + 0x2c1], xmm2
movups xmmword [esi + 0x2d1], xmm4
movups xmmword [esi + 0x2e1], xmm6
movups xmmword [esi + 0x2f1], xmm7
movups xmmword [esi + 0x331], xmm7
movups xmmword [esi + 0x321], xmm6
movups xmmword [esi + 0x311], xmm4
movups xmmword [esi + 0x301], xmm2
movups xmmword [esi + 0x371], xmm5
movups xmmword [esi + 0x361], xmm3
movups xmmword [esi + 0x351], xmm1
movups xmmword [esi + 0x341], xmm0
movups xmmword [esi + 0x3b1], xmm5
movups xmmword [esi + 0x3a1], xmm3
movups xmmword [esi + 0x391], xmm1
movups xmmword [esi + 0x381], xmm0
movups xmmword [esi + 0x3f1], xmm5
movups xmmword [esi + 0x3e1], xmm3
movups xmmword [esi + 0x3d1], xmm1
movups xmmword [esi + 0x3c1], xmm0
movups xmmword [esi + 0x431], xmm7
movups xmmword [esi + 0x421], xmm6
movups xmmword [esi + 0x411], xmm4
movups xmmword [esi + 0x401], xmm2
movups xmmword [esi + 0x471], xmm7
movups xmmword [esi + 0x461], xmm6
movups xmmword [esi + 0x451], xmm4
movups xmmword [esi + 0x441], xmm2
movups xmmword [esi + 0x4b1], xmm7
movups xmmword [esi + 0x4a1], xmm6
movups xmmword [esi + 0x491], xmm4
movups xmmword [esi + 0x481], xmm2
movups xmmword [esi + 0x4f1], xmm5
movups xmmword [esi + 0x4e1], xmm3
movups xmmword [esi + 0x4d1], xmm1
movups xmmword [esi + 0x4c1], xmm0
movups xmmword [esi + 0x531], xmm5
movups xmmword [esi + 0x521], xmm3
movups xmmword [esi + 0x511], xmm1
movups xmmword [esi + 0x501], xmm0
movups xmmword [esi + 0x571], xmm5
movups xmmword [esi + 0x561], xmm3
movups xmmword [esi + 0x551], xmm1
movups xmmword [esi + 0x541], xmm0
movups xmmword [esi + 0x5b1], xmm7
movups xmmword [esi + 0x5a1], xmm6
movups xmmword [esi + 0x591], xmm4
movups xmmword [esi + 0x581], xmm2
movups xmmword [esi + 0x5f1], xmm7
movups xmmword [esi + 0x5e1], xmm6
movups xmmword [esi + 0x5d1], xmm4
movups xmmword [esi + 0x5c1], xmm2
movups xmmword [esi + 0x631], xmm7
movups xmmword [esi + 0x621], xmm6
movups xmmword [esi + 0x611], xmm4
movups xmmword [esi + 0x601], xmm2
mov ecx, ebx
push dword [ebp - 0x2c]
call fcn.1009e010
add esp, 4
test eax, eax
js 0x1009f249
mov edx, dword [ebx]
mov ecx, dword [ebx + 8]
mov edi, ecx
shr edi, 3
xor eax, eax
cmp ecx, dword [ebx + 0x10]
movzx edx, byte [edx + edi]
setl al
add eax, ecx
and cl, 7
shl edx, cl
mov dword [ebx + 8], eax
shr dl, 7
mov byte [esi + 0x64d], dl
mov ecx, ebx
call fcn.100771b0
mov ecx, dword [ebp - 0x2c]
cmp eax, dword [ecx + 0x3470]
ja 0x1009e92d
add eax, 2
mov dword [esi + 0x650], eax
mov edx, dword [ebx]
mov ecx, dword [ebx + 8]
mov edi, ecx
shr edi, 3
xor eax, eax
cmp ecx, dword [ebx + 0x10]
setl al
add eax, ecx
movzx edx, byte [edx + edi]
and cl, 7
shl edx, cl
mov dword [ebx + 8], eax
shr dl, 7
mov byte [esi + 0x658], dl
mov eax, dword [ebx]
mov dword [ebp - 0x1c], eax
mov ecx, dword [ebx + 8]
mov edx, ebx
mov ebx, ecx
shr ebx, 3
mov edi, dword [edx + 0x10]
xor eax, eax
mov dword [ebp - 0x24], edi
cmp ecx, edi
mov edi, edx
setl al
add eax, ecx
mov edx, dword [ebp - 0x1c]
movzx ebx, byte [edx + ebx]
mov dword [edi + 8], eax
and cl, 7
shl ebx, cl
test bl, 0x80
je 0x1009f251
mov ecx, eax
shr ecx, 3
xor ebx, ebx
cmp eax, dword [ebp - 0x24]
mov edx, dword [ebp - 0x1c]
movzx edx, byte [edx + ecx]
setl bl
add ebx, eax
and al, 7
mov ecx, eax
shl edx, cl
mov dword [edi + 8], ebx
shr dl, 7
mov byte [esi + 0x65a], dl
mov ecx, dword [edi + 8]
mov eax, dword [edi + 0x10]
add ecx, 7
cmp eax, ecx
cmovb ecx, eax
mov dword [edi + 8], ecx
mov edx, dword [ebp - 0x2c]
cmp byte [edx + 0x12e], 4
jne 0x1009f251
cmp byte [esi + 0x65a], 0
je 0x1009f251
mov ebx, edi
cmp byte [esi + 0x15], 0
je 0x1009eecf
mov ecx, ebx
call fcn.100771b0
add al, 2
mov byte [esi + 0x659], al
mov ecx, dword [ebx + 8]
mov eax, dword [ebx + 0x10]
mov edi, ecx
shr edi, 3
xor edx, edx
cmp ecx, eax
mov eax, dword [ebx]
movzx eax, byte [eax + edi]
setl dl
add edx, ecx
and cl, 7
shl eax, cl
mov dword [ebx + 8], edx
shr al, 7
mov byte [esi + 0x65b], al
mov eax, dword [ebx]
mov ecx, dword [ebx + 8]
mov edx, ecx
shr edx, 3
movzx eax, byte [eax + edx]
xor edx, edx
cmp ecx, dword [ebx + 0x10]
setl dl
add edx, ecx
mov dword [ebx + 8], edx
and cl, 7
shl eax, cl
mov ecx, eax
shr cl, 7
mov byte [esi + 0x65c], cl
test al, al
jns 0x1009ef93
mov ecx, ebx
call fcn.100771b0
mov byte [esi + 0x65d], al
mov ecx, ebx
call fcn.100771b0
mov byte [esi + 0x65e], al
and eax, 0xfe
cmp eax, 5
ja 0x1009e92d
mov ecx, esi
xor edi, edi
dec edi
mov ebx, dword [ebp + 8]
mov ecx, ebx
call fcn.100771b0
mov ecx, eax
and ecx, 1
dec ecx
shr eax, 1
xor eax, ecx
inc al
mov byte [esi + edi + 0x660], al
mov ecx, ebx
call fcn.100771b0
mov ecx, eax
and ecx, 1
dec ecx
shr eax, 1
xor eax, ecx
inc al
mov byte [esi + edi + 0x666], al
movzx eax, byte [esi + 0x65e]
inc edi
cmp edi, eax
jb 0x1009ef53
mov ecx, ebx
call fcn.100771b0
mov byte [esi + 0x66b], al
mov ecx, ebx
call fcn.100771b0
mov byte [esi + 0x66c], al
movzx edx, byte [esi + 0x66b]
mov edi, dword [ebp - 0x2c]
mov esi, dword [edi + 0x2c]
xor ecx, ecx
cmp esi, 0xb
lea esi, [esi - 0xa]
cmovl esi, ecx
cmp esi, edx
jb 0x1009e92d
movzx eax, al
mov edx, dword [edi + 0x30]
lea esi, [edx - 0xa]
cmp edx, 0xb
cmovge ecx, esi
mov dword [ebp - 0x20], 0xbebbb1b7
cmp ecx, eax
jb 0x1009e934
mov eax, dword [ebp - 0x18]
mov dword [ebp - 0x1c], eax
mov ebx, edi
jmp 0x1009f257
mov ecx, edi
or ecx, 1
bsr ebx, ecx
lea ecx, [ebx + ebx]
mov dword [ebp - 0x28], edx
mov edx, ecx
xor edx, 0x3f
add edx, eax
cmp esi, edx
cmovb edx, esi
add cl, 0xe1
shr edi, cl
dec edi
cmp ebx, 0x13
mov eax, 0xbebbb1b7
cmovae eax, edi
mov dword [ebp - 0x20], eax
mov ebx, dword [ebp - 0x24]
mov dword [ebx], edx
mov eax, edx
mov edx, dword [ebp - 0x28]
mov ecx, eax
shr ecx, 3
mov edi, dword [edx + ecx]
bswap edi
mov ecx, eax
and cl, 7
shl edi, cl
cmp edi, 0x8000000
jb 0x1009f065
shr edi, 0x17
movzx ecx, byte [edi + 0x102b0dc9]
add eax, ecx
cmp esi, eax
cmovb eax, esi
mov dword [ebx], eax
movzx eax, byte [edi + 0x102b0fc9]
jmp 0x1009f092
mov ecx, edi
or ecx, 1
bsr edx, ecx
lea ecx, [edx + edx]
mov ebx, ecx
xor ebx, 0x3f
add ebx, eax
cmp esi, ebx
cmovb ebx, esi
mov eax, dword [ebp - 0x24]
mov dword [eax], ebx
add cl, 0xe1
shr edi, cl
dec edi
cmp edx, 0x13
mov eax, 0xbebbb1b7
cmovae eax, edi
mov ebx, dword [ebp + 8]
mov ecx, dword [ebp - 0x20]
test ecx, ecx
mov edx, dword [ebp - 0x2c]
js 0x1009e934
cmp ecx, dword [edx + 0x34b0]
jge 0x1009e92d
test eax, eax
js 0x1009f249
cmp eax, dword [edx + 0x34b4]
jge 0x1009e92d
mov ecx, dword [ebp - 0x20]
inc ecx
mov edx, dword [ebp - 0x1c]
mov word [edx + 0x2c], cx
inc eax
mov word [edx + 0x2e], ax
movzx eax, cx
mov edi, 4
push edi
push eax
call fcn.100602a0
add esp, 8
mov esi, dword [ebp - 0x18]
mov dword [esi + 0x670], eax
movzx eax, word [esi + 0x2e]
push edi
push eax
call fcn.100602a0
add esp, 8
mov dword [esi + 0x674], eax
mov dword [ebp - 0x1c], esi
cmp dword [esi + 0x670], 0
mov dword [ebp - 0x20], 0xfffffff4
je 0x1009e934
test eax, eax
je 0x1009e934
mov eax, dword [ebx]
mov ecx, dword [ebx + 8]
mov edx, ecx
shr edx, 3
movzx eax, byte [eax + edx]
xor edx, edx
cmp ecx, dword [ebx + 0x10]
setl dl
add edx, ecx
mov dword [ebx + 8], edx
and cl, 7
shl eax, cl
mov ecx, eax
shr cl, 7
mov edx, dword [ebp - 0x1c]
mov byte [edx + 0x30], cl
test al, al
js 0x1009f8e9
movzx eax, word [edx + 0x2c]
cmp eax, 2
jb 0x1009f3f0
mov dword [ebp - 0x20], 0
xor ebx, ebx
xor edi, edi
mov esi, dword [ebp - 0x1c]
mov ecx, dword [ebp + 8]
call fcn.100771b0
inc eax
mov ecx, dword [esi + 0x670]
mov dword [ecx + edi*4], eax
mov esi, dword [ebp - 0x18]
mov eax, dword [esi + 0x670]
mov ecx, dword [ebp - 0x20]
add ecx, dword [eax + edi*4]
mov dword [ebp - 0x20], ecx
adc ebx, 0
inc edi
movzx eax, word [esi + 0x2c]
dec eax
cmp edi, eax
jl 0x1009f16f
jmp 0x1009f3fd
mov edx, dword [ebx]
mov ecx, dword [ebx + 8]
mov edi, ecx
shr edi, 3
xor eax, eax
cmp ecx, dword [ebx + 0x10]
movzx edx, byte [edx + edi]
setl al
add eax, ecx
and cl, 7
shl edx, cl
mov dword [ebx + 8], eax
shr dl, 7
mov byte [esi + 0x34], dl
mov eax, dword [ebx]
mov ecx, dword [ebx + 8]
mov edx, ecx
shr edx, 3
movzx eax, byte [eax + edx]
xor edx, edx
cmp ecx, dword [ebx + 0x10]
setl dl
add edx, ecx
mov dword [ebx + 8], edx
and cl, 7
shl eax, cl
mov ecx, eax
shr cl, 7
mov byte [esi + 0x35], cl
test al, al
js 0x1009eaf6
mov dword [ebp - 0x1c], esi
mov esi, dword [ebx]
mov edx, dword [ebx + 8]
mov edi, dword [ebx + 0x10]
mov eax, edx
shr eax, 3
mov eax, dword [esi + eax]
bswap eax
mov ecx, edx
and cl, 7
shl eax, cl
cmp eax, 0x8000000
mov dword [ebp - 0x20], esi
jb 0x1009f2f2
shr eax, 0x17
movzx ecx, byte [eax + 0x102b0dc9]
add edx, ecx
cmp edi, edx
mov esi, edi
cmovb edx, edi
mov ecx, dword [ebp - 0x24]
mov dword [ecx], edx
movsx edi, byte [eax + 0x102b11c9]
jmp 0x1009f33f
mov dword [ebp - 0x20], eax
jmp 0x1009e934
mov dword [ebp - 0x1c], esi
mov ebx, dword [ebp - 0x2c]
mov esi, dword [ebp - 0x1c]
movzx eax, word [esi + 0x2c]
inc eax
mov edi, 4
push edi
push eax
call fcn.100602a0
add esp, 8
mov dword [esi + 0x678], eax
movzx eax, word [esi + 0x2e]
inc eax
push edi
push eax
call fcn.100602a0
add esp, 8
mov dword [esi + 0x67c], eax
push edi
push dword [ebx + 0x34b0]
call fcn.100602a0
add esp, 8
mov dword [esi + 0x680], eax
cmp dword [esi + 0x678], 0
je 0x1009f2e6
cmp dword [esi + 0x67c], 0
je 0x1009f2e6
mov dword [ebp - 0x20], 0xfffffff4
test eax, eax
je 0x1009e934
mov esi, dword [ebp - 0x1c]
cmp byte [esi + 0x30], 0
mov eax, ebx
je 0x1009f54c
cmp dword [esi + 0x670], 0
je 0x1009f476
mov eax, dword [esi + 0x674]
jmp 0x1009f4b0
mov dword [ebp - 0x20], 0xfffffff4
jmp 0x1009e934
or eax, 1
bsr eax, eax
mov dword [ebp - 0x28], eax
xor eax, 0x1f
add eax, edx
cmp edi, eax
cmovb eax, edi
mov ecx, eax
shr ecx, 3
mov edx, edi
mov edi, dword [esi + ecx]
bswap edi
mov ecx, eax
and cl, 7
shl edi, cl
mov ecx, dword [ebp - 0x28]
shr edi, cl
sub eax, ecx
add eax, 0x20
cmp edx, eax
mov esi, edx
cmovb eax, edx
mov ecx, edi
and ecx, 1
mov edx, ecx
neg edx
shr edi, 1
xor edi, edx
add edi, ecx
mov ecx, dword [ebp - 0x24]
mov dword [ecx], eax
mov edx, eax
mov eax, edx
shr eax, 3
mov ecx, dword [ebp - 0x20]
mov eax, dword [ecx + eax]
bswap eax
mov ecx, edx
and cl, 7
shl eax, cl
cmp eax, 0x8000000
jb 0x1009f379
shr eax, 0x17
movzx ecx, byte [eax + 0x102b0dc9]
add edx, ecx
cmp esi, edx
cmovb edx, esi
mov ecx, dword [ebp - 0x24]
mov dword [ecx], edx
movsx eax, byte [eax + 0x102b11c9]
jmp 0x1009f3c6
or eax, 1
bsr ebx, eax
mov dword [ebp - 0x28], ebx
xor ebx, 0x1f
add ebx, edx
cmp esi, ebx
cmovb ebx, esi
mov eax, ebx
shr eax, 3
mov ecx, dword [ebp - 0x20]
mov eax, dword [ecx + eax]
bswap eax
mov ecx, ebx
and cl, 7
shl eax, cl
mov ecx, dword [ebp - 0x28]
sub ebx, ecx
shr eax, cl
add ebx, 0x20
cmp esi, ebx
cmovb ebx, esi
mov ecx, dword [ebp - 0x24]
mov dword [ecx], ebx
mov ebx, dword [ebp + 8]
mov ecx, eax
and ecx, 1
mov edx, ecx
neg edx
shr eax, 1
xor eax, edx
add eax, ecx
lea ecx, [edi - 7]
cmp ecx, 0xfffffff3
jb 0x1009e92d
lea ecx, [eax - 7]
cmp ecx, 0xfffffff3
jb 0x1009e92d
add edi, edi
mov esi, dword [ebp - 0x1c]
mov dword [esi + 0x38], edi
add eax, eax
mov dword [esi + 0x3c], eax
jmp 0x1009eaf6
dec eax
mov dword [ebp - 0x20], 0
xor ebx, ebx
mov esi, dword [ebp - 0x1c]
mov ecx, dword [ebp - 0x2c]
mov ecx, dword [ecx + 0x34b0]
mov edx, ecx
sar edx, 0x1f
mov edi, dword [ebp - 0x20]
cmp edi, ecx
sbb ebx, edx
jae 0x1009e92d
sub ecx, edi
mov edx, dword [esi + 0x670]
mov dword [edx + eax*4], ecx
mov eax, dword [ebp - 0x18]
mov edi, eax
movzx eax, word [eax + 0x2e]
cmp eax, 2
jb 0x1009f8b1
mov dword [ebp - 0x1c], 0
xor ebx, ebx
xor esi, esi
mov ecx, dword [ebp + 8]
call fcn.100771b0
inc eax
mov ecx, dword [edi + 0x674]
mov dword [ecx + esi*4], eax
mov edi, dword [ebp - 0x18]
mov eax, dword [edi + 0x674]
mov ecx, dword [ebp - 0x1c]
add ecx, dword [eax + esi*4]
mov dword [ebp - 0x1c], ecx
adc ebx, 0
inc esi
movzx eax, word [edi + 0x2e]
dec eax
cmp esi, eax
jl 0x1009f440
jmp 0x1009f8bb
movzx eax, word [esi + 0x2c]
mov edi, 4
push edi
push eax
call fcn.100602a0
add esp, 8
mov dword [esi + 0x670], eax
movzx eax, word [esi + 0x2e]
push edi
push eax
call fcn.100602a0
add esp, 8
mov dword [esi + 0x674], eax
cmp dword [esi + 0x670], 0
je 0x1009e934
test eax, eax
je 0x1009e934
mov esi, dword [ebp - 0x1c]
movzx ebx, word [esi + 0x2c]
test ebx, ebx
mov eax, dword [ebp - 0x2c]
je 0x1009f505
xor edi, edi
lea edx, [edi + 1]
mov dword [ebp - 0x24], edx
mov ecx, dword [eax + 0x34b0]
mov eax, ecx
imul eax, edx
cdq
idiv ebx
mov dword [ebp - 0x28], eax
imul ecx, edi
mov eax, ecx
cdq
idiv ebx
mov ecx, dword [ebp - 0x28]
sub ecx, eax
mov eax, dword [esi + 0x670]
mov dword [eax + edi*4], ecx
mov eax, dword [ebp - 0x2c]
movzx ebx, word [esi + 0x2c]
mov ecx, dword [ebp - 0x24]
mov edi, ecx
cmp ecx, ebx
jb 0x1009f4c8
movzx ebx, word [esi + 0x2e]
test ebx, ebx
je 0x1009f54c
xor edi, edi
lea edx, [edi + 1]
mov dword [ebp - 0x24], edx
mov ecx, dword [eax + 0x34b4]
mov eax, ecx
imul eax, edx
cdq
idiv ebx
mov dword [ebp - 0x28], eax
imul ecx, edi
mov eax, ecx
cdq
idiv ebx
mov ecx, dword [ebp - 0x28]
sub ecx, eax
mov eax, dword [esi + 0x674]
mov dword [eax + edi*4], ecx
mov eax, dword [ebp - 0x2c]
movzx ebx, word [esi + 0x2e]
mov ecx, dword [ebp - 0x24]
mov edi, ecx
cmp ecx, ebx
jb 0x1009f50f
mov ebx, eax
mov eax, dword [esi + 0x678]
mov dword [eax], 0
cmp word [esi + 0x2c], 0
je 0x1009f582
xor eax, eax
mov ecx, dword [esi + 0x670]
mov edx, dword [esi + 0x678]
mov ecx, dword [ecx + eax*4]
add ecx, dword [edx + eax*4]
mov dword [edx + eax*4 + 4], ecx
inc eax
movzx ecx, word [esi + 0x2c]
cmp eax, ecx
jb 0x1009f563
mov eax, dword [esi + 0x67c]
mov dword [eax], 0
cmp word [esi + 0x2e], 0
je 0x1009f5b6
xor eax, eax
mov ecx, dword [esi + 0x674]
mov edx, dword [esi + 0x67c]
mov ecx, dword [ecx + eax*4]
add ecx, dword [edx + eax*4]
mov dword [edx + eax*4 + 4], ecx
inc eax
movzx ecx, word [esi + 0x2e]
cmp eax, ecx
jb 0x1009f597
mov edi, dword [ebx + 0x34b0]
test edi, edi
jle 0x1009f5e4
xor eax, eax
xor ecx, ecx
mov edx, dword [esi + 0x678]
cmp dword [edx + ecx*4], eax
mov edx, dword [esi + 0x680]
adc ecx, 0
mov dword [edx + eax*4], ecx
inc eax
mov edi, dword [ebx + 0x34b0]
cmp eax, edi
jl 0x1009f5c4
imul edi, dword [ebx + 0x34b4]
mov eax, 4
push eax
push edi
call fcn.100602a0
add esp, 8
mov dword [esi + 0x684], eax
mov eax, 4
push eax
push edi
call fcn.100602a0
add esp, 8
mov dword [esi + 0x688], eax
mov eax, 4
push eax
mov dword [ebp - 0x38], edi
push edi
call fcn.100602a0
add esp, 8
mov dword [esi + 0x68c], eax
mov eax, dword [ebx + 0x34d4]
add eax, 2
imul eax, eax
mov ecx, 4
push ecx
push eax
call fcn.100602a0
add esp, 8
mov dword [esi + 0x698], eax
cmp dword [esi + 0x684], 0
je 0x1009e934
cmp dword [esi + 0x688], 0
je 0x1009e934
cmp dword [esi + 0x68c], 0
je 0x1009e934
test eax, eax
je 0x1009e934
cmp dword [ebp - 0x38], 0
mov ebx, dword [ebp - 0x1c]
jle 0x1009f79c
xor eax, eax
mov ecx, dword [ebp - 0x2c]
mov ecx, dword [ecx + 0x34b0]
mov dword [ebp - 0x3c], ecx
mov dword [ebp - 0x34], eax
cdq
idiv ecx
mov dword [ebp - 0x28], eax
movzx eax, word [ebx + 0x2c]
mov ebx, edx
neg eax
xor ecx, ecx
dec ecx
lea edx, [eax + ecx]
cmp edx, 0xffffffff
je 0x1009f6ca
mov edx, dword [ebp - 0x1c]
mov edi, dword [edx + 0x678]
lea edx, [ecx + 1]
cmp ebx, dword [edi + ecx*4 + 8]
mov ecx, edx
jae 0x1009f6ac
jmp 0x1009f6cc
xor edx, edx
mov dword [ebp - 0x30], ebx
mov eax, dword [ebp - 0x1c]
movzx eax, word [eax + 0x2e]
neg eax
mov dword [ebp - 0x24], eax
xor ebx, ebx
dec ebx
mov eax, dword [ebp - 0x24]
lea edi, [eax + ebx]
xor ecx, ecx
cmp edi, 0xffffffff
je 0x1009f704
mov eax, dword [ebp - 0x1c]
mov eax, dword [eax + 0x67c]
lea edi, [ebx + 1]
mov esi, dword [ebp - 0x28]
cmp esi, dword [eax + ebx*4 + 8]
mov ebx, edi
jae 0x1009f6de
jmp 0x1009f706
xor edi, edi
test edx, edx
je 0x1009f731
mov eax, dword [ebp - 0x1c]
mov esi, dword [eax + 0x670]
mov eax, dword [eax + 0x674]
mov eax, dword [eax + edi*4]
mov dword [ebp - 0x24], eax
xor eax, eax
xor ecx, ecx
mov ebx, dword [esi + eax*4]
imul ebx, dword [ebp - 0x24]
add ecx, ebx
inc eax
cmp edx, eax
jne 0x1009f723
test edi, edi
je 0x1009f756
mov eax, dword [ebp - 0x1c]
mov eax, dword [eax + 0x674]
mov dword [ebp - 0x24], eax
xor ebx, ebx
mov esi, dword [ebp - 0x3c]
mov eax, dword [ebp - 0x24]
mov eax, dword [eax + ebx*4]
imul eax, esi
add ecx, eax
inc ebx
cmp edi, ebx
jne 0x1009f746
mov ebx, dword [ebp - 0x1c]
mov eax, dword [ebx + 0x67c]
mov esi, dword [ebp - 0x28]
sub esi, dword [eax + edi*4]
mov eax, dword [ebx + 0x670]
imul esi, dword [eax + edx*4]
add ecx, dword [ebp - 0x30]
add ecx, esi
mov eax, dword [ebx + 0x678]
sub ecx, dword [eax + edx*4]
mov edx, dword [ebx + 0x684]
mov eax, dword [ebp - 0x34]
mov dword [edx + eax*4], ecx
mov edx, dword [ebx + 0x688]
mov dword [edx + ecx*4], eax
inc eax
cmp eax, dword [ebp - 0x38]
jne 0x1009f68c
movzx ecx, word [ebx + 0x2e]
test cx, cx
je 0x1009f917
mov eax, dword [ebp - 0x1c]
movzx edx, word [eax + 0x2c]
xor eax, eax
mov word [ebp - 0x28], dx
xor ebx, ebx
lea esi, [ebx + 1]
mov dword [ebp - 0x30], esi
test dx, dx
mov esi, dword [ebp - 0x1c]
je 0x1009f89d
mov edi, ebx
mov ecx, dword [esi + 0x67c]
mov dword [ebp - 0x34], ecx
mov edx, eax
xor ecx, ecx
mov dword [ebp - 0x40], ebx
mov ebx, dword [ebp - 0x34]
mov eax, dword [ebx + edi*4]
mov dword [ebp - 0x3c], ecx
inc ecx
mov dword [ebp - 0x24], ecx
mov ecx, eax
mov eax, dword [ebp - 0x30]
cmp ecx, dword [ebx + eax*4]
jae 0x1009f872
mov dword [ebp - 0x28], ecx
mov dword [ebp - 0x38], edx
mov ecx, dword [esi + 0x678]
mov eax, dword [ebp - 0x24]
mov edx, dword [ebp - 0x3c]
mov ebx, dword [ecx + edx*4]
cmp ebx, dword [ecx + eax*4]
jae 0x1009f854
mov edx, dword [ebp - 0x38]
mov edi, dword [ebp - 0x28]
mov ecx, dword [esi + 0x684]
mov eax, dword [ebp - 0x2c]
mov esi, dword [eax + 0x34b0]
imul esi, edi
add esi, ebx
mov ecx, dword [ecx + esi*4]
mov esi, dword [ebp - 0x1c]
mov esi, dword [esi + 0x68c]
mov dword [esi + ecx*4], edx
mov esi, dword [ebp - 0x1c]
inc ebx
mov ecx, dword [esi + 0x678]
mov eax, dword [ebp - 0x24]
cmp ebx, dword [ecx + eax*4]
jb 0x1009f813
mov eax, dword [esi + 0x67c]
mov dword [ebp - 0x34], eax
mov eax, dword [ebp - 0x24]
mov edx, dword [ebp - 0x28]
inc edx
mov ebx, dword [ebp - 0x34]
mov dword [ebp - 0x28], edx
mov edi, dword [ebp - 0x30]
cmp edx, dword [ebx + edi*4]
jb 0x1009f802
movzx ecx, word [esi + 0x2c]
mov edx, dword [ebp - 0x38]
mov eax, dword [ebp - 0x40]
jmp 0x1009f878
mov eax, edi
movzx ecx, word [ebp - 0x28]
inc edx
mov word [ebp - 0x28], cx
movzx ecx, cx
mov edi, dword [ebp - 0x24]
mov ebx, edi
cmp edi, ecx
mov ecx, edi
mov edi, eax
jb 0x1009f7dc
mov eax, edx
movzx ecx, word [esi + 0x2e]
movzx edx, word [ebp - 0x28]
jmp 0x1009f89f
xor edx, edx
movzx esi, cx
mov edi, dword [ebp - 0x30]
mov ebx, edi
cmp edi, esi
jb 0x1009f7b8
jmp 0x1009f919
dec eax
mov dword [ebp - 0x1c], 0
xor ebx, ebx
mov ecx, dword [ebp - 0x2c]
mov ecx, dword [ecx + 0x34b4]
mov edx, ecx
sar edx, 0x1f
cmp dword [ebp - 0x1c], ecx
sbb ebx, edx
jae 0x1009e92d
sub ecx, dword [ebp - 0x1c]
mov edx, dword [edi + 0x674]
mov dword [edx + eax*4], ecx
mov eax, dword [ebp - 0x18]
mov dword [ebp - 0x1c], eax
mov ebx, dword [ebp + 8]
mov edx, dword [ebx]
mov ecx, dword [ebx + 8]
mov edi, ecx
shr edi, 3
xor eax, eax
cmp ecx, dword [ebx + 0x10]
movzx edx, byte [edx + edi]
setl al
add eax, ecx
and cl, 7
shl edx, cl
mov dword [ebx + 8], eax
shr dl, 7
mov esi, dword [ebp - 0x1c]
mov byte [esi + 0x31], dl
jmp 0x1009eaa0
xor eax, eax
push 4
push eax
call fcn.100602a0
add esp, 8
mov ecx, dword [ebp - 0x1c]
mov dword [ecx + 0x690], eax
test eax, eax
je 0x1009e934
mov eax, dword [ebp - 0x1c]
movzx edx, word [eax + 0x2e]
test dx, dx
je 0x1009f9a6
mov eax, dword [ebp - 0x1c]
movzx ecx, word [eax + 0x2c]
xor eax, eax
mov ebx, dword [ebp - 0x2c]
xor edi, edi
test cx, cx
je 0x1009f99c
movzx edx, cx
mov esi, dword [ebp - 0x1c]
mov ecx, dword [esi + 0x67c]
mov esi, dword [ebx + 0x34b0]
imul esi, dword [ecx + eax*4]
mov ecx, dword [ebp - 0x1c]
mov ecx, dword [ecx + 0x678]
add esi, dword [ecx + edi*4]
mov ecx, dword [ebp - 0x1c]
mov ecx, dword [ecx + 0x690]
imul edx, eax
add edx, edi
mov dword [ecx + edx*4], esi
mov esi, dword [ebp - 0x1c]
inc edi
movzx ecx, word [esi + 0x2c]
movzx edx, cx
cmp edi, edx
jb 0x1009f95a
movzx edx, word [esi + 0x2e]
jmp 0x1009f99e
xor ecx, ecx
inc eax
movzx esi, dx
cmp eax, esi
jb 0x1009f94d
mov edi, dword [ebp - 0x2c]
mov ecx, dword [edi + 0x3470]
mov eax, dword [edi + 0x34d4]
sub ecx, dword [edi + 0x3468]
mov dword [ebp - 0x28], ecx
mov edx, dword [ebp - 0x1c]
mov ecx, dword [edx + 0x698]
lea eax, [ecx + eax*4]
add eax, 0xc
mov dword [edx + 0x694], eax
mov eax, dword [edi + 0x34d4]
cmp eax, 0xffffffff
jl 0x1009fae0
add eax, 2
xor ecx, ecx
xor edx, edx
dec edx
mov esi, dword [ebp - 0x1c]
mov esi, dword [esi + 0x698]
imul eax, ecx
mov dword [esi + eax*4], edx
mov eax, dword [ebp - 0x1c]
mov eax, dword [eax + 0x698]
mov dword [eax + ecx*4], edx
inc ecx
mov esi, dword [edi + 0x34d4]
lea eax, [esi + 2]
cmp ecx, eax
jl 0x1009f9ea
test esi, esi
js 0x1009fae0
mov eax, dword [ebp - 0x28]
add eax, eax
mov dword [ebp - 0x3c], eax
xor eax, eax
test esi, esi
mov dword [ebp - 0x20], eax
js 0x1009fad2
mov ecx, dword [ebp - 0x28]
shr eax, cl
mov dword [ebp - 0x30], eax
xor edx, edx
mov ebx, dword [ebp - 0x1c]
mov dword [ebp - 0x34], esi
mov dword [ebp - 0x24], edx
mov eax, edx
mov ecx, dword [ebp - 0x28]
shr eax, cl
mov edx, dword [edi + 0x34b0]
imul edx, dword [ebp - 0x30]
add edx, eax
mov eax, dword [ebx + 0x684]
mov ebx, dword [eax + edx*4]
mov esi, ecx
mov ecx, dword [ebp - 0x3c]
shl ebx, cl
test esi, esi
jle 0x1009faa1
xor ecx, ecx
xor eax, eax
inc eax
shl eax, cl
shl eax, cl
mov edi, dword [ebp - 0x24]
bt edi, ecx
mov esi, 0
cmovae eax, esi
mov edi, 2
shl edi, cl
shl edi, cl
mov edx, dword [ebp - 0x20]
bt edx, ecx
cmovae edi, esi
add edi, ebx
add edi, eax
inc ecx
mov ebx, edi
cmp dword [ebp - 0x28], ecx
jne 0x1009fa6c
jmp 0x1009faa3
mov edi, ebx
mov ebx, dword [ebp - 0x1c]
mov eax, dword [ebx + 0x694]
mov ecx, dword [ebp - 0x34]
add ecx, 2
imul ecx, dword [ebp - 0x20]
mov edx, dword [ebp - 0x24]
add ecx, edx
mov dword [eax + ecx*4], edi
mov edi, dword [ebp - 0x2c]
mov esi, dword [edi + 0x34d4]
cmp edx, esi
lea edx, [edx + 1]
jl 0x1009fa3d
mov ecx, dword [ebp - 0x20]
lea eax, [ecx + 1]
cmp ecx, esi
jl 0x1009fa25
mov ecx, dword [ebp + 8]
mov eax, dword [ecx + 0xc]
mov dword [ebp - 0x20], 0
cmp eax, dword [ecx + 8]
jl 0x1009e934
mov eax, dword [ebp - 0x44]
mov ecx, dword [ebp + 0x10]
lea esi, [ecx + eax*4]
add esi, 0x80
mov eax, dword [ecx + eax*4 + 0x80]
test eax, eax
je 0x1009fb2b
mov ecx, dword [ebp + 0x10]
mov ecx, dword [ecx + 0x188]
cmp ecx, dword [eax + 4]
jne 0x1009fb2b
mov eax, dword [ebp + 0x10]
mov dword [eax + 0x188], 0
push esi
call fcn.10127400
add esp, 4
mov eax, dword [ebp - 0x14]
mov dword [esi], eax
xor ebx, ebx
jmp 0x1009e943