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

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x170
mov ebp, eax
mov dword [esp + 0x1c], edx
mov dword [esp + 0x18], ecx
mov edi, dword [esp + 0x188]
mov eax, dword [eax + 0x1fc8]
mov dword [esp + 0x48], eax
mov edx, dword [ebp + 0x1fcc]
mov dword [esp + 0x4c], edx
cmp dword [ebp + 0x27cc], 1
sbb ecx, ecx
add ecx, 2
mov esi, eax
shl esi, 4
mov edx, edi
shl edx, 5
lea edx, [ebp + edx]
mov eax, dword [edx + 0x1cf4]
sar eax, cl
lea esi, [esi + eax + 8]
mov ebx, dword [edx + 0x1cf8]
sar ebx, cl
mov eax, dword [esp + 0x4c]
shl eax, 4
add ebx, eax
mov edx, dword [ebp + 0xb8]
push 4
push edx
mov eax, dword [esp + 0x50]
and eax, 3
lea eax, [ebx + eax*4]
imul eax, edx
lea eax, [esi + eax + 0x40]
mov ecx, dword [esp + 0x194]
add eax, dword [ecx]
push eax
call dword [ebp + 0x1700]
mov eax, dword [esp + 0x198]
add eax, 8
mov dword [esp + 0x64], eax
mov edx, dword [esp + 0x198]
add edx, 4
mov dword [esp + 0x60], edx
mov ecx, dword [esp + 0x198]
mov edx, dword [ecx + 4]
add esp, 0xc
push 2
mov eax, dword [ecx + 8]
sub eax, edx
push eax
sar esi, 1
sar ebx, 1
mov eax, dword [ebp + 0x1fc8]
and eax, 7
add ebx, eax
imul ebx, dword [ebp + 0xbc]
lea esi, [esi + ebx + 0x40]
add edx, esi
push edx
call dword [ebp + 0x1700]
add esp, 0x10
cmp dword [esp + 0x194], 0
jne 0x48018b
cmp dword [ebp + 0x271c], 0
je 0x48018b
cmp dword [ebp + 0xad0], 3
je 0x48018b
mov esi, dword [ebp + 0xa0]
imul esi, dword [ebp + 0x1fcc]
add esi, dword [ebp + 0x1fc8]
mov edi, dword [ebp + 0xa4]
mov ebx, dword [esp + 0x44]
shl ebx, 1
mov dword [esp + 0x1c], ebx
mov eax, dword [esp + 0x48]
shl eax, 1
mov dword [esp + 0x20], eax
imul eax, edi
lea ebx, [eax + ebx]
lea ecx, [esp + 0x118]
lea eax, [ebx*4]
add eax, dword [ebp + 0x820]
mov edx, dword [eax]
mov dword [esp + 0x118], edx
mov eax, dword [eax + 4]
mov dword [esp + 0x11c], eax
lea eax, [ebx + edi]
shl eax, 2
add eax, dword [ebp + 0x820]
mov edx, dword [eax]
mov dword [esp + 0x128], edx
mov edx, dword [eax + 4]
mov dword [esp + 0x12c], edx
mov edx, dword [eax]
mov dword [esp + 0x138], edx
mov eax, dword [eax + 4]
mov dword [esp + 0x13c], eax
cmp dword [esp + 0x48], 0
je 0x47f293
mov edx, esi
sub edx, dword [ebp + 0xa0]
mov eax, dword [ebp + 0x828]
test byte [eax + edx*4], 7
je 0x47f2a1
mov eax, dword [ecx]
mov dword [esp + 0x108], eax
mov eax, dword [ecx + 4]
jmp 0x47f2ba
mov eax, ebx
sub eax, edi
shl eax, 2
add eax, dword [ebp + 0x820]
mov edx, dword [eax]
mov dword [esp + 0x108], edx
mov eax, dword [eax + 4]
mov dword [esp + 0x10c], eax
cmp dword [esp + 0x44], 0
je 0x47f2e0
mov ecx, 1
mov eax, ecx
sub eax, esi
mov edx, dword [ebp + 0x828]
imul eax, eax, 0xfffffffc
test byte [edx + eax], 7
je 0x47f2f7
mov eax, dword [esp + 0x118]
mov dword [esp + 0x114], eax
mov eax, dword [esp + 0x128]
jmp 0x47f313
sub ecx, ebx
mov edx, dword [ebp + 0x820]
imul eax, ecx, 0xfffffffc
mov eax, dword [eax + edx]
mov dword [esp + 0x114], eax
lea eax, [ebx + edi - 1]
mov eax, dword [edx + eax*4]
mov dword [esp + 0x124], eax
mov eax, dword [esp + 0x44]
inc eax
cmp eax, dword [ebp + 0x98]
jge 0x47f334
mov eax, dword [ebp + 0x828]
test byte [eax + esi*4 + 4], 7
je 0x47f34b
mov eax, dword [esp + 0x11c]
mov dword [esp + 0x120], eax
mov eax, dword [esp + 0x12c]
jmp 0x47f363
mov edx, dword [ebp + 0x820]
mov eax, dword [edx + ebx*4 + 8]
mov dword [esp + 0x120], eax
lea eax, [ebx + edi + 2]
mov eax, dword [edx + eax*4]
mov dword [esp + 0x130], eax
mov edx, dword [esp + 0x18c]
add edx, 0x10
mov dword [esp + 0x24], edx
mov dword [esp + 0xb0], 0
mov dword [esp + 0xb4], 0
mov dword [esp + 0x4c], 0
mov ecx, dword [esp + 0x4c]
and ecx, 1
lea ebx, [ecx + 1]
mov esi, dword [esp + 0x4c]
sar esi, 1
lea edx, [esi*4 + 4]
lea edi, [edx + ebx]
mov ax, word [esp + edi*4 + 0x106]
mov word [esp + 0x15a], ax
lea eax, [ebx + esi*4]
mov dword [esp + 4], eax
mov eax, dword [esp + eax*4 + 0x104]
mov word [esp + 0x15c], ax
mov eax, dword [esp + 4]
mov ax, word [esp + eax*4 + 0x106]
mov word [esp + 0x15e], ax
lea eax, [edx + ecx]
mov dword [esp + 4], eax
mov eax, dword [esp + eax*4 + 0x104]
mov word [esp + 0x160], ax
mov eax, dword [esp + 4]
mov ax, word [esp + eax*4 + 0x106]
mov word [esp + 0x162], ax
lea eax, [ecx + edx + 2]
mov edx, dword [esp + eax*4 + 0x104]
mov word [esp + 0x164], dx
mov ax, word [esp + eax*4 + 0x106]
mov word [esp + 0x166], ax
lea eax, [ebx + esi*4 + 8]
mov edx, dword [esp + eax*4 + 0x104]
mov bx, word [esp + eax*4 + 0x106]
mov eax, dword [esp + edi*4 + 0x104]
mov word [esp + 0x158], ax
mov word [esp + 0x168], dx
mov word [esp + 0x16a], bx
mov ebx, dword [esp + 0x20]
lea eax, [esi + ebx]
shl eax, 3
mov dword [esp + 0x28], eax
mov edx, dword [esp + 0x1c]
lea eax, [ecx + edx]
shl eax, 3
mov dword [esp + 0x2c], eax
mov ebx, dword [esp + 0x188]
mov edi, dword [ebx]
mov eax, dword [ebp + 0xb8]
shl eax, 3
imul eax, esi
lea ecx, [eax + ecx*8]
add ecx, dword [esp + 0x18]
mov dword [esp + 0x30], ecx
xor ebx, ebx
lea esi, [esp + 0x158]
test ebx, ebx
je 0x47f4df
mov ax, word [esi + ebx*4]
cmp ax, word [esp + 0x158]
jne 0x47f4df
mov ax, word [esi + ebx*4 + 2]
cmp ax, word [esp + 0x15a]
jne 0x47f4df
mov eax, dword [esp + 0x144]
mov dword [esp + ebx*4 + 0x144], eax
jmp 0x47f548
mov ecx, dword [ebp + 0xb8]
lea eax, [ecx*8]
mov edx, ebx
sar edx, 1
imul eax, edx
mov edx, ebx
and edx, 1
lea edx, [eax + edx*8]
add edx, dword [ebp + 0xaa8]
mov dword [esp + ebx*4 + 0x144], edx
push eax
push eax
movsx eax, word [esi + ebx*4 + 2]
push eax
movsx eax, word [esi + ebx*4]
push eax
push dword [esp + 0x34]
push 8
push 8
push dword [ebp + 0xb0]
push dword [ebp + 0xac]
push ecx
push dword [ebp + 8]
push dword [ebp + 4]
push dword [esp + 0x58]
push dword [esp + 0x60]
push 0
push 0
mov ecx, edi
mov eax, ebp
call fcn.0047e2af
add esp, 0x40
inc ebx
cmp ebx, 5
jne 0x47f4ae
mov esi, dword [ebp + 0xb8]
mov dword [esp + 0xe8], esi
mov ebx, dword [esp + 0x148]
mov eax, dword [esp + 0x14c]
mov dword [esp + 0x88], eax
mov edi, dword [esp + 0x144]
mov edx, dword [esp + 0x150]
mov dword [esp + 0x84], edx
mov ecx, dword [esp + 0x154]
mov dword [esp + 0x80], ecx
movzx edx, byte [ebx]
movzx eax, byte [eax]
lea edx, [edx + eax + 2]
movzx eax, byte [edi]
lea eax, [edx + eax*2]
shr eax, 2
mov esi, dword [esp + 0x30]
mov byte [esi], al
mov eax, dword [esp + 0x88]
movzx edx, byte [eax + 1]
movzx eax, byte [ebx + 1]
lea eax, [edx + eax*2 + 4]
movzx edx, byte [edi + 1]
lea edx, [edx + edx*4]
add eax, edx
sar eax, 3
mov byte [esi + 1], al
mov ecx, dword [esp + 0x88]
movzx edx, byte [ecx + 2]
movzx eax, byte [ebx + 2]
lea eax, [edx + eax*2 + 4]
movzx edx, byte [edi + 2]
lea edx, [edx + edx*4]
add eax, edx
sar eax, 3
mov byte [esi + 2], al
movzx edx, byte [ecx + 3]
movzx eax, byte [ebx + 3]
lea eax, [edx + eax*2 + 4]
movzx edx, byte [edi + 3]
lea edx, [edx + edx*4]
add eax, edx
sar eax, 3
mov byte [esi + 3], al
mov esi, dword [esp + 0xe8]
add esi, 2
mov dword [esp + 0xa0], esi
mov eax, dword [esp + 0xe8]
movzx edx, byte [ecx + eax + 2]
movzx eax, byte [ebx + eax + 2]
lea eax, [edx + eax*2 + 4]
mov ecx, dword [esp + 0xe8]
movzx edx, byte [edi + ecx + 2]
lea edx, [edx + edx*4]
add eax, edx
sar eax, 3
mov esi, dword [esp + 0x30]
mov byte [esi + ecx + 2], al
add ecx, 3
mov dword [esp + 0x9c], ecx
mov ecx, dword [esp + 0x88]
mov eax, dword [esp + 0xe8]
movzx edx, byte [ecx + eax + 3]
movzx eax, byte [ebx + eax + 3]
lea eax, [edx + eax*2 + 4]
mov esi, dword [esp + 0xe8]
movzx edx, byte [edi + esi + 3]
lea edx, [edx + edx*4]
add eax, edx
sar eax, 3
mov edx, dword [esp + 0x30]
mov byte [edx + esi + 3], al
mov ecx, dword [esp + 0x84]
movzx edx, byte [ecx + 4]
movzx eax, byte [ebx + 4]
lea eax, [edx + eax*2 + 4]
movzx edx, byte [edi + 4]
lea edx, [edx + edx*4]
add eax, edx
sar eax, 3
mov esi, dword [esp + 0x30]
mov byte [esi + 4], al
movzx edx, byte [ecx + 5]
movzx eax, byte [ebx + 5]
lea eax, [edx + eax*2 + 4]
movzx edx, byte [edi + 5]
lea edx, [edx + edx*4]
add eax, edx
sar eax, 3
mov byte [esi + 5], al
mov eax, dword [esp + 0xe8]
add eax, 4
mov dword [esp + 0x98], eax
mov esi, dword [esp + 0xe8]
movzx edx, byte [ecx + esi + 4]
movzx eax, byte [ebx + esi + 4]
lea eax, [edx + eax*2 + 4]
movzx edx, byte [edi + esi + 4]
lea edx, [edx + edx*4]
add eax, edx
sar eax, 3
mov edx, dword [esp + 0x30]
mov byte [edx + esi + 4], al
add esi, 5
mov dword [esp + 0x94], esi
mov esi, dword [esp + 0xe8]
movzx edx, byte [ecx + esi + 5]
movzx eax, byte [ebx + esi + 5]
lea eax, [edx + eax*2 + 4]
movzx edx, byte [edi + esi + 5]
lea edx, [edx + edx*4]
add eax, edx
sar eax, 3
mov edx, dword [esp + 0x30]
mov byte [edx + esi + 5], al
movzx edx, byte [ecx + 6]
movzx eax, byte [ebx + 6]
lea eax, [edx + eax*2 + 4]
movzx edx, byte [edi + 6]
lea edx, [edx + edx*4]
add eax, edx
sar eax, 3
mov ecx, dword [esp + 0x30]
mov byte [ecx + 6], al
movzx edx, byte [ebx + 7]
mov esi, dword [esp + 0x84]
movzx eax, byte [esi + 7]
lea edx, [edx + eax + 2]
movzx eax, byte [edi + 7]
lea eax, [edx + eax*2]
shr eax, 2
mov byte [ecx + 7], al
mov eax, dword [esp + 0xe8]
movzx edx, byte [ebx + eax]
movzx eax, byte [edi + eax]
lea eax, [eax + eax*4]
lea edx, [edx + eax + 4]
mov esi, dword [esp + 0x88]
mov ecx, dword [esp + 0xe8]
movzx eax, byte [esi + ecx]
lea eax, [edx + eax*2]
sar eax, 3
mov edx, dword [esp + 0x30]
mov byte [edx + ecx], al
inc ecx
mov dword [esp + 0xa4], ecx
mov ecx, dword [esp + 0xe8]
movzx edx, byte [ebx + ecx + 1]
movzx eax, byte [edi + ecx + 1]
lea eax, [eax + eax*4]
lea edx, [edx + eax + 4]
movzx eax, byte [esi + ecx + 1]
lea eax, [edx + eax*2]
sar eax, 3
mov esi, dword [esp + 0x30]
mov byte [esi + ecx + 1], al
add ecx, 6
mov dword [esp + 0x90], ecx
mov eax, dword [esp + 0xe8]
movzx edx, byte [ebx + eax + 6]
mov ecx, dword [esp + 0x84]
movzx eax, byte [ecx + eax + 6]
lea eax, [edx + eax*2 + 4]
mov esi, dword [esp + 0xe8]
movzx edx, byte [edi + esi + 6]
lea edx, [edx + edx*4]
add eax, edx
sar eax, 3
mov edx, dword [esp + 0x30]
mov byte [edx + esi + 6], al
add esi, 7
mov dword [esp + 0x8c], esi
mov ecx, dword [esp + 0xe8]
movzx edx, byte [ebx + ecx + 7]
mov esi, dword [esp + 0x84]
movzx eax, byte [esi + ecx + 7]
lea eax, [edx + eax*2 + 4]
movzx edx, byte [edi + ecx + 7]
lea edx, [edx + edx*4]
add eax, edx
sar eax, 3
mov edx, dword [esp + 0x30]
mov byte [edx + ecx + 7], al
mov esi, ecx
shl esi, 1
movzx edx, byte [ebx + ecx*2]
movzx eax, byte [edi + ecx*2]
lea eax, [eax + eax*4]
lea edx, [edx + eax + 4]
mov eax, dword [esp + 0x88]
movzx ecx, byte [eax + ecx*2]
lea eax, [edx + ecx*2]
sar eax, 3
mov edx, dword [esp + 0xe8]
mov ecx, dword [esp + 0x30]
mov byte [ecx + edx*2], al
movzx edx, byte [ebx + esi + 1]
movzx eax, byte [edi + esi + 1]
lea eax, [eax + eax*4]
lea edx, [edx + eax + 4]
mov ecx, dword [esp + 0x88]
movzx eax, byte [ecx + esi + 1]
lea eax, [edx + eax*2]
sar eax, 3
mov edx, dword [esp + 0x30]
mov byte [edx + esi + 1], al
mov eax, dword [esp + 0xe8]
lea ecx, [esi + eax]
movzx edx, byte [ebx + ecx]
movzx eax, byte [edi + ecx]
lea eax, [eax + eax*4]
lea eax, [edx + eax + 4]
mov edx, dword [esp + 0x88]
movzx edx, byte [edx + ecx]
lea eax, [eax + edx*2]
sar eax, 3
mov edx, dword [esp + 0x30]
mov byte [edx + ecx], al
mov ecx, dword [esp + 0xa4]
add ecx, esi
movzx edx, byte [ebx + ecx]
movzx eax, byte [edi + ecx]
lea eax, [eax + eax*4]
lea eax, [edx + eax + 4]
mov dword [esp], eax
mov eax, dword [esp + 0x88]
movzx eax, byte [eax + ecx]
mov edx, dword [esp]
lea edx, [edx + eax*2]
sar edx, 3
mov eax, dword [esp + 0x30]
mov byte [eax + ecx], dl
movzx edx, byte [ebx + esi + 2]
mov ecx, dword [esp + 0x88]
movzx eax, byte [ecx + esi + 2]
lea edx, [edx + eax + 4]
movzx eax, byte [edi + esi + 2]
imul eax, eax, 6
add edx, eax
sar edx, 3
mov eax, dword [esp + 0x30]
mov byte [eax + esi + 2], dl
movzx edx, byte [ebx + esi + 3]
movzx eax, byte [ecx + esi + 3]
lea edx, [edx + eax + 4]
movzx eax, byte [edi + esi + 3]
imul eax, eax, 6
add edx, eax
sar edx, 3
mov ecx, dword [esp + 0x30]
mov byte [ecx + esi + 3], dl
mov ecx, dword [esp + 0xa0]
add ecx, esi
movzx edx, byte [ebx + ecx]
mov eax, dword [esp + 0x88]
movzx eax, byte [eax + ecx]
lea edx, [edx + eax + 4]
movzx eax, byte [edi + ecx]
imul eax, eax, 6
add edx, eax
sar edx, 3
mov eax, dword [esp + 0x30]
mov byte [eax + ecx], dl
mov ecx, dword [esp + 0x9c]
add ecx, esi
movzx edx, byte [ebx + ecx]
mov eax, dword [esp + 0x88]
movzx eax, byte [eax + ecx]
lea edx, [edx + eax + 4]
movzx eax, byte [edi + ecx]
imul eax, eax, 6
add edx, eax
sar edx, 3
mov eax, dword [esp + 0x30]
mov byte [eax + ecx], dl
movzx edx, byte [ebx + esi + 4]
mov ecx, dword [esp + 0x84]
movzx eax, byte [ecx + esi + 4]
lea edx, [edx + eax + 4]
movzx eax, byte [edi + esi + 4]
imul eax, eax, 6
add edx, eax
sar edx, 3
mov eax, dword [esp + 0x30]
mov byte [eax + esi + 4], dl
movzx edx, byte [ebx + esi + 5]
movzx eax, byte [ecx + esi + 5]
lea edx, [edx + eax + 4]
movzx eax, byte [edi + esi + 5]
imul eax, eax, 6
add edx, eax
sar edx, 3
mov ecx, dword [esp + 0x30]
mov byte [ecx + esi + 5], dl
mov ecx, dword [esp + 0x98]
add ecx, esi
movzx edx, byte [ebx + ecx]
mov eax, dword [esp + 0x84]
movzx eax, byte [eax + ecx]
lea edx, [edx + eax + 4]
movzx eax, byte [edi + ecx]
imul eax, eax, 6
add edx, eax
sar edx, 3
mov eax, dword [esp + 0x30]
mov byte [eax + ecx], dl
mov ecx, dword [esp + 0x94]
add ecx, esi
movzx edx, byte [ebx + ecx]
mov eax, dword [esp + 0x84]
movzx eax, byte [eax + ecx]
lea edx, [edx + eax + 4]
movzx eax, byte [edi + ecx]
imul eax, eax, 6
add edx, eax
sar edx, 3
mov eax, dword [esp + 0x30]
mov byte [eax + ecx], dl
movzx edx, byte [ebx + esi + 6]
mov ecx, dword [esp + 0x84]
movzx eax, byte [ecx + esi + 6]
lea eax, [edx + eax*2 + 4]
movzx edx, byte [edi + esi + 6]
lea edx, [edx + edx*4]
add eax, edx
sar eax, 3
mov edx, dword [esp + 0x30]
mov byte [edx + esi + 6], al
movzx edx, byte [ebx + esi + 7]
movzx eax, byte [ecx + esi + 7]
lea eax, [edx + eax*2 + 4]
movzx edx, byte [edi + esi + 7]
lea edx, [edx + edx*4]
add eax, edx
sar eax, 3
mov ecx, dword [esp + 0x30]
mov byte [ecx + esi + 7], al
mov ecx, dword [esp + 0x90]
add ecx, esi
movzx edx, byte [ebx + ecx]
mov eax, dword [esp + 0x84]
movzx eax, byte [eax + ecx]
lea edx, [edx + eax*2 + 4]
mov dword [esp + 4], edx
movzx edx, byte [edi + ecx]
lea edx, [edx + edx*4]
mov eax, dword [esp + 4]
add eax, edx
sar eax, 3
mov edx, dword [esp + 0x30]
mov byte [edx + ecx], al
mov ecx, dword [esp + 0x8c]
add ecx, esi
movzx edx, byte [ebx + ecx]
mov ebx, dword [esp + 0x84]
movzx eax, byte [ebx + ecx]
lea eax, [edx + eax*2 + 4]
movzx edx, byte [edi + ecx]
lea edx, [edx + edx*4]
add eax, edx
sar eax, 3
mov edx, dword [esp + 0x30]
mov byte [edx + ecx], al
lea ecx, [esi + esi]
mov ebx, dword [esp + 0x80]
movzx edx, byte [ebx + esi*2]
mov ebx, dword [esp + 0x88]
movzx eax, byte [ebx + esi*2]
lea eax, [edx + eax*2 + 4]
movzx edx, byte [edi + esi*2]
lea edx, [edx + edx*4]
add eax, edx
sar eax, 3
mov edx, dword [esp + 0x30]
mov byte [edx + esi*2], al
mov ebx, dword [esp + 0x80]
movzx edx, byte [ebx + ecx + 1]
mov ebx, dword [esp + 0x88]
movzx eax, byte [ebx + ecx + 1]
lea eax, [edx + eax*2 + 4]
movzx edx, byte [edi + ecx + 1]
lea edx, [edx + edx*4]
add eax, edx
sar eax, 3
mov edx, dword [esp + 0x30]
mov byte [edx + ecx + 1], al
mov eax, dword [esp + 0xe8]
lea ebx, [ecx + eax]
mov eax, dword [esp + 0x80]
movzx edx, byte [eax + ebx]
mov eax, dword [esp + 0x88]
movzx eax, byte [eax + ebx]
lea edx, [edx + eax*2 + 4]
mov dword [esp + 4], edx
movzx edx, byte [edi + ebx]
lea edx, [edx + edx*4]
mov eax, dword [esp + 4]
add eax, edx
sar eax, 3
mov edx, dword [esp + 0x30]
mov byte [edx + ebx], al
mov ebx, dword [esp + 0xa4]
add ebx, ecx
mov eax, dword [esp + 0x80]
movzx edx, byte [eax + ebx]
mov eax, dword [esp + 0x88]
movzx eax, byte [eax + ebx]
lea edx, [edx + eax*2 + 4]
mov dword [esp + 4], edx
movzx edx, byte [edi + ebx]
lea edx, [edx + edx*4]
mov eax, dword [esp + 4]
add eax, edx
sar eax, 3
mov edx, dword [esp + 0x30]
mov byte [edx + ebx], al
mov ebx, dword [esp + 0x88]
movzx edx, byte [ebx + ecx + 2]
mov ebx, dword [esp + 0x80]
movzx eax, byte [ebx + ecx + 2]
lea edx, [edx + eax + 4]
movzx eax, byte [edi + ecx + 2]
imul eax, eax, 6
add edx, eax
sar edx, 3
mov eax, dword [esp + 0x30]
mov byte [eax + ecx + 2], dl
mov ebx, dword [esp + 0x88]
movzx edx, byte [ebx + ecx + 3]
mov ebx, dword [esp + 0x80]
movzx eax, byte [ebx + ecx + 3]
lea edx, [edx + eax + 4]
movzx eax, byte [edi + ecx + 3]
imul eax, eax, 6
add edx, eax
sar edx, 3
mov eax, dword [esp + 0x30]
mov byte [eax + ecx + 3], dl
mov ebx, dword [esp + 0xa0]
add ebx, ecx
mov eax, dword [esp + 0x88]
movzx edx, byte [eax + ebx]
mov eax, dword [esp + 0x80]
movzx eax, byte [eax + ebx]
lea edx, [edx + eax + 4]
movzx eax, byte [edi + ebx]
imul eax, eax, 6
add edx, eax
sar edx, 3
mov eax, dword [esp + 0x30]
mov byte [eax + ebx], dl
mov ebx, dword [esp + 0x9c]
add ebx, ecx
mov eax, dword [esp + 0x88]
movzx edx, byte [eax + ebx]
mov eax, dword [esp + 0x80]
movzx eax, byte [eax + ebx]
lea edx, [edx + eax + 4]
movzx eax, byte [edi + ebx]
imul eax, eax, 6
add edx, eax
sar edx, 3
mov eax, dword [esp + 0x30]
mov byte [eax + ebx], dl
mov ebx, dword [esp + 0x84]
movzx edx, byte [ebx + ecx + 4]
mov ebx, dword [esp + 0x80]
movzx eax, byte [ebx + ecx + 4]
lea edx, [edx + eax + 4]
movzx eax, byte [edi + ecx + 4]
imul eax, eax, 6
add edx, eax
sar edx, 3
mov eax, dword [esp + 0x30]
mov byte [eax + ecx + 4], dl
mov ebx, dword [esp + 0x84]
movzx edx, byte [ebx + ecx + 5]
mov ebx, dword [esp + 0x80]
movzx eax, byte [ebx + ecx + 5]
lea edx, [edx + eax + 4]
movzx eax, byte [edi + ecx + 5]
imul eax, eax, 6
add edx, eax
sar edx, 3
mov eax, dword [esp + 0x30]
mov byte [eax + ecx + 5], dl
mov ebx, dword [esp + 0x98]
add ebx, ecx
mov eax, dword [esp + 0x84]
movzx edx, byte [eax + ebx]
mov eax, dword [esp + 0x80]
movzx eax, byte [eax + ebx]
lea edx, [edx + eax + 4]
movzx eax, byte [edi + ebx]
imul eax, eax, 6
add edx, eax
sar edx, 3
mov eax, dword [esp + 0x30]
mov byte [eax + ebx], dl
mov ebx, dword [esp + 0x94]
add ebx, ecx
mov eax, dword [esp + 0x84]
movzx edx, byte [eax + ebx]
mov eax, dword [esp + 0x80]
movzx eax, byte [eax + ebx]
lea edx, [edx + eax + 4]
movzx eax, byte [edi + ebx]
imul eax, eax, 6
add edx, eax
sar edx, 3
mov eax, dword [esp + 0x30]
mov byte [eax + ebx], dl
mov ebx, dword [esp + 0x80]
movzx edx, byte [ebx + ecx + 6]
movzx eax, byte [edi + ecx + 6]
lea eax, [eax + eax*4]
lea edx, [edx + eax + 4]
mov ebx, dword [esp + 0x84]
movzx eax, byte [ebx + ecx + 6]
lea eax, [edx + eax*2]
sar eax, 3
mov edx, dword [esp + 0x30]
mov byte [edx + ecx + 6], al
mov ebx, dword [esp + 0x80]
movzx edx, byte [ebx + ecx + 7]
movzx eax, byte [edi + ecx + 7]
lea eax, [eax + eax*4]
lea edx, [edx + eax + 4]
mov ebx, dword [esp + 0x84]
movzx eax, byte [ebx + ecx + 7]
lea eax, [edx + eax*2]
sar eax, 3
mov edx, dword [esp + 0x30]
mov byte [edx + ecx + 7], al
mov ebx, dword [esp + 0x90]
add ebx, ecx
mov eax, dword [esp + 0x80]
movzx edx, byte [eax + ebx]
movzx eax, byte [edi + ebx]
lea eax, [eax + eax*4]
lea eax, [edx + eax + 4]
mov edx, dword [esp + 0x84]
movzx edx, byte [edx + ebx]
lea eax, [eax + edx*2]
sar eax, 3
mov edx, dword [esp + 0x30]
mov byte [edx + ebx], al
mov ebx, dword [esp + 0x8c]
add ebx, ecx
mov eax, dword [esp + 0x80]
movzx edx, byte [eax + ebx]
movzx eax, byte [edi + ebx]
lea eax, [eax + eax*4]
lea eax, [edx + eax + 4]
mov edx, dword [esp + 0x84]
movzx edx, byte [edx + ebx]
lea eax, [eax + edx*2]
sar eax, 3
mov edx, dword [esp + 0x30]
mov byte [edx + ebx], al
add ecx, esi
mov ebx, dword [esp + 0x80]
movzx edx, byte [ebx + ecx]
mov esi, dword [esp + 0x88]
movzx eax, byte [esi + ecx]
lea eax, [edx + eax*2 + 4]
movzx edx, byte [edi + ecx]
lea edx, [edx + edx*4]
add eax, edx
sar eax, 3
mov edx, dword [esp + 0x30]
mov byte [edx + ecx], al
movzx edx, byte [ebx + ecx + 1]
movzx eax, byte [esi + ecx + 1]
lea eax, [edx + eax*2 + 4]
movzx edx, byte [edi + ecx + 1]
lea edx, [edx + edx*4]
add eax, edx
sar eax, 3
mov ebx, dword [esp + 0x30]
mov byte [ebx + ecx + 1], al
movzx edx, byte [esi + ecx + 2]
mov esi, dword [esp + 0x80]
movzx eax, byte [esi + ecx + 2]
lea eax, [edx + eax*2 + 4]
movzx edx, byte [edi + ecx + 2]
lea edx, [edx + edx*4]
add eax, edx
sar eax, 3
mov byte [ebx + ecx + 2], al
mov eax, dword [esp + 0x88]
movzx edx, byte [eax + ecx + 3]
movzx eax, byte [esi + ecx + 3]
lea eax, [edx + eax*2 + 4]
movzx edx, byte [edi + ecx + 3]
lea edx, [edx + edx*4]
add eax, edx
sar eax, 3
mov byte [ebx + ecx + 3], al
mov ebx, dword [esp + 0xa0]
add ebx, ecx
mov esi, dword [esp + 0x88]
movzx edx, byte [esi + ebx]
mov esi, dword [esp + 0x80]
movzx eax, byte [esi + ebx]
lea eax, [edx + eax*2 + 4]
movzx edx, byte [edi + ebx]
lea edx, [edx + edx*4]
add eax, edx
sar eax, 3
mov edx, dword [esp + 0x30]
mov byte [edx + ebx], al
mov ebx, dword [esp + 0x9c]
add ebx, ecx
mov esi, dword [esp + 0x88]
movzx edx, byte [esi + ebx]
mov esi, dword [esp + 0x80]
movzx eax, byte [esi + ebx]
lea eax, [edx + eax*2 + 4]
movzx edx, byte [edi + ebx]
lea edx, [edx + edx*4]
add eax, edx
sar eax, 3
mov edx, dword [esp + 0x30]
mov byte [edx + ebx], al
mov ebx, dword [esp + 0x84]
movzx edx, byte [ebx + ecx + 4]
movzx eax, byte [edi + ecx + 4]
lea eax, [eax + eax*4]
lea edx, [edx + eax + 4]
movzx eax, byte [esi + ecx + 4]
lea eax, [edx + eax*2]
sar eax, 3
mov esi, dword [esp + 0x30]
mov byte [esi + ecx + 4], al
movzx edx, byte [ebx + ecx + 5]
movzx eax, byte [edi + ecx + 5]
lea eax, [eax + eax*4]
lea edx, [edx + eax + 4]
mov ebx, dword [esp + 0x80]
movzx eax, byte [ebx + ecx + 5]
lea eax, [edx + eax*2]
sar eax, 3
mov byte [esi + ecx + 5], al
mov ebx, dword [esp + 0x98]
add ebx, ecx
mov esi, dword [esp + 0x84]
movzx edx, byte [esi + ebx]
movzx eax, byte [edi + ebx]
lea eax, [eax + eax*4]
lea edx, [edx + eax + 4]
mov esi, dword [esp + 0x80]
movzx eax, byte [esi + ebx]
lea eax, [edx + eax*2]
sar eax, 3
mov edx, dword [esp + 0x30]
mov byte [edx + ebx], al
mov ebx, dword [esp + 0x94]
add ebx, ecx
mov esi, dword [esp + 0x84]
movzx edx, byte [esi + ebx]
movzx eax, byte [edi + ebx]
lea eax, [eax + eax*4]
lea edx, [edx + eax + 4]
mov esi, dword [esp + 0x80]
movzx eax, byte [esi + ebx]
lea eax, [edx + eax*2]
sar eax, 3
mov edx, dword [esp + 0x30]
mov byte [edx + ebx], al
movzx edx, byte [esi + ecx + 6]
movzx eax, byte [edi + ecx + 6]
lea eax, [eax + eax*4]
lea edx, [edx + eax + 4]
mov ebx, dword [esp + 0x84]
movzx eax, byte [ebx + ecx + 6]
lea eax, [edx + eax*2]
sar eax, 3
mov esi, dword [esp + 0x30]
mov byte [esi + ecx + 6], al
mov eax, dword [esp + 0x80]
movzx edx, byte [eax + ecx + 7]
movzx eax, byte [edi + ecx + 7]
lea eax, [eax + eax*4]
lea edx, [edx + eax + 4]
movzx eax, byte [ebx + ecx + 7]
lea eax, [edx + eax*2]
sar eax, 3
mov byte [esi + ecx + 7], al
add ecx, dword [esp + 0xe8]
mov ebx, dword [esp + 0x88]
movzx edx, byte [ebx + ecx]
mov esi, dword [esp + 0x80]
movzx eax, byte [esi + ecx]
lea edx, [edx + eax + 2]
movzx eax, byte [edi + ecx]
lea eax, [edx + eax*2]
shr eax, 2
mov edx, dword [esp + 0x30]
mov byte [edx + ecx], al
movzx edx, byte [ebx + ecx + 1]
movzx eax, byte [esi + ecx + 1]
lea eax, [edx + eax*2 + 4]
movzx edx, byte [edi + ecx + 1]
lea edx, [edx + edx*4]
add eax, edx
sar eax, 3
mov ebx, dword [esp + 0x30]
mov byte [ebx + ecx + 1], al
mov esi, dword [esp + 0x84]
movzx edx, byte [esi + ecx + 6]
movzx eax, byte [edi + ecx + 6]
lea eax, [eax + eax*4]
lea edx, [edx + eax + 4]
mov ebx, dword [esp + 0x80]
movzx eax, byte [ebx + ecx + 6]
lea eax, [edx + eax*2]
sar eax, 3
mov esi, dword [esp + 0x30]
mov byte [esi + ecx + 6], al
mov eax, dword [esp + 0x84]
movzx edx, byte [eax + ecx + 7]
movzx eax, byte [ebx + ecx + 7]
lea edx, [edx + eax + 2]
movzx eax, byte [edi + ecx + 7]
lea eax, [edx + eax*2]
shr eax, 2
mov byte [esi + ecx + 7], al
movsx eax, word [esp + 0x158]
add dword [esp + 0xb0], eax
movsx eax, word [esp + 0x15a]
add dword [esp + 0xb4], eax
inc dword [esp + 0x4c]
cmp dword [esp + 0x4c], 4
jne 0x47f396
push dword [esp + 0xb4]
push dword [esp + 0xb4]
push dword [esp + 0x2c]
jmp 0x480aef
cmp dword [ebp + 0x1cf0], 4
ja case.default.0x48019e
mov eax, dword [ebp + 0x1cf0]
jmp dword [eax*4 + 0x4c4990]
cmp dword [ebp + 0x27c4], 0
je 0x48077a
cmp dword [ebp + 0x2788], 1
mov ebx, dword [ebp + 0x1fc8]
mov edi, dword [ebp + 0x1fcc]
mov edx, dword [ebp + 0x27e8]
mov dword [esp + 0x10], edx
jne 0x480561
mov esi, dword [ebp + 0x279c]
mov ecx, dword [ebp + 0x27a0]
mov dword [esp + 0x5c], ecx
mov ecx, edx
inc ecx
mov eax, esi
sar eax, cl
shl ebx, 4
lea edx, [eax + ebx]
mov eax, dword [esp + 0x5c]
sar eax, cl
shl edi, 4
add eax, edi
mov ecx, 3
sub ecx, dword [esp + 0x10]
mov edi, dword [ebp + 4]
cmp edx, 0xfffffff0
jge 0x480215
mov edx, 0xfffffff0
jmp 0x48021b
xor ebx, ebx
cmp edx, edi
jg 0x480227
xor ebx, ebx
cmp edx, edi
je 0x480227
mov ebx, esi
shl ebx, cl
mov edi, edx
mov edx, dword [ebp + 8]
cmp eax, 0xfffffff0
jge 0x480236
mov eax, 0xfffffff0
jmp 0x48023c
xor esi, esi
cmp eax, edx
jg 0x48024a
xor esi, esi
cmp eax, edx
je 0x48024a
mov esi, dword [esp + 0x5c]
shl esi, cl
mov edx, eax
mov eax, dword [ebp + 0xb8]
mov dword [esp + 0x64], eax
mov ecx, dword [ebp + 0xbc]
mov dword [esp + 0x60], ecx
imul eax, edx
add eax, edi
mov ecx, dword [esp + 0x188]
mov ecx, dword [ecx]
add eax, ecx
mov dword [esp + 0x68], eax
test byte [ebp + 0x3d], 0x40
je 0x4802cb
mov ecx, dword [ebp + 0xac]
lea eax, [ecx - 0x11]
cmp edi, eax
jae 0x480292
mov eax, dword [ebp + 0xb0]
sub eax, 0x11
cmp edx, eax
jb 0x4802cb
sub esp, 0xc
push dword [ebp + 0xb0]
push ecx
push edx
push edi
push 0x11
push 0x11
push dword [esp + 0x88]
push dword [esp + 0x90]
push dword [ebp + 0xaa0]
call fcn.0046aab0
mov eax, dword [ebp + 0xaa0]
mov dword [esp + 0x98], eax
add esp, 0x30
mov eax, esi
or eax, ebx
test al, 7
je 0x480333
and esi, 0xf
mov edi, ebx
and edi, 0xf
push eax
mov ebx, 0x80
mov eax, ebx
sub eax, dword [ebp + 0x1fc0]
push eax
push esi
push edi
push 0x10
push dword [esp + 0x78]
push dword [esp + 0x80]
push dword [esp + 0x34]
call dword [ebp + 0xb2c]
add esp, 0x1c
sub ebx, dword [ebp + 0x1fc0]
push ebx
push esi
push edi
push 0x10
push dword [esp + 0x78]
mov eax, dword [esp + 0x80]
add eax, 8
push eax
mov eax, dword [esp + 0x34]
add eax, 8
push eax
call dword [ebp + 0xb2c]
add esp, 0x20
jmp 0x48037b
mov eax, esi
sar eax, 2
and eax, 2
sar ebx, 3
and ebx, 1
or eax, ebx
cmp dword [ebp + 0x1fc0], 0
je 0x480363
push 0x10
push dword [esp + 0x68]
push dword [esp + 0x70]
push dword [esp + 0x24]
call dword [ebp + eax*4 + 0xda8]
jmp 0x480378
push 0x10
push dword [esp + 0x68]
push dword [esp + 0x70]
push dword [esp + 0x24]
call dword [ebp + eax*4 + 0xd28]
add esp, 0x10
mov edx, dword [ebp + 0x27a4]
mov dword [esp + 0xec], edx
mov ecx, dword [ebp + 0x27a8]
mov dword [esp + 0xf0], ecx
mov ebx, dword [ebp + 0x27e8]
lea ecx, [ebx + 1]
sar edx, cl
mov eax, dword [ebp + 0x1fc8]
lea esi, [edx + eax*8]
mov edx, dword [esp + 0xf0]
sar edx, cl
mov eax, dword [ebp + 0x1fcc]
lea eax, [edx + eax*8]
mov ecx, 3
sub ecx, ebx
mov edi, dword [ebp + 4]
sar edi, 1
cmp esi, 0xfffffff8
jge 0x4803d3
mov esi, 0xfffffff8
jmp 0x4803e2
mov dword [esp + 0xf8], 0
cmp esi, edi
jg 0x480403
mov dword [esp + 0xf8], 0
cmp esi, edi
je 0x480403
mov ebx, dword [esp + 0xec]
shl ebx, cl
mov dword [esp + 0xf8], ebx
mov edi, esi
mov ebx, dword [ebp + 8]
sar ebx, 1
cmp eax, 0xfffffff8
jge 0x480414
mov eax, 0xfffffff8
jmp 0x48041a
xor esi, esi
cmp eax, ebx
jg 0x48042b
xor esi, esi
cmp eax, ebx
je 0x48042b
mov esi, dword [esp + 0xf0]
shl esi, cl
mov ebx, eax
mov eax, dword [esp + 0x60]
imul eax, ebx
add eax, edi
mov dword [esp + 0x6c], eax
mov ecx, eax
mov eax, dword [esp + 0x50]
add ecx, dword [eax]
test byte [ebp + 0x3d], 0x40
je 0x4804a0
mov edx, dword [ebp + 0xac]
sar edx, 1
lea eax, [edx - 9]
cmp edi, eax
jae 0x480464
mov eax, dword [ebp + 0xb0]
sar eax, 1
sub eax, 9
cmp ebx, eax
jb 0x4804a0
sub esp, 0xc
mov eax, dword [ebp + 0xb0]
sar eax, 1
push eax
push edx
push ebx
push edi
push 9
push 9
push dword [esp + 0x84]
push ecx
push dword [ebp + 0xaa0]
call fcn.0046aab0
mov ecx, dword [ebp + 0xaa0]
mov dword [esp + 0x88], 1
add esp, 0x30
jmp 0x4804a8
mov dword [esp + 0x58], 0
and esi, 0xf
mov dword [esp + 0xf4], esi
mov esi, dword [esp + 0xf8]
and esi, 0xf
push eax
mov eax, 0x80
sub eax, dword [ebp + 0x1fc0]
push eax
push dword [esp + 0xfc]
push esi
push 8
push dword [esp + 0x74]
push ecx
push dword [esp + 0x30]
call dword [ebp + 0xb2c]
mov edx, dword [esp + 0x8c]
mov ecx, dword [esp + 0x74]
add edx, dword [ecx]
add esp, 0x20
cmp dword [esp + 0x58], 0
je 0x480530
sub esp, 0xc
mov eax, dword [ebp + 0xb0]
sar eax, 1
push eax
mov eax, dword [ebp + 0xac]
sar eax, 1
push eax
push ebx
push edi
push 9
push 9
push dword [esp + 0x84]
push edx
push dword [ebp + 0xaa0]
call fcn.0046aab0
mov edx, dword [ebp + 0xaa0]
add esp, 0x30
push eax
mov eax, 0x80
sub eax, dword [ebp + 0x1fc0]
push eax
push dword [esp + 0xfc]
push esi
push 8
push dword [esp + 0x74]
push edx
push dword [esp + 0x19c]
call dword [ebp + 0xb2c]
add esp, 0x20
jmp case.default.0x48019e
mov esi, dword [ebp + 0xb8]
mov dword [esp + 0x74], esi
mov eax, dword [ebp + 0xbc]
mov dword [esp + 0x70], eax
mov edx, dword [esp + 0x188]
mov edx, dword [edx]
mov dword [esp + 0x78], edx
mov esi, dword [ebp + 0x27ac]
imul esi, ebx
mov eax, dword [ebp + 0x27b0]
imul eax, edi
add esi, eax
shl esi, 4
add esi, dword [ebp + 0x279c]
mov edx, dword [ebp + 0x27b8]
imul ebx, dword [ebp + 0x27b4]
mov eax, edx
imul eax, edi
add ebx, eax
shl ebx, 4
add ebx, dword [ebp + 0x27a0]
mov eax, dword [esp + 0x10]
lea ecx, [eax + eax + 1]
mov edi, 1
shl edi, cl
inc eax
mov dword [esp + 0x7c], eax
push eax
push eax
push dword [ebp + 0xb0]
push dword [ebp + 0xac]
mov eax, edi
sub eax, dword [ebp + 0x1fc0]
push eax
push dword [esp + 0x90]
push edx
push dword [ebp + 0x27b4]
push dword [ebp + 0x27b0]
push dword [ebp + 0x27ac]
push ebx
push esi
push 0x10
push dword [esp + 0xa8]
push dword [esp + 0xb0]
push dword [esp + 0x54]
call dword [ebp + 0xb30]
mov edx, dword [ebp + 0x27b4]
mov ecx, dword [ebp + 0x27ac]
add esp, 0x38
push dword [ebp + 0xb0]
push dword [ebp + 0xac]
mov eax, edi
sub eax, dword [ebp + 0x1fc0]
push eax
push dword [esp + 0x90]
push dword [ebp + 0x27b8]
push edx
push dword [ebp + 0x27b0]
push ecx
lea edx, [ebx + edx*8]
push edx
lea ecx, [esi + ecx*8]
push ecx
push 0x10
push dword [esp + 0xa8]
push dword [esp + 0xb0]
mov eax, dword [esp + 0x54]
add eax, 8
push eax
call dword [ebp + 0xb30]
mov edx, dword [ebp + 0x1fcc]
mov ebx, dword [ebp + 0x1fc8]
mov esi, dword [ebp + 0x27ac]
imul esi, ebx
mov eax, dword [ebp + 0x27b0]
imul eax, edx
add esi, eax
shl esi, 3
add esi, dword [ebp + 0x27a4]
mov ecx, dword [ebp + 0x27b8]
imul ebx, dword [ebp + 0x27b4]
imul edx, ecx
add ebx, edx
shl ebx, 3
add ebx, dword [ebp + 0x27a8]
add esp, 0x38
mov eax, dword [ebp + 0xb0]
sar eax, 1
push eax
mov eax, dword [ebp + 0xac]
sar eax, 1
push eax
mov eax, edi
sub eax, dword [ebp + 0x1fc0]
push eax
push dword [esp + 0x90]
push ecx
push dword [ebp + 0x27b4]
push dword [ebp + 0x27b0]
push dword [ebp + 0x27ac]
push ebx
push esi
push 8
push dword [esp + 0xa4]
mov edx, dword [esp + 0x88]
push dword [edx]
push dword [esp + 0x50]
call dword [ebp + 0xb30]
add esp, 0x38
mov eax, dword [ebp + 0xb0]
sar eax, 1
push eax
mov eax, dword [ebp + 0xac]
sar eax, 1
push eax
sub edi, dword [ebp + 0x1fc0]
push edi
push dword [esp + 0x90]
push dword [ebp + 0x27b8]
push dword [ebp + 0x27b4]
push dword [ebp + 0x27b0]
push dword [ebp + 0x27ac]
push ebx
push esi
push 8
push dword [esp + 0xa4]
mov ecx, dword [esp + 0x8c]
push dword [ecx]
push dword [esp + 0x1bc]
call dword [ebp + 0xb30]
add esp, 0x40
jmp case.default.0x48019e
cmp dword [esp + 0x194], 0
jne 0x4807da
cmp dword [ebp + 0x27cc], 0
je 0x4807da
push eax
push eax
push 0x10
shl edi, 5
lea eax, [ebp + edi]
push dword [eax + 0x1cf8]
push dword [eax + 0x1cf4]
push dword [esp + 0x1a4]
push dword [esp + 0x1a4]
push dword [esp + 0x1a4]
push 0
push 0
push 0
push dword [esp + 0x1ac]
mov ecx, dword [esp + 0x44]
mov edx, dword [esp + 0x48]
mov eax, ebp
call fcn.0047e5db
jmp 0x480c89
push eax
push dword [esp + 0x4c]
push 0
push 0x10
shl edi, 5
lea eax, [ebp + edi]
push dword [eax + 0x1cf8]
push dword [eax + 0x1cf4]
push dword [esp + 0x1a4]
push dword [esp + 0x1a4]
push 0
jmp 0x480c6f
cmp dword [esp + 0x194], 0
jne case.default.0x48019e
cmp dword [ebp + 0x27cc], 0
je 0x4809e8
mov ebx, dword [esp + 0x44]
shl ebx, 1
mov dword [esp + 0xb8], ebx
mov esi, dword [esp + 0x48]
shl esi, 1
mov dword [esp + 0xc0], esi
shl edi, 5
lea edi, [ebp + edi + 0x1cf4]
mov dword [esp + 0xa8], edi
mov dword [esp + 0x3c], 0
mov dword [esp + 0x40], 0
mov dword [esp + 0xcc], 0
mov edx, dword [esp + 0xa8]
mov eax, dword [edx]
mov ecx, dword [edx + 4]
mov ebx, ecx
and ebx, 3
mov dword [esp + 0x34], ebx
mov esi, eax
and esi, 3
mov dword [esp + 0x38], esi
shl ebx, 2
or ebx, esi
mov edx, dword [esp + 0xcc]
and edx, 1
mov dword [esp + 0xbc], edx
add edx, dword [esp + 0xb8]
sar eax, 2
lea edi, [eax + edx*8]
mov esi, dword [esp + 0xcc]
sar esi, 1
mov dword [esp + 0xc4], esi
mov eax, esi
add eax, dword [esp + 0xc0]
sar ecx, 2
lea edx, [ecx + eax*8]
mov eax, dword [ebp + 4]
cmp edi, 0xfffffff0
jge 0x4808db
mov edi, 0xfffffff0
jmp 0x4808df
cmp edi, eax
jg 0x4808e3
cmp edi, eax
jne 0x4808e8
and ebx, 0xfffffffc
mov edi, eax
mov eax, dword [ebp + 8]
cmp edx, 0xfffffff0
jge 0x4808f7
mov edx, 0xfffffff0
jmp 0x4808fb
cmp edx, eax
jg 0x4808ff
cmp edx, eax
jne 0x480904
and ebx, 0xfffffff3
mov edx, eax
mov eax, dword [ebp + 0xb8]
mov dword [esp + 0xc8], eax
imul eax, edx
lea ecx, [eax + edi]
mov esi, dword [esp + 0x188]
add ecx, dword [esi]
test byte [ebp + 0x3d], 0x40
je 0x480974
mov esi, dword [ebp + 0xac]
lea eax, [esi - 8]
sub eax, dword [esp + 0x38]
cmp edi, eax
ja 0x480948
mov eax, dword [ebp + 0xb0]
sub eax, 8
sub eax, dword [esp + 0x34]
cmp edx, eax
jbe 0x480974
sub esp, 0xc
push dword [ebp + 0xb0]
push esi
push edx
push edi
push 9
push 9
push dword [esp + 0xec]
push ecx
push dword [ebp + 0xaa0]
call fcn.0046aab0
mov ecx, dword [ebp + 0xaa0]
add esp, 0x30
mov eax, dword [ebp + 0xb8]
push esi
push eax
push ecx
shl eax, 3
imul eax, dword [esp + 0xd0]
mov edx, dword [esp + 0xc8]
lea eax, [eax + edx*8]
add eax, dword [esp + 0x24]
push eax
mov ecx, dword [esp + 0x1a0]
call dword [ecx + ebx*4 + 0x40]
mov ebx, dword [esp + 0xb8]
mov eax, dword [ebx]
mov esi, 2
cdq
idiv esi
add dword [esp + 0x4c], eax
mov eax, dword [ebx + 4]
cdq
idiv esi
add dword [esp + 0x50], eax
inc dword [esp + 0xdc]
add ebx, 8
mov dword [esp + 0xb8], ebx
add esp, 0x10
cmp dword [esp + 0xcc], 4
jne 0x48086c
jmp 0x480adc
mov eax, dword [esp + 0x18c]
add eax, 0x10
mov dword [esp + 0xd0], eax
mov edx, dword [esp + 0x48]
shl edx, 1
mov dword [esp + 0xd4], edx
mov ecx, dword [esp + 0x44]
shl ecx, 1
mov dword [esp + 0xd8], ecx
shl edi, 5
lea edi, [ebp + edi + 0x1cf8]
mov dword [esp + 0x3c], 0
mov dword [esp + 0x40], 0
mov dword [esp + 0xdc], 0
mov ecx, dword [esp + 0xdc]
sar ecx, 1
mov ebx, dword [esp + 0xdc]
and ebx, 1
mov esi, dword [ebp + 0xb8]
push edx
push edx
lea eax, [esi*8]
imul eax, ecx
lea edx, [eax + ebx*8]
add edx, dword [esp + 0x20]
push dword [edi]
push dword [edi - 4]
push dword [esp + 0xe0]
push 8
push 8
push dword [ebp + 0xb0]
push dword [ebp + 0xac]
push esi
push dword [ebp + 8]
push dword [ebp + 4]
add ecx, dword [esp + 0x104]
shl ecx, 3
push ecx
add ebx, dword [esp + 0x10c]
shl ebx, 3
push ebx
push 0
push 0
mov ebx, dword [esp + 0x1c8]
mov ecx, dword [ebx]
mov eax, ebp
call fcn.0047e2af
mov esi, dword [edi - 4]
add dword [esp + 0x7c], esi
mov eax, dword [edi]
add dword [esp + 0x80], eax
inc dword [esp + 0x11c]
add edi, 8
add esp, 0x40
cmp dword [esp + 0xdc], 4
jne 0x480a38
push dword [esp + 0x40]
push dword [esp + 0x40]
mov eax, dword [esp + 0x194]
add eax, 0x10
push eax
push dword [esp + 0x194]
mov ecx, dword [esp + 0x190]
mov edx, dword [esp + 0x24]
mov eax, ebp
call fcn.0047e3f8
add esp, 0x10
jmp case.default.0x48019e
mov edx, dword [ebp + 0x2920]
cmp edx, 3
jne 0x480c13
cmp dword [esp + 0x194], 0
jne 0x480b94
cmp dword [ebp + 0x27cc], 0
je 0x480b94
mov eax, edi
shl eax, 5
lea ebx, [ebp + eax + 0x1cf8]
lea edi, [ebp + edi*8 + 0x1d34]
xor esi, esi
push eax
push eax
push 8
push dword [ebx]
push dword [ebx - 4]
push dword [esp + 0x1a4]
push dword [esp + 0x1a4]
push dword [esp + 0x1a4]
push dword [edi]
push esi
push 1
push dword [esp + 0x1ac]
mov ecx, dword [esp + 0x44]
mov edx, dword [esp + 0x48]
mov eax, ebp
call fcn.0047e5db
inc esi
add ebx, 8
add edi, 4
add esp, 0x30
cmp esi, 2
jne 0x480b47
jmp case.default.0x48019e
push eax
push dword [esp + 0x4c]
push 0
push 8
mov ebx, edi
shl ebx, 5
lea ebx, [ebp + ebx]
push dword [ebx + 0x1cf8]
push dword [ebx + 0x1cf4]
push dword [esp + 0x1a4]
push dword [esp + 0x1a4]
push dword [ebp + edi*8 + 0x1d34]
push 0
push 1
push dword [esp + 0x1ac]
mov ecx, dword [esp + 0x44]
mov edx, dword [esp + 0x48]
mov eax, ebp
call fcn.0047ec24
add esp, 0x2c
push dword [esp + 0x4c]
push 0
push 8
push dword [ebx + 0x1d00]
push dword [ebx + 0x1cfc]
push dword [esp + 0x1a4]
push dword [esp + 0x1a4]
push dword [ebp + edi*8 + 0x1d38]
push 1
push 1
jmp 0x480c73
mov ecx, dword [ebp + edi*8 + 0x1d34]
lea eax, [ecx + 1]
cmp edx, eax
je 0x480c40
cmp dword [ebp + 0xad0], 3
je 0x480c40
cmp dword [ebp + 0x2968], 0
jne 0x480c40
mov edx, dword [ebp + 0xa00]
mov dword [esp + 0x188], edx
push eax
sar dword [esp + 0x4c], 1
push dword [esp + 0x4c]
push 0
push 0x10
shl edi, 5
lea eax, [ebp + edi]
push dword [eax + 0x1cf8]
push dword [eax + 0x1cf4]
push dword [esp + 0x1a4]
push dword [esp + 0x1a4]
push ecx
push 0
push 0
push dword [esp + 0x1ac]
mov ecx, dword [esp + 0x44]
mov edx, dword [esp + 0x48]
mov eax, ebp
call fcn.0047ec24
add esp, 0x30
jmp case.default.0x48019e
mov ecx, dword [esp + 0x48]
sar ecx, 1
mov dword [esp + 0xe0], ecx
lea ebx, [ebp + edi*8 + 0x1d34]
mov dword [esp + 0xac], ebx
shl edi, 5
lea ebx, [ebp + edi + 0x1cf8]
xor esi, esi
mov edi, 0x10
mov eax, dword [esp + 0xac]
mov ecx, dword [eax]
lea eax, [ecx + 1]
cmp dword [ebp + 0x2920], eax
je 0x480ceb
cmp dword [ebp + 0xad0], 3
je 0x480ceb
cmp dword [ebp + 0x2968], 0
jne 0x480ceb
mov edx, dword [ebp + 0xa00]
jmp 0x480cf2
mov edx, dword [esp + 0x188]
push eax
push dword [esp + 0xe4]
push 0
push 8
mov eax, esi
add eax, dword [ebx]
push eax
push dword [ebx - 4]
push dword [esp + 0x1a4]
push edx
push ecx
push 0
push 0
push dword [esp + 0x1ac]
mov ecx, dword [esp + 0x44]
mov edx, dword [esp + 0x48]
mov eax, ebp
call fcn.0047ec24
mov eax, dword [ebp + 0xb8]
mov ecx, dword [ebp + 0x2950]
mov edx, dword [ebp + 0xbc]
add dword [esp + 0xdc], 4
add ebx, 8
add esi, 0x10
add esp, 0x30
cmp esi, 0x20
je case.default.0x48019e
shl eax, 4
add dword [esp + 0x18], eax
mov eax, edi
sar eax, cl
imul eax, edx
add dword [esp + 0x14], eax
add dword [esp + 0x180], eax
jmp 0x480cbd
cmp dword [ebp + 0x2920], 3
lea edx, [ebp + 0xd68]
mov dword [esp + 0xc], edx
jne 0x480e00
xor ebx, ebx
shl edi, 1
mov dword [esp + 8], edi
jmp 0x480deb
push eax
push dword [esp + 0x4c]
push 0
push 8
push dword [edi]
push dword [edi - 4]
push dword [esp + 0x1a4]
push dword [esp + 0x1a4]
mov eax, esi
xor eax, ebx
push eax
push esi
push 1
push dword [esp + 0x1ac]
mov ecx, dword [esp + 0x44]
mov edx, dword [esp + 0x48]
mov eax, ebp
call fcn.0047ec24
inc esi
add edi, 8
add esp, 0x30
cmp esi, 2
jne 0x480d90
inc ebx
cmp ebx, 2
je case.default.0x48019e
mov ecx, dword [esp + 0xc]
mov dword [esp + 0x18c], ecx
mov esi, dword [esp + 8]
lea eax, [ebx + esi]
shl eax, 4
lea edi, [ebp + eax + 0x1cf8]
xor esi, esi
jmp 0x480d90
mov eax, dword [esp + 0x48]
sar eax, 1
mov dword [esp + 0xe4], eax
shl edi, 5
lea ebx, [ebp + edi + 0x1cf8]
xor esi, esi
inc esi
push eax
push dword [esp + 0xe8]
push 0
push 0x10
push dword [ebx]
push dword [ebx - 4]
push dword [esp + 0x1a4]
push dword [esp + 0x1a4]
xor eax, eax
cmp dword [ebp + 0x2920], esi
setne al
push eax
push 0
push 0
push dword [esp + 0x1ac]
mov ecx, dword [esp + 0x44]
mov edx, dword [esp + 0x48]
mov eax, ebp
call fcn.0047ec24
add esp, 0x30
cmp dword [ebp + 0x2968], 0
jne 0x480e78
mov edx, dword [ebp + 0xa00]
mov dword [esp + 0x188], edx
add ebx, 0x10
cmp esi, 2
je case.default.0x48019e
mov ecx, dword [esp + 0xc]
mov dword [esp + 0x18c], ecx
jmp 0x480e19
add esp, 0x16c
pop ebx
pop esi
pop edi
pop ebp
ret