Function at 0x100aad70
Capabilities:
Encode data using xor
Resolve function by parsing pe exports

Disassembly:
sub esp, 0x78
push ebx
push ebp
push esi
push edi
mov edi, dword [esp + 0x8c]
mov ecx, dword [edi + 0x85b8]
mov ebx, dword [ecx]
mov ebp, dword [ecx + 0xc]
mov dword [esp + 0x48], ebp
test ebx, ebx
je 0x100aad96
mov edx, dword [edi + 8]
jmp 0x100aad9a
mov edx, dword [ecx + 0x24]
inc edx
mov esi, dword [edi + 0x8614]
shl esi, 4
add esi, 0xfffffff0
sub edx, esi
mov dword [esp + 0x6c], esi
cmp edx, 0x10
jae 0x100aadcc
test ebx, ebx
je 0x100aadc0
mov eax, dword [edi + 8]
sub eax, esi
mov dword [esp + 0x24], eax
jmp 0x100aadd4
mov eax, dword [ecx + 0x24]
inc eax
sub eax, esi
mov dword [esp + 0x24], eax
jmp 0x100aadd4
mov dword [esp + 0x24], 0x10
test ebx, ebx
je 0x100aaddd
mov ebx, dword [edi + 4]
jmp 0x100aade1
mov ebx, dword [ecx + 0x1c]
inc ebx
mov eax, dword [ecx + 0x20]
mov dword [esp + 0x38], ebx
cmp esi, eax
jbe 0x100aadf0
xor eax, eax
jmp 0x100aadf3
and eax, 0xf
lea esi, [ebp - 1]
mov ecx, dword [ecx + 0x18]
add esi, eax
xor edx, edx
mov eax, esi
dec ecx
div ebp
add ecx, ebp
sub esi, edx
mov eax, ecx
xor edx, edx
mov dword [esp + 0x18], esi
div ebp
mov eax, dword [edi + 0x8550]
sub ecx, edx
mov dword [esp + 0x5c], eax
mov dword [esp + 0x20], ecx
test eax, eax
je 0x100aae27
mov eax, dword [edi + 0xc]
mov dword [esp + 0x50], eax
mov ecx, 2
mov eax, dword [edi + 0x10]
mov dword [esp + 0x74], eax
mov eax, dword [edi + 0x1c]
neg eax
sbb eax, eax
xor edx, edx
and eax, 2
mov dword [esp + 0x70], edx
sub ecx, eax
mov dword [esp + 0x68], eax
mov al, byte [edi + 0x808c]
xor esi, esi
mov byte [esp + 0x4c], al
mov eax, dword [edi + 0x86dc]
mov dword [esp + 0x64], ecx
mov cl, byte [edi + 0x808d]
mov dword [esp + 0x44], eax
mov eax, dword [edi + 0x86e0]
mov byte [esp + 0x78], cl
mov ecx, dword [edi + 0x85b8]
mov dword [esp + 0x3c], eax
mov eax, dword [edi + 0x86e4]
mov dword [esp + 0x40], eax
mov eax, dword [ecx + 0x28]
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x6c]
div ebp
mov ecx, dword [ecx + 0x2c]
mov dword [esp + 0x28], esi
lea eax, [ecx + eax*4]
mov dword [esp + 0x2c], eax
cmp ebp, 0x10
jb 0x100aaed2
mov eax, dword [edi + 0x64]
test eax, eax
jne 0x100aaebc
mov dword [esp + 0x14], 0x10
jmp 0x100aaef5
cmp eax, 1
mov ecx, 0x22
mov edx, 0x17
cmove ecx, edx
mov dword [esp + 0x14], ecx
jmp 0x100aaef5
cmp ebp, 4
jb 0x100aaeed
cmp dword [edi + 0x64], esi
mov ecx, 0x5d
mov eax, 0x40
cmove ecx, eax
mov dword [esp + 0x14], ecx
jmp 0x100aaef5
mov dword [esp + 0x14], 0x102
mov eax, dword [edi + 0x855c]
mov ecx, 8
test eax, eax
mov edx, 0xb
cmovne ecx, edx
mov dword [esp + 0x1c], ecx
je 0x100aaf2f
cmp ebp, 0x10
jb 0x100aaf2f
mov eax, dword [esp + 0x5c]
cmp eax, 1
je 0x100aaf28
cmp eax, 2
je 0x100aaf28
lea eax, [edx - 0xa]
jmp 0x100aaf31
mov eax, 2
jmp 0x100aaf31
xor eax, eax
sub ecx, eax
mov dword [esp + 0x34], ecx
cmp ebp, 1
jbe 0x100aaf4f
mov eax, 1
rol eax, 0
rol eax, 1
inc esi
cmp eax, ebp
jb 0x100aaf44
mov dword [esp + 0x28], esi
cmp dword [edi + 0x40], 4
jge 0x100aaf5a
mov ecx, dword [edi + 0x28]
jmp 0x100aaf5d
mov ecx, dword [edi + 0x30]
mov eax, dword [esp + 0x24]
xor edx, edx
sub eax, dword [esp + 0x18]
mov dword [esp + 0x84], eax
div ebp
push eax
push ecx
push edi
call fcn.100a3320
add esp, 0xc
test eax, eax
jne 0x100ab417
mov ecx, dword [edi + 0x8614]
xor edx, edx
shl ecx, 4
lea eax, [ecx - 0x10]
div ebp
test edx, edx
jne case.default.0x100acb79
mov eax, dword [edi + 0x85b8]
cmp ecx, dword [eax + 0x20]
jbe case.default.0x100acb79
mov eax, dword [eax + 0x24]
add eax, 0x10
cmp ecx, eax
ja case.default.0x100acb79
mov eax, dword [esp + 0x5c]
cmp eax, 2
je 0x100aafca
cmp eax, 1
jne 0x100ab22a
mov eax, dword [esp + 0x50]
test eax, eax
je 0x100ab22e
mov edx, dword [edi + 0x87dc]
xor eax, eax
mov edi, dword [edi + 0x87e0]
xor ecx, ecx
mov esi, ebp
mov dword [esp + 0x60], edx
shl esi, 4
mov dword [esp + 0x54], edi
mov dword [esp + 0x6c], eax
mov dword [esp + 0x58], ecx
mov dword [esp + 0x7c], esi
nop
xor esi, esi
test ebx, ebx
je 0x100ab07a
mov edx, esi
and edx, 0xfffffff0
cmp dword [esp + 0x5c], 2
jne 0x100ab026
mov eax, esi
shr eax, 1
and eax, 7
movzx eax, byte [eax + ecx + 0x10293f98]
lea edi, [eax + edx*8]
jmp 0x100ab03e
mov ecx, esi
shr ecx, 1
and ecx, 7
shr eax, 1
movzx eax, byte [ecx + eax*8 + 0x10294098]
mov ecx, dword [esp + 0x58]
lea edi, [eax + edx*4]
mov eax, esi
shl edx, 4
and eax, 0xf
add esi, ebp
movzx ecx, byte [eax + ecx + 0x10293f98]
mov eax, dword [esp + 0x3c]
add ecx, edx
mov edx, dword [esp + 0x60]
mov eax, dword [eax + edi*4]
mov dword [edx + ecx*4], eax
mov eax, dword [esp + 0x40]
mov eax, dword [eax + edi*4]
mov edi, dword [esp + 0x54]
mov dword [edi + ecx*4], eax
mov ecx, dword [esp + 0x58]
mov eax, dword [esp + 0x6c]
cmp esi, ebx
jb 0x100ab006
add ecx, dword [esp + 0x7c]
add eax, ebp
mov dword [esp + 0x6c], eax
mov dword [esp + 0x58], ecx
cmp ecx, 0x100
jb 0x100ab000
cmp ebp, 4
jne 0x100ab217
cmp dword [esp + 0x5c], 1
jne 0x100ab149
xor eax, eax
mov dword [esp + 0x6c], eax
test ebx, ebx
je 0x100ab149
mov ebp, dword [esp + 0x60]
nop word [eax + eax]
mov ebx, eax
mov edi, eax
and ebx, 0xf
and edi, 0xfffffff0
shl edi, 4
movzx edx, byte [ebx + 0x10293f98]
movzx eax, byte [ebx + str._____aed]
add edx, edi
movzx esi, byte [ebx + 0x10293fd8]
add eax, edi
mov dword [esp + 0x70], eax
add esi, edi
mov ecx, dword [ebp + edx*4]
mov eax, dword [ebp + eax*4]
inc ecx
add eax, ecx
sar eax, 1
mov dword [ebp + esi*4], eax
mov eax, dword [esp + 0x54]
mov ecx, dword [eax + edx*4]
mov edx, dword [esp + 0x70]
mov eax, dword [eax + edx*4]
inc eax
add eax, ecx
mov ecx, dword [esp + 0x54]
sar eax, 1
mov dword [ecx + esi*4], eax
movzx ecx, byte [ebx + str.0154pqut]
mov eax, dword [ebp + edx*4]
add ecx, edi
mov edi, dword [esp + 0x54]
mov ebx, dword [esp + 0x38]
mov dword [ebp + ecx*4], eax
mov eax, dword [edi + edx*4]
mov dword [edi + ecx*4], eax
mov eax, dword [esp + 0x6c]
add eax, 8
mov dword [esp + 0x6c], eax
cmp eax, ebx
jb 0x100ab0c0
mov edx, dword [esp + 0x60]
lea eax, [ebx - 8]
mov ebx, dword [esp + 0x70]
xor esi, esi
mov dword [esp + 0x6c], eax
mov dword [esp + 0x5c], esi
nop
xor ebp, ebp
test eax, eax
je 0x100ab1d6
mov eax, ebp
lea ecx, [ebp - 8]
and eax, 0xf
mov edx, ebp
and edx, 0xfffffff0
add ebp, 8
shl edx, 4
movzx edi, byte [eax + esi + 0x10293f98]
lea eax, [ecx - 4]
and eax, 0xf
and ecx, 0xf
add edi, edx
movzx esi, byte [eax + esi + 0x10293f98]
mov eax, dword [esp + 0x5c]
add esi, edx
movzx ebx, byte [ecx + eax + 0x10293f98]
add ebx, edx
mov edx, dword [esp + 0x60]
mov ecx, dword [edx + ebx*4]
mov eax, dword [edx + edi*4]
inc ecx
add eax, ecx
sar eax, 1
mov dword [edx + esi*4], eax
mov eax, dword [esp + 0x54]
mov ecx, dword [eax + ebx*4]
mov eax, dword [eax + edi*4]
mov edi, dword [esp + 0x54]
inc eax
add eax, ecx
sar eax, 1
mov dword [edi + esi*4], eax
mov esi, dword [esp + 0x5c]
cmp ebp, dword [esp + 0x6c]
jb 0x100ab166
lea eax, [ebp + 4]
and ebp, 0xfffffff0
and eax, 0xf
shl ebp, 4
movzx ecx, byte [eax + esi + 0x10293f98]
add esi, 0x40
mov eax, dword [edx + ebx*4]
add ecx, ebp
mov dword [esp + 0x5c], esi
mov dword [edx + ecx*4], eax
mov eax, dword [edi + ebx*4]
mov dword [edi + ecx*4], eax
mov eax, dword [esp + 0x6c]
cmp esi, 0x100
jb 0x100ab160
mov ebp, dword [esp + 0x48]
mov ebx, dword [esp + 0x38]
mov esi, dword [esp + 0x28]
mov dword [esp + 0x40], edi
mov edi, dword [esp + 0x8c]
mov dword [esp + 0x3c], edx
mov eax, dword [esp + 0x50]
mov ecx, dword [esp + 0x74]
cmp ecx, 1
jne 0x100ab6f9
mov ecx, dword [esp + 0x1c]
mov eax, 0x80
mov edi, dword [esp + 0x14]
shl eax, cl
cdq
idiv edi
mov dword [esp + 0x60], eax
mov eax, dword [esp + 0x50]
cmp eax, 8
ja case.default.0x100ac04e
jmp dword [eax*4 + 0x100accfc]
mov edi, dword [esp + 0x18]
mov eax, edi
mov dword [esp + 0x74], eax
cmp edi, dword [esp + 0x24]
jae 0x100ab3ea
mov edx, edi
mov ecx, ebp
shl edx, 4
mov edi, 0xff
shl ecx, 4
mov dword [esp + 0x5c], ecx
mov ecx, dword [esp + 0x28]
mov dword [esp + 0x6c], edx
mov ebp, dword [esp + 0x2c]
mov esi, dword [esp + 0x20]
shr eax, cl
mov dword [esp + 0x78], esi
mov eax, dword [ebp + eax*4]
mov ebp, dword [esp + 0x48]
mov dword [esp + 0x7c], eax
cmp esi, ebx
jae 0x100ab3a3
mov eax, esi
mov ecx, dword [esp + 0x34]
and eax, 0xf
movzx edx, byte [eax + edx + 0x10293f98]
mov eax, esi
mov esi, dword [esp + 0x14]
and eax, 0xfffffff0
shl eax, 4
add edx, eax
mov eax, dword [esp + 0x3c]
mov ebx, dword [eax + edx*4]
mov eax, dword [esp + 0x40]
imul ebx, esi
mov eax, dword [eax + edx*4]
imul eax, esi
neg ebx
sar ebx, cl
sar eax, cl
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x70], eax
mov eax, dword [esp + 0x44]
mov edx, dword [eax + edx*4]
mov eax, ebx
add edx, dword [esp + 0x60]
imul edx, esi
mov esi, dword [esp + 0x70]
sar eax, 1
sar edx, cl
lea ecx, [esi + 1]
sub edx, eax
sar ecx, 1
mov eax, edx
sub eax, ecx
mov ecx, dword [esp + 0x28]
add ebx, eax
add esi, ebx
mov dword [esp + 0x70], esi
mov esi, dword [esp + 0x78]
mov eax, esi
shr eax, cl
mov ecx, dword [esp + 0x30]
mov ecx, dword [ecx + eax*4]
mov eax, dword [esp + 0x8c]
add ecx, dword [esp + 0x7c]
add ecx, dword [eax + 0x80a8]
mov eax, dword [esp + 0x70]
test eax, eax
jns 0x100ab352
xor eax, eax
jmp 0x100ab35a
cmp eax, 0xff
cmovg eax, edi
mov ebp, dword [esp + 0x68]
mov byte [ecx + ebp], al
test edx, edx
jns 0x100ab369
xor edx, edx
jmp 0x100ab36e
cmp edx, edi
cmovg edx, edi
mov byte [ecx + 1], dl
test ebx, ebx
jns 0x100ab379
xor ebx, ebx
jmp 0x100ab37e
cmp ebx, edi
cmovg ebx, edi
mov eax, dword [esp + 0x64]
mov ebp, dword [esp + 0x48]
add esi, ebp
mov edx, dword [esp + 0x6c]
mov dword [esp + 0x78], esi
mov byte [ecx + eax], bl
mov ebx, dword [esp + 0x38]
cmp esi, ebx
jb 0x100ab2b6
mov ecx, dword [esp + 0x28]
mov eax, dword [esp + 0x74]
add edx, dword [esp + 0x5c]
add eax, ebp
mov dword [esp + 0x74], eax
mov dword [esp + 0x6c], edx
cmp eax, dword [esp + 0x24]
jb 0x100ab294
mov edi, dword [esp + 0x18]
mov ecx, dword [esp + 0x1c]
jmp 0x100ab3ea
push dword [esp + 0x20]
push dword [esp + 0x1c]
push ecx
push edi
push dword [esp + 0x9c]
call fcn.100b1d10
add esp, 0x14
mov ecx, dword [esp + 0x1c]
mov edi, dword [esp + 0x18]
mov esi, dword [esp + 0x14]
mov eax, dword [esp + 0x8c]
cmp byte [eax + 0x70], 0
jbe 0x100acb39
push ecx
push esi
mov esi, dword [esp + 0x30]
push esi
push eax
call fcn.100acdd0
add esp, 0x10
test eax, eax
je 0x100acb3d
pop edi
pop esi
pop ebp
or eax, 0xffffffff
pop ebx
add esp, 0x78
ret
mov edi, dword [esp + 0x18]
mov eax, edi
mov dword [esp + 0x78], eax
cmp edi, dword [esp + 0x24]
jae 0x100ab3ea
mov edx, edi
mov ecx, ebp
shl edx, 4
shl ecx, 4
mov dword [esp + 0x6c], edx
mov dword [esp + 0x74], ecx
mov edi, dword [esp + 0x20]
mov ecx, esi
shr eax, cl
mov ecx, dword [esp + 0x2c]
mov dword [esp + 0x70], edi
mov eax, dword [ecx + eax*4]
mov dword [esp + 0x7c], eax
cmp edi, ebx
jae 0x100ab517
mov esi, dword [esp + 0x40]
mov eax, edi
and eax, 0xf
mov ecx, dword [esp + 0x34]
movzx edx, byte [eax + edx + 0x10293f98]
mov eax, edi
and eax, 0xfffffff0
shl eax, 4
add edx, eax
mov eax, dword [esp + 0x3c]
mov edi, dword [eax + edx*4]
mov esi, dword [esi + edx*4]
mov eax, dword [esp + 0x14]
imul edi, eax
imul esi, eax
sar edi, cl
sar esi, cl
neg edi
mov ecx, dword [esp + 0x44]
mov edx, dword [ecx + edx*4]
mov ecx, dword [esp + 0x1c]
imul edx, eax
mov eax, edi
sar eax, 1
sar edx, cl
lea ecx, [esi + 1]
sub edx, eax
sar ecx, 1
mov eax, edx
sub eax, ecx
mov ecx, dword [esp + 0x28]
add edi, eax
mov eax, dword [esp + 0x70]
shr eax, cl
mov ecx, dword [esp + 0x30]
mov ecx, dword [ecx + eax*4]
mov eax, dword [esp + 0x8c]
add ecx, dword [esp + 0x7c]
add ecx, dword [eax + 0x80a8]
lea eax, [ecx + 3]
push eax
lea eax, [ecx + 2]
push eax
lea eax, [ecx + 1]
push eax
push ecx
lea eax, [esi + edi]
push eax
push edx
push edi
call fcn.100adc50
mov edi, dword [esp + 0x8c]
add esp, 0x1c
mov edx, dword [esp + 0x6c]
add edi, ebp
mov dword [esp + 0x70], edi
cmp edi, ebx
jb 0x100ab463
mov esi, dword [esp + 0x28]
mov eax, dword [esp + 0x78]
add edx, dword [esp + 0x74]
add eax, ebp
mov dword [esp + 0x78], eax
mov dword [esp + 0x6c], edx
cmp eax, dword [esp + 0x24]
jb 0x100ab444
jmp 0x100ab3e2
mov eax, dword [esp + 0x8c]
mov ecx, dword [esp + 0x34]
mov eax, dword [eax + 0x86e8]
mov dword [esp + 0x7c], eax
mov eax, 0x80
shl eax, cl
cdq
idiv edi
mov edi, dword [esp + 0x18]
sar eax, 1
mov dword [esp + 0x5c], eax
mov eax, edi
mov dword [esp + 0x74], eax
cmp edi, dword [esp + 0x24]
jae 0x100ab3c3
mov edx, edi
mov ecx, ebp
shl edx, 4
shl ecx, 4
mov dword [esp + 0x6c], edx
mov dword [esp + 0x4c], ecx
mov edi, dword [esp + 0x20]
mov ecx, esi
shr eax, cl
mov ecx, dword [esp + 0x2c]
mov dword [esp + 0x78], edi
mov eax, dword [ecx + eax*4]
mov dword [esp + 0x54], eax
cmp edi, ebx
jae 0x100ab6d8
mov ecx, dword [esp + 0x44]
mov eax, edi
and eax, 0xf
mov esi, dword [esp + 0x14]
movzx edx, byte [eax + edx + 0x10293f98]
mov eax, edi
and eax, 0xfffffff0
shl eax, 4
add edx, eax
mov eax, dword [esp + 0x60]
sub eax, dword [ecx + edx*4]
mov ecx, dword [esp + 0x1c]
imul eax, esi
sar eax, cl
mov ecx, dword [esp + 0x3c]
mov dword [esp + 0x58], eax
inc eax
sar eax, 1
mov edi, dword [ecx + edx*4]
mov ecx, dword [esp + 0x34]
imul edi, esi
sar edi, cl
mov ecx, dword [esp + 0x40]
mov ecx, dword [ecx + edx*4]
imul ecx, esi
neg ecx
mov dword [esp + 0x70], ecx
mov esi, dword [esp + 0x70]
mov ecx, dword [esp + 0x34]
sar esi, cl
mov ecx, dword [esp + 0x7c]
mov edx, dword [ecx + edx*4]
add edx, dword [esp + 0x5c]
imul edx, dword [esp + 0x14]
mov ecx, dword [esp + 0x34]
sar edx, cl
mov ecx, edi
sub edx, eax
sar ecx, 1
mov eax, edx
mov dword [esp + 0x50], edx
mov edx, dword [esp + 0x58]
sub eax, ecx
add edx, eax
lea ecx, [esi + 1]
sar ecx, 1
mov eax, edx
sub eax, ecx
mov ecx, dword [esp + 0x28]
add edi, eax
add esi, edi
mov dword [esp + 0x58], edi
mov edi, dword [esp + 0x78]
mov eax, edi
shr eax, cl
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x70], esi
mov esi, 0xff
mov ecx, dword [ecx + eax*4]
mov eax, dword [esp + 0x8c]
add ecx, dword [esp + 0x54]
add ecx, dword [eax + 0x80a8]
mov eax, dword [esp + 0x58]
test eax, eax
jns 0x100ab676
xor eax, eax
jmp 0x100ab67e
cmp eax, 0xff
cmovg eax, esi
mov byte [ecx], al
test edx, edx
jns 0x100ab688
xor edx, edx
jmp 0x100ab691
cmp edx, 0xff
cmovg edx, esi
mov eax, dword [esp + 0x70]
mov byte [ecx + 1], dl
test eax, eax
jns 0x100ab6a0
xor eax, eax
jmp 0x100ab6a8
cmp eax, 0xff
cmovg eax, esi
mov byte [ecx + 2], al
mov eax, dword [esp + 0x50]
test eax, eax
jns 0x100ab6b7
xor eax, eax
jmp 0x100ab6bf
cmp eax, 0xff
cmovg eax, esi
mov edx, dword [esp + 0x6c]
add edi, ebp
mov byte [ecx + 3], al
mov dword [esp + 0x78], edi
cmp edi, ebx
jb 0x100ab5a2
mov esi, dword [esp + 0x28]
mov eax, dword [esp + 0x74]
add edx, dword [esp + 0x4c]
add eax, ebp
mov dword [esp + 0x74], eax
mov dword [esp + 0x6c], edx
cmp eax, dword [esp + 0x24]
jb 0x100ab583
jmp 0x100ab3e2
cmp ecx, 2
jne 0x100abaaa
movzx ecx, byte [esp + 0x4c]
mov eax, 0x8000
mov edi, dword [esp + 0x14]
sar eax, cl
mov dword [esp + 0x5c], ecx
mov ecx, dword [esp + 0x1c]
shl eax, cl
cdq
idiv edi
mov dword [esp + 0x7c], eax
mov eax, dword [esp + 0x50]
cmp eax, 7
ja case.default.0x100ac04e
jmp dword [eax*4 + 0x100acd20]
mov eax, dword [esp + 0x18]
mov dword [esp + 0x6c], eax
cmp eax, dword [esp + 0x24]
jae case.default.0x100ac04e
mov ecx, dword [esp + 0x28]
mov edx, eax
shl edx, 4
mov eax, ebp
shl eax, 4
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0x6c]
mov dword [esp + 0x60], edx
mov ebx, dword [esp + 0x2c]
mov esi, dword [esp + 0x20]
shr eax, cl
mov dword [esp + 0x70], esi
mov eax, dword [ebx + eax*4]
mov ebx, dword [esp + 0x38]
mov dword [esp + 0x74], eax
cmp esi, ebx
jae 0x100ab88d
mov eax, esi
mov ecx, dword [esp + 0x34]
and eax, 0xf
movzx edx, byte [eax + edx + 0x10293f98]
mov eax, esi
and eax, 0xfffffff0
shl eax, 4
add edx, eax
mov eax, dword [esp + 0x3c]
mov esi, dword [eax + edx*4]
mov eax, dword [esp + 0x40]
imul esi, edi
mov edi, dword [eax + edx*4]
imul edi, dword [esp + 0x14]
neg esi
sar esi, cl
mov eax, esi
sar eax, 1
sar edi, cl
mov ecx, dword [esp + 0x44]
mov edx, dword [ecx + edx*4]
add edx, dword [esp + 0x7c]
imul edx, dword [esp + 0x14]
mov ecx, dword [esp + 0x1c]
sar edx, cl
lea ecx, [edi + 1]
sub edx, eax
sar ecx, 1
mov eax, edx
sub eax, ecx
mov ecx, dword [esp + 0x28]
add esi, eax
mov eax, dword [esp + 0x70]
shr eax, cl
add edi, esi
mov ecx, dword [esp + 0x30]
mov eax, dword [ecx + eax*4]
add eax, dword [esp + 0x74]
mov ecx, dword [esp + 0x8c]
mov dword [esp + 0x58], eax
mov eax, dword [ecx + 0x80a8]
mov dword [esp + 0x78], eax
mov eax, dword [esp + 0x5c]
mov ecx, eax
shl esi, cl
mov eax, 0xffff
shl edx, cl
shl edi, cl
test esi, esi
jns 0x100ab827
xor esi, esi
jmp 0x100ab830
cmp esi, 0xffff
cmovg esi, eax
mov ecx, dword [esp + 0x58]
mov ebp, dword [esp + 0x78]
mov word [ebp + ecx*2], si
test edx, edx
jns 0x100ab845
xor edx, edx
jmp 0x100ab84e
cmp edx, 0xffff
cmovg edx, eax
mov esi, ebp
mov word [esi + ecx*2 + 2], dx
test edi, edi
jns 0x100ab85d
xor edi, edi
jmp 0x100ab866
cmp edi, 0xffff
cmovg edi, eax
mov ebp, dword [esp + 0x48]
mov edx, dword [esp + 0x60]
mov word [esi + ecx*2 + 4], di
mov esi, dword [esp + 0x70]
mov edi, dword [esp + 0x14]
add esi, ebp
mov dword [esp + 0x70], esi
cmp esi, ebx
jb 0x100ab784
mov ecx, dword [esp + 0x28]
mov eax, dword [esp + 0x6c]
add edx, dword [esp + 0x54]
add eax, ebp
mov dword [esp + 0x6c], eax
mov dword [esp + 0x60], edx
cmp eax, dword [esp + 0x24]
jb 0x100ab763
jmp 0x100ab3e2
mov eax, dword [esp + 0x8c]
mov eax, dword [eax + 0x86e8]
mov dword [esp + 0x54], eax
mov eax, 0x8000
shl eax, cl
cdq
idiv edi
mov ecx, dword [esp + 0x34]
mov dword [esp + 0x7c], eax
mov eax, 0x8000
shl eax, cl
cdq
idiv edi
sar eax, 1
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x18]
mov ecx, eax
mov dword [esp + 0x58], ecx
cmp eax, dword [esp + 0x24]
jae case.0x100ac2f8.1
shl eax, 4
mov dword [esp + 0x6c], eax
mov eax, ebp
shl eax, 4
mov dword [esp + 0x80], eax
mov edx, dword [esp + 0x20]
mov eax, ecx
mov ecx, esi
mov dword [esp + 0x70], edx
shr eax, cl
mov ecx, dword [esp + 0x2c]
mov eax, dword [ecx + eax*4]
mov dword [esp + 0x4c], eax
cmp edx, ebx
jae 0x100aba86
nop dword [eax]
mov ecx, dword [esp + 0x6c]
and edx, 0xf
mov eax, dword [esp + 0x70]
mov esi, dword [esp + 0x7c]
and eax, 0xfffffff0
shl eax, 4
movzx edx, byte [edx + ecx + 0x10293f98]
add edx, eax
mov ecx, dword [esp + 0x1c]
mov eax, dword [esp + 0x44]
mov ebp, dword [esp + 0x34]
sub esi, dword [eax + edx*4]
mov eax, dword [esp + 0x3c]
imul esi, edi
mov eax, dword [eax + edx*4]
imul eax, edi
sar esi, cl
mov ecx, ebp
sar eax, cl
mov dword [esp + 0x60], eax
mov eax, dword [esp + 0x40]
mov edi, dword [eax + edx*4]
lea eax, [esi + 1]
imul edi, dword [esp + 0x14]
sar eax, 1
neg edi
sar edi, cl
mov ecx, dword [esp + 0x54]
mov edx, dword [ecx + edx*4]
mov ecx, ebp
add edx, dword [esp + 0x50]
imul edx, dword [esp + 0x14]
sar edx, cl
mov ecx, dword [esp + 0x60]
sub edx, eax
sar ecx, 1
mov eax, edx
sub eax, ecx
lea ecx, [edi + 1]
add esi, eax
sar ecx, 1
mov eax, esi
sub eax, ecx
mov ecx, dword [esp + 0x60]
add ecx, eax
mov eax, dword [esp + 0x70]
add edi, ecx
mov dword [esp + 0x60], ecx
mov ecx, dword [esp + 0x28]
shr eax, cl
mov ecx, dword [esp + 0x30]
mov eax, dword [ecx + eax*4]
add eax, dword [esp + 0x4c]
mov ecx, dword [esp + 0x8c]
mov dword [esp + 0x78], eax
mov eax, dword [ecx + 0x80a8]
mov ecx, dword [esp + 0x5c]
mov dword [esp + 0x74], eax
mov eax, dword [esp + 0x60]
shl eax, cl
shl esi, cl
shl edi, cl
shl edx, cl
mov ecx, 0xffff
test eax, eax
jns 0x100aba08
xor eax, eax
jmp 0x100aba10
cmp eax, 0xffff
cmovg eax, ecx
mov ebp, dword [esp + 0x78]
mov ebx, dword [esp + 0x74]
mov word [ebx + ebp*2], ax
test esi, esi
jns 0x100aba24
xor esi, esi
jmp 0x100aba2d
cmp esi, 0xffff
cmovg esi, ecx
mov eax, dword [esp + 0x78]
mov ebp, ebx
mov word [ebp + eax*2 + 2], si
test edi, edi
jns 0x100aba40
xor edi, edi
jmp 0x100aba49
cmp edi, 0xffff
cmovg edi, ecx
mov word [ebp + eax*2 + 4], di
test edx, edx
jns 0x100aba56
xor edx, edx
jmp 0x100aba5f
cmp edx, 0xffff
cmovg edx, ecx
mov ebx, dword [esp + 0x38]
mov edi, dword [esp + 0x14]
mov word [ebp + eax*2 + 6], dx
mov edx, dword [esp + 0x70]
mov ebp, dword [esp + 0x48]
add edx, ebp
mov dword [esp + 0x70], edx
cmp edx, ebx
jb 0x100ab930
mov esi, dword [esp + 0x28]
mov ecx, dword [esp + 0x58]
mov eax, dword [esp + 0x80]
add ecx, ebp
add dword [esp + 0x6c], eax
mov dword [esp + 0x58], ecx
cmp ecx, dword [esp + 0x24]
jb 0x100ab908
jmp 0x100ab3e2
cmp ecx, 3
jne 0x100abe8b
cmp eax, 7
ja case.0x100ac2f8.1
jmp dword [eax*4 + 0x100acd40]
mov ecx, dword [esp + 0x18]
mov edi, ecx
mov dword [esp + 0x74], edi
cmp ecx, dword [esp + 0x24]
jae case.0x100ac2f8.1
movzx eax, byte [esp + 0x4c]
mov edx, ecx
mov ecx, dword [esp + 0x28]
mov dword [esp + 0x7c], eax
mov eax, ebp
shl edx, 4
shl eax, 4
mov dword [esp + 0x5c], eax
mov eax, dword [esp + 0x20]
mov dword [esp + 0x6c], edx
nop word [eax + eax]
mov ebx, dword [esp + 0x2c]
mov esi, eax
mov eax, edi
mov dword [esp + 0x70], esi
shr eax, cl
mov eax, dword [ebx + eax*4]
mov ebx, dword [esp + 0x38]
mov dword [esp + 0x80], eax
mov eax, dword [esp + 0x20]
cmp eax, ebx
jae 0x100abc51
nop dword [eax + eax]
mov edi, dword [esp + 0x40]
mov eax, esi
and eax, 0xf
mov ecx, dword [esp + 0x34]
movzx edx, byte [eax + edx + 0x10293f98]
mov eax, esi
and eax, 0xfffffff0
shl eax, 4
add edx, eax
mov eax, dword [esp + 0x3c]
mov esi, dword [eax + edx*4]
mov edi, dword [edi + edx*4]
mov eax, dword [esp + 0x14]
imul esi, eax
imul edi, eax
neg esi
sar esi, cl
sar edi, cl
mov ecx, dword [esp + 0x44]
mov edx, dword [ecx + edx*4]
mov ecx, dword [esp + 0x1c]
imul edx, eax
mov eax, esi
sar eax, 1
sar edx, cl
lea ecx, [edi + 1]
sub edx, eax
sar ecx, 1
mov eax, edx
sub eax, ecx
mov ecx, dword [esp + 0x28]
add esi, eax
mov eax, dword [esp + 0x70]
shr eax, cl
add edi, esi
mov ecx, dword [esp + 0x30]
mov eax, dword [ecx + eax*4]
add eax, dword [esp + 0x80]
mov ecx, dword [esp + 0x8c]
mov dword [esp + 0x60], eax
mov eax, dword [ecx + 0x80a8]
mov dword [esp + 0x78], eax
mov eax, dword [esp + 0x7c]
mov ecx, eax
shl esi, cl
mov eax, 0x7fff
shl edx, cl
shl edi, cl
cmp esi, 0xffff8000
jge 0x100abbd9
mov esi, 0xffff8000
jmp 0x100abbe2
cmp esi, 0x7fff
cmovg esi, eax
mov ecx, dword [esp + 0x60]
mov ebp, dword [esp + 0x78]
mov word [ebp + ecx*2], si
cmp edx, 0xffff8000
jge 0x100abbfe
mov edx, 0xffff8000
jmp 0x100abc07
cmp edx, 0x7fff
cmovg edx, eax
mov esi, ebp
mov word [esi + ecx*2 + 2], dx
cmp edi, 0xffff8000
jge 0x100abc1d
mov edi, 0xffff8000
jmp 0x100abc26
cmp edi, 0x7fff
cmovg edi, eax
mov ebp, dword [esp + 0x48]
mov edx, dword [esp + 0x6c]
mov word [esi + ecx*2 + 4], di
mov esi, dword [esp + 0x70]
add esi, ebp
mov dword [esp + 0x70], esi
cmp esi, ebx
jb 0x100abb30
mov ecx, dword [esp + 0x28]
mov edi, dword [esp + 0x74]
mov eax, dword [esp + 0x20]
add edx, dword [esp + 0x5c]
add edi, ebp
mov dword [esp + 0x74], edi
mov dword [esp + 0x6c], edx
cmp edi, dword [esp + 0x24]
jb 0x100abb00
jmp 0x100ab3e2
push dword [esp + 0x20]
mov esi, dword [esp + 0x18]
push dword [esp + 0x1c]
push dword [esp + 0x24]
push esi
push edi
call fcn.100b1d10
mov edi, dword [esp + 0x2c]
add esp, 0x14
mov ecx, dword [esp + 0x1c]
jmp 0x100ab3ee
mov eax, dword [edi + 0x86e8]
mov edi, dword [esp + 0x18]
mov ecx, edi
mov dword [esp + 0x80], eax
mov dword [esp + 0x5c], ecx
cmp edi, dword [esp + 0x24]
jae 0x100ab3c3
movzx eax, byte [esp + 0x4c]
mov edx, edi
mov dword [esp + 0x58], eax
mov eax, ebp
shl edx, 4
shl eax, 4
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0x20]
mov dword [esp + 0x6c], edx
mov edi, eax
mov dword [esp + 0x70], eax
mov eax, ecx
mov ecx, esi
shr eax, cl
mov ecx, dword [esp + 0x2c]
mov eax, dword [ecx + eax*4]
mov dword [esp + 0x7c], eax
mov eax, dword [esp + 0x20]
cmp eax, ebx
jae 0x100abe6a
nop dword [eax + eax]
mov ebx, dword [esp + 0x14]
mov eax, edi
and eax, 0xf
mov ecx, dword [esp + 0x1c]
movzx edx, byte [eax + edx + 0x10293f98]
mov eax, edi
and eax, 0xfffffff0
shl eax, 4
add edx, eax
mov eax, dword [esp + 0x44]
mov esi, dword [eax + edx*4]
mov eax, dword [esp + 0x3c]
imul esi, ebx
mov eax, dword [eax + edx*4]
imul eax, ebx
neg esi
sar esi, cl
mov ecx, dword [esp + 0x34]
sar eax, cl
mov dword [esp + 0x60], eax
mov eax, dword [esp + 0x40]
mov edi, dword [eax + edx*4]
mov eax, dword [esp + 0x80]
imul edi, ebx
mov edx, dword [eax + edx*4]
lea eax, [esi + 1]
sar eax, 1
imul edx, ebx
neg edi
sar edi, cl
sar edx, cl
mov ecx, dword [esp + 0x60]
sub edx, eax
sar ecx, 1
mov eax, edx
sub eax, ecx
lea ecx, [edi + 1]
add esi, eax
sar ecx, 1
mov eax, esi
sub eax, ecx
mov ecx, dword [esp + 0x60]
add ecx, eax
mov eax, dword [esp + 0x70]
add edi, ecx
mov dword [esp + 0x60], ecx
mov ecx, dword [esp + 0x28]
shr eax, cl
mov ecx, dword [esp + 0x30]
mov eax, dword [ecx + eax*4]
add eax, dword [esp + 0x7c]
mov ecx, dword [esp + 0x8c]
mov dword [esp + 0x78], eax
mov eax, dword [ecx + 0x80a8]
mov ecx, dword [esp + 0x58]
mov dword [esp + 0x74], eax
mov eax, dword [esp + 0x60]
shl eax, cl
shl esi, cl
shl edi, cl
shl edx, cl
mov ecx, 0x7fff
cmp eax, 0xffff8000
jge 0x100abdd3
mov eax, 0xffff8000
jmp 0x100abddb
cmp eax, 0x7fff
cmovg eax, ecx
mov ebp, dword [esp + 0x78]
mov ebx, dword [esp + 0x74]
mov word [ebx + ebp*2], ax
cmp esi, 0xffff8000
jge 0x100abdf6
mov esi, 0xffff8000
jmp 0x100abdff
cmp esi, 0x7fff
cmovg esi, ecx
mov eax, dword [esp + 0x78]
mov ebp, ebx
mov word [ebp + eax*2 + 2], si
cmp edi, 0xffff8000
jge 0x100abe19
mov edi, 0xffff8000
jmp 0x100abe22
cmp edi, 0x7fff
cmovg edi, ecx
mov word [ebp + eax*2 + 4], di
cmp edx, 0xffff8000
jge 0x100abe36
mov edx, 0xffff8000
jmp 0x100abe3f
cmp edx, 0x7fff
cmovg edx, ecx
mov edi, dword [esp + 0x70]
mov ebx, dword [esp + 0x38]
mov word [ebp + eax*2 + 6], dx
mov ebp, dword [esp + 0x48]
add edi, ebp
mov edx, dword [esp + 0x6c]
mov dword [esp + 0x70], edi
cmp edi, ebx
jb 0x100abd00
mov esi, dword [esp + 0x28]
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x5c]
add edx, dword [esp + 0x54]
add ecx, ebp
mov dword [esp + 0x5c], ecx
mov dword [esp + 0x6c], edx
cmp ecx, dword [esp + 0x24]
jb 0x100abcd5
jmp 0x100ab3e2
mov edi, dword [esp + 0x14]
jmp 0x100abe95
mov ecx, dword [esp + 0x74]
cmp ecx, 4
jne 0x100ac011
cmp eax, 7
ja case.0x100ac2f8.1
movzx eax, byte [eax + 0x100acd6c]
jmp dword [eax*4 + 0x100acd60]
mov eax, dword [esp + 0x18]
mov ecx, eax
mov dword [esp + 0x78], ecx
cmp eax, dword [esp + 0x24]
jae case.0x100ac2f8.1
shl eax, 4
mov dword [esp + 0x70], eax
mov eax, ebp
shl eax, 4
mov dword [esp + 0x7c], eax
jmp 0x100abee4
mov edi, dword [esp + 0x14]
mov edx, dword [esp + 0x20]
mov eax, ecx
mov ecx, esi
mov dword [esp + 0x60], edx
shr eax, cl
mov ecx, dword [esp + 0x2c]
mov eax, dword [ecx + eax*4]
mov dword [esp + 0x80], eax
cmp edx, ebx
jae 0x100abfdb
jmp 0x100abf14
mov edi, dword [esp + 0x14]
mov ecx, dword [esp + 0x70]
and edx, 0xf
mov eax, dword [esp + 0x60]
and eax, 0xfffffff0
shl eax, 4
movzx edx, byte [edx + ecx + 0x10293f98]
mov ecx, dword [esp + 0x34]
add edx, eax
mov eax, dword [esp + 0x3c]
mov ebp, dword [eax + edx*4]
mov eax, dword [esp + 0x44]
imul ebp, edi
neg ebp
sar ebp, cl
mov ecx, dword [esp + 0x40]
mov ebx, dword [ecx + edx*4]
mov ecx, dword [esp + 0x34]
imul ebx, edi
mov edi, dword [eax + edx*4]
mov eax, ebp
imul edi, dword [esp + 0x14]
sar eax, 1
sar ebx, cl
mov ecx, dword [esp + 0x1c]
sar edi, cl
sub edi, eax
lea ecx, [ebx + 1]
mov eax, edi
sar ecx, 1
sub eax, ecx
mov ecx, esi
add ebp, eax
mov eax, dword [esp + 0x60]
shr eax, cl
mov ecx, dword [esp + 0x30]
push ebp
mov esi, dword [ecx + eax*4]
mov eax, dword [esp + 0x90]
add esi, dword [esp + 0x84]
mov edx, dword [eax + 0x80a8]
call fcn.100aad50
push edi
mov word [edx + esi*2], ax
call fcn.100aad50
mov word [edx + esi*2 + 2], ax
lea eax, [ebx + ebp]
push eax
call fcn.100aad50
mov ebp, dword [esp + 0x54]
add esp, 0xc
mov ebx, dword [esp + 0x38]
mov word [edx + esi*2 + 4], ax
mov edx, dword [esp + 0x60]
mov esi, dword [esp + 0x28]
add edx, ebp
mov dword [esp + 0x60], edx
cmp edx, ebx
jb 0x100abf10
mov ecx, dword [esp + 0x78]
mov eax, dword [esp + 0x7c]
add ecx, ebp
add dword [esp + 0x70], eax
mov dword [esp + 0x78], ecx
cmp ecx, dword [esp + 0x24]
jb 0x100abee0
jmp 0x100ab3e2
push dword [esp + 0x20]
push dword [esp + 0x1c]
push dword [esp + 0x24]
jmp 0x100ab3d2
mov ecx, dword [esp + 0x74]
cmp ecx, 5
jne 0x100ac185
movzx ecx, byte [esp + 0x4c]
mov eax, 0x80000000
sar eax, cl
mov dword [esp + 0x70], ecx
mov ecx, dword [esp + 0x1c]
shl eax, cl
cdq
idiv edi
mov dword [esp + 0x80], eax
mov eax, dword [esp + 0x50]
cmp eax, 7
ja case.default.0x100ac04e
movzx ecx, byte [eax + 0x100acd80]
jmp dword [ecx*4 + 0x100acd74]
mov eax, dword [esp + 0x18]
mov ecx, eax
mov dword [esp + 0x78], ecx
cmp eax, dword [esp + 0x24]
jae case.0x100ac2f8.1
shl eax, 4
mov dword [esp + 0x74], eax
mov eax, ebp
shl eax, 4
mov dword [esp + 0x6c], eax
nop dword [eax]
mov edx, dword [esp + 0x20]
mov eax, ecx
mov ecx, esi
mov dword [esp + 0x60], edx
shr eax, cl
mov ecx, dword [esp + 0x2c]
mov eax, dword [ecx + eax*4]
mov dword [esp + 0x7c], eax
cmp edx, ebx
jae 0x100ac164
mov ecx, dword [esp + 0x74]
and edx, 0xf
mov eax, dword [esp + 0x60]
and eax, 0xfffffff0
shl eax, 4
movzx edx, byte [edx + ecx + 0x10293f98]
add edx, eax
mov ecx, dword [esp + 0x34]
mov eax, dword [esp + 0x3c]
mov ebp, dword [eax + edx*4]
mov eax, dword [esp + 0x44]
imul ebp, edi
neg ebp
sar ebp, cl
mov ecx, dword [esp + 0x40]
mov ebx, dword [ecx + edx*4]
mov ecx, dword [esp + 0x34]
imul ebx, edi
mov edi, dword [eax + edx*4]
mov eax, ebp
add edi, dword [esp + 0x80]
imul edi, dword [esp + 0x14]
sar eax, 1
sar ebx, cl
mov ecx, dword [esp + 0x1c]
sar edi, cl
sub edi, eax
lea ecx, [ebx + 1]
sar ecx, 1
mov eax, edi
sub eax, ecx
mov ecx, esi
add ebp, eax
mov eax, dword [esp + 0x60]
shr eax, cl
mov ecx, dword [esp + 0x30]
mov esi, dword [ecx + eax*4]
mov eax, dword [esp + 0x8c]
add esi, dword [esp + 0x7c]
mov ecx, dword [esp + 0x70]
shl edi, cl
mov edx, dword [eax + 0x80a8]
mov eax, ebp
shl eax, cl
mov dword [edx + esi*4], eax
lea eax, [ebx + ebp]
mov ebp, dword [esp + 0x48]
mov ebx, dword [esp + 0x38]
mov dword [edx + esi*4 + 4], edi
mov edi, dword [esp + 0x14]
shl eax, cl
mov dword [edx + esi*4 + 8], eax
mov edx, dword [esp + 0x60]
mov esi, dword [esp + 0x28]
add edx, ebp
mov dword [esp + 0x60], edx
cmp edx, ebx
jb 0x100ac0a1
mov ecx, dword [esp + 0x78]
mov eax, dword [esp + 0x6c]
add ecx, ebp
add dword [esp + 0x74], eax
mov dword [esp + 0x78], ecx
cmp ecx, dword [esp + 0x24]
jb 0x100ac080
jmp 0x100ab3e2
cmp ecx, 6
jne 0x100ac2e0
cmp eax, 7
ja case.0x100ac2f8.1
movzx eax, byte [eax + 0x100acd94]
jmp dword [eax*4 + 0x100acd88]
mov edx, dword [esp + 0x18]
mov ecx, edx
mov dword [esp + 0x78], ecx
cmp edx, dword [esp + 0x24]
jae case.0x100ac2f8.1
movzx eax, byte [esp + 0x4c]
mov dword [esp + 0x7c], eax
mov eax, edx
shl eax, 4
mov dword [esp + 0x74], eax
mov eax, ebp
shl eax, 4
mov dword [esp + 0x70], eax
mov edx, dword [esp + 0x20]
mov eax, ecx
mov ecx, esi
mov dword [esp + 0x60], edx
shr eax, cl
mov ecx, dword [esp + 0x2c]
mov eax, dword [ecx + eax*4]
mov dword [esp + 0x80], eax
cmp edx, ebx
jae 0x100ac2bf
nop dword [eax + eax]
mov ecx, dword [esp + 0x74]
and edx, 0xf
mov eax, dword [esp + 0x60]
and eax, 0xfffffff0
shl eax, 4
movzx edx, byte [edx + ecx + 0x10293f98]
add edx, eax
mov ecx, dword [esp + 0x34]
mov eax, dword [esp + 0x3c]
mov ebp, dword [eax + edx*4]
mov eax, dword [esp + 0x44]
imul ebp, edi
neg ebp
sar ebp, cl
mov ecx, dword [esp + 0x40]
mov ebx, dword [ecx + edx*4]
mov ecx, dword [esp + 0x34]
imul ebx, edi
mov edi, dword [eax + edx*4]
mov eax, ebp
imul edi, dword [esp + 0x14]
sar eax, 1
sar ebx, cl
mov ecx, dword [esp + 0x1c]
sar edi, cl
sub edi, eax
lea ecx, [ebx + 1]
mov eax, edi
sar ecx, 1
sub eax, ecx
mov ecx, esi
add ebp, eax
mov eax, dword [esp + 0x60]
shr eax, cl
mov ecx, dword [esp + 0x30]
mov esi, dword [ecx + eax*4]
mov eax, dword [esp + 0x8c]
add esi, dword [esp + 0x80]
mov ecx, dword [esp + 0x7c]
shl edi, cl
mov edx, dword [eax + 0x80a8]
mov eax, ebp
shl eax, cl
mov dword [edx + esi*4], eax
lea eax, [ebx + ebp]
mov ebp, dword [esp + 0x48]
mov ebx, dword [esp + 0x38]
mov dword [edx + esi*4 + 4], edi
mov edi, dword [esp + 0x14]
shl eax, cl
mov dword [edx + esi*4 + 8], eax
mov edx, dword [esp + 0x60]
mov esi, dword [esp + 0x28]
add edx, ebp
mov dword [esp + 0x60], edx
cmp edx, ebx
jb 0x100ac200
mov ecx, dword [esp + 0x78]
mov eax, dword [esp + 0x70]
add ecx, ebp
add dword [esp + 0x74], eax
mov dword [esp + 0x78], ecx
cmp ecx, dword [esp + 0x24]
jb 0x100ac1d4
jmp 0x100ab3e2
cmp ecx, 7
jne 0x100ac45c
cmp eax, ecx
ja case.0x100ac2f8.1
movzx eax, byte [eax + 0x100acda8]
jmp dword [eax*4 + 0x100acd9c]
mov ecx, dword [esp + 0x18]
mov eax, ecx
mov dword [esp + 0x6c], eax
cmp ecx, dword [esp + 0x24]
jae case.0x100ac2f8.1
shl ecx, 4
mov dword [esp + 0x74], ecx
mov ecx, ebp
shl ecx, 4
mov dword [esp + 0x7c], ecx
mov edx, dword [esp + 0x20]
mov ecx, esi
shr eax, cl
mov ecx, dword [esp + 0x2c]
mov dword [esp + 0x60], edx
mov eax, dword [ecx + eax*4]
mov dword [esp + 0x80], eax
cmp edx, ebx
jae 0x100ac43b
mov ecx, dword [esp + 0x74]
and edx, 0xf
mov eax, dword [esp + 0x60]
and eax, 0xfffffff0
shl eax, 4
movzx edx, byte [edx + ecx + 0x10293f98]
mov ecx, dword [esp + 0x34]
add edx, eax
mov eax, dword [esp + 0x3c]
push dword [esp + 0x4c]
push dword [esp + 0x7c]
mov esi, dword [eax + edx*4]
mov eax, dword [esp + 0x4c]
imul esi, edi
mov ebx, dword [eax + edx*4]
imul ebx, edi
neg esi
sar esi, cl
mov ecx, dword [esp + 0x48]
mov eax, esi
sar eax, 1
mov ebp, dword [ecx + edx*4]
mov ecx, dword [esp + 0x3c]
imul ebp, edi
sar ebp, cl
mov ecx, dword [esp + 0x24]
sar ebx, cl
sub ebx, eax
lea ecx, [ebp + 1]
mov eax, ebx
sar ecx, 1
sub eax, ecx
mov ecx, dword [esp + 0x30]
add esi, eax
mov eax, dword [esp + 0x68]
shr eax, cl
mov ecx, dword [esp + 0x38]
mov dword [esp + 0x78], esi
push dword [esp + 0x78]
mov edi, dword [ecx + eax*4]
mov eax, dword [esp + 0x98]
add edi, dword [esp + 0x8c]
mov esi, dword [eax + 0x80a8]
call fcn.100b26c0
push dword [esp + 0x58]
fstp dword [esi + edi*4]
push dword [esp + 0x88]
push ebx
call fcn.100b26c0
push dword [esp + 0x64]
mov eax, dword [esp + 0x8c]
push dword [esp + 0x94]
add eax, ebp
fstp dword [esi + edi*4 + 4]
push eax
call fcn.100b26c0
mov edx, dword [esp + 0x84]
add esp, 0x24
mov ebp, dword [esp + 0x48]
add edx, ebp
mov ebx, dword [esp + 0x38]
mov dword [esp + 0x60], edx
fstp dword [esi + edi*4 + 8]
mov edi, dword [esp + 0x14]
cmp edx, ebx
jb 0x100ac345
mov esi, dword [esp + 0x28]
mov eax, dword [esp + 0x6c]
mov ecx, dword [esp + 0x7c]
add eax, ebp
add dword [esp + 0x74], ecx
mov dword [esp + 0x6c], eax
cmp eax, dword [esp + 0x24]
jb 0x100ac323
jmp 0x100ab3e2
test ecx, ecx
jne 0x100ac694
mov eax, dword [esp + 0x8c]
mov edi, dword [esp + 0x18]
cmp dword [eax + 0x40], 4
mov ecx, dword [eax + 0x18]
mov dword [esp + 0x70], ecx
mov ecx, edi
jge 0x100ac584
mov dword [esp + 0x74], ecx
cmp edi, dword [esp + 0x24]
jae 0x100acb2c
shl edi, 4
mov eax, ebp
shl eax, 4
mov dword [esp + 0x7c], eax
mov eax, dword [esp + 0x20]
mov dword [esp + 0x78], edi
mov edx, eax
mov dword [esp + 0x60], eax
mov eax, ecx
mov ecx, esi
shr eax, cl
mov ecx, dword [esp + 0x2c]
mov eax, dword [ecx + eax*4]
add eax, dword [esp + 0x70]
mov dword [esp + 0x80], eax
mov eax, dword [esp + 0x20]
cmp eax, ebx
jae 0x100ac563
nop
mov ebx, dword [esp + 0x30]
mov ecx, esi
shr edx, cl
mov cl, 7
mov al, byte [ebx + edx*4]
mov edi, dword [ebx + edx*4]
and al, 7
mov edx, dword [esp + 0x78]
sub cl, al
mov eax, dword [esp + 0x8c]
mov ebx, dword [esp + 0x38]
shr edi, 3
add edi, dword [esp + 0x80]
mov esi, dword [eax + 0x80a8]
mov eax, dword [esp + 0x60]
and eax, 0xf
movzx edx, byte [eax + edx + 0x10293f98]
mov eax, dword [esp + 0x60]
and eax, 0xfffffff0
shl eax, 4
add edx, eax
mov eax, dword [esp + 0x44]
cmp dword [eax + edx*4], 0
mov eax, dword [esp + 0x8c]
setg dl
xor dl, byte [eax + 0x8090]
mov al, byte [edi + esi]
shr al, cl
add dl, al
and dl, 1
shl dl, cl
xor byte [edi + esi], dl
mov edx, dword [esp + 0x60]
mov esi, dword [esp + 0x28]
add edx, ebp
mov dword [esp + 0x60], edx
cmp edx, ebx
jb 0x100ac4d0
mov edi, dword [esp + 0x78]
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x74]
add edi, dword [esp + 0x7c]
add ecx, ebp
mov dword [esp + 0x74], ecx
mov dword [esp + 0x78], edi
cmp ecx, dword [esp + 0x24]
jb 0x100ac4a4
jmp 0x100ab3e2
mov dword [esp + 0x6c], ecx
cmp edi, dword [esp + 0x24]
jae 0x100acb2c
shl edi, 4
mov eax, ebp
shl eax, 4
mov dword [esp + 0x60], eax
mov eax, dword [esp + 0x20]
mov dword [esp + 0x78], edi
mov edx, eax
mov dword [esp + 0x74], eax
mov eax, ecx
mov ecx, esi
shr eax, cl
mov ecx, dword [esp + 0x2c]
mov ecx, dword [ecx + eax*4]
add ecx, dword [esp + 0x70]
mov eax, dword [esp + 0x20]
cmp eax, ebx
jae 0x100ac673
mov al, cl
mov bl, 7
and al, 7
sub bl, al
shr ecx, 3
movzx eax, bl
mov byte [esp + 0x13], bl
mov dword [esp + 0x7c], eax
mov dword [esp + 0x80], ecx
mov eax, edx
mov ebx, dword [esp + 0x38]
mov ecx, esi
shr eax, cl
mov ecx, dword [esp + 0x30]
mov edi, dword [ecx + eax*4]
mov eax, dword [esp + 0x8c]
mov ecx, dword [esp + 0x78]
add edi, dword [esp + 0x80]
mov esi, dword [eax + 0x80a8]
mov eax, edx
and eax, 0xf
movzx ecx, byte [eax + ecx + 0x10293f98]
mov eax, edx
and eax, 0xfffffff0
shl eax, 4
add ecx, eax
mov eax, dword [esp + 0x44]
cmp dword [eax + ecx*4], 0
mov eax, dword [esp + 0x8c]
mov cl, byte [esp + 0x13]
setg dl
xor dl, byte [eax + 0x8090]
mov al, byte [edi + esi]
shr al, cl
mov ecx, dword [esp + 0x7c]
add dl, al
and dl, 1
shl dl, cl
xor byte [edi + esi], dl
mov edx, dword [esp + 0x74]
mov esi, dword [esp + 0x28]
add edx, ebp
mov dword [esp + 0x74], edx
cmp edx, ebx
jb 0x100ac5e6
mov edi, dword [esp + 0x78]
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x6c]
add edi, dword [esp + 0x60]
add ecx, ebp
mov dword [esp + 0x6c], ecx
mov dword [esp + 0x78], edi
cmp ecx, dword [esp + 0x24]
jb 0x100ac5a6
jmp 0x100ab3e2
cmp ecx, 8
jne 0x100ac817
mov ecx, dword [esp + 0x1c]
mov eax, 0x10
shl eax, cl
cdq
idiv edi
mov dword [esp + 0x80], eax
mov eax, dword [esp + 0x18]
mov edi, eax
mov dword [esp + 0x70], edi
cmp eax, dword [esp + 0x24]
jae case.default.0x100ac04e
mov ecx, dword [esp + 0x28]
mov edx, eax
shl edx, 4
mov eax, ebp
shl eax, 4
mov dword [esp + 0x5c], eax
mov eax, dword [esp + 0x20]
mov dword [esp + 0x74], edx
mov ebx, dword [esp + 0x2c]
mov esi, eax
mov eax, edi
mov dword [esp + 0x78], esi
shr eax, cl
mov eax, dword [ebx + eax*4]
mov ebx, dword [esp + 0x38]
mov dword [esp + 0x7c], eax
mov eax, dword [esp + 0x20]
cmp eax, ebx
jae 0x100ac7fa
mov eax, esi
mov ecx, dword [esp + 0x34]
and eax, 0xf
mov ebp, dword [esp + 0x30]
movzx edx, byte [eax + edx + 0x10293f98]
mov eax, esi
mov esi, dword [esp + 0x40]
and eax, 0xfffffff0
shl eax, 4
add edx, eax
mov eax, dword [esp + 0x3c]
mov edi, dword [eax + edx*4]
mov esi, dword [esi + edx*4]
mov eax, dword [esp + 0x14]
imul edi, eax
imul esi, eax
neg edi
sar edi, cl
sar esi, cl
mov ecx, dword [esp + 0x44]
mov edx, dword [ecx + edx*4]
add edx, dword [esp + 0x80]
mov ecx, dword [esp + 0x1c]
imul edx, eax
mov eax, edi
sar eax, 1
sar edx, cl
lea ecx, [esi + 1]
sub edx, eax
sar ecx, 1
mov eax, edx
sub eax, ecx
mov ecx, dword [esp + 0x28]
add edi, eax
mov eax, dword [esp + 0x78]
shr eax, cl
add esi, edi
mov eax, dword [ebp + eax*4]
add eax, dword [esp + 0x7c]
mov dword [esp + 0x6c], eax
mov eax, dword [esp + 0x8c]
mov eax, dword [eax + 0x80a8]
mov dword [esp + 0x60], eax
mov eax, 0x1f
test edi, edi
jns 0x100ac7a0
xor edi, edi
jmp 0x100ac7a6
cmp edi, 0x1f
cmovg edi, eax
test edx, edx
jns 0x100ac7ae
xor edx, edx
jmp 0x100ac7b4
cmp edx, 0x1f
cmovg edx, eax
test esi, esi
jns 0x100ac7bc
xor esi, esi
jmp 0x100ac7c2
cmp esi, 0x1f
cmovg esi, eax
mov eax, dword [esp + 0x6c]
mov ebp, dword [esp + 0x48]
shl esi, 5
add esi, edx
mov edx, dword [esp + 0x60]
shl esi, 5
add esi, edi
mov word [edx + eax*2], si
mov esi, dword [esp + 0x78]
mov edx, dword [esp + 0x74]
add esi, ebp
mov dword [esp + 0x78], esi
cmp esi, ebx
jb 0x100ac705
mov edi, dword [esp + 0x70]
mov eax, dword [esp + 0x20]
add edx, dword [esp + 0x5c]
add edi, ebp
mov dword [esp + 0x70], edi
mov dword [esp + 0x74], edx
cmp edi, dword [esp + 0x24]
jb 0x100ac6e0
jmp 0x100ab3e2
cmp ecx, 0xa
jne 0x100ac9a5
mov ecx, dword [esp + 0x1c]
mov eax, 0x20
shl eax, cl
cdq
idiv edi
mov dword [esp + 0x80], eax
mov eax, dword [esp + 0x18]
mov ecx, eax
mov dword [esp + 0x74], ecx
cmp eax, dword [esp + 0x24]
jae case.0x100ac2f8.1
shl eax, 4
mov dword [esp + 0x78], eax
mov eax, ebp
shl eax, 4
mov dword [esp + 0x54], eax
mov dword [esp + 0x6c], 0x3f
mov edx, dword [esp + 0x20]
mov eax, ecx
mov ecx, esi
mov dword [esp + 0x60], edx
shr eax, cl
mov ecx, dword [esp + 0x2c]
mov eax, dword [ecx + eax*4]
mov dword [esp + 0x7c], eax
cmp edx, ebx
jae 0x100ac984
mov ecx, dword [esp + 0x78]
and edx, 0xf
mov eax, dword [esp + 0x60]
mov esi, dword [esp + 0x40]
and eax, 0xfffffff0
shl eax, 4
movzx edx, byte [edx + ecx + 0x10293f98]
add edx, eax
mov ecx, dword [esp + 0x34]
mov eax, dword [esp + 0x3c]
mov esi, dword [esi + edx*4]
mov eax, dword [eax + edx*4]
imul eax, edi
imul esi, edi
neg eax
sar eax, cl
sar esi, cl
mov ecx, dword [esp + 0x44]
mov edi, dword [ecx + edx*4]
lea edx, [esi + 1]
add edi, dword [esp + 0x80]
imul edi, dword [esp + 0x14]
mov ecx, dword [esp + 0x1c]
sar edx, 1
sar edi, cl
mov ecx, eax
sar ecx, 1
sub edi, ecx
mov ecx, edi
sub ecx, edx
add eax, ecx
add esi, eax
cdq
sub eax, edx
sar eax, 1
mov dword [esp + 0x70], eax
mov eax, esi
mov esi, dword [esp + 0x28]
mov ecx, esi
cdq
sub eax, edx
mov edx, dword [esp + 0x60]
shr edx, cl
mov ecx, dword [esp + 0x30]
sar eax, 1
mov ecx, dword [ecx + edx*4]
mov edx, 0x1f
add ecx, dword [esp + 0x7c]
mov dword [esp + 0x5c], ecx
mov ecx, dword [esp + 0x8c]
mov ecx, dword [ecx + 0x80a8]
mov dword [esp + 0x58], ecx
mov ecx, dword [esp + 0x70]
test ecx, ecx
jns 0x100ac934
xor ecx, ecx
jmp 0x100ac93a
cmp ecx, 0x1f
cmovg ecx, edx
test edi, edi
jns 0x100ac942
xor edi, edi
jmp 0x100ac94a
cmp edi, 0x3f
cmovg edi, dword [esp + 0x6c]
test eax, eax
jns 0x100ac952
xor eax, eax
jmp 0x100ac958
cmp eax, 0x1f
cmovg eax, edx
mov edx, dword [esp + 0x58]
shl eax, 6
add eax, edi
mov edi, dword [esp + 0x14]
shl eax, 5
add eax, ecx
mov ecx, dword [esp + 0x5c]
mov word [edx + ecx*2], ax
mov edx, dword [esp + 0x60]
add edx, ebp
mov dword [esp + 0x60], edx
cmp edx, ebx
jb 0x100ac882
mov ecx, dword [esp + 0x74]
mov eax, dword [esp + 0x54]
add ecx, ebp
add dword [esp + 0x78], eax
mov dword [esp + 0x74], ecx
cmp ecx, dword [esp + 0x24]
jb 0x100ac861
jmp 0x100ab3e2
cmp ecx, 9
mov ecx, dword [esp + 0x1c]
jne case.default.0x100ac04e
mov eax, 0x200
shl eax, cl
cdq
idiv edi
mov edi, dword [esp + 0x18]
mov dword [esp + 0x80], eax
mov eax, edi
mov dword [esp + 0x6c], eax
cmp edi, dword [esp + 0x24]
jae 0x100ab3ea
mov edx, edi
mov dword [esp + 0x78], 0x3ff
mov edi, dword [esp + 0x20]
mov ecx, ebp
shl edx, 4
shl ecx, 4
mov dword [esp + 0x60], ecx
mov ecx, dword [esp + 0x28]
mov dword [esp + 0x70], edx
nop dword [eax]
mov ebx, dword [esp + 0x2c]
mov esi, edi
shr eax, cl
mov dword [esp + 0x74], esi
mov eax, dword [ebx + eax*4]
mov ebx, dword [esp + 0x38]
mov dword [esp + 0x7c], eax
cmp edi, ebx
jae 0x100acb0b
nop
mov eax, esi
mov ecx, dword [esp + 0x34]
and eax, 0xf
mov ebp, dword [esp + 0x30]
movzx edx, byte [eax + edx + 0x10293f98]
mov eax, esi
mov esi, dword [esp + 0x40]
and eax, 0xfffffff0
shl eax, 4
add edx, eax
mov eax, dword [esp + 0x3c]
mov edi, dword [eax + edx*4]
mov esi, dword [esi + edx*4]
mov eax, dword [esp + 0x14]
imul edi, eax
imul esi, eax
neg edi
sar edi, cl
sar esi, cl
mov ecx, dword [esp + 0x44]
mov edx, dword [ecx + edx*4]
add edx, dword [esp + 0x80]
mov ecx, dword [esp + 0x1c]
imul edx, eax
mov eax, edi
sar eax, 1
sar edx, cl
lea ecx, [esi + 1]
sub edx, eax
sar ecx, 1
mov eax, edx
sub eax, ecx
mov ecx, dword [esp + 0x28]
add edi, eax
mov eax, dword [esp + 0x74]
shr eax, cl
add esi, edi
mov eax, dword [ebp + eax*4]
mov ebp, dword [esp + 0x8c]
add eax, dword [esp + 0x7c]
mov ebp, dword [ebp + 0x80a8]
test edi, edi
jns 0x100acaae
xor edi, edi
jmp 0x100acab9
cmp edi, 0x3ff
cmovg edi, dword [esp + 0x78]
test edx, edx
jns 0x100acac1
xor edx, edx
jmp 0x100acacc
cmp edx, 0x3ff
cmovg edx, dword [esp + 0x78]
test esi, esi
jns 0x100acad4
xor esi, esi
jmp 0x100acadf
cmp esi, 0x3ff
cmovg esi, dword [esp + 0x78]
shl esi, 0xa
add esi, edx
mov edx, dword [esp + 0x70]
shl esi, 0xa
add esi, edi
mov dword [ebp + eax*4], esi
mov esi, dword [esp + 0x74]
mov ebp, dword [esp + 0x48]
add esi, ebp
mov dword [esp + 0x74], esi
cmp esi, ebx
jb 0x100aca20
mov edi, dword [esp + 0x20]
mov eax, dword [esp + 0x6c]
add edx, dword [esp + 0x60]
add eax, ebp
mov dword [esp + 0x6c], eax
mov dword [esp + 0x70], edx
cmp eax, dword [esp + 0x24]
jb 0x100aca00
jmp 0x100ab3e2
mov esi, dword [esp + 0x14]
mov ecx, dword [esp + 0x1c]
jmp 0x100ab3f5
mov esi, dword [esp + 0x28]
mov eax, dword [esp + 0x84]
xor edx, edx
dec eax
add eax, ebp
div ebp
mov edx, dword [esp + 0x8c]
cmp dword [edx + 0xc], 7
mov dword [edx + 0x80bc], eax
jne case.default.0x100acb79
cmp dword [edx + 0x5c], 0
jne case.default.0x100acb79
mov eax, dword [edx + 0x10]
dec eax
cmp eax, 6
ja case.default.0x100acb79
jmp dword [eax*4 + 0x100acdb0]
cmp edi, dword [esp + 0x24]
jae case.default.0x100acb79
mov eax, dword [esp + 0x20]
nop
mov edx, eax
mov ecx, esi
mov eax, edi
shr eax, cl
mov ecx, dword [esp + 0x2c]
mov edi, dword [ecx + eax*4]
mov eax, dword [esp + 0x20]
cmp eax, ebx
jae 0x100acbe2
mov ebp, dword [esp + 0x68]
mov eax, edx
mov ecx, esi
shr eax, cl
mov ecx, dword [esp + 0x30]
mov ecx, dword [ecx + eax*4]
mov eax, dword [esp + 0x8c]
add ecx, edi
add ecx, dword [eax + 0x80a8]
mov eax, dword [esp + 0x64]
mov al, byte [ecx + eax]
mov byte [ecx + 1], al
mov byte [ecx + ebp], al
mov ebp, dword [esp + 0x48]
add edx, ebp
cmp edx, ebx
jb 0x100acba7
mov eax, dword [esp + 0x20]
mov edi, dword [esp + 0x18]
add edi, ebp
mov dword [esp + 0x18], edi
cmp edi, dword [esp + 0x24]
jb 0x100acb90
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x78
ret
cmp edi, dword [esp + 0x24]
jae case.default.0x100acb79
mov eax, dword [esp + 0x20]
nop word [eax + eax]
mov edx, eax
mov ecx, esi
mov eax, edi
shr eax, cl
mov ecx, dword [esp + 0x2c]
mov edi, dword [ecx + eax*4]
mov eax, dword [esp + 0x20]
cmp eax, ebx
jae 0x100acc65
mov ebp, dword [esp + 0x68]
mov eax, edx
mov ecx, esi
shr eax, cl
mov ecx, dword [esp + 0x30]
mov ecx, dword [ecx + eax*4]
mov eax, dword [esp + 0x8c]
add ecx, edi
add ecx, dword [eax + 0x80a8]
mov eax, dword [esp + 0x64]
movzx eax, word [ecx + eax*2]
mov word [ecx + 2], ax
mov word [ecx + ebp*2], ax
mov ebp, dword [esp + 0x48]
add edx, ebp
cmp edx, ebx
jb 0x100acc27
mov eax, dword [esp + 0x20]
mov edi, dword [esp + 0x18]
add edi, ebp
mov dword [esp + 0x18], edi
cmp edi, dword [esp + 0x24]
jb 0x100acc10
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x78
ret
cmp edi, dword [esp + 0x24]
jae case.default.0x100acb79
mov eax, dword [esp + 0x20]
nop dword [eax]
mov edx, eax
mov ecx, esi
mov eax, edi
shr eax, cl
mov ecx, dword [esp + 0x2c]
mov edi, dword [ecx + eax*4]
mov eax, dword [esp + 0x20]
cmp eax, ebx
jae 0x100acce2
mov ebp, dword [esp + 0x68]
mov eax, edx
mov ecx, esi
shr eax, cl
mov ecx, dword [esp + 0x30]
mov ecx, dword [ecx + eax*4]
mov eax, dword [esp + 0x8c]
add ecx, edi
add ecx, dword [eax + 0x80a8]
mov eax, dword [esp + 0x64]
mov eax, dword [ecx + eax*4]
mov dword [ecx + 4], eax
mov dword [ecx + ebp*4], eax
mov ebp, dword [esp + 0x48]
add edx, ebp
cmp edx, ebx
jb 0x100acca7
mov eax, dword [esp + 0x20]
mov edi, dword [esp + 0x18]
add edi, ebp
mov dword [esp + 0x18], edi
cmp edi, dword [esp + 0x24]
jb 0x100acc90
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x78
ret