Function at 0x4c4568
Capabilities:
Encrypt data using rc4 ksa

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffd48
push ebx
push esi
push edi
mov dword [ebp - 0xc], ecx
mov dword [ebp - 8], edx
mov dword [ebp - 4], eax
mov byte [ebp - 0xd], 0
mov byte [ebp - 0x45], 0
mov byte [ebp - 0x5d], 0
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
mov byte [eax + 0x54d], 0
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
cmp byte [eax + 0xfd], 0
je 0x4c46c8
xor eax, eax
push ebp
push 0x4c46c1
push dword fs:[eax]
mov dword fs:[eax], esp
cmp dword [ebp - 8], 0
je 0x4c45d3
mov eax, dword [ebp - 8]
cmp eax, dword [ebp - 4]
je 0x4c45d3
mov eax, dword [ebp - 8]
call fcn.004244fc
mov dword [ebp - 0x58], eax
mov dword [ebp - 0x54], edx
jmp 0x4c45e1
mov dword [ebp - 0x58], 0xffffffff
mov dword [ebp - 0x54], 0xffffffff
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
cmp dword [eax + 0x184], 0
je 0x4c4601
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
mov eax, dword [eax + 0x184]
mov dl, 1
call fcn.00633cc0
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
xor edx, edx
call fcn.00604bc8
mov eax, dword [ebp + 0x24]
push eax
mov eax, dword [ebp + 0x20]
push eax
push 1
mov al, byte [ebp + 0x18]
push eax
push 1
mov al, byte [ebp + 0x10]
push eax
mov al, byte [ebp + 0xc]
push eax
mov al, byte [ebp + 8]
push eax
mov ecx, dword [ebp - 0xc]
mov edx, dword [ebp - 8]
mov eax, dword [ebp - 4]
call fcn.004c4568
mov byte [ebp - 0xd], al
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
mov dl, 1
call fcn.00604bc8
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
cmp dword [eax + 0x184], 0
je 0x4c4689
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
mov eax, dword [eax + 0x184]
call fcn.00633d90
test al, al
jne 0x4c4689
mov byte [ebp - 0xd], 1
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
mov edx, dword [eax + 0x184]
mov eax, dword [ebp - 0xc]
mov ecx, dword [eax]
call dword [ecx + 0x28]
call fcn.004046a4
jmp 0x4c5608
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x4c46c8
push 0
push 0
mov eax, dword [ebp - 4]
call fcn.0042451c
cmp dword [ebp - 0x54], 0
jne 0x4c46b0
cmp dword [ebp - 0x58], 0
jb 0x4c46c0
jmp 0x4c46b2
jl 0x4c46c0
push dword [ebp - 0x54]
push dword [ebp - 0x58]
mov eax, dword [ebp - 8]
call fcn.0042451c
ret
mov eax, dword [ebp - 4]
call fcn.004244fc
mov dword [ebp - 0x50], eax
mov dword [ebp - 0x4c], edx
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
xor edx, edx
mov dword [eax + 0xec], edx
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
xor edx, edx
mov dword [eax + 0xf0], edx
mov eax, dword [ebp - 4]
call fcn.004c5e88
mov dword [ebp - 0x30], eax
mov dword [ebp - 0x2c], edx
cmp dword [ebp - 0x2c], 0xffffffff
jne 0x4c4718
cmp dword [ebp - 0x30], 0xffffffff
jne 0x4c4718
mov eax, dword [ebp + 0x20]
mov eax, dword [eax + 0x28]
mov byte [eax], 1
jmp 0x4c5608
push dword [ebp - 0x2c]
push dword [ebp - 0x30]
mov eax, dword [ebp - 4]
call fcn.0042451c
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
cmp byte [eax + 0x549], 0
je 0x4c474f
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
cmp byte [eax + 0x548], 0
jne 0x4c474f
mov edx, dword [ebp + 0x24]
mov edx, dword [edx]
mov eax, dword [ebp - 4]
call fcn.004c637c
mov eax, dword [0x989a4c]
cmp byte [eax], 0
je 0x4c4767
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
cmp dword [eax + 0x620], 0
jne 0x4c476b
xor eax, eax
jmp 0x4c476d
mov al, 1
mov byte [ebp - 0x39], al
mov eax, dword [0x989c84]
cmp byte [eax], 0
je 0x4c4788
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
cmp dword [eax + 0x620], 0
jne 0x4c478c
xor eax, eax
jmp 0x4c478e
mov al, 1
mov byte [ebp - 0x3a], al
cmp byte [ebp - 0x3a], 0
je 0x4c47aa
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
call fcn.00604c28
call fcn.00641b0c
test al, al
jne 0x4c47ae
xor eax, eax
jmp 0x4c47b0
mov al, 1
mov edx, dword [ebp + 0x24]
mov edx, dword [edx]
mov byte [edx + 0x54d], al
xor ecx, ecx
push ebp
push 0x4c55fe
push dword fs:[ecx]
mov dword fs:[ecx], esp
xor eax, eax
mov dword [ebp - 0x18], eax
mov esi, 0x967f14
lea edi, [ebp - 0x2ac]
mov ecx, 0x1e
rep movsd dword es:[edi], dword [esi]
mov eax, dword [ebp + 0x20]
mov eax, dword [eax + 0x28]
mov dword [ebp - 0x238], eax
lea eax, [ebp - 0x2ac]
mov dword [ebp - 0x234], eax
lea eax, [ebp - 0x234]
mov ecx, 0x1d0
mov edx, 0x3e
call fcn.004c6688
mov eax, dword [ebp + 0x20]
mov eax, dword [eax + 0x28]
cmp byte [eax], 0
je 0x4c4826
mov byte [ebp - 0xd], 1
call fcn.004046a4
jmp 0x4c5608
cmp dword [ebp - 8], 0
je 0x4c4855
mov eax, dword [ebp - 8]
cmp eax, dword [ebp - 4]
je 0x4c4855
mov ecx, dword [ebp + 0x20]
mov ecx, dword [ecx + 0x28]
lea eax, [ebp - 0x234]
mov edx, dword [ebp - 8]
call fcn.004c43b8
lea eax, [ebp - 0x234]
xor edx, edx
call fcn.004c6950
mov ecx, dword [ebp + 0x20]
mov ecx, dword [ecx + 0x28]
lea eax, [ebp - 0x234]
mov edx, dword [ebp - 4]
call fcn.004c43b8
mov eax, dword [ebp + 0x20]
mov eax, dword [eax + 0x28]
cmp byte [eax], 0
je 0x4c4882
mov byte [ebp - 0xd], 1
call fcn.004046a4
jmp 0x4c5608
xor eax, eax
push ebp
push 0x4c48eb
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
cmp byte [eax + 0x548], 0
jne 0x4c48d3
lea eax, [ebp - 0x234]
mov ecx, 0xffff
mov edx, 0xfe
call fcn.004d26d4
mov ebx, 0xe0
lea eax, [ebp - 0x234]
mov ecx, 0xffff
mov edx, ebx
call fcn.004d26d4
inc ebx
cmp ebx, 0xf0
jne 0x4c48b8
lea eax, [ebp - 0x234]
or edx, 0xffffffff
call fcn.004c6950
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x4c4947
mov eax, dword [ebp + 0x20]
mov eax, dword [eax + 0x28]
cmp byte [eax], 0
je 0x4c4960
mov byte [ebp - 0xd], 1
call fcn.004046a4
jmp 0x4c5608
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
mov dword [eax + 8], 8
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
xor edx, edx
mov dword [eax + 0xd0], edx
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
xor edx, edx
mov dword [eax + 0xd4], edx
mov eax, dword [ebp - 0x20c]
mov dword [ebp - 0x208], eax
mov eax, dword [ebp - 0x20c]
cmp eax, 5
ja case.0x4c49a1.0
jmp dword [eax*4 + 0x4c49a8]
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
mov byte [eax + 0xc4], 0
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
mov dword [eax + 0x10], 3
jmp case.0x4c49a1.0
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
mov byte [eax + 0xc4], 1
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
mov dword [eax + 0x10], 1
jmp case.0x4c49a1.0
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
mov byte [eax + 0xc4], 2
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
mov dword [eax + 0x10], 3
mov dword [ebp - 0x208], 2
cmp byte [ebp + 0x1c], 0
jne case.0x4c49a1.0
cmp byte [ebp + 0x18], 0
jne case.0x4c49a1.0
mov al, byte [ebp + 0x14]
or al, byte [ebp + 8]
je case.0x4c49a1.0
mov eax, dword [ebp - 0x15c]
mov dword [ebp - 0x5c], eax
mov eax, dword [ebp - 0x5c]
mov eax, dword [eax + 8]
mov edx, dword [ebp + 0x24]
mov edx, dword [edx]
mov dword [edx + 0xd0], eax
mov eax, dword [ebp - 0x5c]
mov eax, dword [eax + 0xc]
mov edx, dword [ebp + 0x24]
mov edx, dword [edx]
mov dword [edx + 0xd4], eax
jmp case.0x4c49a1.0
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
mov byte [eax + 0xc4], 3
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
mov dword [eax + 0x10], 4
jmp case.0x4c49a1.0
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
mov byte [eax + 0xc4], 4
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
mov dword [eax + 0x10], 4
mov dword [ebp - 0x208], 4
cmp byte [ebp + 0x18], 0
je 0x4c4aa9
mov dword [ebp - 0x208], 3
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
mov al, byte [eax + 0xcc]
sub al, 1
jb 0x4c4ac0
je 0x4c4aca
dec al
je 0x4c4ad6
jmp 0x4c4ae0
xor eax, eax
mov dword [ebp - 0x1ec], eax
jmp 0x4c4ae0
mov dword [ebp - 0x1ec], 1
jmp 0x4c4ae0
mov dword [ebp - 0x1ec], 2
mov al, byte [ebp - 0x116]
sub al, 2
jb 0x4c4aee
je 0x4c4b12
jmp 0x4c4b6a
movzx edx, word [ebp - 0x114]
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
call fcn.00604b28
movzx edx, word [ebp - 0x112]
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
call fcn.00604b58
jmp 0x4c4b6a
movzx eax, word [ebp - 0x114]
mov dword [ebp - 0x2b0], eax
fild dword [ebp - 0x2b0]
fld xword [0x4c5614]
fdivp st(1)
call fcn.00403008
mov edx, eax
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
call fcn.00604b28
movzx eax, word [ebp - 0x112]
mov dword [ebp - 0x2b0], eax
fild dword [ebp - 0x2b0]
fld xword [0x4c5614]
fdivp st(1)
call fcn.00403008
mov edx, eax
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
call fcn.00604b58
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
cmp dword [eax + 0x558], 0
je 0x4c4ba2
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
mov eax, dword [eax + 0x558]
call fcn.00402ad4
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
xor edx, edx
mov dword [eax + 0x558], edx
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
xor edx, edx
mov dword [eax + 0x55c], edx
cmp dword [ebp - 0x158], 1
sbb eax, eax
inc eax
mov edx, dword [ebp + 0x24]
mov edx, dword [edx]
mov byte [edx + 0xe0], al
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
mov edx, dword [ebp - 0x218]
mov dword [eax + 0xf4], edx
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
mov edx, dword [ebp - 0x214]
mov dword [eax + 0xf8], edx
mov dword [ebp - 0x204], 1
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
movzx eax, byte [eax + 0xe1]
cmp eax, 4
ja case.default.0x4c4bf8
jmp dword [eax*4 + 0x4c4bff]
mov dword [ebp - 0x200], 1
jmp case.default.0x4c4bf8
mov dword [ebp - 0x200], 2
jmp case.default.0x4c4bf8
mov dword [ebp - 0x200], 4
jmp case.default.0x4c4bf8
mov dword [ebp - 0x200], 8
jmp case.default.0x4c4bf8
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
cmp dword [eax + 0x14], 0
jle 0x4c4cbd
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
cmp dword [eax + 0x18], 0
jle 0x4c4cbd
xor eax, eax
mov dword [ebp - 0x20], eax
mov ebx, 3
mov ecx, ebx
mov eax, 1
shl eax, cl
mov dword [ebp - 0x24], eax
mov eax, dword [ebp - 0x218]
cdq
idiv dword [ebp - 0x24]
mov edx, dword [ebp + 0x24]
mov edx, dword [edx]
cmp eax, dword [edx + 0x14]
jl 0x4c4ca5
mov eax, dword [ebp - 0x214]
cdq
idiv dword [ebp - 0x24]
mov edx, dword [ebp + 0x24]
mov edx, dword [edx]
cmp eax, dword [edx + 0x18]
jl 0x4c4ca5
mov dword [ebp - 0x20], ebx
jmp 0x4c4cab
dec ebx
cmp ebx, 0xffffffff
jne 0x4c4c6c
mov ecx, dword [ebp - 0x20]
mov eax, 1
shl eax, cl
mov dword [ebp - 0x200], eax
jmp case.default.0x4c4bf8
mov dword [ebp - 0x200], 1
cmp byte [ebp + 8], 0
jne 0x4c4cde
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
mov edx, dword [ebp - 0x200]
mov dword [eax + 0xe8], edx
xor eax, eax
push ebp
push 0x4c4d01
push dword fs:[eax]
mov dword fs:[eax], esp
lea eax, [ebp - 0x234]
call fcn.004c7dec
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x4c4d23
mov byte [ebp - 0xd], 1
mov eax, dword [ebp + 0x20]
mov eax, dword [eax + 0x28]
cmp byte [eax], 0
je 0x4c4d3c
call fcn.004046a4
jmp 0x4c5608
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
mov edx, dword [ebp - 0x1c4]
mov dword [eax + 0x14], edx
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
mov edx, dword [ebp - 0x1c0]
mov dword [eax + 0x18], edx
cmp byte [ebp + 0x1c], 0
je 0x4c4d68
call fcn.004046a4
jmp 0x4c5608
mov eax, dword [ebp - 0x1c4]
shl eax, 2
call fcn.00402ab4
mov dword [ebp - 0x18], eax
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
cmp byte [eax + 0x554], 0
je 0x4c4e31
mov eax, dword [ebp - 0x208]
cmp eax, 5
ja case.0x4c4d9a.0
jmp dword [eax*4 + 0x4c4da1]
push 3
mov ecx, dword [ebp - 0x1c0]
mov edx, dword [ebp - 0x1c4]
mov eax, dword [ebp - 0xc]
mov ebx, dword [eax]
call dword [ebx + 0x24]
jmp case.0x4c4d9a.0
push 5
mov ecx, dword [ebp - 0x1c0]
mov edx, dword [ebp - 0x1c4]
mov eax, dword [ebp - 0xc]
mov ebx, dword [eax]
call dword [ebx + 0x24]
jmp case.0x4c4d9a.0
push 5
mov ecx, dword [ebp - 0x1c0]
mov edx, dword [ebp - 0x1c4]
mov eax, dword [ebp - 0xc]
mov ebx, dword [eax]
call dword [ebx + 0x24]
jmp case.0x4c4d9a.0
push 7
mov ecx, dword [ebp - 0x1c0]
mov edx, dword [ebp - 0x1c4]
mov eax, dword [ebp - 0xc]
mov ebx, dword [eax]
call dword [ebx + 0x24]
jmp case.0x4c4d9a.0
push 5
mov ecx, dword [ebp - 0x1c0]
mov edx, dword [ebp - 0x1c4]
mov eax, dword [ebp - 0xc]
mov ebx, dword [eax]
call dword [ebx + 0x24]
jmp case.0x4c4d9a.0
push 5
mov ecx, dword [ebp - 0x1c0]
mov edx, dword [ebp - 0x1c4]
mov eax, dword [ebp - 0xc]
mov ebx, dword [eax]
call dword [ebx + 0x24]
mov eax, dword [0x989b5c]
cmp byte [eax], 0
je 0x4c4ecc
cmp dword [ebp - 0x4c], 0
jne 0x4c4ecc
cmp dword [ebp - 0x50], 0
jne 0x4c4ecc
cmp dword [ebp - 8], 0
jne 0x4c4ecc
mov eax, dword [ebp + 0x20]
mov eax, dword [eax + 0x28]
cmp byte [eax], 0
jne 0x4c4ecc
cmp dword [ebp - 0x208], 2
jne 0x4c4ecc
cmp byte [ebp + 0x1c], 0
jne 0x4c4ecc
cmp byte [ebp + 0x18], 0
jne 0x4c4ecc
cmp byte [ebp + 0x14], 0
je 0x4c4ecc
cmp dword [ebp - 0x1c4], 0xa
jbe 0x4c4ecc
cmp dword [ebp - 0x1c0], 0xa
jbe 0x4c4ecc
mov eax, dword [ebp + 0x20]
push eax
cmp dword [ebp - 0x1ec], 0
sete al
push eax
mov al, byte [ebp - 0x39]
push eax
mov eax, dword [ebp - 0x18]
push eax
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
push eax
mov ecx, dword [ebp - 0xc]
mov edx, dword [ebp - 0x200]
mov eax, dword [ebp - 4]
call fcn.004c1e04
mov byte [ebp - 0x45], al
cmp dword [ebp - 0x208], 4
jne 0x4c4f8f
cmp byte [ebp - 0x45], 0
jne 0x4c4f8f
mov eax, dword [0x989d70]
cmp byte [eax], 0
je 0x4c4f8f
cmp dword [ebp - 0x4c], 0
jne 0x4c4f8f
cmp dword [ebp - 0x50], 0
jne 0x4c4f8f
cmp dword [ebp - 8], 0
jne 0x4c4f8f
mov eax, dword [ebp + 0x20]
mov eax, dword [eax + 0x28]
cmp byte [eax], 0
jne 0x4c4f8f
cmp byte [ebp + 0x1c], 0
jne 0x4c4f8f
cmp byte [ebp + 0x18], 0
jne 0x4c4f8f
cmp byte [ebp + 0x14], 0
je 0x4c4f8f
cmp dword [ebp - 0x1c4], 1
jbe 0x4c4f8f
cmp dword [ebp - 0x1c0], 1
jbe 0x4c4f8f
cmp dword [ebp - 0x200], 1
je 0x4c4f55
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
cmp byte [eax + 0x54c], 0
je 0x4c4f6e
push 0
push 0
mov ecx, dword [ebp + 0x24]
mov ecx, dword [ecx]
mov edx, dword [ebp - 4]
mov eax, dword [ebp - 0xc]
call fcn.004c443c
mov byte [ebp - 0x45], al
jmp 0x4c4f8f
mov eax, dword [ebp - 0x1c4]
push eax
mov eax, dword [ebp - 0x1c0]
push eax
mov ecx, dword [ebp + 0x24]
mov ecx, dword [ecx]
mov edx, dword [ebp - 4]
mov eax, dword [ebp - 0xc]
call fcn.004c443c
mov byte [ebp - 0x45], al
cmp byte [ebp - 0x45], 0
jne 0x4c52ae
mov eax, dword [ebp - 0x1c0]
mov dword [ebp - 0x2b8], eax
xor eax, eax
mov dword [ebp - 0x2b4], eax
fild qword [ebp - 0x2b8]
fdivr dword [0x4c5620]
mov eax, dword [ebp + 0x20]
fstp qword [eax + 0x18]
wait
mov eax, dword [ebp + 0x20]
xor edx, edx
mov dword [eax + 0xc], edx
xor ecx, ecx
push ebp
push 0x4c5271
push dword fs:[ecx]
mov dword fs:[ecx], esp
xor ebx, ebx
mov esi, 1
jmp 0x4c5249
mov edx, ebx
mov eax, dword [ebp - 0xc]
mov ecx, dword [eax]
call dword [ecx]
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 0x208]
dec eax
je 0x4c5011
dec eax
je 0x4c5171
dec eax
je 0x4c5088
dec eax
je 0x4c50cb
jmp 0x4c520b
mov eax, dword [ebp - 0xc]
mov edx, dword [eax]
call dword [edx + 0x10]
cmp al, 3
jne 0x4c5037
lea edx, [ebp - 0x14]
lea eax, [ebp - 0x234]
mov ecx, 1
call fcn.004c7f88
mov esi, eax
jmp 0x4c520b
lea edx, [ebp - 0x18]
lea eax, [ebp - 0x234]
mov ecx, 1
call fcn.004c7f88
mov esi, eax
mov eax, dword [ebp - 0x14]
mov dword [ebp - 0x1c], eax
mov eax, dword [ebp - 0x18]
mov edx, dword [ebp - 0x1c4]
dec edx
test edx, edx
jl 0x4c520b
inc edx
mov dword [ebp - 0x64], edx
mov edx, dword [ebp - 0x1c]
mov cl, byte [eax]
mov byte [edx + 2], cl
mov cl, byte [eax]
mov byte [edx + 1], cl
mov cl, byte [eax]
mov byte [edx], cl
inc eax
add dword [ebp - 0x1c], 3
dec dword [ebp - 0x64]
jne 0x4c5068
jmp 0x4c520b
cmp byte [ebp + 0x18], 0
je 0x4c520b
lea edx, [ebp - 0x14]
lea eax, [ebp - 0x234]
mov ecx, 1
call fcn.004c7f88
mov esi, eax
cmp dword [ebp - 0x20c], 2
jne 0x4c520b
mov eax, dword [ebp - 0xc]
mov edx, dword [eax]
call dword [edx + 0xc]
mov edx, eax
mov eax, dword [ebp - 0x14]
call fcn.005dd1d8
jmp 0x4c520b
mov eax, dword [ebp - 0xc]
mov edx, dword [eax]
call dword [edx + 0x10]
cmp al, 5
jne 0x4c5148
lea edx, [ebp - 0x18]
lea eax, [ebp - 0x234]
mov ecx, 1
call fcn.004c7f88
mov esi, eax
mov eax, dword [ebp + 0x20]
mov eax, dword [eax + 0x28]
cmp byte [eax], 0
jne 0x4c5267
cmp byte [ebp + 0x10], 0
je 0x4c5122
mov eax, dword [ebp - 0x18]
mov edx, dword [ebp - 0x1c4]
shl edx, 2
dec edx
test edx, edx
jl 0x4c5122
inc edx
mov dword [ebp - 0x64], edx
mov dl, 0xff
sub dl, byte [eax]
mov byte [eax], dl
inc eax
dec dword [ebp - 0x64]
jne 0x4c5116
push 1
mov eax, dword [ebp - 0x1c4]
push eax
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
push eax
mov edi, dword [0x98a150]
mov edi, dword [edi]
mov ecx, dword [ebp - 0x14]
mov dl, 2
mov eax, dword [ebp - 0x18]
call edi
jmp 0x4c520b
lea edx, [ebp - 0x14]
lea eax, [ebp - 0x234]
mov ecx, 1
call fcn.004c7f88
mov esi, eax
mov eax, dword [ebp + 0x20]
mov eax, dword [eax + 0x28]
cmp byte [eax], 0
jne 0x4c5267
jmp 0x4c520b
cmp byte [ebp - 0x39], 0
je 0x4c51db
lea edx, [ebp - 0x18]
lea eax, [ebp - 0x234]
mov ecx, 1
call fcn.004c7f88
mov esi, eax
cmp dword [ebp - 0x20c], 2
jne 0x4c51b8
push 1
mov eax, dword [ebp - 0x1c4]
push eax
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
push eax
mov edi, dword [0x98a150]
mov edi, dword [edi]
mov ecx, dword [ebp - 0x14]
xor edx, edx
mov eax, dword [ebp - 0x18]
call edi
jmp 0x4c520b
push 1
mov eax, dword [ebp - 0x1c4]
push eax
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
push eax
mov edi, dword [0x98a150]
mov edi, dword [edi]
mov ecx, dword [ebp - 0x14]
mov dl, 1
mov eax, dword [ebp - 0x18]
call edi
jmp 0x4c520b
lea edx, [ebp - 0x14]
lea eax, [ebp - 0x234]
mov ecx, 1
call fcn.004c7f88
mov esi, eax
cmp dword [ebp - 0x20c], 2
jne 0x4c520b
mov eax, dword [ebp - 0xc]
mov edx, dword [eax]
call dword [edx + 0xc]
mov edx, eax
mov eax, dword [ebp - 0x14]
call fcn.005dd1d8
add ebx, esi
mov eax, dword [ebp + 0x20]
add dword [eax + 0xc], esi
mov eax, dword [ebp + 0x20]
cmp word [eax + 2], 0
je 0x4c523e
mov eax, dword [ebp + 0x20]
fild dword [eax + 0xc]
mov eax, dword [ebp + 0x20]
fmul qword [eax + 0x18]
call fcn.00403008
mov ecx, eax
mov edi, dword [ebp + 0x20]
mov edx, dword [ebp + 0x20]
mov edx, dword [edx + 8]
mov eax, dword [edi + 4]
call dword [edi]
mov eax, dword [ebp + 0x20]
mov eax, dword [eax + 0x28]
cmp byte [eax], 0
jne 0x4c5267
mov eax, dword [ebp - 0x1a8]
cmp eax, dword [ebp - 0x1c0]
jae 0x4c5267
mov eax, dword [ebp - 0xc]
mov edx, dword [eax]
call dword [edx + 8]
cmp ebx, eax
jl 0x4c4fe2
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x4c5293
cmp ebx, dword [ebp - 0x1c0]
jge 0x4c52ae
mov eax, dword [ebp + 0x20]
mov eax, dword [eax + 0x28]
mov byte [eax], 1
call fcn.004046a4
jmp 0x4c5608
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
cmp byte [eax + 0x54d], 0
je 0x4c5308
cmp byte [ebp + 0x1c], 0
jne 0x4c5308
cmp byte [ebp + 0x14], 0
je 0x4c5308
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
cmp byte [eax + 0x54a], 0
jne 0x4c52ea
cmp byte [ebp + 8], 0
je 0x4c5308
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
cmp byte [eax + 0x54b], 0
jne 0x4c5308
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
mov byte [eax + 0x54d], 0
push 0
mov ecx, dword [ebp + 0x24]
mov ecx, dword [ecx]
mov edx, dword [ebp + 0x20]
mov eax, dword [ebp - 0xc]
call fcn.0058317c
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x4c5608
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
mov eax, dword [eax + 0xe4]
call fcn.0062cc84
mov esi, dword [ebp - 0x104]
xor ebx, ebx
test esi, esi
je 0x4c5365
mov al, byte [esi + 4]
cmp al, 0xe0
setne dl
or dl, bl
je 0x4c5357
mov dx, word [esi + 0xc]
push edx
mov ecx, dword [esi + 0x10]
mov edx, eax
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
mov eax, dword [eax + 0xe4]
call fcn.0062cbc8
cmp byte [esi + 4], 0xe0
jne 0x4c535f
mov bl, 1
mov esi, dword [esi]
test esi, esi
jne 0x4c5331
mov al, byte [ebp + 0xc]
and al, byte [ebp - 0x39]
je 0x4c53b6
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
call fcn.00604c28
cmp byte [eax + 0x18], 0
je 0x4c53b6
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
call fcn.00604c28
call fcn.00641be0
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
mov eax, dword [eax + 0xe4]
mov dl, 0xe2
call fcn.0062cb94
cmp eax, 0xffffffff
je 0x4c53b6
mov edx, dword [ebp + 0x24]
mov edx, dword [edx]
mov edx, dword [edx + 0xe4]
xchg edx, eax
call fcn.0062ccc0
jmp 0x4c538c
mov al, byte [ebp + 0xc]
and al, byte [ebp - 0x3a]
je 0x4c53f4
cmp byte [ebp + 0x1c], 0
jne 0x4c53f4
cmp byte [ebp + 0x14], 0
je 0x4c53f4
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
mov eax, dword [eax + 0xe4]
mov dl, 0xe2
call fcn.0062cb94
cmp eax, 0xffffffff
je 0x4c53f4
mov edx, dword [ebp + 0x24]
mov edx, dword [edx]
mov edx, dword [edx + 0xe4]
xchg edx, eax
call fcn.0062ccc0
jmp 0x4c53ca
mov eax, dword [ebp + 0x20]
mov eax, dword [eax + 0x28]
cmp byte [eax], 0
jne 0x4c5440
cmp byte [ebp + 0x1c], 0
jne 0x4c5440
xor eax, eax
mov dword [ebp - 0x238], eax
xor eax, eax
push ebp
push 0x4c5436
push dword fs:[eax]
mov dword fs:[eax], esp
cmp byte [ebp - 0x45], 0
jne 0x4c542c
lea eax, [ebp - 0x234]
call fcn.004c6ad0
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x4c5440
lea eax, [ebp - 0x234]
call fcn.004c6758
cmp dword [ebp - 0x18], 0
je 0x4c5459
mov eax, dword [ebp - 0x18]
call fcn.00402ad4
mov eax, dword [ebp - 0x234]
cmp dword [eax + 0x70], 0
je 0x4c548d
mov eax, dword [ebp - 0x234]
mov eax, dword [eax + 0x70]
mov edx, dword [ebp + 0x24]
mov edx, dword [edx]
mov dword [edx + 0xec], eax
mov eax, dword [ebp - 0x234]
mov eax, dword [eax + 0x14]
mov edx, dword [ebp + 0x24]
mov edx, dword [edx]
mov dword [edx + 0xf0], eax
lea eax, [ebp - 0x234]
call fcn.004c4420
cmp byte [ebp + 0x14], 0
je 0x4c55fd
cmp byte [ebp - 0x5d], 0
jne 0x4c55fd
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
mov esi, dword [eax + 0xe4]
mov dl, 0xed
mov eax, esi
call fcn.0062cb94
mov ebx, eax
test ebx, ebx
jl 0x4c54ef
mov edx, ebx
mov eax, esi
call fcn.0062cb7c
movzx eax, ax
push eax
mov edx, ebx
mov eax, esi
call fcn.0062cb50
mov edx, eax
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
mov eax, dword [eax + 0x174]
pop ecx
call fcn.0062d468
mov dl, 0xe1
mov eax, esi
call fcn.0062cb94
mov ebx, eax
test ebx, ebx
jl 0x4c55fd
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
mov eax, dword [eax + 0x1c]
mov dword [ebp - 0x40], eax
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
mov eax, dword [eax + 0x20]
mov dword [ebp - 0x44], eax
mov edx, ebx
mov eax, esi
call fcn.0062cb7c
movzx eax, ax
push eax
mov edx, ebx
mov eax, esi
call fcn.0062cb50
mov ecx, dword [ebp + 0x24]
mov ecx, dword [ecx]
pop edx
call fcn.006320c4
test al, al
je 0x4c55fd
cmp dword [ebp - 0x40], 1
jne 0x4c55b7
cmp dword [ebp - 0x44], 1
jne 0x4c55b7
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
cmp dword [eax + 0x2c8], 3
jne 0x4c556b
mov dword [ebp - 0x38], 0x851eb852
mov dword [ebp - 0x34], 0x400451eb
jmp 0x4c5577
xor eax, eax
mov dword [ebp - 0x38], eax
mov dword [ebp - 0x34], 0x3ff00000
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
fld qword [eax + 0x2b8]
fmul qword [ebp - 0x38]
call fcn.00403008
mov edx, eax
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
call fcn.00604b28
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
fld qword [eax + 0x2c0]
fmul qword [ebp - 0x38]
call fcn.00403008
mov edx, eax
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
call fcn.00604b58
jmp 0x4c55d1
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
mov edx, dword [ebp - 0x40]
call fcn.00604b28
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
mov edx, dword [ebp - 0x44]
call fcn.00604b58
mov eax, dword [ebp + 0x20]
mov eax, dword [eax + 0x28]
cmp byte [eax], 0
jne 0x4c55fd
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
cmp byte [eax + 0xfc], 0
je 0x4c55fd
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
mov edx, dword [eax + 0x2b0]
mov eax, dword [ebp - 0xc]
call fcn.00642130
ret
mov al, byte [ebp - 0xd]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x20