Function at 0x4ce378
Capabilities:
Encrypt data using rc4 ksa

Disassembly:
push ebp
mov ebp, esp
push eax
mov eax, 8
add esp, 0xfffff004
push eax
dec eax
jne 0x4ce381
mov eax, dword [ebp - 4]
add esp, 0xfffffe74
xor eax, eax
mov dword [ebp - 0x24], eax
xor edx, edx
mov dword [0x7cfe30], edx
xor ecx, ecx
mov dword [0x7cfe34], ecx
push dword [ebp + 8]
call fcn.0045d988
pop ecx
mov dword [ebp - 8], eax
mov dword [ebp - 4], edx
push 0
mov eax, dword [ebp - 8]
mov edx, dword [ebp - 4]
sub eax, 0xc
sbb edx, 0
push edx
push eax
push dword [ebp + 8]
call fcn.0045d900
add esp, 0x10
push dword [ebp + 8]
push 1
push 0xc
lea eax, [ebp - 0x8190]
push eax
call fcn.0045d9fc
add esp, 0x10
mov edx, dword [ebp - 0x818c]
cmp edx, 0x4f52454e
jne 0x4ce445
mov eax, dword [ebp - 0x8188]
and eax, 0xff
shl eax, 0x18
mov edx, dword [ebp - 0x8188]
and edx, 0xff00
shl edx, 8
or eax, edx
mov ecx, dword [ebp - 0x8188]
and ecx, 0xff0000
shr ecx, 8
or eax, ecx
mov edx, dword [ebp - 0x8188]
and edx, 0xff000000
shr edx, 0x18
or eax, edx
xor edx, edx
mov dword [ebp - 0x10], eax
mov dword [ebp - 0xc], edx
jmp 0x4ce593
mov ecx, dword [ebp - 0x8190]
cmp ecx, 0x3552454e
jne 0x4ce58b
mov eax, dword [ebp - 0x818c]
mov edx, dword [ebp - 0x8188]
and eax, 0xff
xor edx, edx
mov edx, eax
shl edx, 0x18
xor eax, eax
push edx
push eax
mov eax, dword [ebp - 0x818c]
mov edx, dword [ebp - 0x8188]
and eax, 0xff00
xor edx, edx
mov edx, eax
shl edx, 8
xor eax, eax
or eax, dword [esp]
or edx, dword [esp + 4]
add esp, 8
push edx
push eax
mov eax, dword [ebp - 0x818c]
mov edx, dword [ebp - 0x8188]
and eax, 0xff0000
xor edx, edx
shld edx, eax, 0x18
shl eax, 0x18
or eax, dword [esp]
or edx, dword [esp + 4]
add esp, 8
push edx
push eax
mov eax, dword [ebp - 0x818c]
mov edx, dword [ebp - 0x8188]
and eax, 0xff000000
xor edx, edx
shld edx, eax, 8
shl eax, 8
or eax, dword [esp]
or edx, dword [esp + 4]
add esp, 8
push edx
push eax
mov eax, dword [ebp - 0x818c]
mov edx, dword [ebp - 0x8188]
xor eax, eax
and edx, 0xff
shrd eax, edx, 8
shr edx, 8
or eax, dword [esp]
or edx, dword [esp + 4]
add esp, 8
push edx
push eax
mov eax, dword [ebp - 0x818c]
mov edx, dword [ebp - 0x8188]
xor eax, eax
and edx, 0xff00
shrd eax, edx, 0x18
shr edx, 0x18
or eax, dword [esp]
or edx, dword [esp + 4]
add esp, 8
push edx
push eax
mov eax, dword [ebp - 0x818c]
mov edx, dword [ebp - 0x8188]
xor eax, eax
and edx, 0xff0000
mov eax, edx
shr eax, 8
xor edx, edx
or eax, dword [esp]
or edx, dword [esp + 4]
add esp, 8
push edx
push eax
mov eax, dword [ebp - 0x818c]
mov edx, dword [ebp - 0x8188]
xor eax, eax
and edx, 0xff000000
mov eax, edx
shr eax, 0x18
xor edx, edx
or eax, dword [esp]
or edx, dword [esp + 4]
add esp, 8
mov dword [ebp - 0x10], eax
mov dword [ebp - 0xc], edx
jmp 0x4ce593
or eax, 0xffffffff
jmp 0x4cf0e2
mov eax, dword [ebp - 8]
mov ecx, eax
mov eax, dword [ebp - 0x10]
sub ecx, eax
mov dword [ebp - 0x14], ecx
mov edx, dword [ebp - 0x14]
test edx, edx
jl 0x4ce5b2
mov ecx, dword [ebp - 0x14]
cmp ecx, 0x8000
jle 0x4ce5ba
or eax, 0xffffffff
jmp 0x4cf0e2
push 0
push dword [ebp - 0xc]
push dword [ebp - 0x10]
push dword [ebp + 8]
call fcn.0045d900
add esp, 0x10
push dword [ebp + 8]
push 1
push dword [ebp - 0x14]
lea ecx, [ebp - 0x8080]
push ecx
call fcn.0045d9fc
add esp, 0x10
xor eax, eax
mov dword [ebp - 0x2c], eax
xor edx, edx
mov dword [ebp - 0x1c], edx
mov dword [0x7cfe24], 1
mov dword [0x7cfe28], 1
mov ecx, dword [ebp - 0x2c]
mov eax, dword [ebp - 0x14]
cmp ecx, eax
jge 0x4cf020
lea edx, [ebp - 0x8080]
mov ecx, dword [ebp - 0x2c]
add edx, ecx
mov dword [ebp - 0x34], edx
mov eax, dword [ebp - 0x34]
mov edx, dword [eax + 4]
and edx, 0xff
shl edx, 0x18
mov ecx, dword [ebp - 0x34]
mov eax, dword [ecx + 4]
and eax, 0xff00
shl eax, 8
or edx, eax
mov ecx, dword [ebp - 0x34]
mov eax, dword [ecx + 4]
and eax, 0xff0000
shr eax, 8
or edx, eax
mov ecx, dword [ebp - 0x34]
mov eax, dword [ecx + 4]
and eax, 0xff000000
shr eax, 0x18
or edx, eax
mov dword [ebp - 0x38], edx
mov byte [ebp - 0x39], 0
mov edx, dword [ebp - 0x34]
mov ecx, dword [edx]
and ecx, 0xff
shl ecx, 0x18
mov eax, dword [ebp - 0x34]
mov edx, dword [eax]
and edx, 0xff00
shl edx, 8
or ecx, edx
mov eax, dword [ebp - 0x34]
mov edx, dword [eax]
and edx, 0xff0000
shr edx, 8
or ecx, edx
mov eax, dword [ebp - 0x34]
mov edx, dword [eax]
and edx, 0xff000000
shr edx, 0x18
or ecx, edx
cmp ecx, 0x45544e46
jg 0x4ce700
je 0x4ceffc
cmp ecx, 0x44414f58
jg 0x4ce6e3
je 0x4ce86b
sub ecx, 0x41464e4d
je 0x4cef33
sub ecx, 0x1fe060b
je 0x4cefed
sub ecx, 0x10f100
je 0x4ce751
jmp 0x4ceffc
sub ecx, 0x454e4421
je 0x4cefe7
sub ecx, 0x60a11
je 0x4ceffc
jmp 0x4ceffc
cmp ecx, 0x53494e46
jg 0x4ce734
je 0x4ceffc
sub ecx, 0x4d545950
je 0x4ceffc
sub ecx, 0xf0f8e5
je 0x4ceffc
sub ecx, 0x1a
je 0x4ceffc
jmp 0x4ceffc
sub ecx, 0x54494e46
je 0x4ceffc
sub ecx, 0x205fe07
je 0x4cefcc
jmp 0x4ceffc
mov ecx, dword [ebp - 0x38]
mov dword [ebp - 0x40], ecx
mov eax, dword [ebp - 0x34]
add eax, 8
mov dword [ebp - 0x44], eax
mov ecx, 8
mov eax, dword [ebp - 0x40]
xor edx, edx
div ecx
mov dword [ebp - 0x40], eax
mov ecx, dword [ebp - 0x44]
mov eax, dword [ecx + 4]
and eax, 0xff
shl eax, 0x18
mov edx, dword [ebp - 0x44]
mov ecx, dword [edx + 4]
and ecx, 0xff00
shl ecx, 8
or eax, ecx
mov edx, dword [ebp - 0x44]
mov ecx, dword [edx + 4]
and ecx, 0xff0000
shr ecx, 8
or eax, ecx
mov edx, dword [ebp - 0x44]
mov ecx, dword [edx + 4]
and ecx, 0xff000000
shr ecx, 0x18
or eax, ecx
mov dword [ebp - 0x48], eax
mov dword [ebp - 0x4c], 2
mov eax, dword [ebp - 0x4c]
mov edx, dword [ebp - 0x40]
cmp eax, edx
jae 0x4ceffc
mov eax, dword [ebp - 0x44]
mov ecx, dword [ebp - 0x4c]
mov eax, dword [eax + ecx*8 + 4]
and eax, 0xff
shl eax, 0x18
mov edx, dword [ebp - 0x44]
mov ecx, dword [ebp - 0x4c]
mov edx, dword [edx + ecx*8 + 4]
and edx, 0xff00
shl edx, 8
or eax, edx
mov ecx, dword [ebp - 0x44]
mov edx, dword [ebp - 0x4c]
mov ecx, dword [ecx + edx*8 + 4]
and ecx, 0xff0000
shr ecx, 8
or eax, ecx
mov edx, dword [ebp - 0x44]
mov ecx, dword [ebp - 0x4c]
mov edx, dword [edx + ecx*8 + 4]
and edx, 0xff000000
shr edx, 0x18
or eax, edx
mov dword [ebp - 0x48], eax
mov eax, dword [ebp - 0x4c]
shr eax, 1
mov ecx, dword [0x7cfe34]
add eax, ecx
lea eax, [eax + eax*8]
lea eax, [eax + eax*8]
mov edx, dword [ebp - 0x48]
mov dword [eax*8 + 0xa76978], edx
mov ecx, dword [ebp - 0x4c]
shr ecx, 1
mov eax, dword [0x7cfe34]
add ecx, eax
lea edx, [ecx + ecx*8]
lea edx, [edx + edx*8]
xor ecx, ecx
mov dword [edx*8 + 0xa769a8], ecx
add dword [ebp - 0x4c], 2
mov eax, dword [ebp - 0x4c]
mov edx, dword [ebp - 0x40]
cmp eax, edx
jb 0x4ce7c8
jmp 0x4ceffc
mov ecx, dword [ebp - 0x34]
add ecx, 8
mov dword [ebp - 0x54], ecx
mov eax, dword [ebp - 0x54]
mov edx, dword [eax]
and edx, 0xff
shl edx, 0x18
mov ecx, dword [ebp - 0x54]
mov eax, dword [ecx]
and eax, 0xff00
shl eax, 8
or edx, eax
mov ecx, dword [ebp - 0x54]
mov eax, dword [ecx]
and eax, 0xff0000
shr eax, 8
or edx, eax
mov ecx, dword [ebp - 0x54]
mov eax, dword [ecx]
and eax, 0xff000000
shr eax, 0x18
or edx, eax
mov dword [ebp - 0x58], edx
sub dword [ebp - 0x58], 0x16
mov ecx, 0x2a
mov eax, dword [ebp - 0x58]
xor edx, edx
div ecx
mov dword [ebp - 0x58], eax
mov ecx, dword [ebp - 0x34]
add ecx, 0x1e
mov dword [ebp - 0x5c], ecx
xor eax, eax
mov dword [ebp - 0x60], eax
mov edx, dword [ebp - 0x60]
mov ecx, dword [ebp - 0x58]
cmp edx, ecx
jae 0x4cea25
imul eax, dword [ebp - 0x60], 0x15
mov edx, dword [ebp - 0x5c]
mov cx, word [edx + eax*2 + 0xc]
and cx, 0xff
shl ecx, 8
imul eax, dword [ebp - 0x60], 0x15
mov edx, dword [ebp - 0x5c]
mov ax, word [edx + eax*2 + 0xc]
and ax, 0xff00
movzx edx, ax
sar edx, 8
or cx, dx
mov word [ebp - 0x62], cx
imul ecx, dword [ebp - 0x60], 0x15
mov eax, dword [ebp - 0x5c]
mov edx, dword [eax + ecx*2 + 0xe]
and edx, 0xff
shl edx, 0x18
imul ecx, dword [ebp - 0x60], 0x15
mov eax, dword [ebp - 0x5c]
mov ecx, dword [eax + ecx*2 + 0xe]
and ecx, 0xff00
shl ecx, 8
or edx, ecx
imul eax, dword [ebp - 0x60], 0x15
mov ecx, dword [ebp - 0x5c]
mov eax, dword [ecx + eax*2 + 0xe]
and eax, 0xff0000
shr eax, 8
or edx, eax
imul ecx, dword [ebp - 0x60], 0x15
mov eax, dword [ebp - 0x5c]
mov ecx, dword [eax + ecx*2 + 0xe]
and ecx, 0xff000000
shr ecx, 0x18
or edx, ecx
mov dword [ebp - 0x68], edx
mov edx, dword [ebp - 0x68]
cmp edx, 0x7000001
jg 0x4ce989
je 0x4ce99b
sub edx, 0x2000001
je 0x4ce9b6
sub edx, 0x1000000
je 0x4ce9b6
jmp 0x4ce9d4
sub edx, 0x10000001
je 0x4ce99b
sub edx, 0x1000000
je 0x4ce9b6
jmp 0x4ce9d4
mov eax, dword [0x7cfe34]
mov edx, dword [ebp - 0x60]
add eax, edx
lea ecx, [eax + eax*8]
lea ecx, [ecx + ecx*8]
xor eax, eax
mov dword [ecx*8 + 0xa769d0], eax
jmp 0x4ce9f0
mov edx, dword [0x7cfe34]
mov ecx, dword [ebp - 0x60]
add edx, ecx
lea eax, [edx + edx*8]
lea eax, [eax + eax*8]
mov dword [eax*8 + 0xa769d0], 2
jmp 0x4ce9f0
mov edx, dword [0x7cfe34]
mov ecx, dword [ebp - 0x60]
add edx, ecx
lea eax, [edx + edx*8]
lea eax, [eax + eax*8]
mov dword [eax*8 + 0xa769d0], 1
mov edx, dword [ebp - 0x68]
cmp edx, 0x7000001
jne 0x4cea03
cmp word [ebp - 0x62], 0x930
je 0x4cea0d
xor ecx, ecx
mov dword [0x7cfe24], ecx
jmp 0x4cea14
xor eax, eax
mov dword [0x7cfe28], eax
inc dword [ebp - 0x60]
mov edx, dword [ebp - 0x60]
mov ecx, dword [ebp - 0x58]
cmp edx, ecx
jb 0x4ce8e1
xor eax, eax
mov dword [ebp - 0x6c], eax
mov edx, dword [ebp - 0x6c]
mov ecx, dword [ebp - 0x58]
cmp edx, ecx
jae 0x4cef22
mov eax, dword [0x7cfe34]
mov edx, dword [ebp - 0x6c]
add eax, edx
mov dword [ebp - 0x60], eax
mov ecx, dword [ebp - 0x1c]
inc ecx
mov eax, dword [ebp - 0x60]
lea eax, [eax + eax*8]
lea eax, [eax + eax*8]
mov dword [eax*8 + 0xa76c0c], ecx
mov edx, dword [ebp - 0x60]
inc edx
mov ecx, dword [ebp - 0x60]
lea ecx, [ecx + ecx*8]
lea ecx, [ecx + ecx*8]
mov dword [ecx*8 + 0xa769cc], edx
mov eax, dword [ebp - 0x60]
lea eax, [eax + eax*8]
lea eax, [eax + eax*8]
mov dword [eax*8 + 0xa769c8], 1
imul edx, dword [ebp - 0x6c], 0x15
mov ecx, dword [ebp - 0x5c]
mov ax, word [ecx + edx*2 + 0xc]
and ax, 0xff
shl eax, 8
imul edx, dword [ebp - 0x6c], 0x15
mov ecx, dword [ebp - 0x5c]
mov dx, word [ecx + edx*2 + 0xc]
and dx, 0xff00
movzx ecx, dx
sar ecx, 8
or ax, cx
movzx eax, ax
mov edx, dword [ebp - 0x60]
lea edx, [edx + edx*8]
lea edx, [edx + edx*8]
mov dword [edx*8 + 0xa769d4], eax
mov ecx, dword [ebp - 0x60]
lea ecx, [ecx + ecx*8]
lea ecx, [ecx + ecx*8]
mov dword [ecx*8 + 0xa769dc], eax
mov eax, dword [ebp - 0x60]
lea eax, [eax + eax*8]
lea eax, [eax + eax*8]
xor edx, edx
mov dword [eax*8 + 0xa769d8], edx
imul ecx, dword [ebp - 0x6c], 0x15
mov eax, dword [ebp - 0x5c]
mov edx, dword [eax + ecx*2 + 0x1e]
mov eax, dword [eax + ecx*2 + 0x1a]
and eax, 0xff
xor edx, edx
mov edx, eax
shl edx, 0x18
xor eax, eax
push edx
push eax
imul ecx, dword [ebp - 0x6c], 0x15
mov eax, dword [ebp - 0x5c]
mov edx, dword [eax + ecx*2 + 0x1e]
mov eax, dword [eax + ecx*2 + 0x1a]
and eax, 0xff00
xor edx, edx
mov edx, eax
shl edx, 8
xor eax, eax
or eax, dword [esp]
or edx, dword [esp + 4]
add esp, 8
push edx
push eax
imul ecx, dword [ebp - 0x6c], 0x15
mov eax, dword [ebp - 0x5c]
mov edx, dword [eax + ecx*2 + 0x1e]
mov eax, dword [eax + ecx*2 + 0x1a]
and eax, 0xff0000
xor edx, edx
shld edx, eax, 0x18
shl eax, 0x18
or eax, dword [esp]
or edx, dword [esp + 4]
add esp, 8
push edx
push eax
imul ecx, dword [ebp - 0x6c], 0x15
mov eax, dword [ebp - 0x5c]
mov edx, dword [eax + ecx*2 + 0x1e]
mov eax, dword [eax + ecx*2 + 0x1a]
and eax, 0xff000000
xor edx, edx
shld edx, eax, 8
shl eax, 8
or eax, dword [esp]
or edx, dword [esp + 4]
add esp, 8
push edx
push eax
imul ecx, dword [ebp - 0x6c], 0x15
mov eax, dword [ebp - 0x5c]
mov edx, dword [eax + ecx*2 + 0x1e]
mov eax, dword [eax + ecx*2 + 0x1a]
xor eax, eax
and edx, 0xff
shrd eax, edx, 8
shr edx, 8
or eax, dword [esp]
or edx, dword [esp + 4]
add esp, 8
push edx
push eax
imul ecx, dword [ebp - 0x6c], 0x15
mov eax, dword [ebp - 0x5c]
mov edx, dword [eax + ecx*2 + 0x1e]
mov eax, dword [eax + ecx*2 + 0x1a]
xor eax, eax
and edx, 0xff00
shrd eax, edx, 0x18
shr edx, 0x18
or eax, dword [esp]
or edx, dword [esp + 4]
add esp, 8
push edx
push eax
imul ecx, dword [ebp - 0x6c], 0x15
mov eax, dword [ebp - 0x5c]
mov edx, dword [eax + ecx*2 + 0x1e]
mov eax, dword [eax + ecx*2 + 0x1a]
xor eax, eax
and edx, 0xff0000
mov eax, edx
shr eax, 8
xor edx, edx
or eax, dword [esp]
or edx, dword [esp + 4]
add esp, 8
push edx
push eax
imul ecx, dword [ebp - 0x6c], 0x15
mov eax, dword [ebp - 0x5c]
mov edx, dword [eax + ecx*2 + 0x1e]
mov eax, dword [eax + ecx*2 + 0x1a]
xor eax, eax
and edx, 0xff000000
mov eax, edx
shr eax, 0x18
xor edx, edx
or eax, dword [esp]
or edx, dword [esp + 4]
add esp, 8
mov ecx, dword [ebp - 0x60]
lea ecx, [ecx + ecx*8]
lea ecx, [ecx + ecx*8]
mov dword [ecx*8 + 0xa769e0], eax
mov dword [ecx*8 + 0xa769e4], edx
mov ecx, dword [ebp - 0x60]
lea ecx, [ecx + ecx*8]
lea ecx, [ecx + ecx*8]
mov dword [ecx*8 + 0xa76bf0], eax
mov dword [ecx*8 + 0xa76bf4], edx
imul eax, dword [ebp - 0x6c], 0x15
mov edx, dword [ebp - 0x5c]
lea eax, [edx + eax*2 + 0x22]
mov edx, dword [eax + 4]
mov eax, dword [eax]
and eax, 0xff
xor edx, edx
mov edx, eax
shl edx, 0x18
xor eax, eax
push edx
push eax
imul ecx, dword [ebp - 0x6c], 0x15
mov eax, dword [ebp - 0x5c]
mov edx, dword [eax + ecx*2 + 0x26]
mov eax, dword [eax + ecx*2 + 0x22]
and eax, 0xff00
xor edx, edx
mov edx, eax
shl edx, 8
xor eax, eax
or eax, dword [esp]
or edx, dword [esp + 4]
add esp, 8
push edx
push eax
imul ecx, dword [ebp - 0x6c], 0x15
mov eax, dword [ebp - 0x5c]
mov edx, dword [eax + ecx*2 + 0x26]
mov eax, dword [eax + ecx*2 + 0x22]
and eax, 0xff0000
xor edx, edx
shld edx, eax, 0x18
shl eax, 0x18
or eax, dword [esp]
or edx, dword [esp + 4]
add esp, 8
push edx
push eax
imul ecx, dword [ebp - 0x6c], 0x15
mov eax, dword [ebp - 0x5c]
mov edx, dword [eax + ecx*2 + 0x26]
mov eax, dword [eax + ecx*2 + 0x22]
and eax, 0xff000000
xor edx, edx
shld edx, eax, 8
shl eax, 8
or eax, dword [esp]
or edx, dword [esp + 4]
add esp, 8
push edx
push eax
imul ecx, dword [ebp - 0x6c], 0x15
mov eax, dword [ebp - 0x5c]
mov edx, dword [eax + ecx*2 + 0x26]
mov eax, dword [eax + ecx*2 + 0x22]
xor eax, eax
and edx, 0xff
shrd eax, edx, 8
shr edx, 8
or eax, dword [esp]
or edx, dword [esp + 4]
add esp, 8
push edx
push eax
imul ecx, dword [ebp - 0x6c], 0x15
mov eax, dword [ebp - 0x5c]
mov edx, dword [eax + ecx*2 + 0x26]
mov eax, dword [eax + ecx*2 + 0x22]
xor eax, eax
and edx, 0xff00
shrd eax, edx, 0x18
shr edx, 0x18
or eax, dword [esp]
or edx, dword [esp + 4]
add esp, 8
push edx
push eax
imul ecx, dword [ebp - 0x6c], 0x15
mov eax, dword [ebp - 0x5c]
mov edx, dword [eax + ecx*2 + 0x26]
mov eax, dword [eax + ecx*2 + 0x22]
xor eax, eax
and edx, 0xff0000
mov eax, edx
shr eax, 8
xor edx, edx
or eax, dword [esp]
or edx, dword [esp + 4]
add esp, 8
push edx
push eax
imul ecx, dword [ebp - 0x6c], 0x15
mov eax, dword [ebp - 0x5c]
mov edx, dword [eax + ecx*2 + 0x26]
mov eax, dword [eax + ecx*2 + 0x22]
xor eax, eax
and edx, 0xff000000
mov eax, edx
shr eax, 0x18
xor edx, edx
or eax, dword [esp]
or edx, dword [esp + 4]
add esp, 8
push edx
push eax
imul ecx, dword [ebp - 0x6c], 0x15
mov eax, dword [ebp - 0x5c]
mov edx, dword [eax + ecx*2 + 0x1e]
mov eax, dword [eax + ecx*2 + 0x1a]
and eax, 0xff
xor edx, edx
mov edx, eax
shl edx, 0x18
xor eax, eax
push edx
push eax
imul ecx, dword [ebp - 0x6c], 0x15
mov eax, dword [ebp - 0x5c]
mov edx, dword [eax + ecx*2 + 0x1e]
mov eax, dword [eax + ecx*2 + 0x1a]
and eax, 0xff00
xor edx, edx
mov edx, eax
shl edx, 8
xor eax, eax
or eax, dword [esp]
or edx, dword [esp + 4]
add esp, 8
push edx
push eax
imul ecx, dword [ebp - 0x6c], 0x15
mov eax, dword [ebp - 0x5c]
mov edx, dword [eax + ecx*2 + 0x1e]
mov eax, dword [eax + ecx*2 + 0x1a]
and eax, 0xff0000
xor edx, edx
shld edx, eax, 0x18
shl eax, 0x18
or eax, dword [esp]
or edx, dword [esp + 4]
add esp, 8
push edx
push eax
imul ecx, dword [ebp - 0x6c], 0x15
mov eax, dword [ebp - 0x5c]
mov edx, dword [eax + ecx*2 + 0x1e]
mov eax, dword [eax + ecx*2 + 0x1a]
and eax, 0xff000000
xor edx, edx
shld edx, eax, 8
shl eax, 8
or eax, dword [esp]
or edx, dword [esp + 4]
add esp, 8
push edx
push eax
imul ecx, dword [ebp - 0x6c], 0x15
mov eax, dword [ebp - 0x5c]
mov edx, dword [eax + ecx*2 + 0x1e]
mov eax, dword [eax + ecx*2 + 0x1a]
xor eax, eax
and edx, 0xff
shrd eax, edx, 8
shr edx, 8
or eax, dword [esp]
or edx, dword [esp + 4]
add esp, 8
push edx
push eax
imul ecx, dword [ebp - 0x6c], 0x15
mov eax, dword [ebp - 0x5c]
mov edx, dword [eax + ecx*2 + 0x1e]
mov eax, dword [eax + ecx*2 + 0x1a]
xor eax, eax
and edx, 0xff00
shrd eax, edx, 0x18
shr edx, 0x18
or eax, dword [esp]
or edx, dword [esp + 4]
add esp, 8
push edx
push eax
imul ecx, dword [ebp - 0x6c], 0x15
mov eax, dword [ebp - 0x5c]
mov edx, dword [eax + ecx*2 + 0x1e]
mov eax, dword [eax + ecx*2 + 0x1a]
xor eax, eax
and edx, 0xff0000
mov eax, edx
shr eax, 8
xor edx, edx
or eax, dword [esp]
or edx, dword [esp + 4]
add esp, 8
push edx
push eax
imul ecx, dword [ebp - 0x6c], 0x15
mov eax, dword [ebp - 0x5c]
mov edx, dword [eax + ecx*2 + 0x1e]
mov eax, dword [eax + ecx*2 + 0x1a]
xor eax, eax
and edx, 0xff000000
mov eax, edx
shr eax, 0x18
xor edx, edx
or eax, dword [esp]
or edx, dword [esp + 4]
add esp, 8
sub dword [esp], eax
sbb dword [esp + 4], edx
pop eax
pop edx
mov ecx, dword [ebp - 0x60]
lea ecx, [ecx + ecx*8]
lea ecx, [ecx + ecx*8]
mov dword [ecx*8 + 0xa76bf8], eax
mov dword [ecx*8 + 0xa76bfc], edx
mov eax, dword [ebp - 0x60]
lea eax, [eax + eax*8]
lea eax, [eax + eax*8]
mov byte [eax*8 + 0xa769e8], 0
inc dword [ebp - 0x6c]
mov edx, dword [ebp - 0x6c]
mov ecx, dword [ebp - 0x58]
cmp edx, ecx
jb 0x4cea38
mov eax, dword [ebp - 0x58]
add dword [0x7cfe34], eax
inc dword [ebp - 0x1c]
jmp 0x4ceffc
mov edx, dword [ebp - 0x34]
add edx, 8
mov dword [ebp - 0x70], edx
xor ecx, ecx
mov dword [ebp - 0x74], ecx
jmp 0x4cefb9
mov eax, dword [ebp - 0x70]
mov dword [ebp - 0x78], eax
jmp 0x4cef4e
inc dword [ebp - 0x78]
mov edx, dword [ebp - 0x78]
mov cl, byte [edx]
test cl, cl
jne 0x4cef4b
push dword [ebp - 0x70]
imul eax, dword [ebp - 0x74], 0x288
add eax, 0xa769e8
push eax
call fcn.0066c9ec
add esp, 8
imul edx, dword [ebp - 0x74], 0x288
add edx, 0xa769e8
push edx
call fcn.0066ca1c
pop ecx
mov dword [ebp - 0x30], eax
mov ecx, dword [ebp - 0x30]
cmp ecx, 3
jle 0x4cefaf
push 0x7cfe81
imul eax, dword [ebp - 0x74], 0x288
mov edx, dword [ebp - 0x30]
add eax, edx
add eax, 0xa769e5
push eax
call fcn.0066c9ec
add esp, 8
mov ecx, dword [ebp - 0x78]
inc ecx
mov dword [ebp - 0x70], ecx
inc dword [ebp - 0x74]
mov eax, dword [ebp - 0x74]
mov edx, dword [0x7cfe34]
cmp eax, edx
jb 0x4cef43
jmp 0x4ceffc
mov ecx, dword [ebp - 0x34]
add ecx, 8
mov dword [ebp - 0x7c], ecx
push dword [ebp - 0x7c]
push 0x823648
call fcn.0066c9ec
add esp, 8
jmp 0x4ceffc
mov byte [ebp - 0x39], 1
jmp 0x4ceffc
mov eax, dword [ebp - 0x2c]
add eax, 8
mov dword [ebp - 0x24], eax
mov edx, dword [ebp - 0x38]
mov dword [ebp - 0x28], edx
mov cl, byte [ebp - 0x39]
test cl, cl
jne 0x4cf020
add dword [ebp - 0x2c], 8
mov eax, dword [ebp - 0x2c]
mov edx, dword [ebp - 0x38]
add eax, edx
mov dword [ebp - 0x2c], eax
mov ecx, dword [ebp - 0x2c]
mov eax, dword [ebp - 0x14]
cmp ecx, eax
jl 0x4ce610
mov edx, dword [0x7cfe24]
test edx, edx
je 0x4cf045
mov ecx, dword [0x7cfe28]
test ecx, ecx
je 0x4cf045
xor eax, eax
mov dword [0x7cfe24], eax
mov dword [0x7cfe28], 1
mov edx, dword [ebp - 0x24]
test edx, edx
je 0x4cf0db
mov ecx, dword [ebp - 0x28]
add ecx, 4
push ecx
call fcn.0066c210
pop ecx
mov dword [ebp - 0x80], eax
mov eax, dword [ebp - 0x28]
add eax, 2
shr eax, 8
mov edx, dword [ebp - 0x80]
mov byte [edx], al
mov cl, byte [ebp - 0x28]
add cl, 2
and cl, 0xff
mov eax, dword [ebp - 0x80]
mov byte [eax + 1], cl
mov edx, dword [ebp - 0x80]
mov byte [edx + 2], 1
mov ecx, dword [ebp - 0x80]
mov al, byte [0x7cfe34]
mov byte [ecx + 3], al
mov dword [0xa76c10], 1
mov edx, dword [ebp - 0x24]
mov dword [0xa76c14], edx
mov ecx, dword [ebp - 0x28]
mov dword [0xa76c18], ecx
push dword [ebp - 0x28]
lea eax, [ebp - 0x8080]
mov edx, dword [ebp - 0x24]
add eax, edx
push eax
mov ecx, dword [ebp - 0x80]
add ecx, 4
push ecx
call fcn.0066c7fc
add esp, 0xc
push dword [ebp - 0x80]
call fcn.004cdf70
pop ecx
push dword [ebp - 0x80]
call fcn.0066c220
pop ecx
call fcn.004ce29c
xor eax, eax
mov esp, ebp
pop ebp
ret