Function at 0x100f38f0
Capabilities:
Encrypt data using rc4 ksa
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
mov eax, 0x8820
call fcn.101e0a30
mov eax, dword [0x1026f864]
mov ecx, dword [ebp + 8]
mov edx, dword [ebp + 0xc]
xor eax, ebp
mov dword [esp + 0x8818], eax
mov eax, dword [ecx + 0x6424]
mov esi, dword [ecx + 0x641c]
imul ebx, eax, 0x87d0
test eax, eax
mov dword [esp + 0x14], esi
lea edi, [esi + ebx]
jne 0x100f4223
cmp dword [ecx + 0x7384], 0
sete al
mov dword [esp + 0x34], eax
mov eax, dword [edx + 0x28]
mov esi, dword [esp + 0x14]
mov dword [esp + 0x1c], edi
mov dword [esi + ebx + 0x14], eax
movsd xmm0, qword [edx + 0x18]
movsd xmm1, qword [edx + 0x20]
movsd qword [esi + ebx + 0xc], xmm1
movsd qword [esi + ebx + 4], xmm0
cmp dword [ecx + 0x641c], edi
jne 0x100f4216
cmp dword [ecx + 0x7384], 0
jne 0x100f4216
cmp dword [ecx + 0x73a0], 0
mov al, 1
mov dword [esp + 0x28], eax
jne 0x100f66fd
mov eax, dword [esp + 0x14]
lea edi, [eax + ebx + 4]
mov ecx, edi
call fcn.100f82e0
mov dword [edi + 0x552c], eax
mov edx, dword [edi + 8]
mov eax, dword [edi + 0x10]
mov ecx, dword [edi]
mov dword [esp + 8], eax
mov eax, edx
mov esi, edx
mov dword [esp + 0x24], ecx
shr eax, 3
push dword [ecx + eax]
call fcn.101eaef1
add esp, 4
mov edx, esi
mov esi, ebx
mov dword [esp + 0x20], edi
mov ecx, edx
and cl, 7
shl eax, cl
mov ecx, dword [esp + 8]
shr eax, 0x17
movzx ebx, byte [eax + 0x10210d70]
movzx eax, byte [eax + 0x10210f70]
add ebx, edx
cmp ecx, ebx
cmovbe ebx, ecx
cmp eax, 9
mov dword [edi + 8], ebx
ja 0x100f5671
xor edx, edx
cmp al, 4
lea ecx, [eax - 5]
mov edi, dword [esp + 0x14]
mov dword [esp + 0x10], esi
cmovbe ecx, eax
seta dl
movzx eax, byte [ecx + 0x10249994]
mov dword [edi + esi + 0x34c], edx
mov dword [edi + esi + 0x344], eax
mov dword [esp + 0x30], eax
and eax, 3
cmp eax, 1
mov dword [edi + esi + 0x348], eax
je 0x100f3a4f
mov eax, dword [ebp + 0xc]
cmp dword [eax + 0x2c], 5
je 0x100f5671
mov edi, dword [esp + 0x14]
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x24]
lea esi, [edi + eax + 0xc]
mov eax, ebx
shr eax, 3
push dword [ecx + eax]
call fcn.101eaef1
add esp, 4
mov ecx, ebx
mov dword [esp + 0xc], esi
and cl, 7
shl eax, cl
cmp eax, 0x8000000
jb 0x100f4230
shr eax, 0x17
movzx ecx, byte [eax + 0x10210d70]
movzx eax, byte [eax + 0x10210f70]
add ebx, ecx
mov ecx, dword [esp + 8]
cmp ecx, ebx
cmovbe ebx, ecx
mov ecx, dword [esp + 0x10]
mov dword [esi], ebx
mov dword [edi + ecx + 0x6c80], eax
mov ecx, dword [ebp + 8]
mov eax, dword [ecx + eax*4 + 0x6a34]
test eax, eax
je 0x100f5671
mov eax, dword [eax + 4]
mov ecx, dword [esp + 0x24]
mov esi, dword [eax + 0x2a710]
mov dword [esp + 0x18], eax
mov eax, dword [esi + 0x14]
mov dword [esp + 0x2c], eax
mov eax, ebx
shr eax, 3
push dword [ecx + eax]
call fcn.101eaef1
add esp, 4
mov edx, dword [esp + 0x2c]
mov ecx, ebx
and cl, 7
shl eax, cl
add ebx, edx
neg dl
mov ecx, edx
shr eax, cl
mov ecx, dword [esp + 8]
mov edx, dword [esp + 0xc]
cmp ecx, ebx
cmovbe ebx, ecx
cmp byte [esp + 0x28], 0
mov dword [edx], ebx
mov edx, dword [esp + 0x10]
mov dword [esp + 0x38], ebx
mov dword [edi + edx + 0x87ac], eax
je 0x100f427b
mov dword [edi + edx + 0x5548], 0
mov dword [esp + 0x2c], 3
mov dword [esp + 0x28], esi
cmp dword [esi + 0x40], 0
je 0x100f428f
mov ebx, dword [ebp + 8]
mov edx, dword [esp + 0x2c]
mov esi, dword [esp + 0x10]
xor ecx, ecx
cmp edx, 3
mov dword [edi + esi + 0x5540], edx
setne cl
mov dword [edi + esi + 0x5544], ecx
jne 0x100f42b0
mov ecx, dword [esp + 0x28]
mov dword [edi + esi + 0x87c0], eax
mov ecx, dword [ecx + 0x14]
xor eax, eax
mov edx, dword [ebp + 0xc]
inc eax
shl eax, cl
mov dword [edi + esi + 0x87c4], eax
cmp dword [edx + 0x2c], 5
jne 0x100f3b98
mov ecx, dword [esp + 0x20]
call fcn.100f82e0
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x28]
lea eax, [edi + eax + 0x14]
mov dword [esp + 0x30], eax
mov eax, dword [ecx + 0x18]
test eax, eax
je 0x100f413d
mov edx, dword [esp + 0x18]
cmp eax, 1
je 0x100f42c8
mov eax, dword [esp + 0x10]
lea eax, [edi + eax + 0x348]
mov dword [eax + 0x5204], 0
mov dword [esp + 0x24], eax
cmp dword [edx + 0x3c], 0
jne 0x100f4337
mov eax, dword [eax]
cmp eax, 3
je 0x100f438e
mov ecx, dword [esp + 0x10]
lea esi, [edi + ecx + 0x5b6c]
lea ecx, [edi + ecx + 0x5b74]
push dword [ebx + 4]
push dword [esp + 0x30]
push eax
push edx
push dword [esp + 0x30]
mov dword [esp + 0x50], esi
push esi
push ecx
call fcn.100e9de0
add esp, 0x1c
mov esi, dword [ebp + 0xc]
test eax, eax
js 0x100f5ede
mov eax, dword [esp + 0x24]
lea edi, [ebx + 4]
cmp dword [eax], 1
je 0x100f3c48
push dword [edi]
push dword [esp + 0x20]
call fcn.100f0240
add esp, 8
test eax, eax
js 0x100f5ec7
mov ecx, dword [esp + 0x14]
mov ebx, dword [esp + 0x10]
xor eax, eax
mov dword [ecx + ebx + 0x370], eax
mov dword [ecx + ebx + 0x384], eax
mov dword [ecx + ebx + 0x380], eax
mov dword [ecx + ebx + 0x38c], eax
mov dword [ecx + ebx + 0x388], eax
mov ecx, dword [esp + 0x18]
cmp dword [ecx + 0x1c], eax
jne 0x100f41ff
cmp dword [ecx + 0x20], 1
je 0x100f43e8
mov eax, dword [esp + 0x14]
mov dword [eax + ebx + 0x87a8], 0
mov eax, dword [esp + 0x1c]
cmp dword [esi + 0x44], 0
je 0x100f3cbd
push dword [edi]
push esi
push dword [esp + 0x28]
push eax
call fcn.100f1340
add esp, 0x10
test eax, eax
js 0x100f4430
mov eax, dword [esp + 0x24]
mov dword [esp + 8], edi
cmp dword [eax], 1
mov eax, dword [esp + 0x18]
je 0x100f3cd8
cmp dword [eax + 4], 0
jne 0x100f5ee5
mov ecx, dword [esp + 0x14]
mov dword [ecx + ebx + 0x360], 0
mov eax, dword [eax + 0x24]
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0xc]
mov esi, dword [eax]
mov eax, dword [esp + 0x30]
mov edi, dword [eax]
mov eax, dword [esp + 0x20]
mov ecx, dword [eax]
mov eax, esi
shr eax, 3
mov dword [esp + 0x20], ecx
push dword [ecx + eax]
call fcn.101eaef1
mov edx, esi
add esp, 4
mov ecx, edx
and cl, 7
shl eax, cl
cmp eax, 0x8000000
jb 0x100f4444
shr eax, 0x17
mov esi, dword [esp + 0xc]
movzx ecx, byte [eax + 0x10210d70]
movsx eax, byte [eax + 0x10211170]
add edx, ecx
cmp edi, edx
cmovbe edx, edi
mov dword [esi], edx
mov ecx, dword [esp + 0x28]
add eax, dword [esp + 0x38]
mov dword [esp + 0x30], edx
mov dword [esp + 0x2c], edi
mov ecx, dword [ecx + 0x6a4]
lea ecx, [ecx + ecx*2]
lea ecx, [ecx + ecx + 3]
cmp eax, ecx
ja 0x100f5671
mov edi, dword [esp + 0x14]
mov edx, dword [esp + 0x18]
mov esi, dword [esp + 0xc]
lea ecx, [edi + ebx + 0x344]
mov dword [ecx + 0xc], eax
movzx edx, byte [edx + eax + 0x224]
mov dword [ecx + 0x10], edx
mov edx, dword [esp + 0x18]
movzx eax, byte [edx + eax + 0x27c]
mov dword [ecx + 0x14], eax
mov eax, dword [ecx]
cmp eax, 6
je 0x100f44a1
mov ecx, dword [esp + 0x20]
add eax, 0xfffffffb
cmp eax, 1
jbe 0x100f44ba
xor eax, eax
mov dword [edi + ebx + 0x364], 1
mov dword [edi + ebx + 0x368], eax
mov dword [edi + ebx + 0x36c], eax
cmp dword [edx + 0x34], eax
je 0x100f3efa
mov ebx, dword [esp + 0x30]
mov eax, ebx
shr eax, 3
push dword [ecx + eax]
call fcn.101eaef1
add esp, 4
mov ecx, ebx
mov edx, ebx
and cl, 7
shl eax, cl
mov ecx, dword [esp + 0x2c]
shr eax, 0x17
movzx ebx, byte [eax + 0x10210d70]
movzx eax, byte [eax + 0x10210f70]
add ebx, edx
cmp ecx, ebx
cmovbe ebx, ecx
cmp eax, 2
mov dword [esi], ebx
ja 0x100f5671
mov ecx, dword [esp + 0x10]
xor edx, edx
cmp al, 2
setne dl
xor edx, eax
lea ecx, [edi + ecx + 0x364]
mov dword [ecx], edx
mov ecx, dword [esp + 0x20]
je 0x100f3efa
mov eax, ebx
shr eax, 3
push dword [ecx + eax]
call fcn.101eaef1
add esp, 4
mov ecx, ebx
and cl, 7
shl eax, cl
cmp eax, 0x8000000
jb 0x100f4502
shr eax, 0x17
mov edx, dword [esp + 0x2c]
movzx ecx, byte [eax + 0x10210d70]
movsx eax, byte [eax + 0x10211170]
add ebx, ecx
mov dword [esp + 0x18], eax
cmp edx, ebx
cmovbe ebx, edx
mov dword [esi], ebx
mov esi, dword [esp + 0x20]
mov eax, ebx
shr eax, 3
push dword [esi + eax]
call fcn.101eaef1
add esp, 4
mov ecx, ebx
and cl, 7
shl eax, cl
cmp eax, 0x8000000
jb 0x100f4567
shr eax, 0x17
mov esi, dword [esp + 0x2c]
mov edx, dword [esp + 0xc]
movzx ecx, byte [eax + 0x10210d70]
movsx eax, byte [eax + 0x10211170]
add ebx, ecx
cmp esi, ebx
cmovbe ebx, esi
mov dword [edx], ebx
mov esi, dword [esp + 0x18]
mov edx, dword [esp + 0x10]
lea ecx, [esi + 6]
cmp ecx, 0xc
ja 0x100f5671
lea ecx, [eax + 6]
cmp ecx, 0xc
ja 0x100f5671
lea ecx, [edi + edx + 0x368]
add esi, esi
add eax, eax
mov dword [ecx], esi
mov dword [ecx + 4], eax
mov eax, dword [esp + 0x24]
cmp dword [eax + 0x5204], 0
jg 0x100f45c6
mov eax, dword [esp + 0x10]
lea eax, [edi + eax + 0x5530]
cmp dword [eax], 0
mov eax, dword [ebp + 8]
jne 0x100f45e0
cmp dword [eax + 0x73a0], 0
mov ebx, dword [esp + 8]
jne 0x100f5671
cmp dword [eax + 0x7384], 0
jne 0x100f45f9
mov edi, dword [ebp + 8]
cmp dword [edi + 0x6718], 0
jne 0x100f3f64
mov eax, dword [edi + 0x5ef8]
test eax, eax
jne 0x100f4703
mov dword [edi + 0x5ef8], 0
mov eax, dword [edi + 0x7384]
test eax, eax
jne 0x100f4733
mov ecx, dword [esp + 0x1c]
cmp ecx, dword [edi + 0x641c]
jne 0x100f66fd
cmp dword [edi + 0x6718], 0
jne 0x100f3f9c
mov ecx, dword [ebx]
mov ecx, dword [ecx + 0x2dc]
cmp ecx, 8
jge 0x100f4784
cmp byte [esp + 0x34], 0
mov edi, dword [ebp + 8]
je 0x100f5490
lea eax, [edi + 0x6e34]
push eax
call fcn.1005a380
add esp, 4
mov eax, dword [esp + 0x1c]
mov dword [edi + 0x6e38], 0
mov eax, dword [eax + 0x6c80]
push dword [edi + eax*4 + 0x6a34]
call fcn.1005a350
add esp, 4
test eax, eax
mov dword [edi + 0x6e34], eax
je 0x100f5b2b
mov ecx, dword [eax + 4]
mov dword [edi + 0x6e38], ecx
mov edx, dword [edi + 0x6e3c]
mov ecx, dword [ecx + 0x2a710]
cmp edx, ecx
je 0x100f40d2
mov dword [edi + 0x6e3c], ecx
mov eax, dword [edi + 0x698c]
cmp eax, dword [ecx + 0x38]
je 0x100f5d39
mov eax, dword [ecx + 0x6a4]
xor esi, esi
inc esi
cmp dword [edi + 0x69ac], eax
je 0x100f5d74
xor esi, esi
inc esi
cmp dword [edi + 0x6464], 0
mov dword [esp + 0xc], ecx
mov dword [esp + 0x24], esi
jne 0x100f40db
mov eax, dword [ebx]
mov dword [esp + 0x10], 0
mov esi, dword [eax + 0x70]
cmp esi, 0xb
jg 0x100f41bb
cmp esi, 0xffffffff
jne 0x100f41d6
xor eax, eax
inc eax
mov dword [esp + 0x10], eax
cmp byte [esp + 0x34], 0
je 0x100f47b7
mov eax, dword [ebx]
mov edx, dword [ecx + 0x64]
mov ecx, dword [ecx + 0x68]
mov esi, dword [eax + 0xbc]
mov eax, dword [eax + 0xc0]
mov dword [esp + 0x18], edx
mov dword [esp + 0x14], eax
imul edx
mov dword [esp + 0x20], esi
mov ebx, eax
mov eax, esi
mov edi, edx
imul ecx
xor edx, edi
xor eax, ebx
xor ebx, ebx
inc ebx
or eax, edx
jne 0x100f47e7
mov edi, dword [ebp + 8]
test ecx, ecx
je 0x100f47c0
cmp dword [esp + 0x14], 0
je 0x100f47c0
mov ebx, dword [esp + 0x10]
jmp 0x100f47ea
xor esi, esi
mov ecx, edx
jmp 0x100f4034
mov eax, ebx
mov ebx, dword [ecx + 0x38]
mov eax, dword [eax]
mov edx, ebx
shl edx, 4
xor esi, esi
inc esi
cmp edx, dword [eax + 0x64]
mov dword [esp + 0x10], esi
jne 0x100f4134
mov edx, dword [ecx + 0x3c]
mov esi, edx
shl esi, 4
cmp esi, dword [eax + 0x68]
jne 0x100f4134
mov esi, dword [edi + 0x73a8]
cmp esi, dword [ecx + 0x6a4]
jne 0x100f4134
mov esi, dword [edi + 0x73a4]
cmp esi, dword [ecx + 0xc]
jne 0x100f4130
cmp dword [edi + 0x698c], ebx
jne 0x100f4130
xor ecx, ecx
cmp dword [edi + 0x6988], edx
setne cl
mov dword [esp + 0x10], ecx
mov ecx, dword [esp + 0xc]
mov ebx, dword [esp + 8]
jmp 0x100f4053
mov eax, dword [ecx + 0x1c]
mov dword [esp + 8], eax
mov eax, dword [esp + 0xc]
mov ebx, dword [eax]
mov eax, dword [esp + 0x30]
mov esi, dword [eax]
mov eax, dword [esp + 0x20]
mov ecx, dword [eax]
mov eax, ebx
shr eax, 3
mov dword [esp + 0x24], ecx
push dword [ecx + eax]
call fcn.101eaef1
add esp, 4
mov edx, dword [esp + 8]
mov ecx, ebx
mov dword [esp + 8], esi
and cl, 7
shl eax, cl
add ebx, edx
neg dl
mov ecx, edx
shr eax, cl
mov ecx, dword [esp + 0xc]
cmp esi, ebx
cmovbe ebx, esi
cmp dword [esp + 0x2c], 3
mov dword [ecx], ebx
mov ecx, dword [esp + 0x10]
mov dword [edi + ecx + 0x87b0], eax
jne 0x100f41ac
mov eax, dword [esp + 0x18]
cmp dword [eax + 8], 1
je 0x100f621d
mov eax, dword [esp + 0x28]
mov ebx, dword [ebp + 8]
mov eax, dword [eax + 0x18]
jmp 0x100f3bb3
cmp esi, 0xc
je 0x100f606e
cmp esi, 0xe
je 0x100f6075
cmp esi, 0xd
je 0x100f607f
mov ecx, edi
xor edx, edx
call fcn.100f8a50
lea ecx, [eax - 0xc]
cmp ecx, 2
ja 0x100f41ee
mov eax, dword [eax*4 + 0x10249904]
mov ecx, dword [esp + 0xc]
cmp esi, eax
je 0x100f406f
jmp 0x100f4068
mov eax, dword [esp + 0x24]
cmp dword [eax], 2
jne 0x100f3c82
mov eax, 2
jmp 0x100f43fa
mov dword [esp + 0x28], 0
jmp 0x100f3997
mov dword [esp + 0x34], 0
jmp 0x100f3946
mov ecx, eax
or ecx, 1
bsr ecx, ecx
lea edx, [ecx + ecx]
mov dword [esp + 0x18], ecx
mov ecx, edx
xor ecx, 0x3f
add ecx, ebx
mov ebx, dword [esp + 8]
cmp ebx, ecx
cmovbe ecx, ebx
add dl, 0xe1
mov ebx, ecx
mov dword [esi], ecx
mov ecx, edx
shr eax, cl
mov ecx, dword [esp + 0x10]
cmp dword [esp + 0x18], 0x12
lea ecx, [edi + ecx + 0x6c80]
ja 0x100f5da8
mov dword [ecx], 0xbebbb1b7
jmp 0x100f5671
mov ecx, dword [ebp + 8]
cmp dword [ecx + 0x6e60], eax
je 0x100f3b24
jmp 0x100f5671
cmp byte [esp + 0x30], 3
jne 0x100f5dbf
mov ecx, dword [esp + 0x28]
cmp dword [ecx + 0x48], 0
jne 0x100f5dbf
xor edi, edi
dec edi
jmp 0x100f52d7
mov ecx, dword [esp + 0x28]
lea eax, [eax + eax + 1]
mov dword [edi + esi + 0x87c0], eax
mov ecx, dword [ecx + 0x14]
inc ecx
jmp 0x100f3b7a
mov eax, dword [esp + 0x28]
cmp dword [eax + 0x20], 0
jne 0x100f3bc0
mov eax, dword [esp + 0xc]
mov ebx, dword [eax]
mov eax, dword [esp + 0x30]
mov esi, dword [eax]
mov eax, dword [esp + 0x20]
mov ecx, dword [eax]
mov eax, ebx
shr eax, 3
mov dword [esp + 8], ecx
push dword [ecx + eax]
call fcn.101eaef1
add esp, 4
mov ecx, ebx
mov edx, ebx
and cl, 7
shl eax, cl
cmp eax, 0x8000000
jb 0x100f6089
shr eax, 0x17
mov edi, dword [esp + 0xc]
movzx ecx, byte [eax + 0x10210d70]
movsx eax, byte [eax + 0x10211170]
add edx, ecx
cmp esi, edx
cmovbe edx, esi
mov dword [esp + 0x24], edx
mov dword [edi], edx
jmp 0x100f60df
mov eax, dword [esp + 0xc]
mov ebx, dword [eax]
mov eax, dword [esp + 0x30]
mov esi, dword [eax]
mov eax, dword [esp + 0x20]
mov ecx, ebx
shr ecx, 3
mov eax, dword [eax]
push dword [eax + ecx]
call fcn.101eaef1
add esp, 4
mov ecx, ebx
and cl, 7
shl eax, cl
cmp eax, 0x8000000
jb 0x100f5e32
shr eax, 0x17
movzx ecx, byte [eax + 0x10210d70]
add ebx, ecx
mov ecx, dword [esp + 0xc]
cmp esi, ebx
cmovbe ebx, esi
mov dword [ecx], ebx
movzx ecx, byte [eax + 0x10210f70]
jmp 0x100f5e62
mov ecx, dword [esp + 0xc]
mov edx, dword [esp + 0x20]
mov ecx, dword [ecx]
mov edx, dword [edx]
mov esi, ecx
shr esi, 3
movzx edx, byte [edx + esi]
mov dword [esp + 0x38], edx
mov edx, dword [esp + 0x30]
cmp ecx, dword [edx]
mov edx, 0
setl dl
add edx, ecx
and cl, 7
mov dword [esp + 8], edx
mov edx, dword [esp + 0xc]
mov esi, dword [esp + 8]
mov dword [edx], esi
mov esi, dword [esp + 0x38]
mov edx, dword [esp + 0x18]
shl esi, cl
mov ecx, dword [esp + 0x10]
shr esi, 7
and esi, 1
mov dword [edi + ecx + 0x5554], esi
jmp 0x100f3bee
mov ecx, dword [esp + 0x24]
mov eax, 3
cmp dword [ecx], 3
jne 0x100f3c8c
mov ecx, dword [esp + 0x14]
lea ecx, [ecx + ebx + 0x370]
push dword [edi]
push dword [esp + 0x30]
push ecx
push eax
push dword [esp + 0x4c]
push dword [esp + 0x3c]
push dword [esp + 0x38]
call fcn.100e9540
add esp, 0x1c
test eax, eax
jns 0x100f3c8c
mov ecx, eax
jmp 0x100f5ede
mov eax, dword [edi]
test byte [eax + 0x244], 8
je 0x100f3cbd
jmp 0x100f5671
or eax, 1
mov ecx, dword [esp + 0x20]
bsr eax, eax
mov ebx, eax
mov esi, eax
xor ebx, 0x1f
add ebx, edx
cmp edi, ebx
cmovbe ebx, edi
mov eax, ebx
shr eax, 3
push dword [ecx + eax]
call fcn.101eaef1
add esp, 4
mov ecx, ebx
sub ebx, esi
and cl, 7
add ebx, 0x20
shl eax, cl
mov ecx, esi
shr eax, cl
cmp edi, ebx
mov ecx, eax
cmovbe ebx, edi
shr eax, 1
and ecx, 1
mov edx, ecx
neg edx
xor eax, edx
mov edx, dword [esp + 0xc]
add eax, ecx
mov dword [edx], ebx
mov edx, ebx
mov ebx, dword [esp + 0x10]
jmp 0x100f3d46
mov ecx, dword [esp + 0x30]
xor eax, eax
cmp ecx, dword [esp + 0x2c]
setl al
add ecx, eax
mov dword [esp + 0x30], ecx
mov dword [esi], ecx
mov ecx, dword [esp + 0x20]
mov ebx, dword [esp + 0x30]
mov eax, ebx
shr eax, 3
push dword [ecx + eax]
call fcn.101eaef1
add esp, 4
mov ecx, ebx
and cl, 7
shl eax, cl
cmp eax, 0x8000000
jb 0x100f5449
shr eax, 0x17
mov ecx, dword [esp + 0x30]
mov edx, dword [esp + 0x2c]
movzx eax, byte [eax + 0x10210d70]
add ecx, eax
cmp edx, ecx
cmovbe ecx, edx
mov dword [esp + 0x30], ecx
jmp 0x100f5471
or eax, 1
mov edi, dword [esp + 0x2c]
mov edx, dword [esp + 0x20]
bsr ecx, eax
mov dword [esp + 0x18], ecx
xor ecx, 0x1f
add ecx, ebx
cmp edi, ecx
cmovbe ecx, edi
mov eax, ecx
mov ebx, ecx
shr eax, 3
push dword [edx + eax]
call fcn.101eaef1
add esp, 4
mov ecx, ebx
mov edx, esi
and cl, 7
shl eax, cl
mov ecx, dword [esp + 0x18]
sub ebx, ecx
shr eax, cl
add ebx, 0x20
mov esi, eax
cmp edi, ebx
cmovbe ebx, edi
and esi, 1
mov edi, dword [esp + 0x14]
shr eax, 1
mov ecx, esi
mov dword [edx], ebx
neg ecx
xor eax, ecx
add eax, esi
mov dword [esp + 0x18], eax
jmp 0x100f3e82
or eax, 1
mov edi, dword [esp + 0x2c]
bsr ecx, eax
mov dword [esp + 0x28], ecx
xor ecx, 0x1f
add ecx, ebx
cmp edi, ecx
cmovbe ecx, edi
mov eax, ecx
mov ebx, ecx
shr eax, 3
push dword [esi + eax]
call fcn.101eaef1
add esp, 4
mov ecx, ebx
mov edx, dword [esp + 0xc]
and cl, 7
shl eax, cl
mov ecx, dword [esp + 0x28]
sub ebx, ecx
shr eax, cl
add ebx, 0x20
mov esi, eax
cmp edi, ebx
cmovbe ebx, edi
and esi, 1
mov edi, dword [esp + 0x14]
shr eax, 1
mov dword [edx], ebx
mov edx, esi
neg edx
xor eax, edx
add eax, esi
jmp 0x100f3eca
mov eax, dword [esp + 0x10]
xor ecx, ecx
mov dword [edi + eax + 0x5b70], ecx
mov ecx, dword [esp + 0x3c]
xor edi, edi
mov dword [ecx], edi
jmp 0x100f52d7
cmp dword [eax + 0x7384], 0
je 0x100f5f49
mov edi, dword [ebp + 8]
mov ebx, dword [esp + 8]
jmp 0x100f3f64
mov eax, dword [ebp + 8]
cmp dword [eax + 0x6424], 0
je 0x100f4660
push dword [ebp + 8]
call fcn.100f6830
add esp, 4
test eax, eax
js 0x100f604a
mov eax, dword [ebp + 8]
mov edi, 0x87d0
mov esi, dword [eax + 0x641c]
lea eax, [esp + 0x40]
push edi
push esi
push eax
call fcn.101e35e0
add esp, 0xc
push edi
mov ebx, dword [esp + 0x20]
push ebx
push esi
call fcn.101e35e0
add esp, 0xc
push edi
lea eax, [esp + 0x44]
push eax
push ebx
call fcn.101e35e0
add esp, 0xc
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x641c]
mov dword [esp + 0x1c], eax
mov eax, dword [ebp + 8]
cmp dword [eax + 0x5ef8], 0
je 0x100f5671
mov ecx, dword [ebp + 8]
mov eax, dword [ecx + 0x6718]
cmp dword [ecx + 0x6714], 3
jne 0x100f6008
test eax, eax
jne 0x100f5671
mov eax, dword [ebp + 8]
cmp dword [eax + 0x699c], 5
jne 0x100f5671
xor eax, eax
inc eax
push eax
mov ebx, dword [ebp + 8]
push dword [ebx + 0x641c]
push ebx
call fcn.100ec0a0
add esp, 0xc
mov edi, eax
mov eax, dword [ebx + 0x5ef8]
xor ecx, ecx
mov esi, 0x7fffffff
add eax, 4
push ecx
push esi
push eax
call fcn.1001f3e0
add esp, 0xc
mov eax, dword [ebx + 0x5ef8]
add eax, 4
xor ecx, ecx
inc ecx
push ecx
push esi
push eax
call fcn.1001f3e0
add esp, 0xc
xor eax, eax
test edi, edi
mov dword [ebx + 0x5ef8], eax
mov ebx, dword [esp + 8]
jns 0x100f3f40
mov eax, edi
jmp 0x100f5ede
cmp dword [edi + 0x645c], 0
jne 0x100f3f5a
xor ecx, ecx
cmp dword [edi + 0x6714], 2
sete cl
add eax, 4
push ecx
push 0x7fffffff
push eax
call fcn.1001f3e0
add esp, 0xc
jmp 0x100f3f5a
cmp byte [esp + 0x34], 0
je 0x100f5490
mov eax, dword [edi + 0x6714]
mov ecx, dword [esp + 0x1c]
cmp eax, dword [ecx + 0x5540]
jne 0x100f5671
mov ecx, dword [ebp + 0xc]
xor eax, eax
cmp dword [ecx + 0x44], 0
mov ecx, dword [ebp + 8]
sete al
cmp dword [ecx + 0x645c], eax
jne 0x100f5671
mov ebx, dword [ebp + 8]
cmp dword [ebx + 0x5ef8], 0
jne 0x100f4f6d
jmp 0x100f5671
mov edx, dword [ebp + 8]
cmp dword [edx + 0x6998], 0
je 0x100f47b0
mov ebx, dword [esp + 8]
cmp ecx, 0x10
jl 0x100f3f9c
mov edx, dword [esp + 0x1c]
mov edx, dword [edx + 0x348]
cmp edx, 3
jne 0x100f615b
xor edi, edi
jmp 0x100f52d7
mov ebx, dword [esp + 0x10]
mov edi, dword [ebp + 8]
jmp 0x100f47ee
cmp dword [esp + 0x18], 0
je 0x100f47e7
cmp dword [esp + 0x20], 0
mov edi, dword [ebp + 8]
mov ecx, dword [esp + 0xc]
je 0x100f47ee
mov eax, dword [esp + 0x20]
xor ebx, ebx
inc ebx
xor eax, dword [esp + 0x18]
cmovns ebx, dword [esp + 0x10]
jmp 0x100f47ee
mov edi, dword [ebp + 8]
mov ecx, dword [esp + 0xc]
cmp dword [edi + 0x73a0], 0
mov dword [esp + 0x2c], ebx
jne 0x100f54e9
push ecx
mov ebx, ecx
call fcn.100ea660
add esp, 4
mov ecx, dword [edi + 4]
mov dword [ecx + 0x2cc], eax
mov eax, dword [ebx + 8]
mov ecx, dword [edi + 4]
mov dword [ecx + 0x2d0], eax
mov eax, dword [ebx + 0x30]
mov ecx, dword [edi + 4]
mov dword [ecx + 0x12c], eax
mov eax, dword [ebx + 0x38]
mov dword [edi + 0x698c], eax
mov esi, dword [ebx + 0x3c]
mov ecx, esi
mov dword [edi + 0x6988], esi
imul ecx, eax
mov dword [edi + 0x6994], ecx
lea ecx, [eax + 1]
mov dword [edi + 0x6990], ecx
lea ecx, [eax*4]
mov dword [edi + 0x6708], ecx
xor ecx, ecx
cmp dword [ebx + 0xc], 2
setl cl
shl eax, 4
shl esi, 4
mov dword [edi + 0x6458], ecx
mov dword [edi + 0x644c], eax
mov dword [edi + 0x6450], esi
mov dword [esp + 0x20], eax
mov ecx, dword [edi + 0x6e3c]
mov edx, dword [ecx + 0x50]
mov ebx, dword [ecx + 0x54]
mov dword [esp + 0x10], edx
add edx, ebx
sub eax, edx
mov dword [esp + 0x28], eax
jbe 0x100f66fd
mov edx, dword [ecx + 0x58]
mov ecx, dword [ecx + 0x5c]
mov dword [esp + 0x34], ebx
mov dword [esp + 0x14], edx
add edx, ecx
mov dword [esp + 0x18], ecx
cmp esi, edx
jbe 0x100f66fd
mov eax, dword [edi + 0x73ec]
mov ebx, esi
sub ebx, edx
test eax, eax
jle 0x100f53da
mov edx, dword [esp + 0x14]
or edx, dword [esp + 0x10]
jne 0x100f53da
mov ecx, dword [ebp + 8]
mov edx, dword [ecx + 0x73f0]
test edx, edx
jle 0x100f53da
mov ecx, dword [esp + 0x28]
mov edi, ebx
lea ebx, [eax + 0xf]
add ecx, 0xf
xor ebx, ecx
cmp ebx, 0xf
mov ebx, edi
ja 0x100f53da
cmp edx, ebx
jg 0x100f53da
cmp eax, dword [esp + 0x28]
jg 0x100f53da
lea ecx, [edx + 0xf]
lea ebx, [edi + 0xf]
xor ecx, ebx
mov ebx, edi
cmp ecx, 0xf
ja 0x100f53da
mov ebx, dword [esp + 0x20]
mov edi, dword [ebp + 8]
sub esi, edx
mov dword [esp + 0x10], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0x18], esi
mov esi, eax
sub ebx, eax
mov ecx, dword [edi + 4]
mov eax, dword [esp + 0x20]
mov dword [ecx + 0x64], eax
mov eax, dword [edi + 0x6450]
mov ecx, dword [edi + 4]
mov dword [ecx + 0x68], eax
mov ecx, dword [esp + 0x10]
mov eax, dword [edi + 4]
mov dword [eax + 0x5c], esi
mov esi, dword [esp + 0x24]
mov eax, dword [edi + 4]
mov dword [eax + 0x60], edx
mov dword [edi + 0x6480], ebx
mov dword [edi + 0x647c], ecx
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 0x18]
mov ebx, dword [esp + 8]
mov dword [edi + 0x6484], edx
mov dword [edi + 0x6488], ecx
mov ecx, dword [esp + 0xc]
cmp dword [ecx + 0x6c], 0
jne 0x100f54f6
cmp dword [edi + 0x755c], 0
jne 0x100f5566
mov eax, dword [ecx + 0x84]
mov edx, dword [edi + 4]
or esi, dword [esp + 0x2c]
mov esi, edi
mov dword [edx + 0x14c], eax
mov eax, dword [edi + 0x6464]
jne 0x100f49d7
test eax, eax
jne 0x100f4a22
mov ecx, dword [esp + 0x1c]
mov dword [esi + 0x6464], 0
cmp dword [esi + 0x641c], ecx
jne 0x100f5671
test eax, eax
jne 0x100f5d88
xor edx, edx
mov ecx, esi
inc edx
call fcn.100f8a50
mov edi, eax
test eax, eax
js 0x100f52d7
mov eax, dword [esi + 4]
mov ecx, esi
mov dword [eax + 0x70], edi
call fcn.100f3460
test eax, eax
js 0x100f5ede
mov edx, dword [esi + 0x6e3c]
test edx, edx
je 0x100f4a49
cmp dword [edx + 0x498], 0
je 0x100f4a49
mov eax, dword [ebx]
mov ecx, dword [edx + 0x49c]
cmp dword [eax + 0x8c], ecx
jl 0x100f5354
mov eax, dword [esi + 0x645c]
mov ecx, dword [ebp + 0xc]
mov ebx, dword [esp + 0x1c]
mov edi, dword [esi + 0x6714]
mov dword [esp + 0x10], edx
mov dword [esp + 0x14], eax
xor eax, eax
cmp dword [ecx + 0x44], 0
sete al
mov dword [esi + 0x645c], eax
mov ecx, dword [ebx + 0x5540]
mov dword [esi + 0x6714], ecx
mov dword [esp + 0xc], ecx
mov edx, dword [ebx + 0x87ac]
mov dword [esi + 0x6e60], edx
mov ecx, dword [ebx + 0x87b0]
mov dword [esi + 0x6e4c], ecx
mov ecx, dword [ebx + 0x87b4]
mov dword [esi + 0x6e54], ecx
mov ecx, dword [ebx + 0x87b8]
mov dword [esi + 0x6e58], ecx
mov ecx, dword [ebx + 0x87bc]
mov dword [esi + 0x6e5c], ecx
mov ebx, dword [esi + 0x6e74]
cmp edx, ebx
je 0x100f4af7
mov eax, dword [esp + 0x10]
mov dword [esp + 0x18], edi
mov cl, byte [eax + 0x14]
xor eax, eax
xor edi, edi
inc eax
shl eax, cl
mov ecx, edx
sub ecx, ebx
cmovl edi, eax
add edi, ecx
mov ecx, dword [esp + 0x10]
mov ecx, dword [ecx + 0x30]
cmp edi, ecx
mov edi, dword [esp + 0x18]
jg 0x100f5f62
cmp dword [esi + 0x6718], 0
jne 0x100f559a
mov ebx, dword [esi + 0x6e60]
mov eax, dword [esi + 0x6e74]
cmp ebx, eax
jne 0x100f6436
mov ecx, dword [ebp + 8]
cmp dword [ecx + 0x6718], 0
jne 0x100f6659
mov edi, dword [ecx + 0x6714]
xor eax, eax
mov ebx, ecx
cmp edi, 3
setne al
mov dword [ecx + 0x6718], eax
cmp edi, 3
je 0x100f4b4b
test eax, eax
je 0x100f66ba
mov ecx, ebx
call fcn.100f8410
test eax, eax
js 0x100f5667
mov eax, dword [ebx + 0x6714]
lea esi, [ebx + 0x6e4c]
cmp eax, 3
jne 0x100f567b
mov eax, dword [ebx + 0x6988]
imul eax, dword [ebx + 0x6990]
lea eax, [eax + eax - 2]
push eax
push 0xff
push dword [ebx + 0x670c]
call fcn.101e40e0
add esp, 0xc
mov eax, dword [ebx + 0x5ef8]
mov edi, dword [ebp + 0xc]
lea ecx, [eax + 0x54]
add eax, 0x4c
push dword [edi + 0x44]
push dword [ebx + 0x6714]
push esi
push dword [ebx + 0x6e3c]
push ecx
push eax
call fcn.100e9fd0
add esp, 0x18
test eax, eax
js 0x100f5ede
mov esi, dword [esp + 0x1c]
lea eax, [ebx + 0x7058]
mov edx, dword [esi + 0x87a4]
lea ecx, [esi + 0x848c]
shl edx, 2
lea edx, [edx + edx*2]
push edx
push ecx
push eax
call fcn.101e35e0
add esp, 0xc
mov eax, dword [esi + 0x87a4]
mov dword [ebx + 0x7370], eax
mov eax, dword [esi + 0x87a8]
mov dword [ebx + 0x7378], eax
xor eax, eax
cmp dword [edi + 0x2c], 5
sete al
mov dword [ebx + 0x6478], eax
mov eax, dword [ebx + 0x7494]
test eax, eax
jns 0x100f56de
mov ecx, dword [ebx + 0x5ef8]
xor eax, eax
cmp dword [edi + 0x2c], 5
mov ecx, dword [ecx]
sete al
or dword [ecx + 0x54], eax
cmp dword [edi + 0x2c], 5
jne 0x100f52ef
mov dword [ebx + 0x7390], 0xffffffff
mov eax, dword [ebx + 0x5ef8]
mov dword [eax + 0x284], 1
cmp dword [edi + 0x2c], 5
jne 0x100f5301
mov eax, dword [ebx + 0x7394]
or eax, 1
mov dword [ebx + 0x7394], eax
mov ecx, dword [ebx + 0x5ef8]
or dword [ecx + 0x284], eax
cmp dword [ebx + 0x6714], 3
jne 0x100f573a
mov esi, dword [ebx + 0x5ef8]
xor ecx, ecx
mov edx, dword [ebx + 0x6e3c]
mov eax, dword [esi]
mov dword [eax + 0xd4], ecx
mov eax, dword [esi]
mov dword [eax + 0xd0], ecx
cmp dword [ebx + 0x7424], ecx
jne 0x100f5759
cmp dword [edx + 0x68c], 0
jne 0x100f57a4
mov ebx, dword [ebp + 8]
cmp dword [ebx + 0x6710], 0
jne 0x100f57fe
cmp dword [ebx + 0x6714], 3
setne al
movzx eax, al
mov ecx, dword [esi]
mov dword [ecx + 0xd4], eax
mov eax, dword [esi]
mov eax, dword [eax + 0xd4]
mov dword [ebx + 0x7388], eax
mov eax, dword [esi + 0x50]
cmp dword [esi + 0x4c], eax
jne 0x100f5805
cmp dword [edx + 0x68c], 0
jne 0x100f5818
mov eax, dword [esi]
cmp dword [eax + 0xd4], 0
jne 0x100f583e
mov dword [eax + 0xd8], 0
cmp dword [ebx + 0x751c], 0
jne 0x100f584d
cmp dword [ebx + 0x753c], 0
jne 0x100f589d
cmp dword [ebx + 0x7484], 0
jne 0x100f590e
mov eax, dword [ebx + 0x748c]
test eax, eax
jne 0x100f593e
cmp dword [ebx + 0x7480], 0
jg 0x100f5979
mov eax, dword [ebx + 0x5ef8]
mov edx, dword [ebx + 0x7374]
mov ecx, dword [ebx + 0x6e3c]
mov dword [eax + 0x5c], edx
mov dword [ebx + 0x7374], 0
cmp dword [ecx + 0x498], 0
mov edx, dword [ebx + 4]
je 0x100f5b35
mov esi, dword [edx + 0x8c]
mov edi, dword [ecx + 0x49c]
cmp esi, edi
cmovge edi, esi
mov dword [edx + 0x8c], edi
xor edx, edx
mov esi, dword [eax + 0x54]
mov edi, dword [ebx + edx*4 + 0x7010]
cmp esi, edi
jl 0x100f53cb
test edx, edx
je 0x100f4dce
mov dword [ebx + edx*4 + 0x700c], edi
inc edx
cmp edx, 0x10
jne 0x100f4db1
mov esi, dword [eax + 0x54]
mov edx, 0x10
mov dword [ebx + edx*4 + 0x700c], esi
mov esi, dword [eax]
cmp dword [esi + 0x58], 3
je 0x100f5b47
mov ebx, dword [ebx + 0x7048]
cmp ebx, 0x80000000
jne 0x100f531b
test edx, edx
je 0x100f5b58
mov esi, 0x10
sub esi, edx
mov ebx, dword [esp + 8]
mov edi, dword [ebp + 8]
mov edx, dword [ebx]
cmp dword [edx + 0x8c], esi
jl 0x100f5bab
xor ecx, ecx
cmp dword [edi + 0x6fc8], 0
jne 0x100f5bc3
cmp ecx, 0x11
jae 0x100f66fd
mov dword [edi + ecx*4 + 0x6fc8], eax
cmp dword [eax + 0x280], 0
jne 0x100f4e57
cmp dword [ebx + 0x6478], 0
mov eax, dword [esp + 0x1c]
mov ecx, dword [ebp + 0xc]
je 0x100f4f87
cmp dword [ecx + 0x2c], 5
jne 0x100f5671
mov esi, dword [eax + 0x5530]
cmp dword [ebx + 0x6710], 0
jne 0x100f5c3e
cmp dword [ebx + 0x6714], 3
setne cl
mov eax, esi
shl eax, cl
mov ecx, dword [ebx + 0x6994]
cmp esi, ecx
jae 0x100f5671
mov ebx, dword [esp + 8]
cmp eax, ecx
mov edi, 0xbebbb1b7
jae 0x100f52d7
mov edi, dword [ebp + 8]
mov eax, esi
xor edx, edx
div dword [edi + 0x698c]
mov eax, dword [esp + 0x1c]
mov dword [eax + 0x551c], edx
mov dword [eax + 0x5528], edx
mov eax, esi
xor edx, edx
div dword [edi + 0x698c]
cmp dword [edi + 0x6710], 0
jne 0x100f5c45
cmp dword [edi + 0x6714], 3
setne cl
shl eax, cl
mov ecx, dword [esp + 0x1c]
mov dword [ecx + 0x5520], eax
mov dword [ecx + 0x552c], eax
cmp dword [edi + 0x6714], 2
je 0x100f5c4c
push ecx
push edi
call fcn.100ef3d0
add esp, 8
test eax, eax
js 0x100f5ede
mov eax, dword [edi + 0x6e38]
mov ecx, edi
cmp dword [eax + 0x20], 2
je 0x100f535f
mov eax, dword [esp + 0x1c]
cmp dword [eax + 0x348], 3
je 0x100f5c5e
cmp dword [edi + 0x73a0], 0
jne 0x100f506f
push dword [esp + 0x1c]
push edi
call fcn.100cb410
add esp, 8
mov eax, dword [ebx]
mov eax, dword [eax + 0x2d4]
cmp eax, 0x2f
jg 0x100f5cb3
cmp eax, 0x20
jge 0x100f5c81
cmp eax, 0x18
jge 0x100f5c8a
cmp eax, 0x10
jge 0x100f5c99
cmp eax, 8
jge 0x100f5ca6
mov eax, dword [esp + 0x1c]
cmp dword [eax + 0x364], 1
jne 0x100f50be
cmp dword [edi + 0x6420], 2
jge 0x100f5cc6
mov ebx, dword [esp + 0x1c]
mov ecx, dword [ebx + 0x368]
mov eax, dword [ebx + 0x36c]
cmp ecx, eax
cmovg ecx, eax
mov eax, dword [edi + 0x6e38]
mov edx, dword [eax + 0x2c]
mov esi, dword [eax + 0x30]
xor eax, eax
test edx, edx
cmovs edx, eax
cmp edx, esi
cmovl edx, esi
add edx, ecx
mov ecx, dword [edi + 0x6e3c]
mov ecx, dword [ecx + 0x6a4]
add ecx, ecx
lea ecx, [ecx + ecx*2]
sub ecx, edx
add ecx, 0xffffffdf
mov dword [ebx + 0x35c], ecx
mov ecx, dword [edi + 0x7384]
mov edx, ecx
inc edx
mov dword [edi + 0x7384], edx
mov dword [ebx + 0x340], edx
je 0x100f5132
movzx edx, word [ebx + 0x552c]
and ecx, 0x1f
mov word [edi + ecx*2 + 0x73ac], dx
lea ecx, [ebx + 0x5b90]
mov dword [esp + 0x18], ecx
lea ecx, [edi + 0x757c]
mov dword [esp + 0x20], ecx
lea ecx, [ebx + 0x5e10]
mov dword [esp + 0x28], ecx
lea ecx, [edi + 0x75c4]
mov dword [esp + 0x24], ecx
mov cl, 1
mov edi, dword [esp + 0x1c]
xor esi, esi
mov dword [esp + 0x10], ecx
mov ebx, dword [edi + 0x340]
and ebx, 0x1f
mov dword [esp + esi*4 + 0x40], 0x3c
cmp eax, dword [edi + 0x5b74]
jb 0x100f5187
inc esi
cmp esi, 0x10
jne 0x100f516f
jmp 0x100f5200
cmp esi, dword [edi + eax*4 + 0x5b6c]
jae 0x100f517f
imul ecx, eax, 0x780
lea edx, [esi + esi*4]
add ecx, edi
mov ecx, dword [ecx + edx*8 + 0x5b9c]
mov ecx, dword [ecx]
mov ecx, dword [ecx + 0xf8]
test ecx, ecx
je 0x100f517f
mov edx, dword [ebp + 8]
mov ecx, dword [ecx]
mov edx, dword [edx + 0x7380]
test edx, edx
mov dword [esp + 0x14], edx
jle 0x100f51ee
xor edx, edx
mov edi, dword [ebp + 8]
mov edi, dword [edi + edx*4 + 0x6ec8]
mov edi, dword [edi]
mov edi, dword [edi + 0xf8]
cmp dword [edi], ecx
je 0x100f51e6
inc edx
mov edi, dword [esp + 0x1c]
cmp edx, dword [esp + 0x14]
jl 0x100f51c3
jmp 0x100f51ee
mov edi, dword [esp + 0x1c]
mov dword [esp + esi*4 + 0x40], edx
mov edx, dword [ebp + 8]
mov edx, dword [edx + 0x737c]
test edx, edx
jle 0x100f517f
jmp 0x100f53fa
mov edx, ebx
mov esi, eax
mov edi, dword [esp + 0x18]
shl edx, 9
shl esi, 8
add edx, dword [ebp + 8]
xor ecx, ecx
mov dword [esp + 0xc], esi
shl ebx, 7
dec ecx
mov dword [esi + edx + 0x7578], ecx
mov dword [esi + edx + 0x7574], ecx
mov esi, dword [esp + 0x20]
mov dword [esp + 0x14], edx
imul edx, eax, 0x1e0
shl eax, 6
add eax, ebx
mov dword [esp + 8], edx
lea edx, [edi + edx*4]
mov edi, 0xffffffc0
lea ebx, [esi + eax*4]
mov ecx, dword [edx]
mov esi, dword [esp + edi + 0x80]
add edx, 0x28
and ecx, 3
lea ecx, [ecx + esi*4]
mov dword [ebx + edi + 0x40], ecx
add edi, 4
jne 0x100f524b
mov edx, dword [esp + 0x14]
mov esi, dword [esp + 0xc]
xor ecx, ecx
dec ecx
mov dword [esi + edx + 0x75c0], ecx
mov dword [esi + edx + 0x75bc], ecx
mov ecx, dword [esp + 0x28]
mov edx, dword [esp + 8]
mov esi, 0xfffffec0
lea ecx, [ecx + edx*4]
mov edx, dword [esp + 0x24]
lea eax, [edx + eax*4]
xor edx, edx
mov edi, edx
mov ebx, dword [ecx + esi*4 + 0x500]
and edi, 0xfffffffe
mov edi, dword [esp + edi*2 + 0x40]
and ebx, 3
lea edi, [ebx + edi*4]
mov dword [eax + edx*4], edi
inc edx
add esi, 0xa
jne 0x100f5298
xor edi, edi
test byte [esp + 0x10], 1
mov ecx, 0
mov eax, 1
jne 0x100f515c
mov eax, dword [ebp + 8]
inc dword [eax + 0x6424]
mov ecx, dword [esp + 0x8818]
xor ecx, ebp
call fcn.101e05ab
mov eax, edi
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov eax, dword [ebx + 0x7390]
cmp eax, dword [ebx + 0x6e60]
je 0x100f5f7a
mov eax, dword [ebx + 0x7394]
jmp 0x100f4c72
mov dword [esp + 0x10], ecx
mov ecx, dword [ebp + 8]
mov edi, dword [ecx + 0x704c]
mov ecx, ebx
sar ecx, 0x1f
mov esi, edi
sar esi, 0x1f
sub edi, ebx
sbb esi, ecx
mov ecx, dword [esp + 0x10]
cmp edx, 0xf
jb 0x100f4e01
cmp edi, 3
sbb esi, 0
jl 0x100f4e01
jmp 0x100f5b50
mov dword [eax + 0x8c], ecx
jmp 0x100f4a49
mov eax, dword [esp + 0x1c]
cmp dword [eax + 0x348], 3
jne 0x100f5048
mov edx, dword [esp + 0x1c]
mov ecx, edi
push 0xffffffffffffffff
call fcn.100f8cf0
add esp, 4
cmp dword [edi + 0x6710], 0
je 0x100f5048
mov esi, dword [esp + 0x1c]
mov ecx, edi
mov edx, esi
push 0
call fcn.100f8cf0
add esp, 4
mov ecx, edi
mov edx, esi
push 1
call fcn.100f8cf0
add esp, 4
jmp 0x100f5048
test edx, edx
jne 0x100f4ddc
xor edx, edx
jmp 0x100f4de3
mov edx, ebx
mov edi, dword [ebp + 8]
mov ebx, dword [esp + 0x34]
mov esi, dword [esp + 0x28]
xor ecx, ecx
mov dword [edi + 0x73ec], ecx
mov dword [edi + 0x73f0], ecx
jmp 0x100f494d
mov dword [esp + 0xc], 0
mov dword [esp + 8], ecx
mov edi, dword [ebp + 8]
mov ecx, dword [esp + 0xc]
mov ecx, dword [edi + ecx*4 + 0x6f48]
test ecx, ecx
je 0x100f542c
mov edi, dword [ecx]
mov ecx, dword [esp + 8]
mov edi, dword [edi + 0xf8]
cmp dword [edi], ecx
je 0x100f6370
mov edi, dword [esp + 0xc]
inc edi
mov ecx, edi
mov dword [esp + 0xc], edi
cmp edi, edx
mov edi, dword [esp + 0x1c]
mov ecx, dword [esp + 8]
jge 0x100f517f
jmp 0x100f5402
or eax, 1
mov edx, dword [esp + 0x2c]
bsr eax, eax
xor eax, 0x1f
mov ecx, eax
add eax, dword [esp + 0x30]
or ecx, 0xffffffe0
cmp edx, eax
cmovbe eax, edx
lea eax, [ecx + eax + 0x21]
cmp edx, eax
cmovbe eax, edx
mov dword [esp + 0x30], eax
mov esi, dword [esp + 0xc]
mov eax, dword [esp + 0x30]
mov edi, dword [esp + 0x14]
mov ebx, dword [esp + 0x10]
mov edx, dword [esp + 0x18]
mov ecx, dword [esp + 0x20]
mov dword [esi], eax
jmp 0x100f3db6
mov ecx, dword [esp + 0x1c]
mov ecx, dword [ecx + 0x6c80]
mov ecx, dword [edi + ecx*4 + 0x6a34]
mov esi, dword [ecx + 4]
mov ecx, dword [edi + 0x6e38]
mov edx, dword [ecx]
cmp edx, dword [esi]
jne 0x100f5671
mov edx, dword [ecx + 0x40]
cmp edx, dword [esi + 0x40]
jne 0x100f5671
mov edx, dword [ebp + 8]
mov edx, dword [edx + 0x6e3c]
cmp edx, dword [esi + 0x2a710]
jne 0x100f5671
mov edi, dword [ebp + 8]
mov ebx, dword [esp + 8]
test eax, eax
je 0x100f3ff9
jmp 0x100f473e
mov ebx, dword [esp + 8]
mov esi, dword [esp + 0x24]
jmp 0x100f49b6
xor eax, eax
cmp dword [ecx + 0x70], 0
mov esi, dword [ebx]
mov edx, ecx
mov ecx, 2
setle al
sub ecx, eax
mov dword [esi + 0x148], ecx
cmp dword [edx + 0x74], 0
je 0x100f5f89
mov ebx, dword [esp + 8]
mov esi, dword [esp + 0xc]
xor edx, edx
mov edi, dword [ebp + 8]
inc edx
mov eax, dword [ebx]
mov ecx, dword [eax + 0x144]
cmp ecx, dword [esi + 0x80]
mov ecx, dword [esi + 0x78]
mov dword [eax + 0x13c], ecx
mov eax, dword [esi + 0x7c]
mov ecx, dword [ebx]
mov dword [ecx + 0x140], eax
mov eax, dword [esi + 0x80]
mov ecx, dword [ebx]
mov dword [ecx + 0x144], eax
mov ecx, esi
mov esi, dword [esp + 0x24]
cmovne esi, edx
jmp 0x100f49a9
push dword [edi + 0x7560]
call fcn.10065b30
add esp, 4
test eax, eax
je 0x100f558a
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x7560]
cmp eax, 2
jne 0x100f5ff4
mov edi, dword [ebp + 8]
mov ebx, dword [esp + 8]
mov ecx, dword [esp + 0xc]
jmp 0x100f49b6
mov edx, dword [esi + 0x5ef8]
xor ecx, ecx
cmp edi, 2
mov dword [esp + 0x18], edi
sete bl
test edx, edx
je 0x100f66fd
mov esi, dword [edx]
cmp dword [esi + 0xf8], 0
je 0x100f66fd
mov cl, bl
mov eax, dword [esp + 8]
mov esi, dword [edx + ecx*4 + 8]
cmp esi, dword [eax]
jne 0x100f55f0
add edx, 4
push ecx
push 0x7fffffff
push edx
call fcn.1001f3e0
add esp, 0xc
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x6714]
mov dword [esp + 0xc], eax
cmp dword [esp + 0xc], 3
je 0x100f5e7c
mov eax, dword [esp + 0xc]
cmp eax, dword [esp + 0x18]
je 0x100f5e7c
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 0x5ef8]
mov edx, dword [ecx + 0x58]
cmp edx, dword [eax + 0x6e60]
jne 0x100f6035
mov edx, dword [esp + 0x18]
mov eax, dword [esp + 0xc]
mov ecx, edx
mov esi, eax
xor eax, 1
xor edx, 1
xor ecx, 2
xor esi, 2
or eax, ecx
sete al
or esi, edx
je 0x100f61ec
test al, al
jne 0x100f61ec
mov eax, dword [ebp + 8]
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x14]
mov dword [eax + 0x6714], ecx
mov dword [eax + 0x645c], edx
jmp 0x100f5671
mov dword [ebx + 0x6718], 0
mov edi, 0xbebbb1b7
jmp 0x100f52d7
mov edx, dword [ebx + 0x6988]
xor ecx, ecx
cmp eax, 2
sete cl
cmp edx, ecx
mov dword [esp + 0x10], edx
jle 0x100f4b94
mov eax, ecx
mov ecx, dword [ebx + 0x6990]
mov edi, eax
inc edi
mov edx, ecx
imul edx, eax
xor eax, eax
add edx, edx
add edx, dword [ebx + 0x670c]
cmp edi, dword [esp + 0x10]
sete al
sub ecx, eax
add ecx, ecx
push ecx
push 0xff
push edx
call fcn.101e40e0
add esp, 0xc
mov ecx, dword [ebx + 0x6988]
mov eax, edi
cmp edi, ecx
mov dword [esp + 0x10], ecx
jl 0x100f5697
jmp 0x100f4b94
mov edx, dword [ebx + 0x6e60]
cmp edx, eax
jne 0x100f56f5
mov ecx, dword [esp + 0x1c]
cmp dword [ecx + 0x348], 1
je 0x100f5702
mov ecx, dword [ebp + 8]
mov dword [ecx + 0x738c], 1
mov ecx, dword [ebp + 8]
mov edi, dword [ecx + 0x7390]
mov ecx, dword [ecx + 0x6e3c]
mov ecx, dword [ecx + 0x14]
test edi, edi
js 0x100f5f9d
sub edi, edx
xor esi, esi
mov ebx, dword [ebp + 8]
dec esi
shl esi, cl
not esi
and edi, esi
cmp edi, eax
mov edi, dword [ebp + 0xc]
jbe 0x100f4c21
jmp 0x100f5faa
cmp dword [ebx + 0x6718], 0
je 0x100f4c8b
cmp dword [ebx + 0x739c], 2
jge 0x100f4c8b
jmp 0x100f4f6d
mov ecx, dword [ebp + 8]
lea eax, [ecx + 0x73f8]
push dword [ecx + 4]
push edx
push eax
mov ebx, edx
call fcn.100f1940
mov edx, ebx
add esp, 0xc
test eax, eax
jns 0x100f4cb5
mov edi, eax
mov eax, dword [esp + 8]
mov eax, dword [eax]
test byte [eax + 0x244], 8
jne 0x100f52d7
mov eax, dword [ebp + 8]
mov edx, ebx
mov dword [eax + 0x7424], 0
jmp 0x100f4cb5
mov eax, dword [ebp + 8]
cmp dword [eax + 0x7424], 0
je 0x100f4cc2
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x7428]
dec eax
cmp eax, 7
ja case.default.0x100f57c3
jmp dword [eax*4 + 0x10249940]
mov eax, dword [esi]
mov dword [eax + 0xd4], 1
mov ebx, dword [ebp + 8]
mov eax, dword [ebx + 0x742c]
test al, 3
je 0x100f4ce7
cmp dword [ebx + 0x7428], 4
jg 0x100f4ce7
shr eax, 1
and eax, 1
jmp 0x100f4cdf
mov al, 1
jmp 0x100f4cdc
mov ecx, dword [esi]
setl al
movzx eax, al
mov dword [ecx + 0xd8], eax
jmp 0x100f4d27
cmp dword [ebx + 0x7424], 0
je 0x100f4d0e
mov eax, dword [ebx + 0x7428]
cmp eax, 5
je 0x100f5839
cmp eax, 3
jne 0x100f6064
mov eax, dword [esi]
mov ebx, dword [ebp + 8]
mov dword [eax + 0xd8], 1
jmp 0x100f4d27
cmp dword [ebx + 0x7528], 6
jg 0x100f4d34
mov eax, dword [ebx + 0x7530]
dec eax
cmp eax, 1
ja 0x100f4d34
push dword [esi]
call fcn.1006a670
add esp, 4
test eax, eax
je 0x100f4d34
mov ecx, dword [ebx + 0x7528]
cmp ecx, 6
ja case.default.0x100f588b
jmp dword [ecx*4 + 0x10249960]
mov dword [eax], 4
jmp case.default.0x100f588b
mov eax, dword [ebx + 0x7540]
test eax, eax
mov dword [esp + 0x10], eax
je 0x100f5fc3
push 0x24
push 6
push dword [esi]
call fcn.1005f890
add esp, 0xc
test eax, eax
je 0x100f4d41
mov edi, eax
imul eax, dword [esp + 0x10], 0x168
cvtsi2sd xmm0, eax
mov eax, dword [edi + 4]
mulsd xmm0, qword [0x1022ae60]
sub esp, 0xc
movsd qword [esp + 4], xmm0
mov dword [esp], eax
call fcn.1005bea0
add esp, 0xc
push dword [ebx + 0x7548]
push dword [ebx + 0x7544]
push dword [edi + 4]
call fcn.1005bf50
add esp, 0xc
jmp 0x100f4d41
push 1
push 7
push dword [esi]
call fcn.1005f890
add esp, 0xc
test eax, eax
je 0x100f4d4e
mov cl, byte [ebx + 0x7488]
mov eax, dword [eax + 4]
mov byte [eax], cl
mov dword [ebx + 0x7484], 0
jmp 0x100f4d4e
lea edi, [ebx + 0x748c]
push eax
push 1
push dword [esi]
call fcn.1005f800
add esp, 0xc
test eax, eax
jne 0x100f595e
push edi
call fcn.1005a380
add esp, 4
mov eax, dword [esp + 8]
mov dword [edi], 0
mov ebx, dword [ebp + 8]
mov eax, dword [eax]
or dword [eax + 0x350], 2
jmp 0x100f4d5c
push 0x10
push 0x12
push dword [esi]
call fcn.1005f890
add esp, 0xc
test eax, eax
je 0x100f5b2b
mov ecx, dword [eax + 4]
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x7480]
mov dword [esp + 0x18], ecx
test eax, eax
mov dword [ecx], eax
je 0x100f5d96
mov eax, dword [ebp + 8]
xor ecx, ecx
mov dword [esp + 0x10], 0
lea edi, [eax + 0x743c]
mov eax, dword [esp + 8]
mov edx, 0xffffffe2
mov eax, dword [eax]
mov ebx, dword [eax + 0x2f8]
mov eax, dword [eax + 0x2fc]
mov esi, ebx
mov dword [esp + 0x14], eax
imul edx
mov dword [esp + 0xc], ebx
sar esi, 0x1f
add eax, ebx
adc edx, esi
or eax, edx
je 0x100f5a5b
xor edx, dword [esp + 0x14]
mov eax, dword [edi]
sar edx, 0x1f
cmp edx, 1
ja 0x100f5b19
mov edx, eax
shr edx, 0x1f
add edx, eax
mov ebx, edx
and edx, 0xfffffffe
sub eax, edx
sar ebx, 1
cmp eax, 1
jne 0x100f5a5d
mov eax, dword [esp + 0x14]
mov edx, 0xffffffce
imul edx
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0xc]
mov dword [esp + 0x28], edx
mov edx, 0
neg eax
sbb edx, esi
xor eax, dword [esp + 0x20]
xor edx, dword [esp + 0x28]
or eax, edx
jne 0x100f5a53
cmp dword [esp + 0xc], 0
jg 0x100f5b20
cmp dword [esp + 0x14], 0
jne 0x100f5b20
or ecx, 0x800000
jmp 0x100f5a5d
mov ebx, dword [edi]
mov eax, ebx
mov edx, 0xcccccccd
mov esi, dword [edi + 0x10]
mul edx
shr edx, 3
mov dword [esp + 0x14], edx
add edx, edx
lea eax, [edx + edx*4]
shl esi, 0x1e
sub ebx, eax
shl ebx, 0x18
or ebx, ecx
mov ecx, dword [edi + 4]
or ebx, esi
mov esi, 0x66666667
mov eax, ecx
imul esi
mov eax, edx
sar edx, 2
shr eax, 0x1f
add edx, eax
mov eax, edx
add edx, edx
shl eax, 0x14
lea edx, [edx + edx*4]
or eax, ebx
mov ebx, dword [edi + 8]
sub ecx, edx
shl ecx, 0x10
or ecx, eax
mov eax, ebx
imul esi
mov eax, edx
sar edx, 2
shr eax, 0x1f
add edx, eax
mov eax, edx
add edx, edx
shl eax, 0xc
or eax, ecx
lea ecx, [edx + edx*4]
sub ebx, ecx
mov ecx, dword [edi + 0xc]
add edi, 0x18
shl ebx, 8
or ebx, eax
mov eax, ecx
imul esi
mov esi, dword [esp + 0x18]
mov eax, edx
sar edx, 2
shr eax, 0x1f
add edx, eax
mov eax, edx
add edx, edx
lea edx, [edx + edx*4]
shl eax, 4
sub ecx, edx
mov edx, dword [esp + 0x14]
or ecx, ebx
or ecx, eax
shl edx, 0x1c
or ecx, edx
mov edx, dword [esp + 0x10]
mov dword [esi + edx*4 + 4], ecx
inc edx
cmp edx, dword [esi]
mov dword [esp + 0x10], edx
jb 0x100f59bc
jmp 0x100f5d96
mov ebx, eax
jmp 0x100f5a5d
or ecx, 0x80
jmp 0x100f5a5d
mov edi, 0xfffffff4
jmp 0x100f52d7
cmp dword [edx + 0x238], 0
jg 0x100f4d98
jmp 0x100f4daf
cmp edx, 0xe
jbe 0x100f4e01
xor esi, esi
inc esi
jmp 0x100f4e10
movapd xmm0, xmmword [0x10210920]
mov edi, dword [ebp + 8]
mov ecx, 0x80000000
mov ebx, dword [esp + 8]
movupd xmmword [edi + 0x7014], xmm0
movupd xmmword [edi + 0x7024], xmm0
movupd xmmword [edi + 0x7034], xmm0
mov dword [edi + 0x7044], ecx
mov dword [edi + 0x7048], ecx
mov dword [edi + 0x704c], ecx
mov ecx, dword [eax + 0x54]
mov dword [edi + 0x7010], ecx
mov dword [eax + 0x5c], 1
jmp 0x100f4e25
cmp dword [ecx + 0x498], 0
jne 0x100f4e25
mov dword [edx + 0x8c], esi
jmp 0x100f4e25
xor ecx, ecx
cmp dword [edi + ecx*4 + 0x6fcc], 0
lea ecx, [ecx + 1]
je 0x100f4e34
jmp 0x100f5bc5
mov cl, 1
jmp 0x100f4fa4
mov cl, 1
jmp 0x100f5005
inc eax
mov dword [ecx + 0x5520], eax
mov dword [ecx + 0x552c], eax
jmp 0x100f5024
mov eax, dword [esp + 0x1c]
cmp dword [eax + 0x5554], 0
jne 0x100f5059
push dword [esp + 0x1c]
push edi
call fcn.100cb160
add esp, 8
jmp 0x100f5059
cmp dword [edi + 0x699c], 5
jne 0x100f5cb3
mov eax, dword [esp + 0x1c]
cmp dword [eax + 0x348], 1
je 0x100f5ca6
jmp 0x100f5cb3
mov eax, dword [esp + 0x1c]
cmp dword [eax + 0x348], 3
je 0x100f5cb3
mov eax, dword [ebp + 0xc]
cmp dword [eax + 0x44], 0
jne 0x100f50a4
mov eax, dword [esp + 0x1c]
mov dword [eax + 0x364], 0
jmp 0x100f50a4
mov eax, dword [ebx]
test byte [eax + 0x40], 1
jne 0x100f5eb1
mov edi, dword [ebp + 8]
mov dword [edi + 0x6474], 1
jmp 0x100f50be
mov eax, dword [edi + 0x6988]
cmp eax, dword [ecx + 0x3c]
jne 0x100f401c
mov eax, dword [edi + 0x73a8]
cmp eax, dword [ecx + 0x6a4]
jne 0x100f401c
mov edx, ecx
mov ecx, dword [edi + 0x73a4]
xor esi, esi
cmp ecx, dword [edx + 0xc]
mov ecx, edx
jne 0x100f401c
jmp 0x100f4025
mov eax, dword [edi + 0x69b0]
cmp eax, dword [ecx + 0xc]
jne 0x100f4031
jmp 0x100f4034
push esi
call fcn.100fc400
add esp, 4
jmp 0x100f49f9
mov ebx, dword [ebp + 8]
mov dword [ebx + 0x7480], 0
jmp 0x100f4d69
mov edi, dword [esp + 0x14]
dec eax
cmp eax, 0xff
mov dword [ecx], eax
jbe 0x100f3aae
jmp 0x100f5671
mov ebx, dword [esp + 0x38]
mov edx, dword [esp + 0x24]
mov edi, dword [esp + 0x14]
mov ecx, ebx
shr ecx, 3
movzx esi, byte [edx + ecx]
xor edx, edx
cmp ebx, dword [esp + 8]
setl dl
add edx, ebx
and bl, 7
mov ecx, ebx
mov ebx, esi
mov esi, dword [esp + 0xc]
shl ebx, cl
test bl, 0x80
mov ebx, dword [ebp + 8]
mov dword [esi], edx
je 0x100f3b48
mov ecx, edx
xor ebx, ebx
mov esi, dword [esp + 0x24]
shr ecx, 3
cmp edx, dword [esp + 8]
movzx esi, byte [esi + ecx]
setl bl
add ebx, edx
and dl, 7
mov ecx, edx
mov edx, dword [esp + 0xc]
shl esi, cl
shr esi, 7
and esi, 1
mov dword [edx], ebx
mov ebx, dword [ebp + 8]
inc esi
mov dword [esp + 0x2c], esi
jmp 0x100f3b48
mov ecx, eax
or ecx, 1
bsr edi, ecx
lea edx, [edi + edi]
mov ecx, edx
xor ecx, 0x3f
add ecx, ebx
mov ebx, dword [esp + 0xc]
cmp esi, ecx
cmovbe ecx, esi
add dl, 0xe1
mov dword [ebx], ecx
mov ecx, edx
shr eax, cl
mov ecx, 0xbebbb1b7
dec eax
cmp edi, 0x13
cmovae ecx, eax
mov eax, dword [esp + 0x24]
mov ebx, dword [ebp + 8]
mov edi, dword [esp + 0x14]
mov edx, dword [esp + 0x18]
mov dword [eax + 0x5204], ecx
jmp 0x100f3be3
mov edi, dword [esp + 0x18]
mov esi, dword [ebp + 8]
cmp edi, 3
je 0x100f4b04
mov ecx, dword [esi + 0x5ef8]
xor eax, eax
cmp edi, 1
sete al
add ecx, 4
push eax
push 0x7fffffff
push ecx
call fcn.1001f3e0
add esp, 0xc
jmp 0x100f4b04
mov eax, dword [esp + 0x1c]
mov edi, dword [ebp + 8]
mov dword [eax + 0x364], 2
jmp 0x100f50be
mov ecx, dword [esp + 0x3c]
mov edi, dword [esp + 0x14]
mov edx, dword [esp + 0x10]
xor esi, esi
mov dword [ecx], esi
mov dword [edi + edx + 0x5b70], esi
mov edi, eax
jmp 0x100f52d7
mov eax, dword [esp + 0x30]
mov edi, dword [esp + 0xc]
mov esi, dword [eax]
mov eax, dword [esp + 0x20]
mov ebx, dword [edi]
mov eax, dword [eax]
mov ecx, ebx
shr ecx, 3
push dword [eax + ecx]
call fcn.101eaef1
add esp, 4
mov ecx, ebx
and cl, 7
shl eax, cl
shr eax, 0x17
movzx ecx, byte [eax + 0x10210d70]
movzx eax, byte [eax + 0x10210f70]
add ecx, ebx
cmp esi, ecx
cmovbe ecx, esi
cmp eax, 2
mov dword [edi], ecx
ja 0x100f5671
mov ecx, dword [esp + 0x14]
mov ebx, dword [esp + 0x10]
mov dword [ecx + ebx + 0x8488], eax
mov eax, dword [esp + 0x18]
jmp 0x100f3cd8
mov edi, dword [ebp + 8]
mov ebx, dword [esp + 8]
cmp dword [edi + 0x73a0], 0
je 0x100f3f64
jmp 0x100f5671
not ecx
add edx, ecx
mov ecx, edx
sar ecx, 0x1f
and ecx, eax
add ecx, edx
mov dword [esi + 0x6e74], ecx
jmp 0x100f4af7
cmp dword [edi + 0x44], 0
jne 0x100f4c3f
jmp 0x100f5301
mov edi, dword [ebp + 8]
mov ebx, dword [esp + 8]
mov ecx, dword [esp + 0xc]
mov esi, dword [esp + 0x24]
jmp 0x100f49a9
xor esi, esi
mov ebx, dword [ebp + 8]
mov edi, dword [ebp + 0xc]
dec esi
shl esi, cl
not esi
add eax, edx
and eax, esi
cmp dword [ebx + 0x738c], 0
cmove eax, edx
mov dword [ebx + 0x7390], eax
jmp 0x100f4c21
cmp dword [ebx + 0x7544], 0
jne 0x100f58af
cmp dword [ebx + 0x7548], 0
jne 0x100f58af
jmp 0x100f4d41
mov ebx, dword [esp + 8]
mov edi, dword [ebp + 8]
mov ecx, dword [ebx]
mov dword [ecx + 0x140], eax
jmp 0x100f5591
test eax, eax
je 0x100f5671
push 1
mov eax, dword [ebp + 8]
push dword [eax + 0x641c]
push eax
call fcn.100ec0a0
add esp, 0xc
mov ebx, dword [esp + 8]
test eax, eax
jns 0x100f3f40
jmp 0x100f5ede
mov edi, dword [esp + 0x18]
mov esi, dword [ebp + 8]
cmp edi, 3
je 0x100f4b04
jmp 0x100f5e92
mov edi, eax
mov eax, dword [esp + 8]
mov eax, dword [eax]
test byte [eax + 0x244], 8
je 0x100f4618
jmp 0x100f52d7
mov eax, dword [esi]
mov ebx, dword [ebp + 8]
jmp 0x100f4d1d
xor esi, esi
jmp 0x100f41d6
mov esi, 5
jmp 0x100f41d6
mov esi, 4
jmp 0x100f41d6
or eax, 1
mov ecx, dword [esp + 8]
bsr eax, eax
mov ebx, eax
mov edi, eax
xor ebx, 0x1f
add ebx, edx
cmp esi, ebx
cmovbe ebx, esi
mov eax, ebx
shr eax, 3
push dword [ecx + eax]
call fcn.101eaef1
add esp, 4
mov ecx, ebx
sub ebx, edi
and cl, 7
add ebx, 0x20
shl eax, cl
mov ecx, edi
shr eax, cl
cmp esi, ebx
mov ecx, eax
cmovbe ebx, esi
shr eax, 1
and ecx, 1
mov dword [esp + 0x24], ebx
mov edx, ecx
neg edx
xor eax, edx
mov edx, dword [esp + 0xc]
add eax, ecx
mov dword [edx], ebx
cmp dword [esp + 0x2c], 3
mov edi, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
mov ebx, dword [ebp + 8]
mov edx, dword [esp + 0x18]
mov dword [edi + ecx + 0x87b8], eax
jne 0x100f3bc0
cmp dword [edx + 8], 1
jne 0x100f3bc0
mov ebx, dword [esp + 0x24]
mov ecx, dword [esp + 8]
mov eax, ebx
shr eax, 3
push dword [ecx + eax]
call fcn.101eaef1
add esp, 4
mov ecx, ebx
and cl, 7
shl eax, cl
cmp eax, 0x8000000
jb 0x100f626a
shr eax, 0x17
mov edx, dword [esp + 0x24]
movzx ecx, byte [eax + 0x10210d70]
movsx eax, byte [eax + 0x10211170]
add edx, ecx
cmp esi, edx
cmovbe edx, esi
mov esi, dword [esp + 0xc]
mov dword [esi], edx
jmp 0x100f62bc
mov ebx, dword [esp + 8]
cmp ecx, 0x18
jl 0x100f3f9c
cmp edx, 1
jne 0x100f47b0
mov ebx, dword [esp + 8]
cmp ecx, 0x20
jl 0x100f3f9c
mov edx, dword [ebp + 8]
cmp dword [edx + 0x699c], 5
jne 0x100f6407
mov ebx, dword [esp + 8]
cmp ecx, 0x2f
mov edi, 0
jle 0x100f3f9c
jmp 0x100f52d7
mov eax, dword [ebp + 8]
cmp dword [eax + 0x6710], 0
jne case.0x100f57c3.1
mov eax, dword [ebp + 8]
cmp dword [eax + 0x6714], 3
jne case.0x100f57c3.1
mov eax, dword [ebp + 8]
mov ecx, dword [esi]
mov eax, dword [eax + 0x7388]
mov dword [ecx + 0xd4], eax
jmp case.default.0x100f57c3
mov eax, dword [esi]
mov dword [eax + 0xd0], 1
jmp case.default.0x100f57c3
mov esi, dword [ebp + 8]
mov eax, dword [esp + 0x14]
mov edi, dword [esp + 0x18]
cmp eax, dword [esi + 0x645c]
je 0x100f4b04
mov eax, dword [esp + 0x14]
mov dword [esi + 0x6714], edi
mov edi, 0xbaa8beb0
mov dword [esi + 0x645c], eax
jmp 0x100f52d7
mov ecx, dword [esp + 0x24]
mov eax, ebx
shr eax, 3
push dword [ecx + eax]
call fcn.101eaef1
add esp, 4
mov ecx, ebx
and cl, 7
shl eax, cl
cmp eax, 0x8000000
jb 0x100f6306
shr eax, 0x17
mov esi, dword [esp + 8]
mov edx, dword [esp + 0xc]
movzx ecx, byte [eax + 0x10210d70]
movsx eax, byte [eax + 0x10211170]
add ebx, ecx
cmp esi, ebx
cmovbe ebx, esi
mov dword [edx], ebx
jmp 0x100f635c
or eax, 1
mov ecx, dword [esp + 8]
bsr edi, eax
mov ebx, edi
xor ebx, 0x1f
add ebx, dword [esp + 0x24]
cmp esi, ebx
cmovbe ebx, esi
mov eax, ebx
shr eax, 3
push dword [ecx + eax]
call fcn.101eaef1
add esp, 4
mov ecx, ebx
sub ebx, edi
mov edx, dword [esp + 0xc]
and cl, 7
add ebx, 0x20
shl eax, cl
mov ecx, edi
shr eax, cl
cmp esi, ebx
cmovbe ebx, esi
mov esi, eax
shr eax, 1
and esi, 1
mov dword [edx], ebx
mov edx, esi
neg edx
xor eax, edx
add eax, esi
mov edi, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
mov ebx, dword [ebp + 8]
mov edx, dword [esp + 0x18]
mov dword [edi + ecx + 0x87bc], eax
jmp 0x100f3bc0
mov eax, dword [esi]
mov dword [eax + 0xd0], 2
jmp case.default.0x100f57c3
mov eax, dword [esi]
mov dword [eax + 0xd0], 4
jmp case.default.0x100f57c3
or eax, 1
mov esi, dword [esp + 8]
mov edx, dword [esp + 0x24]
bsr edi, eax
mov ecx, edi
xor ecx, 0x1f
add ecx, ebx
cmp esi, ecx
cmovbe ecx, esi
mov eax, ecx
mov ebx, ecx
shr eax, 3
push dword [edx + eax]
call fcn.101eaef1
add esp, 4
mov ecx, ebx
sub ebx, edi
mov edx, dword [esp + 0xc]
and cl, 7
add ebx, 0x20
shl eax, cl
mov ecx, edi
shr eax, cl
cmp esi, ebx
cmovbe ebx, esi
mov esi, eax
shr eax, 1
and esi, 1
mov dword [edx], ebx
mov edx, esi
neg edx
xor eax, edx
add eax, esi
mov edi, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
mov dword [edi + ecx + 0x87b4], eax
jmp 0x100f41ac
mov ecx, dword [esp + 0x14]
mov edi, dword [esp + 0x1c]
add ecx, dword [esp + 0xc]
mov dword [esp + esi*4 + 0x40], ecx
jmp 0x100f517f
mov dword [eax], 7
jmp case.default.0x100f588b
mov dword [eax], 6
jmp case.default.0x100f588b
mov ecx, dword [ebp + 8]
cmp dword [ecx + 0x7534], 0
je 0x100f642e
mov dword [eax], 5
jmp case.default.0x100f588b
mov dword [eax], 2
jmp case.default.0x100f588b
mov dword [eax], 3
jmp case.default.0x100f588b
mov dword [eax], 0
mov ecx, dword [ebp + 8]
cmp dword [ecx + 0x7530], 2
jne 0x100f63d6
mov dword [eax + 4], 1
mov ebx, dword [ebp + 8]
cmp dword [ebx + 0x7528], 5
jne 0x100f4d34
cmp dword [ebx + 0x7538], 0
je 0x100f63fe
mov dword [eax + 8], 1
mov ebx, dword [ebp + 8]
jmp 0x100f4d34
mov dword [eax + 8], 2
jmp 0x100f63f6
cmp ecx, 0x2f
jg 0x100f47b0
mov ecx, dword [ebp + 8]
mov ebx, dword [esp + 8]
mov edi, 0
cmp dword [ecx + 0x7494], 0
js 0x100f52d7
jmp 0x100f3f9c
mov dword [eax], 1
jmp case.default.0x100f588b
mov ecx, dword [ebp + 8]
cmp dword [ecx + 0x6718], 0
jne 0x100f6656
mov ecx, dword [esp + 0x10]
inc eax
xor esi, esi
inc esi
cdq
mov cl, byte [ecx + 0x14]
shl esi, cl
idiv esi
cmp ebx, edx
je 0x100f4b18
mov eax, dword [ebp + 8]
mov dword [esp + 0x18], edi
cmp dword [eax + 0x7380], 0
je 0x100f67f2
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x6ec8]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x10]
cmp dword [eax + 0x34], 0
jne 0x100f64b4
mov eax, dword [ebp + 8]
movapd xmm0, xmmword [0x10210920]
movupd xmmword [eax + 0x7010], xmm0
movupd xmmword [eax + 0x7020], xmm0
movupd xmmword [eax + 0x7030], xmm0
movupd xmmword [eax + 0x7040], xmm0
mov ecx, dword [ebp + 8]
call fcn.100f8410
test eax, eax
js 0x100f6745
mov edi, dword [ebp + 8]
mov ebx, dword [esp + 0x10]
mov eax, dword [edi + 0x6e74]
inc eax
xor esi, esi
mov dword [edi + 0x6e74], eax
inc esi
cdq
mov cl, byte [ebx + 0x14]
shl esi, cl
idiv esi
xor esi, esi
mov dword [edi + 0x6e74], edx
mov eax, dword [edi + 0x5ef8]
mov dword [eax + 0x58], edx
xor eax, eax
cmp dword [ebx + 0x34], esi
mov ecx, dword [edi + 0x5ef8]
sete al
mov dword [ecx + 0x288], eax
mov eax, dword [edi + 0x5ef8]
add eax, 4
push esi
mov ebx, 0x7fffffff
push ebx
push eax
call fcn.1001f3e0
add esp, 0xc
mov eax, dword [edi + 0x5ef8]
add eax, 4
push 1
push ebx
push eax
call fcn.1001f3e0
add esp, 0xc
mov dword [edi + 0x7378], esi
push edi
call fcn.100f04f0
add esp, 4
test eax, eax
jns 0x100f655e
mov edi, eax
mov eax, dword [esp + 8]
mov eax, dword [eax]
test byte [eax + 0x244], 8
jne 0x100f52d7
mov eax, dword [ebp + 8]
cmp dword [eax + 0x7380], 0
je 0x100f67b6
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x6e3c]
mov cl, byte [eax + 0x6a4]
dec cl
xor esi, esi
inc esi
mov edx, esi
shl edx, cl
mov dword [esp + 0x40], edx
mov cl, byte [eax + 0x6a8]
mov eax, esi
dec cl
shl eax, cl
cmp dword [esp + 0x14], 0
mov dword [esp + 0x44], eax
mov dword [esp + 0x48], eax
mov dword [esp + 0x4c], 0xffffffff
je 0x100f6798
mov eax, dword [ebp + 8]
mov ecx, dword [esp + 0x14]
mov eax, dword [eax + 0x6ec8]
mov ecx, dword [ecx]
mov eax, dword [eax]
mov edx, dword [eax + 0x44]
cmp edx, dword [ecx + 0x44]
jne 0x100f6798
mov edx, dword [eax + 0x48]
cmp edx, dword [ecx + 0x48]
jne 0x100f6798
mov eax, dword [eax + 0x50]
cmp eax, dword [ecx + 0x50]
jne 0x100f6798
mov edi, dword [esp + 0x14]
lea esi, [edi + 4]
push 0
push 0x7fffffff
push esi
call fcn.1001f440
add esp, 0xc
cmp dword [edi + 0x27c], 0
je 0x100f6616
push 1
push 0x7fffffff
push esi
call fcn.1001f440
add esp, 0xc
mov edi, dword [ebp + 8]
mov ebx, dword [esp + 0x14]
mov edx, dword [edi + 0x6ec8]
mov eax, dword [ebx]
mov edx, dword [edx]
lea ecx, [eax + 0x20]
lea esi, [edx + 0x20]
push dword [eax + 0x48]
push dword [eax + 0x44]
push dword [eax + 0x50]
push ecx
push eax
push esi
push edx
call fcn.10058ff0
add esp, 0x1c
mov eax, dword [ebx + 0x54]
mov ecx, dword [edi + 0x6ec8]
add eax, 2
mov dword [ecx + 0x54], eax
jmp 0x100f67a4
mov ecx, dword [ebp + 8]
mov eax, dword [ecx + 0x5ef8]
test eax, eax
je 0x100f66fd
mov ecx, dword [eax]
cmp dword [ecx + 0xf8], 0
je 0x100f66fd
mov ecx, dword [ebp + 8]
mov edx, edi
mov edi, dword [ecx + 0x6714]
cmp edi, 3
je 0x100f6702
cmp edi, edx
je 0x100f6702
mov ecx, dword [ebp + 8]
mov dword [ecx + 0x739c], 0
cmp dword [eax + 0x58], ebx
jne 0x100f6759
test byte [eax + 0x280], 4
jne 0x100f67d6
mov ebx, dword [ebp + 8]
mov dword [ebx + 0x6718], 0
lea esi, [ebx + 0x2b8]
mov ebx, 0x24
mov eax, dword [esi]
cmp dword [eax + 0xf8], 0
je 0x100f66d9
cmp dword [esi + 0x280], 0
je 0x100f66e4
add esi, 0x290
dec ebx
jne 0x100f66c5
jmp 0x100f6728
mov eax, dword [ebp + 8]
cmp esi, dword [eax + 0x5ef8]
je 0x100f66d9
push esi
push dword [ebp + 8]
call fcn.100ebe10
add esp, 8
jmp 0x100f66d9
call fcn.101f01af
mov ebx, dword [ebp + 8]
xor eax, eax
inc dword [ebx + 0x739c]
cmp edi, 3
mov dword [ebx + 0x5ef8], 0
setne al
mov dword [ebx + 0x6718], eax
jmp 0x100f4b3e
mov ebx, dword [ebp + 8]
xor eax, eax
cmp edi, 2
sete al
mov ecx, dword [ebx + 4]
mov edx, dword [ebx + 0x5ef8]
mov dword [edx + eax*4 + 8], ecx
jmp 0x100f4b5a
mov ecx, dword [ebp + 8]
mov edi, eax
mov dword [ecx + 0x6718], 0
jmp 0x100f52d7
xor ecx, ecx
cmp edi, 2
sete cl
add eax, 4
push ecx
push 0x7fffffff
push eax
call fcn.1001f3e0
add esp, 0xc
mov ebx, dword [ebp + 8]
xor eax, eax
inc eax
mov dword [ebx + 0x6718], 1
mov dword [ebx + 0x5ef8], 0
mov edi, dword [ebx + 0x6714]
jmp 0x100f4b3e
mov eax, dword [ebp + 8]
cmp dword [eax + 0x7394], 0
je 0x100f67ff
mov ecx, dword [ebp + 8]
mov eax, dword [ecx + 0x6e74]
mov ecx, dword [ecx + 0x6ec8]
mov dword [ecx + 0x58], eax
mov eax, dword [ebp + 8]
mov edi, dword [esp + 0x18]
mov ebx, dword [eax + 0x6e60]
mov eax, dword [eax + 0x6e74]
cmp ebx, eax
je 0x100f4b18
jmp 0x100f6436
mov ebx, dword [ebp + 8]
mov dword [ebx + 0x6718], 1
mov dword [ebx + 0x5ef8], 0
jmp 0x100f4b4b
mov dword [esp + 0x14], 0
jmp 0x100f647f
mov eax, dword [esp + 8]
mov eax, dword [eax]
cmp dword [eax + 0x250], 0
jne 0x100f67a4
mov eax, dword [ebp + 8]
lea ecx, [esp + 0x40]
mov eax, dword [eax + 0x6ec8]
push ecx
push dword [eax]
call fcn.10005c90
add esp, 8
jmp 0x100f67a4