Function at 0x10012010
Capabilities:
Encode data using xor
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, 0x89a0
call fcn.101acca0
mov dword [esp + 0x54], edx
mov esi, ecx
mov eax, dword [ebp + 0x14]
mov dword [eax], 8
mov dword [eax + 8], 0
mov dword [eax + 4], 0
push 0x4818
call fcn.1037f2d2
add esp, 4
mov ebx, eax
mov dword [eax], esi
mov dword [eax + 0x480c], 0x1001af00
mov dword [eax + 0x4810], 0x1001b3b0
mov dword [eax + 0x4814], 0x1001b4b0
mov dword [eax + 0x47e4], 0
mov dword [eax + 0x47e8], 0xffffffff
mov byte [eax + 0x47c4], 0xff
mov ecx, eax
call fcn.1001b730
mov byte [esp + 4], al
cmp al, 0xd8
je 0x100120a3
mov dword [0x1058e718], 0x1053576a
mov eax, esi
mov esi, dword [esi + 0xb4]
mov edi, dword [eax + 0xb8]
mov dword [eax + 0xac], esi
mov dword [esp + 0x14], eax
mov dword [eax + 0xb0], edi
push ebx
call fcn.1037ddf5
add esp, 4
cmp byte [esp + 4], 0xd8
jne 0x10012124
push 0x4818
call fcn.1037f2d2
add esp, 4
mov ebx, eax
mov eax, dword [esp + 0x14]
mov dword [ebx], eax
mov dword [ebx + 0x480c], 0x1001af00
mov dword [ebx + 0x4810], 0x1001b3b0
mov dword [ebx + 0x4814], 0x1001b4b0
mov dword [eax + 8], 0
cmp dword [ebp + 0x10], 5
jb 0x10012268
mov dword [0x1058e718], 0x10533ae0
jmp 0x100160ba
mov ecx, dword [esp + 0x14]
lea edx, [ecx + 0xac]
lea eax, [ecx + 0xb0]
mov dword [esp + 0x18], eax
lea eax, [ecx + 0x28]
mov dword [esp + 4], eax
lea eax, [ecx + 0x10]
mov dword [esp + 0xc], eax
lea eax, [ecx + 0x20]
mov dword [esp + 0x28], eax
lea eax, [ecx + 0x2c]
mov dword [esp + 0x30], eax
lea eax, [ecx + 0x24]
mov dword [esp + 0x20], eax
lea eax, [ecx + 0x2d]
mov dword [esp + 0x10], eax
mov ebx, 0xfffffff8
mov dword [esp + 8], edx
nop dword [eax + eax]
cmp esi, edi
jae 0x10012180
lea ecx, [esi + 1]
mov dword [edx], ecx
movzx eax, byte [esi]
mov esi, ecx
jmp 0x100121dd
mov eax, dword [esp + 4]
cmp dword [eax], 0
je 0x100121b8
mov eax, dword [esp + 0x28]
push dword [eax]
mov esi, dword [esp + 0x34]
push esi
mov eax, dword [esp + 0x28]
push dword [eax]
mov eax, dword [esp + 0x18]
call dword [eax]
add esp, 0xc
test eax, eax
je 0x100121bc
mov edi, eax
add edi, esi
movzx eax, byte [esi]
mov edx, dword [esp + 8]
mov esi, dword [esp + 0x10]
jmp 0x100121d5
xor eax, eax
jmp 0x100121dd
mov eax, dword [esp + 4]
mov dword [eax], 0
mov byte [esi], 0
xor eax, eax
mov esi, dword [esp + 0x10]
mov edi, esi
mov edx, dword [esp + 8]
mov ecx, dword [esp + 0x18]
mov dword [ecx], edi
mov dword [edx], esi
cmp al, byte [ebx + 0x10398074]
jne 0x10012220
inc ebx
jne 0x10012170
mov eax, dword [esp + 0x14]
movq xmm0, qword [eax + 0xb4]
movq qword [eax + 0xac], xmm0
mov dword [esp + 0xe0], eax
mov eax, dword [ebp + 0x10]
cmp eax, 5
jb 0x100139d6
mov dword [0x1058e718], 0x10533ae0
xor eax, eax
jmp 0x100160c7
mov dword [0x1058e718], 0x1053434a
mov esi, dword [esp + 0x14]
mov ecx, dword [esi + 0xb4]
mov eax, dword [esi + 0xb8]
mov dword [esi + 0xac], ecx
mov dword [esi + 0xb0], eax
cmp ecx, eax
jae 0x10013999
lea edx, [ecx + 1]
mov edi, dword [esp + 8]
mov dword [edi], edx
movzx ecx, byte [ecx]
cmp cl, 0x42
je 0x10013a6c
jmp 0x10013b32
mov dword [ebx + 0x46cc], 0
mov dword [ebx + 0x46d0], 0
mov dword [ebx + 0x4714], 0
mov dword [ebx + 0x4718], 0
mov dword [ebx + 0x475c], 0
mov dword [ebx + 0x4760], 0
mov dword [ebx + 0x47a4], 0
mov dword [ebx + 0x47a8], 0
mov dword [ebx + 0x4804], 0
mov dword [esp + 0xc], ebx
mov ecx, ebx
xor edx, edx
call fcn.1001adf0
test eax, eax
je 0x10016046
mov edi, dword [esp + 0xc]
mov ecx, edi
call fcn.1001b730
lea ecx, [edi + 0x1a44]
mov dword [esp + 0x18], ecx
lea ecx, [edi + 4]
mov dword [esp + 0x10], ecx
lea ecx, [edi + 0x469c]
mov dword [esp + 0x30], ecx
lea ecx, [edi + 0x20b4]
mov dword [esp + 0x28], ecx
cmp al, 0xda
je 0x1001252a
movzx edx, al
cmp edx, 0xdc
je 0x1001233a
cmp edx, 0xd9
je 0x10014093
mov ecx, edi
call fcn.1001b830
test eax, eax
jne 0x10012517
jmp 0x10016046
mov esi, dword [edi]
mov ecx, dword [esi + 0xac]
mov eax, dword [esi + 0xb0]
cmp ecx, eax
jae 0x1001236f
lea edx, [ecx + 1]
mov dword [esi + 0xac], edx
movzx ebx, byte [ecx]
mov ecx, edx
cmp ecx, eax
jae 0x100123bb
lea eax, [ecx + 1]
mov dword [esi + 0xac], eax
movzx edx, byte [ecx]
jmp 0x100123ff
cmp dword [esi + 0x28], 0
je 0x10012390
lea edi, [esi + 0x2c]
push dword [esi + 0x20]
push edi
push dword [esi + 0x24]
call dword [esi + 0x10]
add esp, 0xc
test eax, eax
je 0x10012398
add eax, edi
movzx ebx, byte [edi]
jmp 0x100123a8
xor ebx, ebx
cmp ecx, eax
jb 0x1001235e
jmp 0x100123bb
mov dword [esi + 0x28], 0
lea eax, [esi + 0x2d]
mov byte [esi + 0x2c], 0
xor ebx, ebx
mov dword [esi + 0xb0], eax
lea ecx, [esi + 0x2d]
mov dword [esi + 0xac], ecx
cmp ecx, eax
jb 0x1001235e
cmp dword [esi + 0x28], 0
je 0x100123dc
lea edi, [esi + 0x2c]
push dword [esi + 0x20]
push edi
push dword [esi + 0x24]
call dword [esi + 0x10]
add esp, 0xc
test eax, eax
je 0x100123e0
add eax, edi
movzx edx, byte [edi]
jmp 0x100123f0
xor edx, edx
jmp 0x100123ff
mov dword [esi + 0x28], 0
lea eax, [esi + 0x2d]
mov byte [esi + 0x2c], 0
xor edx, edx
mov dword [esi + 0xb0], eax
lea eax, [esi + 0x2d]
mov dword [esi + 0xac], eax
movzx esi, bl
shl esi, 8
mov ebx, dword [esp + 0xc]
mov edi, dword [ebx]
mov ecx, dword [edi + 0xac]
mov eax, dword [edi + 0xb0]
cmp ecx, eax
jae 0x10012437
mov dword [esp + 8], edx
lea edx, [ecx + 1]
mov dword [edi + 0xac], edx
movzx ecx, byte [ecx]
mov dword [esp + 4], ecx
mov ecx, edx
mov edx, dword [esp + 8]
jmp 0x10012497
cmp dword [edi + 0x28], 0
je 0x10012460
mov dword [esp + 8], edx
lea ebx, [edi + 0x2c]
push dword [edi + 0x20]
push ebx
push dword [edi + 0x24]
call dword [edi + 0x10]
add esp, 0xc
test eax, eax
je 0x1001246a
add eax, ebx
movzx ecx, byte [ebx]
mov dword [esp + 4], ecx
jmp 0x10012480
mov dword [esp + 4], 0
jmp 0x10012497
mov dword [edi + 0x28], 0
lea eax, [edi + 0x2d]
mov byte [edi + 0x2c], 0
mov dword [esp + 4], 0
mov edx, dword [esp + 8]
mov dword [edi + 0xb0], eax
lea ecx, [edi + 0x2d]
mov dword [edi + 0xac], ecx
mov ebx, dword [esp + 0xc]
movzx edx, dl
or esi, edx
cmp ecx, eax
jae 0x100124ae
lea eax, [ecx + 1]
mov dword [edi + 0xac], eax
movzx ecx, byte [ecx]
jmp 0x100124f6
cmp dword [edi + 0x28], 0
je 0x100124cf
lea ebx, [edi + 0x2c]
push dword [edi + 0x20]
push ebx
push dword [edi + 0x24]
call dword [edi + 0x10]
add esp, 0xc
test eax, eax
je 0x100124d3
add eax, ebx
movzx ecx, byte [ebx]
jmp 0x100124e3
xor ecx, ecx
jmp 0x100124f6
mov dword [edi + 0x28], 0
lea eax, [edi + 0x2d]
mov byte [edi + 0x2c], 0
xor ecx, ecx
mov ebx, dword [esp + 0xc]
mov dword [edi + 0xb0], eax
lea eax, [edi + 0x2d]
mov dword [edi + 0xac], eax
cmp esi, 4
jne 0x1001430a
movzx eax, byte [esp + 4]
shl eax, 8
movzx ecx, cl
or ecx, eax
mov eax, dword [ebx]
cmp ecx, dword [eax + 4]
jne 0x100143a2
mov edi, dword [esp + 0xc]
mov ecx, edi
call fcn.1001b730
cmp al, 0xda
jne 0x1001230f
mov esi, dword [edi]
mov ecx, dword [esi + 0xac]
mov eax, dword [esi + 0xb0]
cmp ecx, eax
jae 0x10012563
lea edx, [ecx + 1]
mov dword [esi + 0xac], edx
movzx ecx, byte [ecx]
mov dword [esp + 4], ecx
mov ecx, edx
cmp ecx, eax
jae 0x100125bf
lea eax, [ecx + 1]
mov dword [esi + 0xac], eax
movzx ebx, byte [ecx]
jmp 0x10012603
cmp dword [esi + 0x28], 0
je 0x10012588
lea edi, [esi + 0x2c]
push dword [esi + 0x20]
push edi
push dword [esi + 0x24]
call dword [esi + 0x10]
add esp, 0xc
test eax, eax
je 0x10012596
add eax, edi
movzx ecx, byte [edi]
mov dword [esp + 4], ecx
jmp 0x100125ac
mov dword [esp + 4], 0
cmp ecx, eax
jb 0x10012552
jmp 0x100125bf
mov dword [esi + 0x28], 0
lea eax, [esi + 0x2d]
mov byte [esi + 0x2c], 0
mov dword [esp + 4], 0
mov dword [esi + 0xb0], eax
lea ecx, [esi + 0x2d]
mov dword [esi + 0xac], ecx
cmp ecx, eax
jb 0x10012552
cmp dword [esi + 0x28], 0
je 0x100125e0
lea edi, [esi + 0x2c]
push dword [esi + 0x20]
push edi
push dword [esi + 0x24]
call dword [esi + 0x10]
add esp, 0xc
test eax, eax
je 0x100125e4
add eax, edi
movzx ebx, byte [edi]
jmp 0x100125f4
xor ebx, ebx
jmp 0x10012603
mov dword [esi + 0x28], 0
lea eax, [esi + 0x2d]
mov byte [esi + 0x2c], 0
xor ebx, ebx
mov dword [esi + 0xb0], eax
lea eax, [esi + 0x2d]
mov dword [esi + 0xac], eax
mov eax, dword [esp + 0xc]
mov esi, dword [eax]
mov eax, dword [esi + 0xac]
cmp eax, dword [esi + 0xb0]
jae 0x10012625
lea ecx, [eax + 1]
mov dword [esi + 0xac], ecx
movzx ecx, byte [eax]
jmp 0x10012669
cmp dword [esi + 0x28], 0
je 0x10014612
lea edi, [esi + 0x2c]
push dword [esi + 0x20]
push edi
push dword [esi + 0x24]
call dword [esi + 0x10]
add esp, 0xc
test eax, eax
je 0x1001264a
add eax, edi
movzx ecx, byte [edi]
jmp 0x1001265a
mov dword [esi + 0x28], 0
lea eax, [esi + 0x2d]
mov byte [esi + 0x2c], 0
xor ecx, ecx
mov dword [esi + 0xb0], eax
lea eax, [esi + 0x2d]
mov dword [esi + 0xac], eax
movzx edx, cl
mov esi, dword [esp + 0xc]
mov dword [esi + 0x47f0], edx
add cl, 0xfb
mov eax, 0x10532d84
cmp cl, 0xfc
jb 0x10016041
mov edi, dword [esi]
cmp dword [edi + 8], edx
jl 0x10016041
movzx eax, byte [esp + 4]
shl eax, 8
movzx ecx, bl
or ecx, eax
lea eax, [edx + edx]
add eax, 6
cmp ecx, eax
jne 0x100143ac
xor esi, esi
mov ebx, dword [esp + 0xc]
mov eax, dword [edi + 0xac]
cmp eax, dword [edi + 0xb0]
jae 0x100126d3
lea ecx, [eax + 1]
mov dword [edi + 0xac], ecx
movzx eax, byte [eax]
mov dword [esp + 8], eax
jmp 0x1001272b
cmp dword [edi + 0x28], 0
je 0x100126f8
lea ebx, [edi + 0x2c]
push dword [edi + 0x20]
push ebx
push dword [edi + 0x24]
call dword [edi + 0x10]
add esp, 0xc
test eax, eax
je 0x10012702
add eax, ebx
movzx ecx, byte [ebx]
mov dword [esp + 8], ecx
jmp 0x10012718
mov dword [esp + 8], 0
jmp 0x1001272b
mov dword [edi + 0x28], 0
lea eax, [edi + 0x2d]
mov byte [edi + 0x2c], 0
mov dword [esp + 8], 0
mov ebx, dword [esp + 0xc]
mov dword [edi + 0xb0], eax
lea eax, [edi + 0x2d]
mov dword [edi + 0xac], eax
mov edi, dword [ebx]
mov eax, dword [edi + 0xac]
cmp eax, dword [edi + 0xb0]
jae 0x1001274d
lea ecx, [eax + 1]
mov dword [edi + 0xac], ecx
movzx eax, byte [eax]
mov dword [esp + 4], eax
jmp 0x100127a5
cmp dword [edi + 0x28], 0
je 0x10012772
lea ebx, [edi + 0x2c]
push dword [edi + 0x20]
push ebx
push dword [edi + 0x24]
call dword [edi + 0x10]
add esp, 0xc
test eax, eax
je 0x1001277c
add eax, ebx
movzx ecx, byte [ebx]
mov dword [esp + 4], ecx
jmp 0x10012792
mov dword [esp + 4], 0
jmp 0x100127a5
mov dword [edi + 0x28], 0
lea eax, [edi + 0x2d]
mov byte [edi + 0x2c], 0
mov dword [esp + 4], 0
mov ebx, dword [esp + 0xc]
mov dword [edi + 0xb0], eax
lea eax, [edi + 0x2d]
mov dword [edi + 0xac], eax
mov edi, dword [ebx]
mov edx, dword [edi + 8]
test edx, edx
jle 0x100127d1
movzx ebx, byte [esp + 8]
xor eax, eax
mov ecx, dword [esp + 0x30]
nop dword [eax]
cmp dword [ecx], ebx
je 0x100127d3
inc eax
add ecx, 0x48
cmp edx, eax
jne 0x100127c0
jmp 0x10016046
xor eax, eax
cmp eax, edx
je 0x10016046
mov dword [esp + 8], edi
mov edi, esi
movzx ecx, byte [esp + 4]
mov ebx, ecx
shr ebx, 4
lea edx, [eax + eax*8]
mov esi, dword [esp + 0xc]
mov dword [esi + edx*8 + 0x46ac], ebx
cmp byte [esp + 4], 0x3f
ja 0x10013d1b
mov ebx, esi
and ecx, 0xf
mov dword [esi + edx*8 + 0x46b0], ecx
cmp ecx, 3
ja 0x10013d25
mov esi, edi
mov dword [ebx + edi*4 + 0x47f4], eax
inc esi
cmp esi, dword [ebx + 0x47f0]
mov edi, dword [esp + 8]
jl 0x100126b3
mov eax, dword [edi + 0xac]
cmp eax, dword [edi + 0xb0]
jae 0x1001284f
lea ecx, [eax + 1]
mov dword [edi + 0xac], ecx
movzx ecx, byte [eax]
jmp 0x10012893
cmp dword [edi + 0x28], 0
je 0x10012870
lea esi, [edi + 0x2c]
push dword [edi + 0x20]
push esi
push dword [edi + 0x24]
call dword [edi + 0x10]
add esp, 0xc
test eax, eax
je 0x10012874
add eax, esi
movzx ecx, byte [esi]
jmp 0x10012884
xor ecx, ecx
jmp 0x10012893
mov dword [edi + 0x28], 0
lea eax, [edi + 0x2d]
mov byte [edi + 0x2c], 0
xor ecx, ecx
mov dword [edi + 0xb0], eax
lea eax, [edi + 0x2d]
mov dword [edi + 0xac], eax
movzx eax, cl
mov dword [ebx + 0x47d0], eax
mov esi, dword [ebx]
mov eax, dword [esi + 0xac]
cmp eax, dword [esi + 0xb0]
jae 0x100128ba
lea ecx, [eax + 1]
mov dword [esi + 0xac], ecx
movzx ecx, byte [eax]
jmp 0x100128fe
cmp dword [esi + 0x28], 0
je 0x100128db
lea edi, [esi + 0x2c]
push dword [esi + 0x20]
push edi
push dword [esi + 0x24]
call dword [esi + 0x10]
add esp, 0xc
test eax, eax
je 0x100128df
add eax, edi
movzx ecx, byte [edi]
jmp 0x100128ef
xor ecx, ecx
jmp 0x100128fe
mov dword [esi + 0x28], 0
lea eax, [esi + 0x2d]
mov byte [esi + 0x2c], 0
xor ecx, ecx
mov dword [esi + 0xb0], eax
lea eax, [esi + 0x2d]
mov dword [esi + 0xac], eax
movzx eax, cl
mov dword [ebx + 0x47d4], eax
mov esi, dword [ebx]
mov eax, dword [esi + 0xac]
cmp eax, dword [esi + 0xb0]
jae 0x10012925
lea ecx, [eax + 1]
mov dword [esi + 0xac], ecx
movzx edx, byte [eax]
jmp 0x10012969
cmp dword [esi + 0x28], 0
je 0x10012946
lea edi, [esi + 0x2c]
push dword [esi + 0x20]
push edi
push dword [esi + 0x24]
call dword [esi + 0x10]
add esp, 0xc
test eax, eax
je 0x1001294a
add eax, edi
movzx edx, byte [edi]
jmp 0x1001295a
xor edx, edx
jmp 0x10012969
mov dword [esi + 0x28], 0
lea eax, [esi + 0x2d]
mov byte [esi + 0x2c], 0
xor edx, edx
mov dword [esi + 0xb0], eax
lea eax, [esi + 0x2d]
mov dword [esi + 0xac], eax
movzx esi, dl
mov eax, esi
shr eax, 4
mov dword [ebx + 0x47d8], eax
and esi, 0xf
mov dword [ebx + 0x47dc], esi
mov ecx, dword [ebx + 0x47cc]
mov edi, dword [ebx + 0x47d0]
mov eax, 0x105356a6
test ecx, ecx
je 0x100129c8
cmp edi, 0x3f
jg 0x10016041
mov ebx, dword [ebx + 0x47d4]
cmp ebx, 0x3f
jg 0x10016041
cmp edi, ebx
jg 0x10016041
cmp dl, 0xdf
ja 0x10016041
cmp esi, 0xd
jbe 0x100129ef
jmp 0x10016041
test edi, edi
jne 0x10016041
cmp dl, 0xf
ja 0x10016041
test esi, esi
jne 0x10016041
mov eax, dword [esp + 0xc]
mov dword [eax + 0x47d4], 0x3f
mov esi, dword [esp + 0xc]
mov eax, dword [esi + 0x4804]
test eax, eax
mov edx, 0x7fffffff
cmove eax, edx
mov edx, dword [esi + 0x47f0]
mov dword [esi + 0x47c0], 0
mov dword [esi + 0x47bc], 0
mov dword [esi + 0x47c8], 0
mov dword [esi + 0x478c], 0
mov dword [esi + 0x4744], 0
mov dword [esi + 0x46fc], 0
mov dword [esi + 0x46b4], 0
mov byte [esi + 0x47c4], 0xff
mov dword [esi + 0x4808], eax
mov dword [esi + 0x47e0], 0
test ecx, ecx
je 0x10013283
cmp edx, 1
jne 0x100132f3
mov eax, dword [esi + 0x47f4]
mov dword [esp + 0x60], eax
lea eax, [eax + eax*8]
mov edx, dword [esi + eax*8 + 0x46bc]
test edx, edx
jle 0x10013870
mov ecx, edx
add ecx, 7
shr ecx, 3
mov dword [esp + 0x58], ecx
mov ecx, dword [esp + 0xc]
mov edx, dword [ecx + eax*8 + 0x46b8]
mov dword [esp + 0x5c], edx
add edx, 7
sar edx, 3
lea eax, [ecx + eax*8]
add eax, 0x46d8
mov dword [esp + 0x38], eax
cmp edx, 2
mov eax, 1
cmovl edx, eax
mov dword [esp + 0x40], edx
mov dword [esp + 0x44], 0
cmp dword [esp + 0x5c], 0
mov ebx, dword [esp + 0xc]
mov eax, dword [esp + 0x38]
jle 0x1001326b
xor ecx, ecx
jmp 0x10012b01
mov ecx, dword [esp + 0x2c]
inc ecx
cmp ecx, dword [esp + 0x40]
mov eax, dword [esp + 0x38]
je 0x1001326b
mov edx, dword [eax + 4]
imul edx, dword [esp + 0x44]
add edx, ecx
shl edx, 7
add edx, dword [eax]
mov edi, dword [ebx + 0x47d0]
test edi, edi
mov dword [esp + 0x2c], ecx
je 0x10012c0c
mov dword [esp + 4], edx
mov eax, dword [eax - 0x28]
imul edx, eax, 0x690
mov dword [esp + 0x1c], edx
add edx, ebx
add edx, 0x1a44
mov dword [esp + 0x24], edx
cmp dword [ebx + 0x47d8], 0
mov edx, dword [ebx + 0x47dc]
mov dword [esp + 8], edx
mov edx, dword [ebx + 0x47e0]
je 0x10012c30
test edx, edx
je 0x10012cf2
dec edx
mov dword [ebx + 0x47e0], edx
cmp edi, dword [ebx + 0x47d4]
mov edx, dword [esp + 4]
jg 0x10012c3f
mov eax, 0x10000
mov ecx, dword [esp + 8]
shl eax, cl
sar eax, 0x10
mov dword [esp + 8], eax
neg eax
mov dword [esp + 0x20], eax
dec edi
jmp 0x10012ba7
inc edi
mov eax, dword [esp + 0xc]
cmp edi, dword [eax + 0x47d4]
jge 0x10012c3f
movzx ebx, byte [edi + 0x10397f89]
cmp word [edx + ebx*2], 0
je 0x10012b96
mov esi, dword [esp + 0xc]
mov eax, dword [esi + 0x47c0]
test eax, eax
jg 0x10012bd0
mov ecx, esi
call fcn.1001e080
mov eax, dword [esi + 0x47c0]
mov ecx, dword [esi + 0x47bc]
lea edx, [ecx + ecx]
mov dword [esi + 0x47bc], edx
dec eax
mov dword [esi + 0x47c0], eax
test ecx, ecx
mov edx, dword [esp + 4]
jns 0x10012b96
movsx eax, word [edx + ebx*2]
test dword [esp + 8], eax
jne 0x10012b96
test ax, ax
mov ecx, dword [esp + 0x20]
cmovg ecx, dword [esp + 8]
add ecx, eax
mov word [edx + ebx*2], cx
jmp 0x10012b96
imul eax, dword [eax - 0x2c], 0x690
add eax, ebx
add eax, 4
mov ecx, ebx
push dword [esp + 0x60]
push eax
call fcn.1001e1e0
add esp, 8
test eax, eax
jne 0x10012c3f
jmp 0x10016046
test edx, edx
je 0x10012fe2
dec edx
mov dword [ebx + 0x47e0], edx
mov ebx, dword [esp + 0xc]
mov eax, dword [ebx + 0x4808]
lea ecx, [eax - 1]
mov dword [ebx + 0x4808], ecx
cmp eax, 1
jg 0x10012aee
cmp dword [ebx + 0x47c0], 0x17
jg 0x10012c6b
mov ecx, ebx
call fcn.1001e080
movzx eax, byte [ebx + 0x47c4]
mov ecx, eax
and cl, 0xf8
cmp cl, 0xd0
jne 0x1001387b
mov dword [ebx + 0x47c0], 0
mov dword [ebx + 0x47bc], 0
mov dword [ebx + 0x47c8], 0
mov dword [ebx + 0x478c], 0
mov dword [ebx + 0x4744], 0
mov dword [ebx + 0x46fc], 0
mov dword [ebx + 0x46b4], 0
mov byte [ebx + 0x47c4], 0xff
mov eax, dword [ebx + 0x4804]
test eax, eax
mov ecx, 0x7fffffff
cmove eax, ecx
mov dword [ebx + 0x4808], eax
mov dword [ebx + 0x47e0], 0
jmp 0x10012aee
mov eax, 0x10000
mov ecx, dword [esp + 8]
shl eax, cl
sar eax, 0x10
mov dword [esp + 0x20], eax
neg eax
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x1c]
lea edx, [eax + ecx]
mov dword [esp + 0x50], edx
jmp 0x10012d3a
mov eax, dword [esp + 0x14]
mov word [ecx + edi*2], ax
mov eax, dword [esp + 0xc]
mov eax, dword [eax + 0x47d4]
add esi, 2
mov edi, esi
cmp edi, eax
jg 0x10012c3f
mov esi, dword [esp + 0xc]
cmp dword [esi + 0x47c0], 0xf
jg 0x10012d4e
mov ecx, esi
call fcn.1001e080
mov edx, dword [esi + 0x47bc]
mov eax, edx
shr eax, 0x17
mov ecx, dword [esp + 0x24]
movzx ebx, byte [ecx + eax]
cmp ebx, 0xff
mov dword [esp + 0x14], edx
je 0x10012da1
mov eax, dword [esp + 0x1c]
add eax, esi
movzx ecx, byte [ebx + eax + 0x1f44]
mov edx, dword [esi + 0x47c0]
sub edx, ecx
jl 0x1001603c
mov eax, dword [esp + 0x14]
shl eax, cl
mov dword [esp + 0x14], eax
mov dword [esi + 0x47bc], eax
mov dword [esi + 0x47c0], edx
jmp 0x10012e10
mov ecx, edx
shr ecx, 0x10
xor eax, eax
mov ebx, dword [esp + 0x50]
mov esi, eax
inc eax
cmp ecx, dword [ebx + esi*4 - 0x44]
jae 0x10012dac
mov ecx, dword [esp + 0xc]
mov edx, dword [ecx + 0x47c0]
cmp eax, 8
je 0x100153de
lea ecx, [eax + 9]
cmp edx, ecx
jl 0x1001603c
mov dword [esp + 8], ecx
mov cl, 0x17
sub cl, al
mov esi, ebx
mov ebx, dword [esp + 0x14]
shr ebx, cl
and ebx, dword [eax*4 + 0x1039800c]
add ebx, dword [esi + eax*4]
sub edx, eax
add edx, 0xfffffff7
mov esi, dword [esp + 0xc]
mov dword [esi + 0x47c0], edx
mov ecx, dword [esp + 8]
mov eax, dword [esp + 0x14]
shl eax, cl
mov dword [esp + 0x14], eax
mov dword [esi + 0x47bc], eax
mov eax, dword [esp + 0x1c]
add eax, esi
movzx eax, byte [ebx + eax + 0x1e44]
mov ecx, eax
and ecx, 0xf
mov ebx, eax
shr ebx, 4
cmp ecx, 1
je 0x10012e71
test ecx, ecx
jne 0x1001603c
xor esi, esi
mov dword [esp + 8], 0xf
cmp al, 0xef
ja 0x10012ebd
mov esi, 0xffffffff
mov ecx, ebx
shl esi, cl
not esi
mov ecx, dword [esp + 0xc]
mov dword [esp + 0x4c], esi
mov dword [ecx + 0x47e0], esi
mov dword [esp + 8], 0x40
cmp al, 0x10
jae 0x10012ec3
mov ebx, dword [esp + 0xc]
jmp 0x10012f29
mov dword [esp + 0x34], ebx
test edx, edx
mov ebx, dword [esp + 0xc]
jg 0x10012e94
mov ecx, ebx
call fcn.1001e080
mov eax, dword [ebx + 0x47bc]
mov dword [esp + 0x14], eax
mov edx, dword [ebx + 0x47c0]
mov ecx, dword [esp + 0x14]
lea eax, [ecx + ecx]
mov dword [ebx + 0x47bc], eax
dec edx
mov dword [ebx + 0x47c0], edx
test ecx, ecx
mov esi, dword [esp + 0x3c]
cmovs esi, dword [esp + 0x20]
mov eax, dword [esp + 0x34]
mov dword [esp + 8], eax
jmp 0x10012f2b
mov ebx, dword [esp + 0xc]
jmp 0x10012f2b
cmp edx, ebx
mov dword [esp + 0x34], ebx
jge 0x10012ef4
mov ebx, dword [esp + 0xc]
mov ecx, ebx
call fcn.1001e080
mov eax, dword [ebx + 0x47bc]
mov dword [esp + 0x14], eax
mov edx, dword [ebx + 0x47c0]
mov eax, dword [ebx + 0x47e0]
mov dword [esp + 0x4c], eax
mov ebx, dword [esp + 0x34]
mov ecx, ebx
mov eax, dword [esp + 0x14]
rol eax, cl
mov esi, dword [ebx*4 + 0x10397fe8]
mov ecx, esi
not ecx
and ecx, eax
mov ebx, dword [esp + 0xc]
mov dword [ebx + 0x47bc], ecx
and eax, esi
add eax, dword [esp + 0x4c]
sub edx, dword [esp + 0x34]
mov dword [ebx + 0x47c0], edx
mov dword [ebx + 0x47e0], eax
xor esi, esi
mov eax, dword [ebx + 0x47d4]
cmp edi, eax
mov ecx, dword [esp + 4]
jg 0x10012d32
mov dword [esp + 0x14], esi
dec edi
jmp 0x10012f5d
mov ecx, dword [esp + 4]
mov eax, dword [esp + 0xc]
mov eax, dword [eax + 0x47d4]
lea edi, [esi + 1]
cmp edi, eax
jge 0x10012d2d
mov esi, edi
movzx edi, byte [edi + 0x10397f89]
cmp word [ecx + edi*2], 0
je 0x10012fbf
mov ebx, dword [esp + 0xc]
mov eax, dword [ebx + 0x47c0]
test eax, eax
jg 0x10012f88
mov ecx, ebx
call fcn.1001e080
mov eax, dword [ebx + 0x47c0]
mov ecx, dword [ebx + 0x47bc]
lea edx, [ecx + ecx]
mov dword [ebx + 0x47bc], edx
dec eax
mov dword [ebx + 0x47c0], eax
test ecx, ecx
jns 0x10012f44
mov ecx, dword [esp + 4]
movsx eax, word [ecx + edi*2]
test dword [esp + 0x20], eax
jne 0x10012f48
test ax, ax
jle 0x10012fd5
add eax, dword [esp + 0x20]
mov word [ecx + edi*2], ax
jmp 0x10012f48
mov eax, dword [esp + 8]
test eax, eax
je 0x10012d1b
dec eax
mov dword [esp + 8], eax
jmp 0x10012f48
sub eax, dword [esp + 0x20]
mov word [ecx + edi*2], ax
jmp 0x10012f48
shl eax, 0xa
add eax, ebx
add eax, 0x3684
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x1c]
lea esi, [eax + ecx]
mov dword [esp + 0x20], esi
jmp 0x1001305f
mov eax, dword [ebx + 0x47bc]
mov ecx, eax
shr ecx, 0x17
mov edx, dword [esp + 0x14]
movsx edx, word [edx + ecx*2]
test edx, edx
je 0x10013075
mov ecx, edx
and ecx, 0xf
shl eax, cl
mov dword [ebx + 0x47bc], eax
mov eax, edx
shr eax, 4
and eax, 0xf
sub dword [ebx + 0x47c0], ecx
shr edx, 8
mov ecx, dword [esp + 8]
shl edx, cl
movzx ecx, byte [eax + edi + 0x10397f88]
mov esi, dword [esp + 4]
mov word [esi + ecx*2], dx
add edi, eax
inc edi
cmp edi, dword [ebx + 0x47d4]
mov esi, dword [esp + 0x20]
jg 0x10012c3f
mov ebx, dword [esp + 0xc]
cmp dword [ebx + 0x47c0], 0xf
jg 0x10013001
mov ecx, ebx
call fcn.1001e080
jmp 0x10013001
cmp dword [ebx + 0x47c0], 0xf
jg 0x10013090
mov ecx, ebx
call fcn.1001e080
mov eax, dword [ebx + 0x47bc]
mov ecx, eax
shr ecx, 0x17
mov edx, dword [esp + 0x24]
movzx edx, byte [edx + ecx]
cmp edx, 0xff
je 0x100130cc
mov ecx, dword [esp + 0x1c]
add ecx, ebx
movzx ecx, byte [edx + ecx + 0x1f44]
mov esi, dword [ebx + 0x47c0]
sub esi, ecx
jl 0x1001603c
shl eax, cl
mov dword [ebx + 0x47bc], eax
mov dword [ebx + 0x47c0], esi
jmp 0x10013131
mov ecx, eax
shr ecx, 0x10
xor ebx, ebx
mov edx, ebx
inc ebx
cmp ecx, dword [esi + edx*4 - 0x44]
jae 0x100130d3
mov ecx, dword [esp + 0xc]
mov esi, dword [ecx + 0x47c0]
cmp ebx, 8
je 0x1001602f
lea edx, [ebx + 9]
mov ecx, edx
mov dword [esp + 0x34], edx
cmp esi, edx
jl 0x1001603c
mov cl, 0x17
sub cl, bl
mov edx, eax
shr edx, cl
and edx, dword [ebx*4 + 0x1039800c]
mov ecx, dword [esp + 0x20]
add edx, dword [ecx + ebx*4]
sub esi, ebx
add esi, 0xfffffff7
mov ebx, dword [esp + 0xc]
mov dword [ebx + 0x47c0], esi
mov ecx, dword [esp + 0x34]
shl eax, cl
mov dword [ebx + 0x47bc], eax
mov ecx, dword [esp + 0x1c]
add ecx, ebx
movzx ebx, byte [edx + ecx + 0x1e44]
mov ecx, ebx
shr ecx, 4
mov edx, ebx
and edx, 0xf
je 0x100131e2
mov dword [esp + 0x3c], ecx
movzx ecx, byte [ecx + edi + 0x10397f88]
mov dword [esp + 0x50], ecx
mov ebx, edx
cmp esi, edx
jge 0x1001317c
mov esi, dword [esp + 0xc]
mov ecx, esi
call fcn.1001e080
mov eax, dword [esi + 0x47bc]
mov esi, dword [esi + 0x47c0]
mov dword [esp + 0x4c], eax
mov edx, eax
mov ecx, ebx
rol edx, cl
mov ebx, dword [ebx*4 + 0x10397fe8]
mov dword [esp + 0x34], ebx
mov ebx, dword [esp + 0x34]
not ebx
and ebx, edx
mov eax, esi
mov esi, dword [esp + 0xc]
mov dword [esi + 0x47bc], ebx
mov ebx, dword [esp + 0xc]
and edx, dword [esp + 0x34]
sub eax, ecx
mov dword [ebx + 0x47c0], eax
xor esi, esi
cmp dword [esp + 0x4c], 0
js 0x100131c5
mov esi, dword [ecx*4 + 0x1039802c]
add esi, edx
mov ecx, dword [esp + 8]
shl esi, cl
mov eax, dword [esp + 4]
mov ecx, dword [esp + 0x50]
mov word [eax + ecx*2], si
mov eax, dword [esp + 0x3c]
jmp 0x1001304c
cmp bl, 0xef
jbe 0x100131f3
add edi, 0x10
mov ebx, dword [esp + 0xc]
jmp 0x1001304f
mov edx, 1
mov dword [esp + 0x3c], ecx
shl edx, cl
mov ecx, dword [esp + 0xc]
mov dword [ecx + 0x47e0], edx
cmp bl, 0x10
jae 0x10013216
mov ebx, dword [esp + 0xc]
jmp 0x10012c38
cmp esi, dword [esp + 0x3c]
jge 0x10013239
mov edi, dword [esp + 0xc]
mov ecx, edi
call fcn.1001e080
mov eax, dword [edi + 0x47bc]
mov esi, dword [edi + 0x47c0]
mov edx, dword [edi + 0x47e0]
mov ecx, dword [esp + 0x3c]
rol eax, cl
mov edi, dword [ecx*4 + 0x10397fe8]
mov dword [esp + 4], edi
not edi
and edi, eax
mov ebx, dword [esp + 0xc]
mov dword [ebx + 0x47bc], edi
and eax, dword [esp + 4]
add edx, eax
sub esi, ecx
mov dword [ebx + 0x47c0], esi
jmp 0x10012c38
mov eax, dword [esp + 0x44]
inc eax
mov dword [esp + 0x44], eax
cmp eax, dword [esp + 0x58]
jne 0x10012ad7
jmp 0x10013870
cmp edx, 1
jne 0x100134b6
mov eax, dword [esi + 0x47f4]
mov dword [esp + 0x1c], eax
lea eax, [eax + eax*8]
mov edx, dword [esi + eax*8 + 0x46bc]
mov ecx, 1
test edx, edx
jle 0x10013868
add edx, 7
shr edx, 3
mov dword [esp + 0x2c], edx
mov edx, dword [esi + eax*8 + 0x46b8]
lea edi, [edx + 7]
sar edi, 3
cmp edi, 2
cmovl edi, ecx
lea esi, [esi + eax*8]
add esi, 0x46b0
shl edi, 3
mov dword [esp + 0x24], edi
mov dword [esp + 0x14], 0
mov dword [esp + 0x34], 0
mov dword [esp + 0x44], edx
jmp 0x1001371e
mov edx, dword [esi + 0x4690]
test edx, edx
jle 0x10013870
mov ecx, dword [esp + 0xc]
mov ecx, dword [ecx + 0x468c]
mov dword [esp + 4], 0
test ecx, ecx
jle 0x100134a0
mov dword [esp + 8], 0
mov ebx, dword [esp + 0xc]
mov ecx, dword [ebx + 0x47f0]
test ecx, ecx
jle 0x100133dd
xor esi, esi
mov eax, dword [ebx + esi*4 + 0x47f4]
mov dword [esp + 0x20], eax
lea edx, [eax + eax*8]
mov eax, dword [ebx + edx*8 + 0x46a4]
test eax, eax
jle 0x100133ce
mov dword [esp + 0x14], esi
lea esi, [ebx + edx*8]
add esi, 0x46a4
mov edx, dword [ebx + edx*8 + 0x46a0]
xor edi, edi
jmp 0x1001336d
inc edi
cmp edi, eax
jge 0x100133c4
test edx, edx
jle 0x10013368
xor ebx, ebx
imul edx, dword [esp + 8]
mov eax, dword [esi]
imul eax, dword [esp + 4]
add eax, edi
imul eax, dword [esi + 0x38]
add edx, ebx
add edx, eax
shl edx, 7
add edx, dword [esi + 0x34]
imul eax, dword [esi + 8], 0x690
mov ecx, dword [esp + 0xc]
add eax, ecx
add eax, 4
push dword [esp + 0x20]
push eax
call fcn.1001e1e0
add esp, 8
test eax, eax
je 0x10016046
inc ebx
mov edx, dword [esi - 4]
cmp ebx, edx
jl 0x10013373
mov eax, dword [esi]
mov ebx, dword [esp + 0xc]
jmp 0x10013368
mov ecx, dword [ebx + 0x47f0]
mov esi, dword [esp + 0x14]
inc esi
cmp esi, ecx
jl 0x10013337
mov eax, dword [ebx + 0x4808]
lea ecx, [eax - 1]
mov dword [ebx + 0x4808], ecx
cmp eax, 1
mov eax, ecx
jg 0x10013483
cmp dword [ebx + 0x47c0], 0x17
jg 0x10013401
mov ecx, ebx
call fcn.1001e080
movzx eax, byte [ebx + 0x47c4]
mov ecx, eax
and cl, 0xf8
cmp cl, 0xd0
jne 0x1001387b
mov dword [ebx + 0x47c0], 0
mov dword [ebx + 0x47bc], 0
mov dword [ebx + 0x47c8], 0
mov dword [ebx + 0x478c], 0
mov dword [ebx + 0x4744], 0
mov dword [ebx + 0x46fc], 0
mov dword [ebx + 0x46b4], 0
mov byte [ebx + 0x47c4], 0xff
mov eax, dword [ebx + 0x4804]
test eax, eax
mov ecx, 0x7fffffff
cmove eax, ecx
mov dword [ebx + 0x4808], eax
mov dword [ebx + 0x47e0], 0
mov edx, dword [esp + 8]
inc edx
mov ecx, dword [ebx + 0x468c]
mov dword [esp + 8], edx
cmp edx, ecx
jl 0x10013327
mov edx, dword [ebx + 0x4690]
mov esi, dword [esp + 4]
inc esi
mov dword [esp + 4], esi
cmp esi, edx
jl 0x10013313
jmp 0x10013870
mov edx, dword [esi + 0x4690]
mov ecx, 1
test edx, edx
jle 0x10013868
mov ecx, dword [esi + 0x468c]
mov dword [esp + 0x34], 0
test ecx, ecx
jle 0x100136eb
mov dword [esp + 0x2c], 0
mov ecx, dword [esi + 0x47f0]
test ecx, ecx
jle 0x1001362c
xor edi, edi
mov eax, dword [esi + edi*4 + 0x47f4]
mov dword [esp + 0x24], eax
lea edx, [eax + eax*8]
mov eax, dword [esi + edx*8 + 0x46a4]
test eax, eax
jle 0x1001361d
mov dword [esp + 0x44], edi
lea ecx, [esi + edx*8]
add ecx, 0x46a4
mov dword [esp + 4], ecx
mov ebx, dword [esi + edx*8 + 0x46a0]
mov dword [esp + 0x1c], 0
jmp 0x10013547
mov ecx, dword [esp + 0x1c]
inc ecx
mov dword [esp + 0x1c], ecx
cmp ecx, eax
jge 0x1001360f
test ebx, ebx
jle 0x10013536
xor esi, esi
mov edx, dword [esp + 4]
mov dword [esp + 0x14], esi
mov edi, dword [edx]
mov ecx, dword [edx + 0xc]
mov eax, dword [edx + 4]
shl eax, 7
mov esi, dword [esp + 0xc]
add eax, esi
add eax, 0x3484
mov dword [esp + 8], eax
imul eax, ecx, 0x690
shl ecx, 0xa
add ecx, esi
add ecx, 0x3684
mov dword [esp + 0x20], ecx
mov ecx, esi
add eax, dword [esp + 0x18]
imul esi, dword [edx + 8], 0x690
add esi, dword [esp + 0x10]
lea edx, [esp + 0xe0]
push dword [esp + 8]
push dword [esp + 0x28]
push dword [esp + 0x28]
push eax
push esi
call fcn.1001dcd0
add esp, 0x14
test eax, eax
je 0x10013866
imul edi, dword [esp + 0x34]
add edi, dword [esp + 0x1c]
imul ebx, dword [esp + 0x2c]
mov esi, dword [esp + 0x14]
add ebx, esi
mov ecx, dword [esp + 4]
mov eax, dword [ecx + 0x1c]
imul edi, eax
shl edi, 3
add edi, dword [ecx + 0x24]
lea ecx, [edi + ebx*8]
lea edx, [esp + 0xe0]
push edx
push eax
push ecx
mov eax, dword [esp + 0x18]
call dword [eax + 0x480c]
add esp, 0xc
inc esi
mov edx, dword [esp + 4]
mov ebx, dword [edx - 4]
cmp esi, ebx
jl 0x10013551
mov eax, dword [edx]
jmp 0x10013536
mov esi, dword [esp + 0xc]
mov ecx, dword [esi + 0x47f0]
mov edi, dword [esp + 0x44]
inc edi
cmp edi, ecx
jl 0x100134f7
mov eax, dword [esi + 0x4808]
lea ecx, [eax - 1]
mov dword [esi + 0x4808], ecx
cmp eax, 1
mov eax, ecx
jg 0x100136ce
cmp dword [esi + 0x47c0], 0x17
jg 0x10013650
mov ecx, esi
call fcn.1001e080
movzx eax, byte [esi + 0x47c4]
and al, 0xf8
cmp al, 0xd0
jne 0x100136fc
mov dword [esi + 0x47c0], 0
mov dword [esi + 0x47bc], 0
mov dword [esi + 0x47c8], 0
mov dword [esi + 0x478c], 0
mov dword [esi + 0x4744], 0
mov dword [esi + 0x46fc], 0
mov dword [esi + 0x46b4], 0
mov byte [esi + 0x47c4], 0xff
mov eax, dword [esi + 0x4804]
test eax, eax
mov ecx, 0x7fffffff
cmove eax, ecx
mov dword [esi + 0x4808], eax
mov dword [esi + 0x47e0], 0
mov edx, dword [esp + 0x2c]
inc edx
mov ecx, dword [esi + 0x468c]
mov dword [esp + 0x2c], edx
cmp edx, ecx
jl 0x100134e7
mov edx, dword [esi + 0x4690]
mov edi, dword [esp + 0x34]
inc edi
mov dword [esp + 0x34], edi
cmp edi, edx
jl 0x100134d7
mov ecx, 1
jmp 0x10013868
mov eax, dword [esp + 0x34]
inc eax
add dword [esp + 0x14], 8
mov dword [esp + 0x34], eax
cmp eax, dword [esp + 0x2c]
mov edx, dword [esp + 0x44]
je 0x100136fc
test edx, edx
jle 0x10013706
xor ebx, ebx
jmp 0x1001372f
add ebx, 8
cmp dword [esp + 0x24], ebx
je 0x10013706
mov dword [esp + 0x20], ebx
mov ecx, dword [esi]
mov eax, dword [esi - 8]
shl eax, 7
mov edi, dword [esp + 0xc]
add eax, edi
add eax, 0x3484
mov dword [esp + 4], eax
imul eax, ecx, 0x690
shl ecx, 0xa
add ecx, edi
add ecx, 0x3684
mov dword [esp + 8], ecx
add eax, dword [esp + 0x18]
imul ebx, dword [esi - 4], 0x690
add ebx, dword [esp + 0x10]
mov ecx, edi
lea edx, [esp + 0xe0]
push dword [esp + 4]
push dword [esp + 0x20]
push dword [esp + 0x10]
push eax
push ebx
call fcn.1001dcd0
add esp, 0x14
test eax, eax
je 0x10013866
mov eax, dword [esi + 0x10]
mov ecx, dword [esp + 0x14]
imul ecx, eax
add ecx, dword [esi + 0x18]
mov ebx, dword [esp + 0x20]
add ecx, ebx
lea edx, [esp + 0xe0]
push edx
push eax
push ecx
call dword [edi + 0x480c]
add esp, 0xc
mov eax, dword [edi + 0x4808]
lea ecx, [eax - 1]
mov dword [edi + 0x4808], ecx
cmp eax, 1
jg 0x10013726
cmp dword [edi + 0x47c0], 0x17
jg 0x100137e3
mov ecx, edi
call fcn.1001e080
movzx eax, byte [edi + 0x47c4]
and al, 0xf8
cmp al, 0xd0
jne 0x100136fc
mov dword [edi + 0x47c0], 0
mov dword [edi + 0x47bc], 0
mov dword [edi + 0x47c8], 0
mov dword [edi + 0x478c], 0
mov dword [edi + 0x4744], 0
mov dword [edi + 0x46fc], 0
mov dword [edi + 0x46b4], 0
mov byte [edi + 0x47c4], 0xff
mov eax, dword [edi + 0x4804]
test eax, eax
mov ecx, 0x7fffffff
cmove eax, ecx
mov dword [edi + 0x4808], eax
mov dword [edi + 0x47e0], 0
jmp 0x10013726
xor ecx, ecx
test ecx, ecx
je 0x10016046
mov eax, dword [esp + 0xc]
movzx eax, byte [eax + 0x47c4]
cmp al, 0xff
jne 0x10012517
mov ebx, dword [esp + 0xc]
jmp 0x1001389e
lea ecx, [eax + 1]
mov dword [esi + 0xac], ecx
movzx ecx, byte [eax]
cmp cl, 0xff
je 0x1001392c
mov esi, dword [ebx]
cmp dword [esi + 0x10], 0
je 0x100138bd
push dword [esi + 0x24]
call dword [esi + 0x18]
add esp, 4
test eax, eax
je 0x100138cf
cmp dword [esi + 0x28], 0
je 0x10012517
mov eax, dword [esi + 0xac]
cmp eax, dword [esi + 0xb0]
jae 0x10012517
mov ebx, dword [esp + 0xc]
mov esi, dword [ebx]
mov eax, dword [esi + 0xac]
cmp eax, dword [esi + 0xb0]
jb 0x10013889
cmp dword [esi + 0x28], 0
je 0x1001389e
lea edi, [esi + 0x2c]
push dword [esi + 0x20]
push edi
push dword [esi + 0x24]
call dword [esi + 0x10]
add esp, 0xc
test eax, eax
je 0x10013904
add eax, edi
movzx ecx, byte [edi]
jmp 0x10013914
mov dword [esi + 0x28], 0
lea eax, [esi + 0x2d]
mov byte [esi + 0x2c], 0
xor ecx, ecx
mov dword [esi + 0xb0], eax
lea eax, [esi + 0x2d]
mov dword [esi + 0xac], eax
cmp cl, 0xff
jne 0x1001389e
mov esi, dword [ebx]
mov eax, dword [esi + 0xac]
cmp eax, dword [esi + 0xb0]
jae 0x1001394a
lea ecx, [eax + 1]
mov dword [esi + 0xac], ecx
movzx ecx, byte [eax]
jmp 0x1001398e
cmp dword [esi + 0x28], 0
je 0x1001396b
lea edi, [esi + 0x2c]
push dword [esi + 0x20]
push edi
push dword [esi + 0x24]
call dword [esi + 0x10]
add esp, 0xc
test eax, eax
je 0x1001396f
add eax, edi
movzx ecx, byte [edi]
jmp 0x1001397f
xor ecx, ecx
jmp 0x1001398e
mov dword [esi + 0x28], 0
lea eax, [esi + 0x2d]
mov byte [esi + 0x2c], 0
xor ecx, ecx
mov dword [esi + 0xb0], eax
lea eax, [esi + 0x2d]
mov dword [esi + 0xac], eax
mov byte [ebx + 0x47c4], cl
jmp 0x10012517
mov eax, dword [esp + 4]
cmp dword [eax], 0
je 0x10013b32
mov eax, dword [esp + 0x28]
push dword [eax]
mov edi, dword [esp + 0x34]
push edi
mov eax, dword [esp + 0x28]
push dword [eax]
mov eax, dword [esp + 0x18]
call dword [eax]
add esp, 0xc
test eax, eax
je 0x10013a40
add eax, edi
movzx ecx, byte [edi]
mov edx, dword [esp + 8]
mov ebx, dword [esp + 0x10]
jmp 0x10013a59
lea ecx, [esp + 0xe0]
xor edi, edi
xor edx, edx
push eax
call fcn.1001e440
add esp, 4
test eax, eax
je 0x10013a34
mov eax, dword [esp + 0xf0]
cmp eax, 9
mov ecx, 8
cmovge ecx, eax
mov edx, dword [ebp + 0x14]
mov dword [edx], ecx
mov esi, dword [esp + 0xe0]
mov ebx, dword [esp + 0xec]
mov ecx, dword [ebp + 0x10]
test ecx, ecx
je 0x10013a25
mov edx, dword [esi + 0xc]
cmp edx, ecx
jne 0x10013ac4
mov ecx, dword [esp + 0x54]
mov edx, dword [ebp + 8]
mov edi, dword [ebp + 0xc]
jmp 0x10013ce1
mov eax, dword [esp + 0xec]
jmp 0x10013cf7
mov eax, dword [esp + 4]
mov dword [eax], 0
mov byte [edi], 0
xor ecx, ecx
mov ebx, dword [esp + 0x10]
mov eax, ebx
mov edx, dword [esp + 8]
mov edi, dword [esp + 0x18]
mov dword [edi], eax
mov dword [edx], ebx
mov edx, ebx
cmp cl, 0x42
jne 0x10013b32
cmp edx, eax
jae 0x10013a8a
lea eax, [edx + 1]
mov ecx, dword [esp + 8]
mov dword [ecx], eax
movzx ecx, byte [edx]
cmp cl, 0x4d
jne 0x10013b32
jmp 0x10013b11
mov eax, dword [esp + 4]
cmp dword [eax], 0
je 0x10013b32
mov eax, dword [esp + 0x28]
push dword [eax]
mov edi, dword [esp + 0x34]
push edi
mov eax, dword [esp + 0x28]
push dword [eax]
mov eax, dword [esp + 0x18]
call dword [eax]
add esp, 0xc
test eax, eax
je 0x10013aeb
add eax, edi
movzx ecx, byte [edi]
mov edx, dword [esp + 8]
mov ebx, dword [esp + 0x10]
jmp 0x10013b04
mov ecx, dword [esi]
mov dword [esp + 4], ecx
mov edi, dword [esi + 4]
mov ecx, ebx
cmp eax, 8
jg 0x10013cb9
push edi
push dword [esp + 8]
mov edi, dword [ebp + 0x10]
push edi
call fcn.1001f950
jmp 0x10013cc7
mov eax, dword [esp + 4]
mov dword [eax], 0
mov byte [edi], 0
xor ecx, ecx
mov ebx, dword [esp + 0x10]
mov eax, ebx
mov edx, dword [esp + 8]
mov edi, dword [esp + 0x18]
mov dword [edi], eax
mov dword [edx], ebx
cmp cl, 0x4d
jne 0x10013b32
mov ecx, esi
call fcn.100246e0
mov ecx, dword [esi + 0xac]
mov eax, dword [esi + 0xb0]
cmp ecx, eax
jae 0x10013c54
inc ecx
jmp 0x10013d90
movq xmm0, qword [esi + 0xb4]
movq qword [esi + 0xac], xmm0
mov ecx, esi
call fcn.10016380
test eax, eax
je 0x10013bbd
lea edi, [esp + 0xe0]
push 0x8858
push 0
push edi
call fcn.10368a10
add esp, 0xc
mov ecx, esi
mov edx, edi
push 0
push dword [ebp + 0xc]
call fcn.10025060
add esp, 8
cmp eax, esi
je 0x10013bfd
mov edi, eax
test eax, eax
je 0x10013bfd
mov eax, dword [esp + 0xe0]
mov ecx, dword [esp + 0x54]
mov dword [ecx], eax
mov esi, dword [esp + 0xe4]
mov ecx, dword [ebp + 8]
mov dword [ecx], esi
mov ebx, dword [ebp + 0x10]
test ebx, 0xfffffffb
je 0x10013c13
mov ecx, edi
mov edx, 4
push esi
push eax
push ebx
call fcn.1001f950
add esp, 0xc
mov edi, eax
jmp 0x10013c13
mov ecx, esi
call fcn.10021080
movsd xmm0, qword [esi + 0xb4]
movsd qword [esi + 0xac], xmm0
cmp eax, 0x38425053
jne 0x10013c2e
mov ecx, esi
mov edx, dword [esp + 0x54]
push dword [ebp + 0x18]
push dword [ebp + 0x14]
push dword [ebp + 0x10]
push dword [ebp + 0xc]
push dword [ebp + 8]
call fcn.10016600
add esp, 0x14
jmp 0x100160c7
mov eax, dword [esp + 0xe8]
xor edi, edi
test eax, eax
je 0x10013c13
push eax
call fcn.1037ddf5
add esp, 4
push dword [esp + 0xf0]
call fcn.1037ddf5
add esp, 4
push dword [esp + 0xec]
jmp 0x100160bd
mov ecx, esi
call fcn.100175c0
test eax, eax
mov ebx, esi
mov esi, dword [esp + 0x54]
mov edi, dword [ebp + 8]
je 0x10013c92
mov ecx, ebx
mov edx, esi
push dword [ebp + 0x10]
push dword [ebp + 0xc]
push edi
call fcn.10017660
jmp 0x10013cb1
mov edx, dword [esp + 4]
cmp dword [edx], 0
mov edx, dword [esp + 8]
je 0x10013d96
mov eax, dword [esp + 0x28]
push dword [eax]
mov edi, dword [esp + 0x34]
push edi
mov eax, dword [esp + 0x28]
push dword [eax]
mov eax, dword [esp + 0x18]
call dword [eax]
add esp, 0xc
test eax, eax
je 0x10013d75
add eax, edi
mov edx, dword [esp + 0x10]
jmp 0x10013d88
mov ecx, ebx
call fcn.10018750
test eax, eax
je 0x10013d2f
mov ecx, ebx
mov edx, esi
push dword [ebp + 0x10]
push dword [ebp + 0xc]
push edi
call fcn.10018850
add esp, 0xc
jmp 0x100160c7
push edi
push dword [esp + 8]
mov edi, dword [ebp + 0x10]
push edi
call fcn.10020540
add esp, 0xc
mov dword [esi + 0xc], edi
mov ebx, eax
test eax, eax
mov ecx, dword [esp + 0x54]
mov edx, dword [ebp + 8]
mov edi, dword [ebp + 0xc]
je 0x10012219
mov eax, dword [esi]
mov dword [ecx], eax
mov eax, dword [esi + 4]
mov dword [edx], eax
xor eax, eax
test edi, edi
je 0x10013cf5
mov ecx, dword [esi + 8]
mov dword [edi], ecx
mov edi, ebx
push eax
call fcn.1037ddf5
add esp, 4
push dword [esp + 0xe8]
call fcn.1037ddf5
add esp, 4
push dword [esp + 0xe4]
jmp 0x100160bd
mov eax, 0x10534399
jmp 0x10016041
mov eax, 0x105343a6
jmp 0x10016041
mov ecx, ebx
call fcn.1000cf50
test eax, eax
je 0x1001462a
mov ecx, ebx
mov edx, esi
mov eax, dword [ebp + 0x10]
push eax
mov ebx, dword [ebp + 0xc]
push ebx
push edi
call fcn.10018a10
add esp, 0xc
mov ecx, dword [ebp + 0x10]
mov ebx, ecx
test ecx, ecx
jne 0x10013d61
mov ecx, dword [ebp + 0xc]
mov ebx, dword [ecx]
mov edx, dword [esi]
mov ecx, eax
push ebx
push dword [edi]
call fcn.10019450
add esp, 8
jmp 0x100160c7
mov eax, dword [esp + 4]
mov dword [eax], 0
mov byte [edi], 0
mov edx, dword [esp + 0x10]
mov eax, edx
mov ecx, dword [esp + 0x18]
mov dword [ecx], eax
mov ecx, edx
mov edx, dword [esp + 8]
mov dword [edx], ecx
cmp ecx, eax
jae 0x10013d9d
inc ecx
jmp 0x10013deb
mov edi, dword [esp + 4]
cmp dword [edi], 0
je 0x10013ded
mov eax, dword [esp + 0x28]
push dword [eax]
mov edi, dword [esp + 0x34]
push edi
mov eax, dword [esp + 0x28]
push dword [eax]
mov eax, dword [esp + 0x18]
call dword [eax]
add esp, 0xc
test eax, eax
je 0x10013dcc
add eax, edi
mov edx, dword [esp + 0x10]
jmp 0x10013ddf
mov eax, dword [esp + 4]
mov dword [eax], 0
mov byte [edi], 0
mov edx, dword [esp + 0x10]
mov eax, edx
mov ecx, dword [esp + 0x18]
mov dword [ecx], eax
mov ecx, edx
mov edx, dword [esp + 8]
mov dword [edx], ecx
cmp ecx, eax
jae 0x10013df4
inc ecx
jmp 0x10013e42
mov edi, dword [esp + 4]
cmp dword [edi], 0
je 0x10013e44
mov eax, dword [esp + 0x28]
push dword [eax]
mov edi, dword [esp + 0x34]
push edi
mov eax, dword [esp + 0x28]
push dword [eax]
mov eax, dword [esp + 0x18]
call dword [eax]
add esp, 0xc
test eax, eax
je 0x10013e23
add eax, edi
mov edx, dword [esp + 0x10]
jmp 0x10013e36
mov eax, dword [esp + 4]
mov dword [eax], 0
mov byte [edi], 0
mov edx, dword [esp + 0x10]
mov eax, edx
mov ecx, dword [esp + 0x18]
mov dword [ecx], eax
mov ecx, edx
mov edx, dword [esp + 8]
mov dword [edx], ecx
cmp ecx, eax
jae 0x10013e4b
inc ecx
jmp 0x10013e99
mov eax, dword [esp + 4]
cmp dword [eax], 0
je 0x10013e9b
mov eax, dword [esp + 0x28]
push dword [eax]
mov edi, dword [esp + 0x34]
push edi
mov eax, dword [esp + 0x28]
push dword [eax]
mov eax, dword [esp + 0x18]
call dword [eax]
add esp, 0xc
test eax, eax
je 0x10013e7a
add eax, edi
mov edx, dword [esp + 0x10]
jmp 0x10013e8d
mov eax, dword [esp + 4]
mov dword [eax], 0
mov byte [edi], 0
mov edx, dword [esp + 0x10]
mov eax, edx
mov ecx, dword [esp + 0x18]
mov dword [ecx], eax
mov ecx, edx
mov edx, dword [esp + 8]
mov dword [edx], ecx
mov ecx, esi
call fcn.100246e0
mov ecx, esi
call fcn.100246e0
cmp eax, 0x37
jg 0x10013ebd
cmp eax, 0xc
je 0x10013ecb
cmp eax, 0x28
je 0x10013ecb
jmp 0x10014075
cmp eax, 0x38
je 0x10013ecb
cmp eax, 0x6c
jne 0x10014075
movq xmm0, qword [esi + 0xb4]
movq qword [esi + 0xac], xmm0
mov dword [esp + 0x9c], 0xff
lea edx, [esp + 0x80]
mov ecx, esi
call fcn.100248b0
test eax, eax
je 0x100153cd
mov ebx, dword [esi + 4]
mov ecx, ebx
neg ecx
cmovs ecx, ebx
mov dword [esi + 4], ecx
mov eax, dword [esp + 0x98]
mov dword [esp + 0x3c], eax
mov edx, dword [esp + 0x80]
mov eax, dword [esp + 0x88]
mov dword [esp + 0x1c], eax
cmp eax, 0xc
jne 0x10013f58
cmp edx, 0x17
mov eax, dword [ebp + 0x10]
jg 0x10013f9d
mov dword [esp + 0x38], edx
mov eax, dword [esp + 0x84]
add eax, 0xffffffda
mov edx, 0x55555556
imul edx
mov eax, dword [ebp + 0x10]
mov edi, edx
shr edi, 0x1f
add edi, edx
mov dword [esp + 0x24], edi
jmp 0x10013f79
cmp edx, 0xf
mov eax, dword [ebp + 0x10]
jg 0x10013f9d
mov dword [esp + 0x38], edx
mov edx, dword [esp + 0x84]
sub edx, dword [esp + 0x1c]
add edx, 0xfffffff2
sar edx, 2
mov dword [esp + 0x24], edx
mov edx, dword [esp + 0x3c]
cmp edx, 0xff000000
sete byte [esp + 0x40]
mov dword [esp + 0x48], 0
cmp edx, 1
mov edx, 4
sbb edx, 0
jmp 0x10013fe3
mov edi, dword [esp + 0x3c]
cmp edi, 0xff000000
sete byte [esp + 0x40]
mov dword [esp + 0x24], 0
cmp edx, 0x18
jne 0x100145fa
cmp edi, 0xff000000
jne 0x10014605
mov dword [esp + 0x48], 0
mov edx, 3
mov dword [esp + 0x38], 0x18
mov byte [esp + 0x40], 1
mov edi, dword [esp + 0x8c]
mov dword [esp + 0x50], edi
mov edi, dword [esp + 0x90]
mov dword [esp + 0x4c], edi
mov edi, dword [esp + 0x94]
mov dword [esp + 0x60], edi
mov edi, dword [esp + 0x9c]
mov dword [esp + 0x34], edi
mov dword [esi + 8], edx
cmp eax, 3
cmovge edx, eax
mov edi, dword [esi]
mov eax, edi
or eax, edx
js 0x10014062
test edi, edi
je 0x10014035
mov eax, 0x7fffffff
mov esi, edx
xor edx, edx
div edi
mov edx, esi
cmp eax, esi
jb 0x10014062
mov esi, edi
imul esi, edx
test esi, esi
js 0x10014062
test ebx, ebx
mov dword [esp + 0xa8], ebx
je 0x10014314
mov eax, 0x7fffffff
mov ebx, edx
xor edx, edx
div ecx
mov edx, ebx
cmp eax, esi
jae 0x10014314
mov dword [0x1058e718], 0x10534bff
mov eax, dword [esp + 0x48]
jmp 0x100160c7
movq xmm0, qword [esi + 0xb4]
movq qword [esi + 0xac], xmm0
cmp eax, 0x7c
jne 0x10013b42
jmp 0x10013edb
cmp dword [edi + 0x47cc], 0
mov ecx, dword [edi]
mov eax, dword [ecx + 8]
je 0x100143b6
test eax, eax
jle 0x1001464a
lea eax, [edi + 0x3504]
mov dword [esp + 0x14], eax
lea eax, [edi + 0x348a]
mov dword [esp + 0x24], eax
xor edx, edx
jmp 0x100140d7
mov ecx, dword [edi]
mov edx, dword [esp + 0x44]
inc edx
mov eax, dword [ecx + 8]
cmp edx, eax
jge 0x100143b6
lea eax, [edx + edx*8]
mov esi, dword [edi + eax*8 + 0x46bc]
test esi, esi
jle 0x100140cb
mov dword [esp + 0x44], edx
add esi, 7
shr esi, 3
mov ecx, dword [edi + eax*8 + 0x46b8]
mov dword [esp + 0x2c], ecx
add ecx, 7
sar ecx, 3
lea ebx, [edi + eax*8]
add ebx, 0x46d8
cmp ecx, 2
mov eax, 1
cmovl ecx, eax
mov dword [esp + 0x28], ecx
mov dword [esp + 0x1c], 0
mov dword [esp + 0x18], 0
mov dword [esp + 0x34], esi
mov dword [esp + 0x20], ebx
jmp 0x1001415c
mov ecx, dword [esp + 0x18]
inc ecx
sub dword [esp + 0x1c], 0xffffff80
mov esi, dword [esp + 0x34]
mov eax, ecx
mov dword [esp + 0x18], ecx
cmp ecx, esi
je 0x100140c5
cmp dword [esp + 0x2c], 0
jle 0x10014140
mov eax, dword [esp + 0x18]
lea eax, [eax*8]
mov dword [esp + 0x10], eax
xor eax, eax
mov dword [esp + 8], 6
jmp 0x1001425f
movdqu xmm0, xmmword [edi]
movdqu xmm1, xmmword [eax]
pmullw xmm1, xmm0
movdqu xmm0, xmmword [eax + 0x10]
movdqu xmmword [eax], xmm1
movdqu xmm1, xmmword [edi + 0x10]
pmullw xmm1, xmm0
movdqu xmmword [eax + 0x10], xmm1
movdqu xmm0, xmmword [edi + 0x20]
movdqu xmm1, xmmword [eax + 0x20]
pmullw xmm1, xmm0
movdqu xmmword [eax + 0x20], xmm1
movdqu xmm0, xmmword [edi + 0x30]
movdqu xmm1, xmmword [eax + 0x30]
pmullw xmm1, xmm0
movdqu xmmword [eax + 0x30], xmm1
movdqu xmm0, xmmword [edi + 0x40]
movdqu xmm1, xmmword [eax + 0x40]
pmullw xmm1, xmm0
movdqu xmmword [eax + 0x40], xmm1
movdqu xmm0, xmmword [edi + 0x50]
movdqu xmm1, xmmword [eax + 0x50]
pmullw xmm1, xmm0
movdqu xmmword [eax + 0x50], xmm1
movdqu xmm0, xmmword [edi + 0x60]
movdqu xmm1, xmmword [eax + 0x60]
pmullw xmm1, xmm0
movdqu xmmword [eax + 0x60], xmm1
movdqu xmm0, xmmword [edi + 0x70]
movdqu xmm1, xmmword [eax + 0x70]
pmullw xmm1, xmm0
movdqu xmmword [eax + 0x70], xmm1
mov ebx, dword [esp + 0x20]
mov ecx, dword [ebx - 0x18]
mov edx, dword [esp + 0x10]
imul edx, ecx
add edx, dword [ebx - 0x10]
mov esi, dword [esp + 4]
lea edx, [edx + esi*8]
push eax
push ecx
push edx
mov edi, dword [esp + 0x18]
call dword [edi + 0x480c]
mov eax, esi
add esp, 0xc
inc eax
sub dword [esp + 8], 0xffffff80
cmp eax, dword [esp + 0x28]
je 0x10014140
mov ecx, dword [ebx]
mov esi, dword [ebx + 4]
mov dword [esp + 0x30], esi
imul esi, dword [esp + 0x18]
mov dword [esp + 4], eax
add esi, eax
shl esi, 7
lea eax, [ecx + esi]
mov edx, dword [ebx - 0x30]
shl edx, 7
add edi, edx
add edi, 0x3484
mov ebx, dword [esp + 0x14]
add ebx, edx
cmp eax, ebx
jae 0x10014190
add esi, ecx
add esi, 0x80
cmp edi, esi
jae 0x10014190
add edx, dword [esp + 0x24]
mov esi, dword [esp + 0x30]
imul esi, dword [esp + 0x1c]
add ecx, dword [esp + 8]
add ecx, esi
xor esi, esi
nop word [eax + eax]
movzx edi, word [ecx + esi*2 - 6]
imul di, word [edx + esi*2 - 6]
movzx ebx, word [ecx + esi*2 - 4]
mov word [ecx + esi*2 - 6], di
imul bx, word [edx + esi*2 - 4]
mov word [ecx + esi*2 - 4], bx
movzx edi, word [ecx + esi*2 - 2]
imul di, word [edx + esi*2 - 2]
mov word [ecx + esi*2 - 2], di
movzx edi, word [ecx + esi*2]
imul di, word [edx + esi*2]
mov word [ecx + esi*2], di
add esi, 4
cmp esi, 0x40
jne 0x100142c0
jmp 0x10014225
mov eax, 0x10533da1
jmp 0x10016041
mov dword [esp + 0x44], edx
test edi, edi
je 0x1001432f
mov eax, 0x7fffffff
xor edx, edx
div edi
cmp eax, dword [esp + 0x44]
jb 0x100145e5
cmp dword [esp + 0xa8], 0
je 0x1001434a
mov eax, 0x7fffffff
xor edx, edx
div ecx
cmp eax, esi
jb 0x100145e5
imul esi, ecx
push esi
call fcn.1037f2d2
add esp, 4
test eax, eax
je 0x100145e5
mov ebx, eax
cmp dword [esp + 0x38], 0xf
mov dword [esp + 0x2c], eax
jg 0x10014670
mov eax, dword [esp + 0x24]
test eax, eax
mov edx, dword [esp + 8]
je 0x10014fe6
cmp eax, 0x100
jg 0x10014fe6
test eax, eax
mov esi, dword [esp + 0x30]
jle 0x10015002
mov ecx, dword [edx]
mov eax, dword [esp + 0x18]
mov eax, dword [eax]
xor edi, edi
jmp 0x10014412
mov eax, 0x10532f67
jmp 0x10016041
mov eax, 0x10533d63
jmp 0x10016041
mov dword [esp + 4], ecx
xor ecx, ecx
cmp eax, 3
setge cl
mov edx, dword [ebp + 0x10]
test edx, edx
lea esi, [ecx + ecx + 1]
cmovne esi, edx
cmp eax, 3
jne 0x100143f4
mov cl, 1
mov eax, 3
cmp dword [edi + 0x47ec], 3
je 0x100146d6
cmp dword [edi + 0x47e8], 0
je 0x100146cc
xor ecx, ecx
jmp 0x100146d6
mov edx, dword [esp + 8]
mov byte [esp + edi*4 + 0xe3], 0xff
inc edi
cmp dword [esp + 0x24], edi
je 0x10015002
cmp ecx, eax
jae 0x10014426
lea esi, [ecx + 1]
mov dword [edx], esi
movzx edx, byte [ecx]
mov ecx, esi
mov esi, dword [esp + 0x30]
jmp 0x1001447f
mov edx, dword [esp + 4]
cmp dword [edx], 0
je 0x10014454
mov eax, dword [esp + 0x28]
push dword [eax]
push esi
mov eax, dword [esp + 0x28]
push dword [eax]
mov eax, dword [esp + 0x18]
call dword [eax]
add esp, 0xc
test eax, eax
je 0x10014458
add eax, esi
movzx edx, byte [esi]
mov ebx, dword [esp + 0x10]
jmp 0x1001446d
xor edx, edx
jmp 0x1001447f
mov eax, dword [esp + 4]
mov dword [eax], 0
mov byte [esi], 0
xor edx, edx
mov ebx, dword [esp + 0x10]
mov eax, ebx
mov ecx, dword [esp + 0x18]
mov dword [ecx], eax
mov ecx, dword [esp + 8]
mov dword [ecx], ebx
mov ecx, ebx
mov ebx, dword [esp + 0x2c]
mov byte [esp + edi*4 + 0xe2], dl
cmp ecx, eax
jae 0x1001449e
lea esi, [ecx + 1]
mov edx, dword [esp + 8]
mov dword [edx], esi
movzx edx, byte [ecx]
mov ecx, esi
mov esi, dword [esp + 0x30]
jmp 0x100144f7
mov edx, dword [esp + 4]
cmp dword [edx], 0
je 0x100144cc
mov eax, dword [esp + 0x28]
push dword [eax]
push esi
mov eax, dword [esp + 0x28]
push dword [eax]
mov eax, dword [esp + 0x18]
call dword [eax]
add esp, 0xc
test eax, eax
je 0x100144d0
add eax, esi
movzx edx, byte [esi]
mov ebx, dword [esp + 0x10]
jmp 0x100144e5
xor edx, edx
jmp 0x100144f7
mov eax, dword [esp + 4]
mov dword [eax], 0
mov byte [esi], 0
xor edx, edx
mov ebx, dword [esp + 0x10]
mov eax, ebx
mov ecx, dword [esp + 0x18]
mov dword [ecx], eax
mov ecx, dword [esp + 8]
mov dword [ecx], ebx
mov ecx, ebx
mov ebx, dword [esp + 0x2c]
mov byte [esp + edi*4 + 0xe1], dl
cmp ecx, eax
jae 0x10014516
lea esi, [ecx + 1]
mov edx, dword [esp + 8]
mov dword [edx], esi
movzx edx, byte [ecx]
mov ecx, esi
mov esi, dword [esp + 0x30]
jmp 0x1001456f
mov edx, dword [esp + 4]
cmp dword [edx], 0
je 0x10014544
mov eax, dword [esp + 0x28]
push dword [eax]
push esi
mov eax, dword [esp + 0x28]
push dword [eax]
mov eax, dword [esp + 0x18]
call dword [eax]
add esp, 0xc
test eax, eax
je 0x10014548
add eax, esi
movzx edx, byte [esi]
mov ebx, dword [esp + 0x10]
jmp 0x1001455d
xor edx, edx
jmp 0x1001456f
mov eax, dword [esp + 4]
mov dword [eax], 0
mov byte [esi], 0
xor edx, edx
mov ebx, dword [esp + 0x10]
mov eax, ebx
mov ecx, dword [esp + 0x18]
mov dword [ecx], eax
mov ecx, dword [esp + 8]
mov dword [ecx], ebx
mov ecx, ebx
mov ebx, dword [esp + 0x2c]
mov byte [esp + edi*4 + 0xe0], dl
cmp dword [esp + 0x1c], 0xc
je 0x100143fb
cmp ecx, eax
mov edx, dword [esp + 8]
jae 0x1001458c
inc ecx
jmp 0x100145de
mov esi, dword [esp + 4]
cmp dword [esi], 0
mov esi, dword [esp + 0x30]
je 0x100143ff
mov eax, dword [esp + 0x28]
push dword [eax]
push esi
mov eax, dword [esp + 0x28]
push dword [eax]
mov eax, dword [esp + 0x18]
call dword [eax]
add esp, 0xc
test eax, eax
je 0x100145bf
add eax, esi
mov edx, dword [esp + 0x10]
jmp 0x100145d2
mov eax, dword [esp + 4]
mov dword [eax], 0
mov byte [esi], 0
mov edx, dword [esp + 0x10]
mov eax, edx
mov ecx, dword [esp + 0x18]
mov dword [ecx], eax
mov ecx, edx
mov edx, dword [esp + 8]
mov dword [edx], ecx
jmp 0x100143ff
lea eax, [esp + 0xe0]
mov dword [0x1058e718], eax
mov eax, dword [esp + 0x48]
jmp 0x100160c7
mov dword [esp + 0x38], edx
mov edx, edi
jmp 0x10013f88
mov dword [esp + 0x38], edx
mov edx, dword [esp + 0x3c]
jmp 0x10013f88
mov eax, dword [esp + 0xc]
mov dword [eax + 0x47f0], 0
mov eax, 0x10532d84
jmp 0x10016041
mov ecx, ebx
call fcn.10019650
test eax, eax
je 0x1001465f
mov ecx, ebx
mov edx, esi
push dword [ebp + 0x10]
push dword [ebp + 0xc]
push edi
call fcn.10019b10
jmp 0x10013cb1
mov dword [esp + 4], ecx
mov ecx, dword [ebp + 0x10]
test ecx, ecx
mov esi, 1
cmovne esi, ecx
xor ecx, ecx
jmp 0x100146d6
lea eax, [esp + 0xe0]
mov dword [0x1058e718], eax
jmp 0x10012219
mov eax, dword [esp + 0x84]
sub eax, dword [esp + 0x1c]
add eax, 0xfffffff2
mov esi, dword [esp + 0x14]
mov edx, dword [esp + 8]
js 0x1001506e
mov ecx, dword [esp + 0xc]
cmp dword [ecx], 0
je 0x10015078
mov ebx, edx
mov ecx, dword [esp + 0x18]
mov edx, dword [ecx]
mov ecx, dword [ebx]
mov edi, edx
sub edi, ecx
mov esi, eax
sub esi, edi
jle 0x1001507c
mov eax, dword [esp + 0x14]
mov dword [eax + 0xac], edx
push esi
mov esi, eax
push dword [eax + 0x24]
call dword [eax + 0x14]
add esp, 8
jmp 0x10015084
cmp dword [edi + 0x47e4], 0
sete cl
mov dword [esp + 0x1c], ecx
test cl, cl
mov ecx, 1
cmovne ecx, eax
mov dword [esp + 0x18], esi
cmp esi, 3
cmovge ecx, eax
cmp eax, 3
cmovne ecx, eax
pxor xmm0, xmm0
movdqa xmmword [esp + 0x80], xmm0
mov dword [esp + 0x30], ecx
test ecx, ecx
mov esi, dword [esp + 4]
jle 0x1001480e
lea edi, [esp + 0xfc]
mov eax, dword [esp + 0xc]
lea ebx, [eax + 0x46a0]
mov eax, dword [esp + 0x30]
mov dword [esp + 4], esi
jmp 0x10014745
mov eax, 0x1001db30
mov dword [edi - 0x1c], eax
add edi, 0x20
add ebx, 0x48
mov eax, dword [esp + 8]
dec eax
je 0x1001480e
mov dword [esp + 8], eax
mov eax, dword [esi]
add eax, 3
push eax
call fcn.1037f2d2
add esp, 4
mov dword [ebx + 0x34], eax
test eax, eax
je 0x1001492c
mov ecx, dword [esp + 0xc]
mov eax, dword [ecx + 0x4684]
cdq
idiv dword [ebx]
mov esi, eax
mov dword [edi - 0x10], eax
mov eax, dword [ecx + 0x4688]
cdq
idiv dword [ebx + 4]
mov ecx, eax
mov dword [edi - 0xc], eax
sar eax, 1
mov dword [edi - 4], eax
mov eax, dword [esp + 4]
mov eax, dword [eax]
add eax, esi
dec eax
xor edx, edx
div esi
mov dword [edi - 8], eax
mov dword [edi], 0
movd xmm0, dword [ebx + 0x28]
pshufd xmm0, xmm0, 0x50
movq qword [edi - 0x18], xmm0
cmp esi, 2
je 0x100147df
cmp esi, 1
mov esi, dword [esp + 4]
jne 0x1001472c
cmp ecx, 2
mov eax, 0x1001db30
mov edx, 0x1001d7b0
cmove eax, edx
cmp ecx, 1
mov ecx, 0x1001d7a0
cmove eax, ecx
jmp 0x10014731
cmp ecx, 1
je 0x10014800
cmp ecx, 2
mov esi, dword [esp + 4]
jne 0x1001472c
mov eax, dword [esp + 0xc]
mov eax, dword [eax + 0x4814]
jmp 0x10014731
mov eax, 0x1001d970
mov esi, dword [esp + 4]
jmp 0x10014731
mov ecx, dword [esi]
mov eax, ecx
mov edi, dword [esp + 0x18]
or eax, edi
js 0x100148b1
mov eax, dword [esp + 4]
mov esi, dword [eax + 4]
test ecx, ecx
je 0x10014836
mov eax, 0x7fffffff
xor edx, edx
div ecx
cmp eax, edi
jl 0x100148b1
imul ecx, edi
mov eax, ecx
or eax, esi
js 0x100148b1
test esi, esi
je 0x10014850
mov eax, 0x7fffffff
xor edx, edx
div esi
cmp eax, ecx
jl 0x100148b1
imul ecx, esi
cmp ecx, 0x7fffffff
je 0x100148b1
inc ecx
push ecx
call fcn.1037f2d2
add esp, 4
test eax, eax
je 0x100148b1
test esi, esi
mov dword [esp + 0x48], eax
mov ebx, dword [esp + 0xc]
je 0x10015f81
lea ecx, [ebx + 0x46bc]
mov dword [esp + 0x2c], ecx
lea ecx, [eax + 1]
mov dword [esp + 0x38], ecx
lea ecx, [eax + 2]
mov dword [esp + 0x40], ecx
add eax, 3
mov dword [esp + 0x44], eax
mov dword [esp + 0x28], 0
mov dword [esp + 0x20], 0
mov esi, dword [esp + 4]
jmp 0x100149eb
mov eax, dword [esp + 4]
mov esi, dword [eax + 8]
test esi, esi
mov ebx, dword [esp + 0xc]
jle 0x1001499b
mov edi, ebx
add edi, 0x46d8
jmp 0x100148d8
add edi, 0x48
dec esi
je 0x1001499b
mov eax, dword [edi - 0xc]
test eax, eax
je 0x100148f6
push eax
call fcn.1037ddf5
add esp, 4
mov dword [edi - 0xc], 0
mov dword [edi - 0x10], 0
mov eax, dword [edi - 8]
test eax, eax
je 0x10014913
push eax
call fcn.1037ddf5
add esp, 4
mov dword [edi - 8], 0
mov dword [edi], 0
mov eax, dword [edi - 4]
test eax, eax
je 0x100148ce
push eax
call fcn.1037ddf5
add esp, 4
mov dword [edi - 4], 0
jmp 0x100148ce
mov esi, dword [esi + 8]
test esi, esi
mov ebx, dword [esp + 0xc]
jle 0x1001499b
mov edi, ebx
add edi, 0x46d8
jmp 0x10014947
add edi, 0x48
dec esi
je 0x1001499b
mov eax, dword [edi - 0xc]
test eax, eax
je 0x10014965
push eax
call fcn.1037ddf5
add esp, 4
mov dword [edi - 0xc], 0
mov dword [edi - 0x10], 0
mov eax, dword [edi - 8]
test eax, eax
je 0x10014982
push eax
call fcn.1037ddf5
add esp, 4
mov dword [edi - 8], 0
mov dword [edi], 0
mov eax, dword [edi - 4]
test eax, eax
je 0x10014941
push eax
call fcn.1037ddf5
add esp, 4
mov dword [edi - 4], 0
jmp 0x10014941
lea eax, [esp + 0xd0]
mov dword [0x1058e718], eax
jmp 0x100160ba
push dword [esp + 0x18]
push dword [esi]
push dword [esp + 0x90]
push dword [esp + 0x90]
push eax
push ecx
call dword [ebx + 0x4810]
add esp, 0x18
mov esi, dword [ebx]
mov ecx, dword [esp + 0x20]
inc ecx
mov eax, dword [esp + 0x28]
add eax, dword [esp + 0x18]
mov dword [esp + 0x28], eax
mov dword [esp + 0x20], ecx
cmp ecx, dword [esi + 4]
jae 0x10015f85
mov eax, dword [esi]
mov dword [esp + 0x14], eax
cmp dword [esp + 0x30], 0
jle 0x10014a7e
xor edx, edx
lea ebx, [esp + 0xfc]
mov esi, dword [esp + 0x2c]
jmp 0x10014a18
inc edx
add esi, 0x48
add ebx, 0x20
cmp dword [esp + 0x30], edx
je 0x10014a7e
mov dword [esp + 4], edx
mov edi, dword [ebx - 4]
mov edx, dword [ebx - 0xc]
mov dword [esp + 8], edx
sar edx, 1
xor eax, eax
xor ecx, ecx
cmp edi, edx
setge al
setl cl
push dword [ebx - 0x10]
push dword [ebx - 8]
push dword [ebx + ecx*4 - 0x18]
push dword [ebx + eax*4 - 0x18]
push dword [esi + 0x18]
call dword [ebx - 0x1c]
mov edx, dword [esp + 0x18]
add esp, 0x14
mov dword [esp + edx*4 + 0x80], eax
inc edi
mov dword [ebx - 4], edi
cmp edi, dword [esp + 8]
jl 0x10014a0b
mov dword [ebx - 4], 0
mov eax, dword [ebx - 0x14]
mov ecx, dword [ebx]
mov dword [ebx - 0x18], eax
inc ecx
mov dword [ebx], ecx
cmp ecx, dword [esi]
jge 0x10014a0b
add eax, dword [esi + 4]
mov dword [ebx - 0x14], eax
jmp 0x10014a0b
mov eax, dword [esp + 0x18]
cmp eax, 3
jl 0x10014b8b
mov ecx, dword [esp + 0x20]
imul ecx, eax
mov edi, dword [esp + 0x14]
imul ecx, edi
add ecx, dword [esp + 0x48]
mov eax, dword [esp + 0x80]
mov ebx, dword [esp + 0xc]
mov esi, dword [ebx]
mov edx, dword [esi + 8]
cmp edx, 3
je 0x10014d21
cmp edx, 4
jne 0x10014d92
mov edx, dword [ebx + 0x47e8]
cmp edx, 2
je 0x10014eb3
test edx, edx
jne 0x100149ac
cmp dword [esi], 0
je 0x100149cd
mov ecx, eax
mov eax, dword [esp + 0x8c]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x84]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x88]
mov dword [esp + 0x24], eax
imul edi, dword [esp + 0x28]
add edi, dword [esp + 0x44]
mov eax, edi
xor edi, edi
mov dword [esp + 4], esi
mov esi, ecx
mov ecx, dword [esp + 8]
movzx ebx, byte [ecx + edi]
movzx ecx, byte [esi + edi]
imul ecx, ebx
lea edx, [ecx + 0x80]
shr edx, 8
add ecx, edx
add ecx, 0x80
mov byte [eax - 3], ch
mov ecx, dword [esp + 0x10]
movzx ecx, byte [ecx + edi]
imul ecx, ebx
lea edx, [ecx + 0x80]
shr edx, 8
add ecx, edx
add ecx, 0x80
mov byte [eax - 2], ch
mov ecx, dword [esp + 0x24]
movzx ecx, byte [ecx + edi]
imul ecx, ebx
lea edx, [ecx + 0x80]
shr edx, 8
add ecx, edx
add ecx, 0x80
mov byte [eax - 1], ch
mov byte [eax], 0xff
inc edi
add eax, dword [esp + 0x18]
mov ecx, dword [esp + 4]
cmp edi, dword [ecx]
jb 0x10014b15
jmp 0x10014d14
mov ebx, dword [esp + 0xc]
mov esi, dword [ebx]
cmp byte [esp + 0x1c], 0
mov dword [esp + 4], esi
mov edi, dword [esp + 0x14]
je 0x10014c1f
mov eax, dword [esi]
cmp dword [esp + 0x18], 1
mov esi, dword [esp + 0x48]
jne 0x10014e0c
test eax, eax
je 0x10014e81
mov eax, dword [esp + 0x88]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x80]
mov dword [esp + 0x10], eax
mov edx, dword [esp + 0x84]
imul edi, dword [esp + 0x28]
add edi, esi
xor esi, esi
mov eax, dword [esp + 4]
mov ecx, dword [esp + 8]
movzx ebx, byte [ecx + esi]
mov ecx, edi
lea edi, [ebx + ebx*8]
lea edi, [edi + edi*2]
add ebx, ebx
add ebx, edi
movzx edi, byte [edx + esi]
imul edi, edi, 0x96
add ebx, edi
mov edi, dword [esp + 0x10]
movzx edi, byte [edi + esi]
imul edi, edi, 0x4d
add ebx, edi
mov edi, ecx
mov byte [ecx + esi], bh
inc esi
cmp esi, dword [eax]
jb 0x10014be3
jmp 0x10014e76
cmp dword [esi + 8], 4
jne 0x10014dd4
mov eax, dword [ebx + 0x47e8]
cmp eax, 2
je 0x10014f75
test eax, eax
jne 0x10014dd4
cmp dword [esi], 0
je 0x10014d14
mov eax, dword [esp + 0x8c]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x80]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x84]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x88]
mov dword [esp + 0x34], eax
imul edi, dword [esp + 0x28]
add edi, dword [esp + 0x38]
mov esi, edi
xor edi, edi
mov eax, dword [esp + 8]
movzx ebx, byte [eax + edi]
mov eax, dword [esp + 0x10]
movzx eax, byte [eax + edi]
imul eax, ebx
lea ecx, [eax + 0x80]
shr ecx, 8
add eax, ecx
add eax, 0x80
mov ecx, dword [esp + 0x24]
movzx ecx, byte [ecx + edi]
imul ecx, ebx
lea edx, [ecx + 0x80]
shr edx, 8
add ecx, edx
add ecx, 0x80
mov edx, dword [esp + 0x34]
movzx edx, byte [edx + edi]
imul edx, ebx
lea ebx, [edx + 0x80]
shr ebx, 8
add ebx, edx
add ebx, 0x80
shr eax, 8
shr ecx, 8
shr ebx, 8
imul eax, eax, 0x4d
imul ecx, ecx, 0x96
add ecx, eax
lea eax, [ebx + ebx*8]
lea eax, [eax + eax*2]
add ebx, ebx
add ebx, eax
add ebx, ecx
mov byte [esi - 1], bh
mov byte [esi], 0xff
inc edi
add esi, dword [esp + 0x18]
mov eax, dword [esp + 4]
cmp edi, dword [eax]
jb 0x10014c82
mov ebx, dword [esp + 0xc]
mov esi, dword [esp + 4]
jmp 0x100149cd
cmp byte [esp + 0x1c], 0
je 0x100149ac
cmp dword [esi], 0
je 0x100149cd
mov edx, eax
mov eax, dword [esp + 0x84]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x88]
mov dword [esp + 8], eax
imul edi, dword [esp + 0x28]
add edi, dword [esp + 0x44]
mov ecx, esi
xor esi, esi
mov eax, edi
mov edi, dword [esp + 0x18]
movzx ebx, byte [edx + esi]
mov byte [eax - 3], bl
mov ebx, dword [esp + 4]
movzx ebx, byte [ebx + esi]
mov byte [eax - 2], bl
mov ebx, dword [esp + 8]
movzx ebx, byte [ebx + esi]
mov byte [eax - 1], bl
mov byte [eax], 0xff
inc esi
add eax, edi
cmp esi, dword [ecx]
jb 0x10014d60
mov ebx, dword [esp + 0xc]
mov esi, ecx
jmp 0x100149cd
cmp dword [esi], 0
je 0x100149cd
imul edi, dword [esp + 0x28]
add edi, dword [esp + 0x44]
xor ecx, ecx
mov dword [esp + 4], eax
mov eax, edi
mov edi, esi
mov esi, dword [esp + 0x18]
mov edx, dword [esp + 4]
movzx edx, byte [edx + ecx]
mov byte [eax - 1], dl
mov byte [eax - 2], dl
mov byte [eax - 3], dl
mov byte [eax], 0xff
inc ecx
add eax, esi
cmp ecx, dword [edi]
jb 0x10014db2
mov esi, edi
jmp 0x100149cd
mov eax, dword [esp + 0x80]
mov ecx, dword [esi]
cmp dword [esp + 0x18], 1
jne 0x10014e8a
test ecx, ecx
je 0x100149cd
imul edi, dword [esp + 0x28]
add edi, dword [esp + 0x48]
xor ecx, ecx
movzx edx, byte [eax + ecx]
mov byte [edi + ecx], dl
inc ecx
cmp ecx, dword [esi]
jb 0x10014dfb
jmp 0x100149cd
test eax, eax
je 0x10014e81
mov eax, dword [esp + 0x88]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x80]
mov dword [esp + 0x10], eax
mov edx, dword [esp + 0x84]
imul edi, dword [esp + 0x28]
add edi, esi
xor esi, esi
mov eax, dword [esp + 4]
mov ecx, dword [esp + 8]
movzx ebx, byte [ecx + esi]
mov ecx, edi
lea edi, [ebx + ebx*8]
lea edi, [edi + edi*2]
add ebx, ebx
add ebx, edi
movzx edi, byte [edx + esi]
imul edi, edi, 0x96
add ebx, edi
mov edi, dword [esp + 0x10]
movzx edi, byte [edi + esi]
imul edi, edi, 0x4d
add ebx, edi
mov edi, ecx
mov byte [ecx + esi*2], bh
mov byte [ecx + esi*2 + 1], 0xff
inc esi
cmp esi, dword [eax]
jb 0x10014e3a
mov ebx, dword [esp + 0xc]
mov esi, eax
jmp 0x100149cd
mov esi, dword [esp + 4]
jmp 0x100149cd
test ecx, ecx
je 0x100149cd
imul edi, dword [esp + 0x28]
add edi, dword [esp + 0x48]
xor ecx, ecx
movzx edx, byte [eax + ecx]
mov byte [edi + ecx*2], dl
mov byte [edi + ecx*2 + 1], 0xff
inc ecx
cmp ecx, dword [esi]
jb 0x10014e9d
jmp 0x100149cd
push dword [esp + 0x18]
push dword [esi]
push dword [esp + 0x90]
push dword [esp + 0x90]
push eax
push ecx
call dword [ebx + 0x4810]
add esp, 0x18
mov esi, dword [ebx]
cmp dword [esi], 0
je 0x100149cd
mov eax, dword [esp + 0x8c]
mov dword [esp + 8], eax
imul edi, dword [esp + 0x28]
add edi, dword [esp + 0x40]
xor ecx, ecx
mov dword [esp + 4], esi
mov eax, dword [esp + 8]
movzx edx, byte [eax + ecx]
movzx esi, byte [edi - 2]
xor esi, 0xff
imul esi, edx
mov eax, edi
lea edi, [esi + 0x80]
shr edi, 8
lea ebx, [edi + esi]
add ebx, 0x80
mov byte [eax - 2], bh
movzx esi, byte [eax - 1]
xor esi, 0xff
imul esi, edx
lea edi, [esi + 0x80]
shr edi, 8
lea ebx, [edi + esi]
add ebx, 0x80
mov edi, eax
mov byte [eax - 1], bh
movzx esi, byte [eax]
xor esi, 0xff
imul esi, edx
lea edx, [esi + 0x80]
shr edx, 8
add edx, esi
add edx, 0x80
mov esi, dword [esp + 4]
mov byte [eax], dh
inc ecx
add edi, dword [esp + 0x18]
cmp ecx, dword [esi]
jb 0x10014ef7
jmp 0x10014fdd
cmp dword [esi], 0
je 0x10014fdd
mov eax, dword [esp + 0x80]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x8c]
mov dword [esp + 0x10], eax
imul edi, dword [esp + 0x28]
add edi, dword [esp + 0x38]
xor edx, edx
mov eax, dword [esp + 0x18]
mov ecx, edi
mov esi, dword [esp + 0x10]
movzx esi, byte [esi + edx]
mov edi, dword [esp + 8]
movzx edi, byte [edi + edx]
xor edi, 0xff
imul edi, esi
lea esi, [edi + 0x80]
shr esi, 8
lea ebx, [esi + edi]
add ebx, 0x80
mov esi, dword [esp + 4]
mov byte [ecx - 1], bh
mov byte [ecx], 0xff
inc edx
add ecx, eax
cmp edx, dword [esi]
jb 0x10014fa1
mov ebx, dword [esp + 0xc]
jmp 0x100149cd
push ebx
call fcn.1037ddf5
add esp, 4
mov dword [0x1058e718], 0x10535037
mov eax, dword [esp + 0x48]
jmp 0x100160c7
xor eax, eax
mov esi, dword [esp + 0x1c]
cmp esi, 0xc
sete al
or eax, 0xfffffffc
mov ecx, dword [esp + 0x24]
imul ecx, eax
sub ecx, esi
add ecx, dword [esp + 0x84]
add ecx, 0xfffffff2
js 0x100153ec
mov eax, dword [esp + 0xc]
cmp dword [eax], 0
je 0x100153f6
mov eax, dword [esp + 0x18]
mov esi, dword [eax]
mov eax, dword [edx]
mov dword [esp + 0x1c], esi
sub esi, eax
mov edi, edx
mov edx, ecx
sub edx, esi
jle 0x100153fa
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x1c]
mov dword [eax + 0xac], ecx
push edx
push dword [eax + 0x24]
call dword [eax + 0x14]
add esp, 8
jmp 0x100153fe
mov eax, dword [esp + 0x18]
mov eax, dword [eax]
mov dword [edx], eax
jmp 0x1001508a
mov ecx, dword [edx]
mov ebx, edx
add ecx, eax
mov dword [ebx], ecx
mov esi, dword [esp + 0x14]
mov edx, ebx
mov ebx, dword [esp + 0x2c]
mov eax, dword [esp + 0x38]
cmp eax, 0x10
je 0x100150bf
cmp eax, 0x20
je 0x100150cf
mov dword [esp + 0x64], 0
cmp eax, 0x18
jne 0x10015159
mov eax, dword [esi]
and eax, 3
mov dword [esp + 0x64], eax
mov dword [esp + 0xa4], 0
jmp 0x10015109
mov eax, dword [esi]
add eax, eax
and eax, 2
mov dword [esp + 0x64], eax
jmp 0x10015159
mov eax, dword [esp + 0x60]
xor eax, 0xff
mov ecx, dword [esp + 0x4c]
xor ecx, 0xff00
or ecx, eax
mov eax, dword [esp + 0x50]
xor eax, 0xff0000
or eax, ecx
sete al
mov dword [esp + 0x64], 0
test byte [esp + 0x40], al
je 0x10015159
mov al, 1
mov dword [esp + 0xa4], eax
mov dword [esp + 0xa0], 0
mov dword [esp + 0x5c], 0
mov dword [esp + 0x58], 0
mov dword [esp + 0x7c], 0
mov dword [esp + 0x78], 0
mov dword [esp + 0x74], 0
mov dword [esp + 0x70], 0
mov dword [esp + 0x6c], 0
mov dword [esp + 0x68], 0
jmp 0x10015976
cmp dword [esp + 0x50], 0
je 0x100153ba
cmp dword [esp + 0x4c], 0
je 0x100153ba
cmp dword [esp + 0x60], 0
je 0x100153ba
mov esi, dword [esp + 0x50]
mov eax, esi
shr eax, 0x10
xor ecx, ecx
cmp esi, 0x10000
setae cl
cmovb eax, esi
shl ecx, 4
mov edx, eax
shr edx, 8
cmp eax, 0x100
cmovb edx, eax
lea eax, [ecx + 8]
cmovb eax, ecx
mov ecx, edx
shr ecx, 4
cmp edx, 0x10
cmovb ecx, edx
lea edx, [eax + 4]
cmovb edx, eax
mov eax, ecx
shr eax, 2
cmp ecx, 4
cmovb eax, ecx
lea ecx, [edx + 2]
cmovb ecx, edx
cmp eax, 2
sbb ecx, 0xffffffff
mov dword [esp + 0x5c], ecx
mov ecx, esi
and ecx, 0x55555555
mov eax, esi
shr eax, 1
and eax, 0x55555555
add eax, ecx
mov ecx, eax
and ecx, 0x33333333
shr eax, 2
and eax, 0x33333333
add eax, ecx
mov ecx, eax
shr ecx, 4
add ecx, eax
and ecx, 0xf0f0f0f
mov edx, ecx
shr edx, 8
add edx, ecx
mov eax, edx
shr eax, 0x10
add eax, edx
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x4c]
mov ecx, eax
shr ecx, 0x10
xor edx, edx
cmp eax, 0x10000
setae dl
cmovb ecx, eax
shl edx, 4
mov esi, ecx
shr esi, 8
cmp ecx, 0x100
cmovb esi, ecx
lea ecx, [edx + 8]
cmovb ecx, edx
mov edx, esi
shr edx, 4
cmp esi, 0x10
cmovb edx, esi
lea esi, [ecx + 4]
cmovb esi, ecx
mov ecx, edx
shr ecx, 2
cmp edx, 4
cmovb ecx, edx
lea edx, [esi + 2]
cmovb edx, esi
cmp ecx, 2
sbb edx, 0xffffffff
mov dword [esp + 0x58], edx
mov edx, eax
and edx, 0x55555555
mov ecx, eax
shr ecx, 1
and ecx, 0x55555555
add ecx, edx
mov edx, ecx
and edx, 0x33333333
shr ecx, 2
and ecx, 0x33333333
add ecx, edx
mov edx, ecx
shr edx, 4
add edx, ecx
and edx, 0xf0f0f0f
mov esi, edx
shr esi, 8
add esi, edx
mov ecx, esi
shr ecx, 0x10
add ecx, esi
mov eax, dword [esp + 0x60]
mov edx, eax
shr edx, 0x10
xor ebx, ebx
cmp eax, 0x10000
cmovb edx, eax
setae bl
shl ebx, 4
mov esi, edx
shr esi, 8
cmp edx, 0x100
lea edi, [ebx + 8]
cmovb edi, ebx
cmovb esi, edx
mov edx, esi
shr edx, 4
cmp esi, 0x10
cmovb edx, esi
lea esi, [edi + 4]
cmovb esi, edi
mov edi, edx
shr edi, 2
cmp edx, 4
cmovb edi, edx
lea edx, [esi + 2]
cmovb edx, esi
cmp edi, 2
sbb edx, 0xffffffff
mov dword [esp + 0x6c], edx
mov esi, eax
and esi, 0x55555555
mov edx, eax
shr edx, 1
and edx, 0x55555555
add edx, esi
mov esi, edx
and esi, 0x33333333
shr edx, 2
and edx, 0x33333333
add edx, esi
mov esi, edx
shr esi, 4
add esi, edx
and esi, 0xf0f0f0f
mov edi, esi
shr edi, 8
add edi, esi
mov edx, edi
shr edx, 0x10
add edx, edi
mov esi, dword [esp + 0x3c]
test esi, esi
je 0x100158e1
mov eax, esi
shr eax, 0x10
xor ebx, ebx
cmp esi, 0x10000
setae bl
cmovb eax, esi
shl ebx, 4
lea edi, [ebx + 8]
mov esi, eax
shr esi, 8
cmp eax, 0x100
cmovb esi, eax
cmovb edi, ebx
lea eax, [edi + 4]
mov ebx, esi
shr ebx, 4
cmp esi, 0x10
cmovb ebx, esi
cmovb eax, edi
lea edi, [eax + 2]
mov esi, ebx
shr esi, 2
cmp ebx, 4
cmovb esi, ebx
cmovb edi, eax
cmp esi, 2
mov esi, dword [esp + 0x3c]
sbb edi, 0xffffffff
add edi, 0xfffffff9
mov dword [esp + 0x68], edi
jmp 0x100158e9
push ebx
call fcn.1037ddf5
add esp, 4
mov dword [0x1058e718], 0x105333c5
mov dword [esp + 0x48], 0
mov eax, dword [esp + 0x48]
jmp 0x100160c7
add edx, 0xfffffff0
mov dword [ecx + 0x47c0], edx
jmp 0x1001603c
mov eax, dword [esp + 0x18]
mov eax, dword [eax]
mov dword [edx], eax
jmp 0x10015400
mov eax, dword [edx]
mov edi, edx
add eax, ecx
mov dword [edi], eax
mov edx, edi
mov eax, dword [esp + 0x38]
cmp eax, 1
je 0x10015429
cmp eax, 8
je 0x10015666
cmp eax, 4
jne 0x100158c5
mov esi, dword [esp + 0x14]
mov eax, dword [esi]
inc eax
shr eax, 1
jmp 0x1001566c
mov esi, dword [esp + 0x14]
mov ecx, dword [esi + 4]
test ecx, ecx
jle 0x100160cf
mov eax, dword [esi]
add eax, 7
shr eax, 3
neg eax
and eax, 3
mov dword [esp + 0x4c], eax
mov dword [esp + 0x1c], 0
mov dword [esp + 0x50], 0
jmp 0x1001547d
add esi, dword [esp + 0x4c]
mov edx, dword [esp + 8]
mov dword [edx], esi
mov esi, dword [esp + 0x14]
mov ecx, dword [esp + 0x50]
inc ecx
mov eax, dword [esi + 4]
mov dword [esp + 0x50], ecx
cmp ecx, eax
jge 0x100160d1
mov edi, dword [edx]
mov eax, dword [esp + 0x18]
mov eax, dword [eax]
mov dword [esp + 0x3c], eax
cmp edi, eax
jae 0x10015499
lea ecx, [edi + 1]
mov dword [edx], ecx
movzx eax, byte [edi]
mov edi, ecx
jmp 0x100154f6
mov eax, dword [esp + 4]
cmp dword [eax], 0
je 0x100154c9
mov eax, dword [esp + 0x28]
push dword [eax]
mov edi, dword [esp + 0x34]
push edi
mov eax, dword [esp + 0x28]
push dword [eax]
mov eax, dword [esp + 0x18]
call dword [eax]
add esp, 0xc
test eax, eax
je 0x100154cd
add eax, edi
mov ebx, eax
movzx eax, byte [edi]
jmp 0x100154e0
xor eax, eax
jmp 0x100154f6
mov eax, dword [esp + 4]
mov dword [eax], 0
mov byte [edi], 0
xor eax, eax
mov ebx, dword [esp + 0x10]
mov ecx, dword [esp + 8]
mov edx, dword [esp + 0x18]
mov dword [esp + 0x3c], ebx
mov dword [edx], ebx
mov edx, dword [esp + 0x10]
mov dword [ecx], edx
mov edi, edx
mov dword [esp + 0x40], edi
mov ebx, dword [esi]
test ebx, ebx
jle 0x10015622
movzx eax, al
mov dword [esp + 0x38], eax
xor edi, edi
mov edx, 7
jmp 0x1001551f
mov edx, eax
dec edx
cmp edi, ebx
jge 0x10015622
mov dword [esp + 0x24], ebx
xor ebx, ebx
mov ecx, dword [esp + 0x38]
mov eax, edx
bt ecx, edx
setb bl
movzx ecx, byte [esp + ebx*4 + 0xe0]
mov esi, dword [esp + 0x2c]
mov edx, dword [esp + 0x1c]
mov byte [esi + edx], cl
movzx ecx, byte [esp + ebx*4 + 0xe1]
mov byte [esi + edx + 1], cl
movzx ecx, byte [esp + ebx*4 + 0xe2]
mov byte [esi + edx + 2], cl
cmp dword [esp + 0x44], 4
jne 0x1001556f
mov ebx, esi
mov byte [esi + edx + 3], 0xff
add edx, 4
jmp 0x10015572
add edx, 3
mov dword [esp + 0x1c], edx
inc edi
mov ebx, dword [esp + 0x24]
cmp edi, ebx
je 0x10015622
test eax, eax
jg 0x10015514
mov edx, dword [esp + 0x40]
cmp edx, dword [esp + 0x3c]
jae 0x100155a3
lea ecx, [edx + 1]
mov eax, dword [esp + 8]
mov dword [eax], ecx
movzx eax, byte [edx]
mov dword [esp + 0x40], ecx
jmp 0x1001560e
mov eax, dword [esp + 4]
cmp dword [eax], 0
je 0x100155db
mov eax, dword [esp + 0x28]
push dword [eax]
mov esi, dword [esp + 0x34]
push esi
mov eax, dword [esp + 0x28]
push dword [eax]
mov eax, dword [esp + 0x18]
call dword [eax]
add esp, 0xc
test eax, eax
je 0x100155df
add eax, esi
mov edx, eax
movzx eax, byte [esi]
mov ecx, dword [esp + 0x14]
mov esi, dword [esp + 0x10]
jmp 0x100155f8
xor eax, eax
jmp 0x1001560e
mov eax, dword [esp + 4]
mov dword [eax], 0
mov byte [esi], 0
xor eax, eax
mov esi, dword [esp + 0x10]
mov edx, esi
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x3c], edx
mov dword [ecx + 0xb0], edx
mov dword [ecx + 0xac], esi
mov ebx, dword [ecx]
mov dword [esp + 0x40], esi
movzx eax, al
mov dword [esp + 0x38], eax
mov edx, 7
cmp edi, ebx
jl 0x1001551f
mov eax, dword [esp + 0xc]
cmp dword [eax], 0
mov esi, dword [esp + 0x40]
je 0x1001545b
mov ecx, dword [esp + 0x3c]
sub ecx, esi
mov eax, dword [esp + 0x4c]
sub eax, ecx
jle 0x1001545b
mov esi, dword [esp + 0x14]
mov ecx, dword [esp + 0x3c]
mov dword [esi + 0xac], ecx
push eax
push dword [esi + 0x24]
call dword [esi + 0x14]
add esp, 8
mov edx, dword [esp + 8]
jmp 0x10015469
mov esi, dword [esp + 0x14]
mov eax, dword [esi]
mov edi, dword [esi + 4]
test edi, edi
jle 0x10016026
neg eax
and eax, 3
mov dword [esp + 0x3c], eax
xor edi, edi
xor ecx, ecx
jmp 0x100156ac
mov dword [esi + 0xac], ecx
push edx
push dword [esi + 0x24]
call dword [esi + 0x14]
add esp, 8
mov edx, ebx
mov ecx, dword [esp + 0x40]
inc ecx
mov eax, dword [esi + 4]
cmp ecx, eax
mov ebx, dword [esp + 0x2c]
jge 0x100160d5
mov dword [esp + 0x40], ecx
cmp dword [esi], 0
jle 0x1001588d
mov eax, dword [edx]
mov ecx, dword [esp + 0x18]
mov ebx, dword [ecx]
mov dword [esp + 0x1c], 0
jmp 0x100156ee
mov byte [ebx + edi + 3], 0xff
add edi, 4
mov edx, dword [esp + 8]
mov ebx, dword [esp + 0x24]
mov ecx, dword [esp + 0x1c]
add ecx, 2
mov dword [esp + 0x1c], ecx
cmp ecx, dword [esi]
jge 0x1001588d
cmp eax, ebx
jae 0x10015702
mov dword [esp + 0x24], ebx
lea esi, [eax + 1]
mov dword [edx], esi
movzx edx, byte [eax]
mov eax, esi
jmp 0x10015765
mov ecx, dword [esp + 4]
cmp dword [ecx], 0
mov esi, dword [esp + 0x30]
je 0x10015736
mov eax, dword [esp + 0x28]
push dword [eax]
push esi
mov eax, dword [esp + 0x28]
push dword [eax]
mov eax, dword [esp + 0x18]
call dword [eax]
add esp, 0xc
test eax, eax
je 0x1001573e
mov ebx, eax
add ebx, esi
movzx edx, byte [esi]
mov ecx, dword [esp + 0x10]
jmp 0x10015753
mov dword [esp + 0x24], ebx
xor edx, edx
jmp 0x10015765
mov eax, dword [esp + 4]
mov dword [eax], 0
mov byte [esi], 0
xor edx, edx
mov ecx, dword [esp + 0x10]
mov ebx, ecx
mov eax, dword [esp + 0x18]
mov dword [esp + 0x24], ebx
mov dword [eax], ebx
mov eax, dword [esp + 8]
mov dword [eax], ecx
mov eax, ecx
movzx esi, dl
mov edx, esi
and edx, 0xf
mov ebx, esi
shr ebx, 4
cmp dword [esp + 0x38], 4
cmovne ebx, esi
movzx ecx, byte [esp + ebx*4 + 0xe0]
mov esi, dword [esp + 0x2c]
mov byte [esi + edi], cl
movzx ecx, byte [esp + ebx*4 + 0xe1]
mov byte [esi + edi + 1], cl
movzx ecx, byte [esp + ebx*4 + 0xe2]
mov ebx, esi
mov byte [esi + edi + 2], cl
mov ecx, 0
cmovne edx, ecx
cmp dword [esp + 0x44], 4
jne 0x100157bc
mov byte [ebx + edi + 3], 0xff
add edi, 4
jmp 0x100157bf
add edi, 3
mov esi, dword [esp + 0x14]
mov ecx, dword [esp + 0x1c]
inc ecx
cmp ecx, dword [esi]
je 0x10015889
cmp dword [esp + 0x38], 8
jne 0x10015853
cmp eax, dword [esp + 0x24]
jae 0x100157ed
lea ecx, [eax + 1]
mov edx, dword [esp + 8]
mov dword [edx], ecx
movzx edx, byte [eax]
mov eax, ecx
jmp 0x10015850
mov ecx, dword [esp + 4]
cmp dword [ecx], 0
je 0x10015821
mov eax, dword [esp + 0x28]
push dword [eax]
mov ebx, dword [esp + 0x34]
push ebx
mov eax, dword [esp + 0x28]
push dword [eax]
mov eax, dword [esp + 0x18]
call dword [eax]
add esp, 0xc
test eax, eax
je 0x10015825
add eax, ebx
movzx edx, byte [ebx]
mov ecx, dword [esp + 0x10]
mov ebx, eax
jmp 0x1001583a
xor edx, edx
jmp 0x10015850
mov eax, dword [esp + 4]
mov dword [eax], 0
mov byte [ebx], 0
xor edx, edx
mov ecx, dword [esp + 0x10]
mov ebx, ecx
mov eax, dword [esp + 0x18]
mov dword [esp + 0x24], ebx
mov dword [eax], ebx
mov eax, dword [esp + 8]
mov dword [eax], ecx
mov eax, ecx
mov ebx, dword [esp + 0x2c]
movzx edx, dl
movzx ecx, byte [esp + edx*4 + 0xe0]
mov byte [ebx + edi], cl
movzx ecx, byte [esp + edx*4 + 0xe1]
mov byte [ebx + edi + 1], cl
movzx ecx, byte [esp + edx*4 + 0xe2]
mov byte [ebx + edi + 2], cl
cmp dword [esp + 0x44], 4
je 0x100156cb
add edi, 3
jmp 0x100156d3
mov edx, dword [esp + 8]
mov eax, dword [esp + 0xc]
cmp dword [eax], 0
je 0x100158b6
mov eax, dword [esp + 0x18]
mov ecx, dword [eax]
mov eax, dword [edx]
mov esi, ecx
sub esi, eax
mov ebx, edx
mov edx, dword [esp + 0x3c]
sub edx, esi
mov esi, dword [esp + 0x14]
jg 0x10015686
jmp 0x100158ba
mov eax, dword [edx]
mov ebx, edx
add eax, dword [esp + 0x3c]
mov dword [ebx], eax
jmp 0x10015696
push ebx
call fcn.1037ddf5
add esp, 4
mov dword [0x1058e718], 0x10533a22
mov eax, dword [esp + 0x48]
jmp 0x100160c7
mov dword [esp + 0x68], 0xfffffff8
movzx eax, byte [esp + 0x1c]
mov dword [esp + 0x7c], eax
add dword [esp + 0x5c], 0xfffffff9
add dword [esp + 0x58], 0xfffffff9
movzx eax, cl
mov dword [esp + 0x78], eax
add dword [esp + 0x6c], 0xfffffff9
movzx eax, dl
mov dword [esp + 0x74], eax
mov ecx, esi
and ecx, 0x55555555
mov eax, esi
shr eax, 1
and eax, 0x55555555
add eax, ecx
mov ecx, eax
and ecx, 0x33333333
shr eax, 2
and eax, 0x33333333
add eax, ecx
mov ecx, eax
shr ecx, 4
add ecx, eax
and ecx, 0xf0f0f0f
mov eax, ecx
shr eax, 8
add eax, ecx
mov ecx, eax
shr ecx, 0x10
add ecx, eax
movzx eax, cl
mov dword [esp + 0x70], eax
mov al, 1
mov dword [esp + 0xa0], eax
mov dword [esp + 0xa4], 0
mov esi, dword [esp + 0x14]
mov edx, dword [esp + 8]
mov ebx, dword [esp + 0x2c]
mov eax, dword [esi + 4]
test eax, eax
jle 0x100160d5
mov eax, dword [esp + 0x5c]
neg eax
mov dword [esp + 0xcc], eax
mov eax, 8
sub eax, dword [esp + 0x7c]
mov dword [esp + 0xc8], eax
mov eax, dword [esp + 0x58]
neg eax
mov dword [esp + 0xc4], eax
mov eax, 8
sub eax, dword [esp + 0x78]
mov dword [esp + 0xc0], eax
mov eax, dword [esp + 0x6c]
neg eax
mov dword [esp + 0xbc], eax
mov eax, 8
sub eax, dword [esp + 0x74]
mov dword [esp + 0xb8], eax
mov eax, dword [esp + 0x68]
neg eax
mov dword [esp + 0xb4], eax
mov eax, 8
sub eax, dword [esp + 0x70]
mov dword [esp + 0xb0], eax
mov dword [esp + 0x1c], 0
xor ecx, ecx
jmp 0x10015a20
mov eax, dword [edx]
mov edi, edx
add eax, dword [esp + 0x64]
mov dword [edi], eax
mov edx, edi
mov ecx, dword [esp + 0xac]
inc ecx
mov eax, dword [esi + 4]
cmp ecx, eax
jge 0x100160d5
mov eax, dword [esi]
cmp byte [esp + 0xa0], 0
mov dword [esp + 0xac], ecx
je 0x10015cba
test eax, eax
jle 0x10015f41
xor edi, edi
jmp 0x10015a6f
mov ecx, dword [esp + 0x1c]
mov ebx, edi
mov byte [esi + ecx + 3], bl
add ecx, 4
mov dword [esp + 0x1c], ecx
or eax, ebx
mov dword [esp + 0x34], eax
mov edi, dword [esp + 0x24]
inc edi
cmp edi, dword [edx]
mov ebx, esi
mov esi, edx
mov edx, dword [esp + 8]
jge 0x10015f41
cmp dword [esp + 0x38], 0x10
mov dword [esp + 0x24], edi
jne 0x10015a98
mov ecx, dword [edx]
mov eax, dword [esp + 0x18]
mov eax, dword [eax]
cmp ecx, eax
jae 0x10015aa6
mov esi, edx
lea edx, [ecx + 1]
mov dword [esi], edx
movzx ebx, byte [ecx]
mov ecx, edx
mov esi, dword [esp + 0x30]
jmp 0x10015b11
mov ecx, esi
call fcn.100246e0
mov edi, eax
jmp 0x10015b8d
mov edx, dword [esp + 4]
cmp dword [edx], 0
mov esi, dword [esp + 0x30]
je 0x10015ae0
mov eax, dword [esp + 0x28]
push dword [eax]
push esi
mov eax, dword [esp + 0x28]
push dword [eax]
mov eax, dword [esp + 0x18]
call dword [eax]
add esp, 0xc
test eax, eax
je 0x10015ae4
add eax, esi
movzx ecx, byte [esi]
mov dword [esp + 0x40], ecx
mov ecx, dword [esp + 8]
mov ebx, dword [esp + 0x10]
jmp 0x10015b03
xor ebx, ebx
jmp 0x10015b11
mov eax, dword [esp + 4]
mov dword [eax], 0
mov byte [esi], 0
mov dword [esp + 0x40], 0
mov ebx, dword [esp + 0x10]
mov eax, ebx
mov ecx, dword [esp + 8]
mov edx, dword [esp + 0x18]
mov dword [edx], eax
mov dword [ecx], ebx
mov ecx, ebx
mov ebx, dword [esp + 0x40]
cmp ecx, eax
jae 0x10015b23
lea eax, [ecx + 1]
mov edx, dword [esp + 8]
mov dword [edx], eax
movzx ecx, byte [ecx]
jmp 0x10015b82
mov eax, dword [esp + 4]
cmp dword [eax], 0
je 0x10015b59
mov dword [esp + 0x40], ebx
mov eax, dword [esp + 0x28]
push dword [eax]
push esi
mov eax, dword [esp + 0x28]
push dword [eax]
mov eax, dword [esp + 0x18]
call dword [eax]
add esp, 0xc
test eax, eax
je 0x10015b5d
add eax, esi
movzx ecx, byte [esi]
mov edx, dword [esp + 8]
mov ebx, dword [esp + 0x10]
jmp 0x10015b76
xor ecx, ecx
jmp 0x10015b82
mov eax, dword [esp + 4]
mov dword [eax], 0
mov byte [esi], 0
xor ecx, ecx
mov ebx, dword [esp + 0x10]
mov eax, ebx
mov edx, dword [esp + 8]
mov esi, dword [esp + 0x18]
mov dword [esi], eax
mov dword [edx], ebx
mov ebx, dword [esp + 0x40]
movzx eax, bl
movzx edi, cl
shl edi, 8
or edi, eax
mov edx, edi
and edx, dword [esp + 0x50]
mov eax, edx
mov ecx, dword [esp + 0xcc]
shl eax, cl
mov ecx, dword [esp + 0x5c]
shr edx, cl
test ecx, ecx
cmovs edx, eax
mov ecx, dword [esp + 0xc8]
shr edx, cl
mov eax, dword [esp + 0x7c]
imul edx, dword [eax*4 + 0x103980f8]
movzx ecx, byte [eax*4 + 0x1039811c]
sar edx, cl
mov ebx, edi
and ebx, dword [esp + 0x4c]
mov eax, ebx
mov ecx, dword [esp + 0xc4]
shl eax, cl
mov ecx, dword [esp + 0x58]
shr ebx, cl
test ecx, ecx
cmovs ebx, eax
mov ecx, dword [esp + 0xc0]
shr ebx, cl
mov eax, dword [esp + 0x78]
imul ebx, dword [eax*4 + 0x103980f8]
movzx ecx, byte [eax*4 + 0x1039811c]
sar ebx, cl
mov eax, edi
and eax, dword [esp + 0x60]
mov esi, eax
mov ecx, dword [esp + 0xbc]
shl esi, cl
mov ecx, dword [esp + 0x6c]
shr eax, cl
test ecx, ecx
cmovs eax, esi
mov ecx, dword [esp + 0xb8]
shr eax, cl
mov ecx, dword [esp + 0x74]
imul eax, dword [ecx*4 + 0x103980f8]
movzx ecx, byte [ecx*4 + 0x1039811c]
sar eax, cl
mov ecx, dword [esp + 0x2c]
mov esi, dword [esp + 0x1c]
mov byte [ecx + esi], dl
mov byte [ecx + esi + 1], bl
mov ebx, ecx
mov byte [ecx + esi + 2], al
mov eax, dword [esp + 0x3c]
test eax, eax
je 0x10015c94
and edi, eax
mov eax, edi
mov ecx, dword [esp + 0xb4]
shl eax, cl
mov ecx, dword [esp + 0x68]
shr edi, cl
test ecx, ecx
cmovs edi, eax
mov ecx, dword [esp + 0xb0]
shr edi, cl
mov eax, dword [esp + 0x70]
imul edi, dword [eax*4 + 0x103980f8]
movzx ecx, byte [eax*4 + 0x1039811c]
sar edi, cl
jmp 0x10015c99
mov edi, 0xff
mov eax, dword [esp + 0x34]
mov esi, ebx
cmp dword [esp + 0x44], 4
mov edx, dword [esp + 0x14]
je 0x10015a43
add dword [esp + 0x1c], 3
mov ebx, edi
jmp 0x10015a54
test eax, eax
jle 0x10015f41
mov ecx, dword [edx]
mov eax, dword [esp + 0x18]
mov eax, dword [eax]
xor edi, edi
jmp 0x10015cf9
mov edi, ebx
mov ebx, dword [esp + 0x1c]
mov byte [edi + ebx + 3], dl
add ebx, 4
mov dword [esp + 0x1c], ebx
mov ebx, edi
mov edi, dword [esp + 0x40]
movzx edx, dl
or dword [esp + 0x34], edx
inc edi
cmp edi, dword [esi]
mov edx, dword [esp + 8]
jge 0x10015f41
cmp ecx, eax
mov dword [esp + 0x40], edi
jae 0x10015d17
mov dword [esp + 0x24], eax
mov eax, ebx
lea esi, [ecx + 1]
mov dword [edx], esi
movzx edx, byte [ecx]
mov ecx, esi
mov esi, dword [esp + 0x30]
jmp 0x10015d7e
mov edx, dword [esp + 4]
cmp dword [edx], 0
mov esi, dword [esp + 0x30]
je 0x10015d49
mov eax, dword [esp + 0x28]
push dword [eax]
push esi
mov eax, dword [esp + 0x28]
push dword [eax]
mov eax, dword [esp + 0x18]
call dword [eax]
add esp, 0xc
test eax, eax
je 0x10015d53
add eax, esi
movzx edx, byte [esi]
mov ebx, dword [esp + 0x10]
jmp 0x10015d68
mov dword [esp + 0x24], eax
mov eax, ebx
xor edx, edx
jmp 0x10015d7e
mov eax, dword [esp + 4]
mov dword [eax], 0
mov byte [esi], 0
xor edx, edx
mov ebx, dword [esp + 0x10]
mov eax, ebx
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x24], eax
mov dword [ecx], eax
mov ecx, dword [esp + 8]
mov dword [ecx], ebx
mov ecx, ebx
mov eax, dword [esp + 0x2c]
mov ebx, dword [esp + 0x1c]
mov edi, eax
mov byte [ebx + eax + 2], dl
cmp ecx, dword [esp + 0x24]
jae 0x10015da2
lea esi, [ecx + 1]
mov edx, dword [esp + 8]
mov dword [edx], esi
movzx edx, byte [ecx]
mov ecx, esi
mov esi, dword [esp + 0x30]
jmp 0x10015dff
mov edx, dword [esp + 4]
cmp dword [edx], 0
je 0x10015dd0
mov eax, dword [esp + 0x28]
push dword [eax]
push esi
mov eax, dword [esp + 0x28]
push dword [eax]
mov eax, dword [esp + 0x18]
call dword [eax]
add esp, 0xc
test eax, eax
je 0x10015dd4
add eax, esi
movzx edx, byte [esi]
mov ebx, dword [esp + 0x10]
jmp 0x10015de9
xor edx, edx
jmp 0x10015dff
mov eax, dword [esp + 4]
mov dword [eax], 0
mov byte [esi], 0
xor edx, edx
mov ebx, dword [esp + 0x10]
mov eax, ebx
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x24], eax
mov dword [ecx], eax
mov ecx, dword [esp + 8]
mov dword [ecx], ebx
mov ecx, ebx
mov eax, dword [esp + 0x2c]
mov ebx, dword [esp + 0x1c]
mov edi, eax
mov byte [ebx + eax + 1], dl
cmp ecx, dword [esp + 0x24]
jae 0x10015e23
lea esi, [ecx + 1]
mov edx, dword [esp + 8]
mov dword [edx], esi
movzx edx, byte [ecx]
mov ecx, esi
mov esi, dword [esp + 0x14]
jmp 0x10015e8c
mov edx, dword [esp + 4]
cmp dword [edx], 0
je 0x10015e55
mov eax, dword [esp + 0x28]
push dword [eax]
push esi
mov eax, dword [esp + 0x28]
push dword [eax]
mov eax, dword [esp + 0x18]
call dword [eax]
add esp, 0xc
test eax, eax
je 0x10015e5d
add eax, esi
movzx edx, byte [esi]
mov esi, dword [esp + 0x14]
mov ebx, dword [esp + 0x10]
jmp 0x10015e76
xor edx, edx
mov esi, dword [esp + 0x14]
jmp 0x10015e8c
mov eax, dword [esp + 4]
mov dword [eax], 0
mov byte [esi], 0
xor edx, edx
mov ebx, dword [esp + 0x10]
mov eax, ebx
mov esi, dword [esp + 0x14]
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x24], eax
mov dword [ecx], eax
mov ecx, dword [esp + 8]
mov dword [ecx], ebx
mov ecx, ebx
mov eax, dword [esp + 0x2c]
mov ebx, dword [esp + 0x1c]
mov byte [eax + ebx], dl
mov ebx, eax
mov dl, 0xff
cmp byte [esp + 0xa4], 0
je 0x10015ebd
mov eax, dword [esp + 0x24]
cmp ecx, eax
jae 0x10015ec3
lea esi, [ecx + 1]
mov edx, dword [esp + 8]
mov dword [edx], esi
movzx edx, byte [ecx]
mov ecx, esi
mov esi, dword [esp + 0x14]
jmp 0x10015f2c
mov eax, dword [esp + 0x24]
jmp 0x10015f2c
mov edx, dword [esp + 4]
cmp dword [edx], 0
mov esi, dword [esp + 0x30]
je 0x10015ef9
mov eax, dword [esp + 0x28]
push dword [eax]
push esi
mov eax, dword [esp + 0x28]
push dword [eax]
mov eax, dword [esp + 0x18]
call dword [eax]
add esp, 0xc
test eax, eax
je 0x10015f01
add eax, esi
movzx edx, byte [esi]
mov esi, dword [esp + 0x14]
mov ebx, dword [esp + 0x10]
jmp 0x10015f1a
xor edx, edx
mov esi, dword [esp + 0x14]
jmp 0x10015f2c
mov eax, dword [esp + 4]
mov dword [eax], 0
mov byte [esi], 0
xor edx, edx
mov ebx, dword [esp + 0x10]
mov eax, ebx
mov esi, dword [esp + 0x14]
mov ecx, dword [esp + 0x18]
mov dword [ecx], eax
mov ecx, dword [esp + 8]
mov dword [ecx], ebx
mov ecx, ebx
mov ebx, dword [esp + 0x2c]
cmp dword [esp + 0x44], 4
je 0x10015cce
add dword [esp + 0x1c], 3
jmp 0x10015ce1
mov eax, dword [esp + 0xc]
cmp dword [eax], 0
je 0x10015a01
mov eax, dword [esp + 0x18]
mov ecx, dword [eax]
mov eax, dword [edx]
mov esi, ecx
sub esi, eax
mov edi, edx
mov edx, dword [esp + 0x64]
sub edx, esi
mov esi, dword [esp + 0x14]
jle 0x10015a05
mov dword [esi + 0xac], ecx
push edx
push dword [esi + 0x24]
call dword [esi + 0x14]
add esp, 8
jmp 0x10015a0b
mov esi, dword [esp + 4]
mov edx, esi
mov esi, dword [esi + 8]
test esi, esi
mov ecx, dword [esp + 0x54]
jle 0x10015ffc
mov edi, ebx
add edi, 0x46d8
jmp 0x10015fa2
add edi, 0x48
dec esi
je 0x10015ff6
mov eax, dword [edi - 0xc]
test eax, eax
je 0x10015fc0
push eax
call fcn.1037ddf5
add esp, 4
mov dword [edi - 0xc], 0
mov dword [edi - 0x10], 0
mov eax, dword [edi - 8]
test eax, eax
je 0x10015fdd
push eax
call fcn.1037ddf5
add esp, 4
mov dword [edi - 8], 0
mov dword [edi], 0
mov eax, dword [edi - 4]
test eax, eax
je 0x10015f9c
push eax
call fcn.1037ddf5
add esp, 4
mov dword [edi - 4], 0
jmp 0x10015f9c
mov edx, dword [ebx]
mov ecx, dword [esp + 0x54]
mov eax, dword [edx]
mov dword [ecx], eax
mov eax, dword [edx + 4]
mov ecx, dword [ebp + 8]
mov dword [ecx], eax
mov ecx, dword [ebp + 0xc]
test ecx, ecx
je 0x1001601d
xor eax, eax
cmp dword [edx + 8], 3
setge al
add eax, eax
inc eax
mov dword [ecx], eax
mov edi, dword [esp + 0x48]
jmp 0x100160bc
mov ecx, edi
mov eax, edi
jmp 0x100160d5
add esi, 0xfffffff0
mov eax, dword [esp + 0xc]
mov dword [eax + 0x47c0], esi
mov eax, 0x10534d00
mov dword [0x1058e718], eax
mov ebx, dword [esp + 0xc]
mov eax, dword [ebx]
mov esi, dword [eax + 8]
test esi, esi
jle 0x100160ba
mov edi, ebx
add edi, 0x46d8
jmp 0x10016066
add edi, 0x48
dec esi
je 0x100160ba
mov eax, dword [edi - 0xc]
test eax, eax
je 0x10016084
push eax
call fcn.1037ddf5
add esp, 4
mov dword [edi - 0xc], 0
mov dword [edi - 0x10], 0
mov eax, dword [edi - 8]
test eax, eax
je 0x100160a1
push eax
call fcn.1037ddf5
add esp, 4
mov dword [edi - 8], 0
mov dword [edi], 0
mov eax, dword [edi - 4]
test eax, eax
je 0x10016060
push eax
call fcn.1037ddf5
add esp, 4
mov dword [edi - 4], 0
jmp 0x10016060
xor edi, edi
push ebx
call fcn.1037ddf5
add esp, 4
mov eax, edi
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov eax, ecx
mov ebx, dword [esp + 0x2c]
mov dword [esp + 0x38], eax
cmp dword [esp + 0x44], 4
jne 0x10016106
cmp dword [esp + 0x34], 0
jne 0x10016106
mov eax, dword [esi]
imul eax, dword [esp + 0x38]
shl eax, 2
mov ecx, eax
dec ecx
js 0x10016106
add eax, 3
mov byte [ebx + eax - 4], 0xff
add eax, 0xfffffffc
cmp eax, 3
ja 0x100160f9
cmp dword [esp + 0xa8], 0
jle 0x10016313
cmp dword [esp + 0x38], 2
jl 0x10016313
mov ecx, dword [esp + 0x38]
mov eax, ecx
shr eax, 1
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x14]
mov ebx, dword [eax]
imul ebx, dword [esp + 0x44]
lea eax, [ecx - 1]
imul eax, ebx
mov edx, ebx
imul edx, ecx
mov dword [esp + 0x34], edx
mov ecx, ebx
and ecx, 0xffffffe0
mov dword [esp + 0x30], ecx
mov ecx, ebx
and ecx, 0xfffffff8
mov dword [esp + 0x3c], ecx
mov ecx, ebx
neg ecx
mov dword [esp + 0x20], ecx
mov ecx, dword [esp + 0x2c]
lea esi, [ecx + 0x10]
lea edx, [ecx + eax]
add edx, 0x10
mov dword [esp + 0x10], edx
mov dword [esp + 0x40], eax
add eax, ecx
mov dword [esp + 8], 0
mov dword [esp + 4], ebx
jmp 0x100161a9
mov edi, dword [esp + 8]
inc edi
mov esi, dword [esp + 0x18]
add esi, ebx
mov edx, dword [esp + 0x20]
add dword [esp + 0x10], edx
add ecx, ebx
add eax, edx
mov dword [esp + 8], edi
cmp edi, dword [esp + 0x28]
je 0x10016313
mov dword [esp + 0x18], esi
test ebx, ebx
jle 0x10016184
mov edx, ebx
imul edx, dword [esp + 8]
mov dword [esp + 0xc], edx
mov esi, dword [esp + 0x2c]
lea edi, [esi + edx]
xor edx, edx
cmp ebx, 8
mov dword [esp + 0x1c], edi
jae 0x100161d7
mov ebx, dword [esp + 4]
jmp 0x10016295
mov esi, dword [esp + 0x34]
sub esi, dword [esp + 0xc]
add esi, dword [esp + 0x2c]
cmp edi, esi
mov ebx, dword [esp + 4]
jae 0x10016215
mov ebx, dword [esp + 0x2c]
mov esi, dword [esp + 4]
add esi, ebx
mov edi, dword [esp + 0xc]
add esi, edi
mov dword [esp + 0x24], esi
mov esi, dword [esp + 0x40]
sub esi, edi
add esi, ebx
mov ebx, dword [esp + 4]
cmp esi, dword [esp + 0x24]
jb 0x10016295
xor esi, esi
cmp ebx, 0x20
jb 0x1001626c
xor edx, edx
mov esi, dword [esp + 0x18]
mov edi, dword [esp + 0x10]
movdqu xmm0, xmmword [esi + edx - 0x10]
movdqu xmm1, xmmword [esi + edx]
movups xmm2, xmmword [edi + edx - 0x10]
movups xmm3, xmmword [edi + edx]
movups xmmword [esi + edx - 0x10], xmm2
movups xmmword [esi + edx], xmm3
movdqu xmmword [edi + edx - 0x10], xmm0
movdqu xmmword [edi + edx], xmm1
add edx, 0x20
cmp dword [esp + 0x30], edx
jne 0x10016226
cmp ebx, dword [esp + 0x30]
je 0x10016184
mov edx, dword [esp + 0x30]
mov esi, edx
test bl, 0x18
je 0x10016295
mov edx, dword [esp + 0x3c]
movq xmm0, qword [ecx + esi]
movq xmm1, qword [eax + esi]
movq qword [ecx + esi], xmm1
movq qword [eax + esi], xmm0
add esi, 8
cmp edx, esi
jne 0x10016270
mov esi, edx
cmp ebx, edx
je 0x10016184
mov esi, edx
or esi, 1
test bl, 1
je 0x100162dd
mov dword [esp + 0xc], esi
mov esi, dword [esp + 8]
not esi
add esi, dword [esp + 0x38]
imul esi, ebx
add esi, dword [esp + 0x2c]
mov edi, dword [esp + 0x1c]
movzx ebx, byte [edi + edx]
mov byte [esp + 0x24], bl
movzx ebx, byte [esi + edx]
mov byte [edi + edx], bl
mov ebx, dword [esp + 4]
mov edi, eax
movzx eax, byte [esp + 0x24]
mov byte [esi + edx], al
mov eax, edi
mov esi, dword [esp + 0xc]
mov edx, esi
cmp ebx, esi
je 0x10016184
movzx ebx, byte [ecx + edx]
mov bh, byte [eax + edx]
mov byte [ecx + edx], bh
mov byte [eax + edx], bl
movzx ebx, byte [ecx + edx + 1]
mov bh, byte [eax + edx + 1]
mov byte [ecx + edx + 1], bh
mov byte [eax + edx + 1], bl
mov ebx, dword [esp + 4]
add edx, 2
cmp ebx, edx
jne 0x100162e5
jmp 0x10016184
mov eax, dword [ebp + 0x10]
test eax, eax
je 0x1001634a
mov edx, dword [esp + 0x44]
cmp edx, eax
mov esi, dword [esp + 0x54]
mov edi, dword [ebp + 8]
je 0x10016351
mov ecx, dword [esp + 0x2c]
push dword [esp + 0x38]
mov ebx, dword [esp + 0x18]
push dword [ebx]
push eax
call fcn.1001f950
add esp, 0xc
mov dword [esp + 0x2c], eax
test eax, eax
jne 0x10016355
jmp 0x10016372
mov esi, dword [esp + 0x54]
mov edi, dword [ebp + 8]
mov ebx, dword [esp + 0x14]
mov eax, dword [ebx]
mov dword [esi], eax
mov eax, dword [ebx + 4]
mov dword [edi], eax
mov ecx, dword [ebp + 0xc]
test ecx, ecx
je 0x1001636a
mov eax, dword [ebx + 8]
mov dword [ecx], eax
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x48]
jmp 0x100160c7