Function at 0xaab730
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov eax, 0x12ec
push edi
push esi
push ebx
call fcn.00bd0e20
mov edx, 3
sub esp, eax
mov eax, dword [esp + 0x1300]
mov esi, dword [esp + 0x130c]
sub edx, esi
cmp dword [eax + 0x21c8], 2
sete al
movzx eax, al
add eax, 4
mov dword [esp + 0x80], eax
mov eax, dword [esp + 0x1300]
cmp dword [eax + 0x21c8], 2
sete cl
sete al
movzx ebx, cl
mov ecx, 0xdfca24
lea ebx, [ebx*4 + 4]
movzx eax, al
mov dword [esp + 0x9c], ebx
mov ebx, 0xdfca2c
cmovne ecx, ebx
mov ebx, dword [esp + 0x1300]
lea eax, [eax*4 + 3]
mov dword [esp + 0x4c], eax
sete al
mov dword [esp + 0x98], ecx
mov ebx, dword [ebx + 0x98]
test ebx, ebx
mov dword [esp + 0xa0], ebx
jne 0xaab991
mov eax, dword [esp + 0x1300]
mov eax, dword [eax + esi*4 + 0x70b8]
mov dword [esp + 0x88], eax
mov eax, dword [esp + 0x1300]
lea eax, [eax + edx*4]
mov edx, dword [esp + 0x1308]
mov ecx, dword [eax + 0x6cc]
mov ebx, dword [eax + 0x6ac]
xor eax, eax
shl edx, 5
add edx, ecx
mov dword [esp + 0x60], edx
xor edi, edi
xor ebp, ebp
mov dword [esp + eax + 0x160], edi
mov dword [esp + eax + 0x164], ebp
add eax, 8
cmp eax, 0x20
jb 0xaab80f
mov edi, dword [esp + 0x98]
mov esi, dword [esp + 0x4c]
mov eax, dword [esp + 0x60]
mov ebp, dword [esp + 0x1304]
movzx edx, byte [edi + esi]
movzx ecx, word [eax]
movsx edx, word [ebp + edx*2]
mov eax, ecx
shr eax, 1
imul edx, eax
add edx, 0x7fff
cmp edx, 0xffff
ja 0xaabdb0
mov edx, esi
dec edx
mov dword [esp + 0x50], edx
movzx edx, byte [edi + edx]
movsx edx, word [ebp + edx*2]
imul edx, eax
add edx, 0x7fff
cmp edx, 0xffff
ja 0xaabdb4
mov edx, esi
sub edx, 2
mov dword [esp + 0x50], edx
movzx edx, byte [edi + edx]
movsx edx, word [ebp + edx*2]
imul edx, eax
add edx, 0x7fff
cmp edx, 0xffff
ja 0xaabdb4
mov edx, esi
sub edx, 3
mov dword [esp + 0x50], edx
movzx edx, byte [edi + edx]
movsx edx, word [ebp + edx*2]
imul edx, eax
add edx, 0x7fff
cmp edx, 0xffff
ja 0xaabdb4
mov edx, esi
sub edx, 4
cmp edx, 0xffffffff
mov dword [esp + 0x50], edx
je 0xaab97f
movzx edx, byte [edi + edx]
movsx edx, word [ebp + edx*2]
imul edx, eax
add edx, 0x7fff
cmp edx, 0xffff
ja 0xaabdb4
mov edx, esi
sub edx, 5
cmp edx, 0xffffffff
mov dword [esp + 0x50], edx
je 0xaab97f
movzx edx, byte [edi + edx]
movsx edx, word [ebp + edx*2]
imul edx, eax
add edx, 0x7fff
cmp edx, 0xffff
ja 0xaabdb4
mov edx, esi
sub edx, 6
cmp edx, 0xffffffff
mov dword [esp + 0x50], edx
je 0xaab97f
movzx edx, byte [edi + edx]
movsx edx, word [ebp + edx*2]
imul edx, eax
add edx, 0x7fff
cmp edx, 0xffff
ja 0xaabdb4
cmp esi, 7
jne 0xaab97f
movzx edx, byte [edi]
movsx edx, word [ebp + edx*2]
imul eax, edx
add eax, 0x7fff
cmp eax, 0xffff
ja 0xaacc28
mov eax, dword [esp + 0xa0]
add esp, 0x12ec
pop ebx
pop esi
pop edi
pop ebp
ret
mov ebx, dword [esp + 0x1300]
movzx eax, al
mov edi, dword [esp + 0x1300]
lea eax, [eax*8 + 8]
mov ecx, dword [esp + 0x1308]
mov ebp, dword [esp + 0x1304]
mov ebx, dword [ebx + esi*4 + 0x70b8]
mov edi, dword [edi + 0x48e4]
shl ecx, 5
mov dword [esp + 0x80], ebx
mov ebx, dword [esp + 0x1300]
lea edx, [ebx + edx*4]
mov ebx, dword [edx + 0x6ac]
mov esi, dword [edx + 0x6cc]
mov dword [esp + 0x50], ebx
mov ebx, dword [edx + 0x70c]
mov edx, edi
shl edx, 5
movzx edi, word [edx + 0xdfcae6]
add ebx, ecx
add ecx, esi
mov esi, ecx
mov ecx, eax
mov dword [esp + 0x70], edi
movzx edi, word [edx + 0xdfcaa6]
and ecx, 0xfffffffc
xor edx, edx
mov dword [esp + 0x58], edi
mov edi, dword [ebp + edx]
mov dword [esp + edx + 0xe0], edi
add edx, 4
cmp edx, ecx
jb 0xaaba16
mov ecx, dword [esp + 0x1304]
lea edi, [esp + 0xe0]
add edi, edx
add edx, ecx
xor ecx, ecx
test al, 1
jne 0xaacc09
movzx eax, word [ebx]
add eax, eax
mov dword [esp + 8], eax
movzx eax, word [esi]
shr eax, 1
mov dword [esp + 4], eax
mov eax, dword [esp + 0x1304]
mov dword [esp], eax
mov eax, dword [esp + 0x1300]
call dword [eax + 0x936c]
cmp dword [esp + 0x9c], 8
mov edi, eax
je 0xaaca1b
test eax, eax
je 0xaaca4f
mov eax, dword [esp + 0x98]
mov ebx, dword [esp + 0x1304]
movzx eax, byte [eax]
mov edi, ebx
movzx eax, word [ebx + eax*2]
mov ebx, dword [esp + 0x98]
mov word [esp + 0x160], ax
movzx eax, byte [ebx + 1]
movzx eax, word [edi + eax*2]
mov word [esp + 0x162], ax
movzx eax, byte [ebx + 2]
movzx eax, word [edi + eax*2]
mov word [esp + 0x164], ax
movzx eax, byte [ebx + 3]
movzx eax, word [edi + eax*2]
mov edi, dword [esp + 0x9c]
mov word [esp + 0x166], ax
cmp edi, 4
je 0xaabb3d
movzx eax, byte [ebx + 4]
cmp edi, 5
mov edx, dword [esp + 0x1304]
movzx eax, word [edx + eax*2]
mov word [esp + 0x168], ax
je 0xaabb3d
movzx eax, byte [ebx + 5]
cmp edi, 6
movzx eax, word [edx + eax*2]
mov word [esp + 0x16a], ax
je 0xaabb3d
movzx eax, byte [ebx + 6]
cmp edi, 8
movzx eax, word [edx + eax*2]
mov word [esp + 0x16c], ax
jne 0xaabb3d
movzx eax, byte [ebx + 7]
movzx eax, word [edx + eax*2]
mov word [esp + 0x16e], ax
mov eax, dword [esp + 0x1300]
lea ebp, [esp + 0x160]
mov edi, 0xffffffff
mov dword [esp], ebp
xor esi, esi
call dword [eax + 0x93a8]
mov edx, 0x10000000
xor ecx, ecx
mov dword [esp + 0x1e4], edx
mov dword [esp + 0x1f0], edi
xor edi, edi
mov word [esp + 0x2e0], di
mov dword [esp + 0x1e8], ecx
mov word [esp + 0x2e2], si
mov ebx, eax
mov dword [esp + 0xb0], eax
mov eax, 0xffffffff
mov dword [esp + 0x1f4], eax
mov eax, 0xffffffff
mov dword [esp + 0x200], eax
mov eax, 0xffffffff
mov dword [esp + 0x204], eax
mov eax, 0xffffffff
mov dword [esp + 0x210], eax
mov eax, 0xffffffff
mov dword [esp + 0x214], eax
xor eax, eax
mov dword [esp + 0x1e0], eax
mov eax, dword [esp + 0x1300]
mov edx, dword [eax + 0x3775]
mov edi, eax
add eax, 0x3775
mov dword [esp + 0xd0], edx
mov edx, dword [eax + 4]
test ebx, ebx
movzx eax, word [eax + 8]
mov dword [esp + 0xd4], edx
mov word [esp + 0xd8], ax
movzx eax, byte [edi + 0x3775]
mov byte [esp + 0xdc], al
movzx eax, byte [edi + 0x3779]
mov byte [esp + 0xdd], al
movzx eax, byte [edi + 0x377d]
mov byte [esp + 0xde], al
movzx eax, byte [edi + 0x377e]
mov byte [esp + 0xdf], al
js 0xaacc33
mov eax, dword [esp + 0x1308]
mov esi, dword [esp + 0x50]
mov dword [esp + 0x50], ebp
shl eax, 6
add eax, esi
mov esi, 1
mov dword [esp + 0xac], eax
mov eax, edi
mov edi, dword [esp + 0x70]
mov dword [esp + 0x70], esi
lea eax, [eax + edi + 0x3674]
mov edi, dword [esp + 0x58]
mov dword [esp + 0xa8], eax
mov eax, dword [esp + 0x1300]
lea eax, [eax + edi + 0x3674]
mov dword [esp + 0xb4], eax
mov eax, ebx
lea ebx, [esp + 0x260]
mov ebp, eax
lea edi, [esp + 0x1e0]
mov esi, ebx
mov eax, dword [esp + 0x50]
mov ebx, ebp
movsx eax, word [eax + ebp*2]
test eax, eax
jne 0xaac206
cmp dword [esp + 0x9c], 8
mov eax, ebp
je 0xaacbfd
mov ebx, dword [esp + 0xa8]
movzx eax, byte [ebx + eax]
mov ebx, dword [esp + 0x70]
movzx eax, word [eax + eax + 0xdf8be0]
imul dword [esp + 0x80]
shrd eax, edx, 4
shr edx, 4
sub dword [edi], eax
mov eax, ebx
sbb dword [edi + 4], edx
mov edx, dword [edi + 0x18]
shl eax, 2
mov dword [edi + 0x18], ebx
mov dword [esp + eax + 0x2e0], edx
mov edx, dword [edi + 0x28]
mov dword [esp + eax + 0x2e4], edx
lea edx, [ebx + 1]
mov dword [edi + 0x28], edx
mov edx, dword [edi + 0x38]
mov dword [esp + eax + 0x2e8], edx
mov eax, ebx
add eax, 2
mov dword [edi + 0x38], eax
inc eax
mov dword [esp + 0x70], eax
dec ebp
cmp ebp, 0xffffffff
jne 0xaabcad
mov eax, dword [edi]
mov edx, dword [edi + 4]
mov esi, dword [edi + 0x14]
lea ebx, [edi + 0x10]
mov ecx, dword [edi + 0x10]
cmp esi, edx
ja 0xaacc46
jb 0xaabd5c
cmp ecx, eax
jae 0xaacc46
mov eax, ecx
mov edx, esi
mov esi, dword [edi + 0x24]
lea ebp, [edi + 0x20]
mov ecx, dword [edi + 0x20]
cmp esi, edx
ja 0xaabd79
jb 0xaabd73
cmp ecx, eax
jae 0xaabd79
mov eax, ecx
mov edx, esi
mov ebx, ebp
cmp dword [edi + 0x34], edx
lea ecx, [edi + 0x30]
ja 0xaabd90
jb 0xaacc15
cmp dword [edi + 0x30], eax
jb 0xaacc15
cmp edi, ebx
je 0xaaca4f
mov esi, dword [esp + 0xb0]
test esi, esi
js 0xaac1f5
mov esi, dword [ebx + 8]
jmp 0xaac971
mov dword [esp + 0x50], esi
mov eax, dword [esp + 0x1308]
xor edx, edx
mov dword [esp + 0x7c], edx
lea ebp, [esp + 0x160]
xor edx, edx
mov dword [esp + 0x58], ebp
shl eax, 6
add eax, ebx
mov dword [esp + 0x84], eax
xor eax, eax
mov dword [esp + 0x78], eax
lea eax, [esp + 0x2e0]
mov dword [esp + 0x70], eax
mov eax, ecx
mov ecx, edx
mov edx, eax
jmp 0xaabe94
mov esi, dword [esp + 0x84]
mov esi, dword [esi]
add esi, esi
mov dword [esp + 0x68], esi
imul esi, ebx
lea edi, [esi + 0x80]
sar edi, 8
mov dword [esp + 0x74], esi
mov esi, eax
sub esi, edi
mov edi, esi
mov esi, dword [esp + 0x74]
sub esi, dword [esp + 0x68]
imul edi, edi
sub esi, 0xffffff80
sar esi, 8
sub eax, esi
mov esi, dword [esp + 0x70]
imul eax, eax
sub eax, edi
shl eax, 8
mov dword [esi + ecx*4], eax
mov esi, dword [esp + 0x4c]
lea eax, [ebx - 1]
imul eax, ebp
add esi, 0x4000
sar esi, 0x10
cwde
cmp ebx, esi
mov word [esp + ecx*2 + 0x1e0], ax
je 0xaabf10
mov edi, dword [esp + 0x58]
mov edx, eax
mov word [edi + ecx*2], ax
xor eax, eax
test edx, edx
setne al
shl eax, cl
inc ecx
or dword [esp + 0x78], eax
cmp ecx, dword [esp + 0x50]
jg 0xaabf20
mov eax, dword [esp + 0x60]
movzx edx, word [eax]
mov eax, dword [esp + 0x98]
shr edx, 1
mov ebx, dword [esp + 0x1304]
movzx eax, byte [eax + ecx]
movsx eax, word [ebx + eax*2]
mov ebx, eax
sar ebx, 0x1f
xor eax, ebx
sub eax, ebx
and ebx, 0xfffe
imul edx, eax
mov ebp, ebx
inc ebp
mov edi, ebp
lea ebx, [edx + 0x8000]
sar ebx, 0x10
imul edi, ebx
test ebx, ebx
mov dword [esp + 0x4c], edx
movsx edx, di
mov edi, dword [esp + 0x58]
mov word [esp + ecx*2 + 0x1e0], dx
mov word [esp + ecx*2 + 0x200], dx
mov word [edi + ecx*2], dx
jne 0xaabe00
mov eax, dword [esp + 0x70]
mov dword [eax + ecx*4], 0
jmp 0xaabe75
mov eax, 1
shl eax, cl
or dword [esp + 0x7c], eax
jmp 0xaabe75
mov ecx, dword [esp + 0x78]
xor edx, edx
mov eax, dword [esp + 0x1300]
mov ebp, dword [esp + 0x58]
test ecx, ecx
mov dword [eax + 0x604], edx
jne 0xaac9fb
mov eax, dword [esp + 0x80]
movzx edi, byte [eax + eax + 0xdfbb21]
mov eax, dword [esp + 0x1300]
mov dword [eax + 0x604], edi
mov eax, dword [esp + 0x88]
shl eax, 4
mov ebx, eax
mov dword [esp + 0x84], eax
mov eax, edi
imul ebx
mov dword [esp + 0x68], eax
mov eax, dword [esp + 0x78]
mov dword [esp + 0x6c], edx
nop
mov dword [esp + 0x94], eax
mov eax, dword [esp + 0x7c]
xor esi, esi
xor ebx, ebx
mov edi, 0xffffffff
mov dword [esp + 0x4c], esi
mov dword [esp + 0x8c], ebx
mov dword [esp + 0x90], eax
mov eax, dword [esp + 0x4c]
mov dword [esp + 0x88], edi
jmp 0xaac032
mov edx, eax
mov eax, dword [esp + 0x80]
movzx eax, byte [eax + eax + 0xdfbb21]
mov dword [edx + 0x604], eax
imul dword [esp + 0x84]
mov ecx, dword [esp + 0x4c]
mov esi, dword [esp + 0x58]
add eax, dword [esp + 0x60]
adc edx, dword [esp + 0x64]
mov word [ebp + ecx*2], si
cmp edx, dword [esp + 0x6c]
jl 0xaabff4
jg 0xaac020
cmp eax, dword [esp + 0x68]
jae 0xaac020
mov ecx, dword [esp + 0x74]
mov dword [esp + 0x94], edi
mov edi, dword [esp + 0x4c]
mov dword [esp + 0x8c], ebx
mov dword [esp + 0x68], eax
mov dword [esp + 0x90], ecx
mov dword [esp + 0x88], edi
mov dword [esp + 0x6c], edx
inc dword [esp + 0x4c]
mov eax, dword [esp + 0x4c]
cmp eax, dword [esp + 0x50]
jg 0xaac0e0
mov ebx, dword [esp + 0x70]
mov ebx, dword [ebx + eax*4]
test ebx, ebx
je 0xaac020
mov esi, dword [esp + 0x7c]
mov cl, al
mov edx, 1
shl edx, cl
xor esi, edx
not edx
mov dword [esp + 0x74], esi
sar esi, cl
mov eax, esi
mov esi, dword [esp + 0x4c]
and eax, 1
mov ecx, eax
shl ecx, 4
movsx edi, word [ebp + esi*2]
add ecx, esi
movsx esi, word [esp + ecx*2 + 0x1e0]
mov dword [esp + 0x58], edi
mov edi, dword [esp + 0x78]
and edx, edi
test esi, esi
setne cl
neg eax
or eax, 1
movzx edi, cl
movzx ecx, byte [esp + 0x4c]
imul ebx, eax
mov eax, dword [esp + 0x4c]
shl edi, cl
mov word [ebp + eax*2], si
mov eax, dword [esp + 0x1300]
mov ecx, ebx
sar ecx, 0x1f
mov dword [esp + 0x64], ecx
xor ecx, ecx
or edi, edx
mov dword [esp + 0x60], ebx
mov dword [eax + 0x604], ecx
je 0xaabfb3
mov ecx, dword [esp + 0x80]
mov edx, ebp
call fcn.00a9b1b0
mov eax, dword [esp + 0x1300]
mov eax, dword [eax + 0x604]
jmp 0xaabfca
mov ecx, dword [esp + 0x88]
cmp ecx, 0xffffffff
je 0xaac13e
mov eax, dword [esp + 0x8c]
mov ebx, dword [esp + 0x90]
cdq
sub dword [esp + 0x68], eax
mov eax, ebx
mov dword [esp + 0x7c], ebx
sbb dword [esp + 0x6c], edx
mov edx, ecx
sar eax, cl
and eax, 1
shl eax, 4
add eax, ecx
movzx eax, word [esp + eax*2 + 0x1e0]
mov word [esp + ecx*2 + 0x160], ax
mov eax, dword [esp + 0x94]
xor ecx, ecx
mov dword [esp + edx*4 + 0x2e0], ecx
mov dword [esp + 0x78], eax
jmp 0xaabf80
mov edx, dword [esp + 0x78]
test edx, edx
je 0xaab97f
mov ebx, dword [esp + 0x98]
mov edi, dword [esp + 0x1304]
mov edx, dword [esp + 0x160]
movzx eax, byte [ebx]
mov word [edi + eax*2], dx
movzx edx, word [esp + 0x162]
movzx eax, byte [ebx + 1]
mov word [edi + eax*2], dx
mov edx, dword [esp + 0x164]
movzx eax, byte [ebx + 2]
mov word [edi + eax*2], dx
movzx edx, word [esp + 0x166]
movzx eax, byte [ebx + 3]
mov word [edi + eax*2], dx
mov edi, dword [esp + 0x9c]
cmp edi, 4
je 0xaac1f5
movzx eax, byte [ebx + 4]
cmp edi, 5
mov edx, dword [esp + 0x168]
mov ecx, dword [esp + 0x1304]
mov word [ecx + eax*2], dx
je 0xaac1f5
movzx eax, byte [ebx + 5]
cmp edi, 6
movzx edx, word [esp + 0x16a]
mov word [ecx + eax*2], dx
je 0xaac1f5
movzx eax, byte [ebx + 6]
cmp edi, 8
mov edx, dword [esp + 0x16c]
mov word [ecx + eax*2], dx
jne 0xaac1f5
movzx eax, byte [ebx + 7]
movzx edx, word [esp + 0x16e]
mov word [ecx + eax*2], dx
mov eax, 1
mov dword [esp + 0xa0], eax
jmp 0xaab97f
mov edx, dword [esp + 0x98]
mov dword [esi], 0xffffffff
mov dword [esi + 4], 0xffffffff
mov dword [esi + 0x10], 0xffffffff
movzx edx, byte [edx + ebp]
mov dword [esi + 0x14], 0xffffffff
mov dword [esi + 0x20], 0xffffffff
mov dword [esi + 0x24], 0xffffffff
movsx edx, word [esp + edx*2 + 0xe0]
mov dword [esi + 0x30], 0xffffffff
mov dword [esi + 0x34], 0xffffffff
mov dword [esi + 0x40], 0xffffffff
mov ecx, edx
sar ecx, 0x1f
xor edx, ecx
sub edx, ecx
mov dword [esp + 0x58], edx
cdq
xor eax, edx
sub eax, edx
cmp ebp, dword [esp + 0x4c]
mov dword [esp + 0x60], eax
mov dword [esi + 0x44], 0xffffffff
mov dword [esi + 0x50], 0xffffffff
mov dword [esi + 0x54], 0xffffffff
mov dword [esi + 0x60], 0xffffffff
mov dword [esi + 0x64], 0xffffffff
mov dword [esi + 0x70], 0xffffffff
mov dword [esi + 0x74], 0xffffffff
jge 0xaaca5d
cmp dword [esp + 0x9c], 8
je 0xaacc1c
mov eax, dword [esp + 0xa8]
movzx eax, byte [eax + ebx]
mov edx, eax
movzx eax, word [eax + eax + 0xdf8be0]
mov dword [esp + 0x78], eax
mov dword [esp + 0xc4], eax
mov al, dl
xor al, 1
movzx eax, al
movzx eax, word [eax + eax + 0xdf8be0]
mov ecx, eax
mov eax, dword [esp + 0xb4]
movzx eax, byte [eax + ebx]
mov edx, eax
movzx eax, word [eax + eax + 0xdf8be0]
add eax, ecx
mov dword [esp + 0xc8], eax
mov al, dl
xor al, 1
movzx eax, al
movzx eax, word [eax + eax + 0xdf8be0]
add eax, ecx
mov ecx, dword [esp + 0x60]
mov dword [esp + 0xcc], eax
mov ebx, dword [esp + 0xac]
mov eax, ecx
dec eax
mov dword [esp + 0x7c], eax
mov ebx, dword [ebx]
add ebx, ebx
mov edx, ebx
mov ebx, eax
imul ebx, edx
mov dword [esp + 0x74], edx
mov edx, dword [esp + 0x58]
lea eax, [ebx + 0x80]
sar eax, 8
sub edx, eax
mov eax, edx
imul edx
shld edx, eax, 8
shl eax, 8
mov dword [esp + 0x68], eax
mov eax, dword [esp + 0x74]
mov dword [esp + 0x6c], edx
mov edx, dword [esp + 0x58]
lea eax, [eax + ebx + 0x80]
sar eax, 8
sub edx, eax
mov eax, edx
imul edx
shld edx, eax, 8
shl eax, 8
cmp ecx, 1
mov dword [esp + 0x58], eax
mov dword [esp + 0x5c], edx
je 0xaaca85
cmp ecx, 2
mov ebx, esi
mov esi, dword [esp + 0x70]
mov dword [esp + 0x4c], ebp
mov ebp, dword [esp + 0x50]
jne 0xaacb48
mov ecx, dword [esp + 0x80]
lea eax, [esp + 0xd0]
mov edx, dword [esp + 0x6c]
mov dword [esp + 0xa4], eax
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x68]
mov dword [esp + 0x1c], ecx
lea ecx, [esp + 0x2e0]
mov dword [esp + 0x18], esi
mov esi, ecx
mov dword [esp + 0x70], ecx
mov dword [esp + 0x14], ecx
lea ecx, [esp + 0xc4]
mov dword [esp + 8], ecx
mov dword [esp + 4], edx
mov dword [esp + 0x10], edi
mov dword [esp + 0xc], ebx
mov dword [esp], eax
mov dword [esp + 0xa0], ecx
call fcn.00a90700
mov edx, dword [esp + 0xa4]
mov ecx, dword [esp + 0xa0]
mov dword [esp + 0x14], esi
mov dword [esp + 0x10], edi
mov dword [esp + 0x20], edx
mov edx, dword [esp + 0x80]
mov dword [esp + 8], ecx
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x58]
mov dword [esp + 0xc], ebx
mov dword [esp + 0x1c], edx
mov edx, dword [esp + 0x5c]
mov dword [esp], eax
mov dword [esp + 4], edx
mov ecx, edx
mov edx, eax
mov eax, 2
call fcn.00a948c0
mov dword [esp + 0xb8], ebp
mov ebp, edi
mov edi, eax
dec dword [esp + 0x4c]
mov eax, dword [esp + 0x4c]
cmp eax, 0xffffffff
je 0xaac8d7
movsx eax, word [esp + eax*2 + 0x160]
test eax, eax
jne 0xaac5b8
mov eax, dword [ebx + 0x18]
mov dword [esp + 0x84], edi
mov dword [esp + 0xbc], ebp
mov dword [esp + 0x78], eax
mov eax, dword [ebx + 0x28]
mov dword [esp + 0x7c], eax
mov eax, dword [ebx + 0x38]
mov dword [esp + 0x74], eax
mov eax, dword [ebx + 0x48]
mov dword [esp + 0x68], eax
mov eax, dword [ebx + 0x58]
mov dword [esp + 0x60], eax
mov eax, dword [ebx + 0x68]
mov dword [esp + 0x58], eax
mov eax, dword [ebx + 0x78]
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x70]
lea edx, [eax + edi*4]
mov eax, dword [esp + 0x78]
lea ebp, [edi + 2]
mov ecx, dword [esp + 0x7c]
dec dword [esp + 0x4c]
mov dword [edx], eax
lea eax, [edi + 1]
mov dword [esp + 0x88], eax
mov dword [ebx + 0x28], eax
mov eax, dword [esp + 0x74]
mov dword [edx + 4], ecx
mov ecx, dword [esp + 0x68]
mov dword [ebx + 0x18], edi
mov dword [ebx + 0x38], ebp
mov dword [edx + 8], eax
lea eax, [edi + 3]
mov dword [esp + 0x8c], eax
mov dword [ebx + 0x48], eax
lea eax, [edi + 4]
mov esi, eax
mov dword [esp + 0x90], eax
mov eax, dword [esp + 0x60]
mov dword [edx + 0xc], ecx
mov dword [ebx + 0x58], esi
lea esi, [edi + 5]
mov dword [ebx + 0x68], esi
mov dword [edx + 0x10], eax
mov eax, dword [esp + 0x58]
mov dword [edx + 0x14], eax
lea eax, [edi + 6]
add edi, 7
mov ecx, eax
mov dword [esp + 0x94], eax
mov eax, dword [esp + 0x50]
mov dword [ebx + 0x78], ecx
mov dword [edx + 0x18], eax
mov eax, dword [esp + 0x4c]
cmp eax, 0xffffffff
je 0xaac8d7
mov ecx, eax
mov eax, dword [esp + 0xb8]
add edx, 0x1c
mov dword [esp + 0x58], esi
mov esi, dword [esp + 0x94]
mov dword [esp + 0x74], ebp
movsx eax, word [eax + ecx*2]
mov ecx, dword [esp + 0x84]
mov dword [esp + 0x50], esi
test eax, eax
mov dword [esp + 0x78], ecx
mov ecx, dword [esp + 0x88]
mov dword [esp + 0x7c], ecx
mov ecx, dword [esp + 0x8c]
mov dword [esp + 0x68], ecx
mov ecx, dword [esp + 0x90]
mov dword [esp + 0x60], ecx
jne 0xaac5b1
mov dword [esp + 0x84], edi
jmp 0xaac4c7
mov ebp, dword [esp + 0xbc]
mov ecx, dword [esp + 0x4c]
mov esi, dword [esp + 0x98]
mov dword [ebp + 0x10], 0xffffffff
mov dword [ebp + 0x14], 0xffffffff
mov edx, ecx
movzx ecx, byte [esi + ecx]
mov dword [ebp + 0x20], 0xffffffff
mov dword [ebp + 0x24], 0xffffffff
mov dword [ebp + 0x30], 0xffffffff
movsx esi, word [esp + ecx*2 + 0xe0]
mov dword [ebp + 0x34], 0xffffffff
mov dword [ebp + 0x40], 0xffffffff
mov dword [ebp + 0x44], 0xffffffff
mov ecx, esi
sar ecx, 0x1f
xor esi, ecx
sub esi, ecx
mov ecx, eax
sar ecx, 0x1f
xor eax, ecx
mov dword [esp + 0x50], esi
mov esi, eax
sub esi, ecx
cmp dword [esp + 0x9c], 8
mov dword [ebp + 0x50], 0xffffffff
mov dword [ebp + 0x54], 0xffffffff
mov dword [ebp + 0x60], 0xffffffff
mov dword [ebp + 0x64], 0xffffffff
mov dword [ebp + 0x70], 0xffffffff
mov dword [ebp + 0x74], 0xffffffff
je 0xaac8cb
mov eax, dword [esp + 0xa8]
movzx ecx, byte [eax + edx]
mov eax, ecx
movzx ecx, word [ecx + ecx + 0xdf8be0]
xor al, 1
movzx eax, al
movzx eax, word [eax + eax + 0xdf8be0]
mov dword [esp + 0xc4], ecx
mov dword [esp + 0x68], ecx
mov ecx, dword [esp + 0xb4]
movzx edx, byte [ecx + edx]
movzx edx, word [edx + edx + 0xdf8be0]
add edx, eax
mov dword [esp + 0xc8], edx
mov edx, dword [esp + 0xac]
lea eax, [esi - 1]
mov ecx, eax
mov dword [esp + 0x74], eax
mov edx, dword [edx]
add edx, edx
imul ecx, edx
mov dword [esp + 0x58], edx
mov edx, dword [esp + 0x50]
lea eax, [ecx + 0x80]
sar eax, 8
sub edx, eax
mov eax, edx
imul edx
shld edx, eax, 8
shl eax, 8
mov dword [esp + 0x60], eax
mov eax, dword [esp + 0x58]
mov dword [esp + 0x64], edx
mov edx, dword [esp + 0x50]
lea eax, [eax + ecx + 0x80]
sar eax, 8
sub edx, eax
mov eax, edx
imul edx
shld edx, eax, 8
shl eax, 8
cmp esi, 1
mov dword [esp + 0x50], eax
mov dword [esp + 0x54], edx
je 0xaac84b
cmp esi, 2
jne 0xaac7aa
mov eax, dword [esp + 0x80]
mov edx, dword [esp + 0x70]
mov esi, dword [esp + 0xa4]
mov ecx, dword [esp + 0xa0]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x60]
mov dword [esp + 8], edx
mov edx, dword [esp + 0x64]
mov dword [esp + 0xc], edi
mov dword [esp + 0x14], esi
mov dword [esp + 4], ebx
mov dword [esp], ebp
call fcn.00a94370
mov edx, dword [esp + 0x70]
mov ecx, 8
mov edi, dword [esp + 0x80]
mov dword [esp + 0x1c], ecx
mov ecx, dword [esp + 0x54]
mov dword [esp + 0x18], esi
mov dword [esp + 0xc], edx
mov edx, dword [esp + 0x50]
mov dword [esp + 0x14], edi
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0xa0]
mov dword [esp + 8], ebx
mov dword [esp + 4], ebp
mov dword [esp], eax
mov eax, 2
call fcn.00a94cd0
mov edi, eax
mov eax, ebx
mov ebx, ebp
mov ebp, eax
jmp 0xaac460
mov eax, 8
mov edx, dword [esp + 0x80]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0xa4]
mov ecx, dword [esp + 0x70]
mov dword [esp + 0x10], edi
mov dword [esp + 0x14], edx
mov edx, dword [esp + 0x60]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0xa0]
mov dword [esp + 0xc], ecx
mov ecx, dword [esp + 0x64]
mov dword [esp + 8], ebx
mov dword [esp + 4], ebp
mov dword [esp], eax
mov eax, dword [esp + 0x74]
call fcn.00a94cd0
mov edx, 8
mov ecx, dword [esp + 0x70]
mov dword [esp + 0x1c], edx
mov edx, dword [esp + 0x80]
mov edi, dword [esp + 0xa4]
mov dword [esp + 8], ebx
mov dword [esp + 0xc], ecx
mov ecx, dword [esp + 0x54]
mov dword [esp + 0x14], edx
mov edx, dword [esp + 0x50]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0xa0]
mov dword [esp + 0x18], edi
mov dword [esp + 4], ebp
mov dword [esp], eax
mov eax, esi
call fcn.00a94cd0
mov edi, eax
jmp 0xaac79f
sub eax, dword [esp + 0x60]
mov ecx, dword [esp + 0x70]
sbb edx, dword [esp + 0x64]
mov dword [esp + 0x50], eax
mov eax, ebp
mov dword [esp], edi
mov dword [esp + 0x54], edx
mov edx, ebx
call fcn.00a94280
mov esi, dword [esp + 0x50]
mov edi, dword [esp + 0x54]
mov dword [esp + 4], ebx
mov dword [esp], ebp
mov ecx, eax
mov eax, dword [esp + 0x68]
imul dword [esp + 0x80]
mov dword [esp + 0xc], ecx
mov ecx, dword [esp + 0xa0]
shrd eax, edx, 4
shr edx, 4
sub esi, eax
sbb edi, edx
mov eax, esi
mov esi, dword [esp + 0xa4]
mov edx, edi
mov edi, dword [esp + 0x80]
mov dword [esp + 0x14], esi
mov dword [esp + 0x10], edi
mov edi, dword [esp + 0x70]
mov dword [esp + 8], edi
call fcn.00a94370
mov edi, eax
jmp 0xaac79f
movzx edx, byte [edx + 0xdfcb20]
jmp 0xaac659
mov eax, dword [ebx + 0x14]
lea edx, [ebx + 0x10]
mov esi, dword [ebx + 0x24]
lea edi, [ebx + 0x20]
mov ebp, dword [ebx + 0x10]
mov ecx, dword [ebx + 0x20]
cmp esi, eax
ja 0xaac8fb
jb 0xaac9e5
cmp ecx, ebp
jb 0xaac9e5
mov esi, dword [ebx + 0x34]
lea edi, [ebx + 0x30]
mov ecx, dword [ebx + 0x30]
cmp esi, eax
ja 0xaac916
jb 0xaac9f0
cmp ecx, ebp
jb 0xaac9f0
mov esi, dword [ebx + 0x44]
lea edi, [ebx + 0x40]
mov ecx, dword [ebx + 0x40]
cmp esi, eax
ja 0xaac931
jb 0xaac9c0
cmp ecx, ebp
jb 0xaac9c0
mov esi, dword [ebx + 0x54]
lea edi, [ebx + 0x50]
mov ecx, dword [ebx + 0x50]
cmp esi, eax
ja 0xaac94c
jb 0xaac9cb
cmp ecx, ebp
jb 0xaac9cb
mov esi, dword [ebx + 0x64]
lea edi, [ebx + 0x60]
mov ecx, dword [ebx + 0x60]
cmp esi, eax
ja 0xaac95f
jb 0xaac9d6
cmp ecx, ebp
jb 0xaac9d6
cmp dword [ebx + 0x74], eax
lea ecx, [ebx + 0x70]
ja 0xaac96e
jb 0xaac9e1
cmp dword [ebx + 0x70], ebp
jb 0xaac9e1
mov esi, dword [edx + 8]
mov ebp, dword [esp + 0x1304]
xor ebx, ebx
lea esi, [esi]
mov eax, dword [esp + 0x98]
movzx eax, byte [eax + ebx]
inc ebx
lea ecx, [ebp + eax*2]
movzx eax, word [esp + esi*4 + 0x2e2]
movsx edx, word [ecx]
movzx esi, word [esp + esi*4 + 0x2e0]
mov edi, edx
sar edi, 0x1f
xor eax, edi
shr edx, 0x1f
add eax, edx
cmp dword [esp + 0xb0], ebx
mov word [ecx], ax
jge 0xaac980
jmp 0xaac1f5
mov ebp, ecx
mov eax, esi
mov edx, edi
jmp 0xaac931
mov ebp, ecx
mov eax, esi
mov edx, edi
jmp 0xaac94c
mov ebp, ecx
mov eax, esi
mov edx, edi
jmp 0xaac95f
mov edx, ecx
jmp 0xaac96e
mov ebp, ecx
mov eax, esi
mov edx, edi
jmp 0xaac8fb
mov ebp, ecx
mov eax, esi
mov edx, edi
jmp 0xaac916
mov ecx, dword [esp + 0x80]
mov edx, ebp
call fcn.00a9b1b0
mov eax, dword [esp + 0x1300]
mov edi, dword [eax + 0x604]
jmp 0xaabf5b
movzx eax, word [ebx]
add eax, eax
mov dword [esp + 8], eax
movzx eax, word [esi]
shr eax, 1
mov dword [esp + 4], eax
mov eax, dword [esp + 0x1304]
add eax, 8
mov dword [esp], eax
mov eax, dword [esp + 0x1300]
call dword [eax + 0x936c]
or edi, eax
jne 0xaaba85
xor ebp, ebp
mov dword [esp + 0xa0], ebp
jmp 0xaab97f
xor edx, edx
xor ecx, ecx
mov dword [esp + 0xcc], edx
xor ebx, ebx
xor edx, edx
mov dword [esp + 0xc8], ecx
mov ecx, eax
mov dword [esp + 0xc4], ebx
mov dword [esp + 0x78], edx
jmp 0xaac321
mov eax, dword [esp + 0x78]
imul dword [esp + 0x80]
mov dword [esp], edi
shrd eax, edx, 4
mov ecx, eax
mov eax, dword [esp + 0x58]
shr edx, 4
sub eax, dword [esp + 0x68]
mov ebx, edx
mov edx, dword [esp + 0x5c]
sbb edx, dword [esp + 0x6c]
mov dword [esp + 0x60], eax
mov eax, ecx
mov dword [esp + 0x58], ecx
mov ecx, dword [esp + 0x70]
neg eax
mov dword [esp + 0x64], edx
mov edx, ebx
adc edx, 0
neg edx
mov dword [esp + 8], ecx
lea ecx, [esp + 0x2e0]
mov dword [esp + 4], ecx
mov ecx, esi
mov dword [esp + 0x5c], ebx
lea ebx, [esp + 0xd0]
call fcn.00a90620
mov edx, dword [esp + 0x64]
mov dword [esp + 0x20], ebx
mov ebx, dword [esp + 0x80]
mov dword [esp + 0x10], edi
mov dword [esp + 0xc], esi
mov dword [esp + 0x1c], ebx
lea ebx, [esp + 0x2e0]
mov ecx, eax
mov eax, dword [esp + 0x60]
sub eax, dword [esp + 0x58]
mov dword [esp + 0x18], ecx
lea ecx, [esp + 0xc4]
sbb edx, dword [esp + 0x5c]
mov dword [esp + 0x14], ebx
mov dword [esp + 8], ecx
mov dword [esp], eax
mov dword [esp + 4], edx
call fcn.00a90700
mov dword [esp + 0x70], eax
mov eax, edi
mov edi, esi
mov esi, eax
jmp 0xaabd32
mov ecx, dword [esp + 0x80]
lea eax, [esp + 0xd0]
mov edx, dword [esp + 0x6c]
mov dword [esp + 0xa4], eax
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x68]
mov dword [esp + 0x1c], ecx
lea ecx, [esp + 0x2e0]
mov dword [esp + 0x18], esi
mov esi, ecx
mov dword [esp + 0x70], ecx
mov dword [esp + 0x14], ecx
lea ecx, [esp + 0xc4]
mov dword [esp + 0xa0], ecx
mov dword [esp + 8], ecx
mov ecx, edx
mov dword [esp], eax
mov dword [esp + 4], edx
mov edx, eax
mov eax, dword [esp + 0x7c]
mov dword [esp + 0x10], edi
mov dword [esp + 0xc], ebx
call fcn.00a948c0
mov edx, dword [esp + 0xa4]
mov ecx, dword [esp + 0xa0]
mov dword [esp + 0x14], esi
mov dword [esp + 0x10], edi
mov dword [esp + 0x20], edx
mov edx, dword [esp + 0x80]
mov dword [esp + 8], ecx
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x58]
mov dword [esp + 0xc], ebx
mov dword [esp + 0x1c], edx
mov edx, dword [esp + 0x5c]
mov dword [esp], eax
mov dword [esp + 4], edx
mov ecx, edx
mov edx, eax
mov eax, dword [esp + 0x60]
jmp 0xaac450
movzx eax, byte [ebp + 0xdfcb20]
jmp 0xaabccf
movzx eax, byte [edx + ecx]
mov byte [edi + ecx], al
jmp 0xaaba44
mov ebx, ecx
jmp 0xaabd90
movzx ebx, byte [ebp + 0xdfcb20]
jmp 0xaac2b6
xor esi, esi
mov dword [esp + 0x50], esi
jmp 0xaabdb4
xor eax, eax
mov edx, 0x10000000
lea edi, [esp + 0x1e0]
jmp 0xaabd41
mov ebx, edi
jmp 0xaabd60