Function at 0x4be534
Capabilities:
Encrypt data using rc4 ksa

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffd48
push ebx
push esi
push edi
mov dword [ebp - 4], ecx
mov dword [ebp - 0xc], edx
mov dword [ebp - 8], 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 + 0x521], 0
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
cmp byte [eax + 0xfd], 0
je 0x4be694
xor eax, eax
push ebp
push 0x4be68d
push dword fs:[eax]
mov dword fs:[eax], esp
cmp dword [ebp - 0xc], 0
je 0x4be59f
mov eax, dword [ebp - 0xc]
cmp eax, dword [ebp - 8]
je 0x4be59f
mov eax, dword [ebp - 0xc]
call fcn.0042023c
mov dword [ebp - 0x58], eax
mov dword [ebp - 0x54], edx
jmp 0x4be5ad
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 0x4be5cd
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
mov eax, dword [eax + 0x184]
mov dl, 1
call fcn.0059f970
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
xor edx, edx
call fcn.00588e90
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 - 4]
mov edx, dword [ebp - 0xc]
mov eax, dword [ebp - 8]
call fcn.004be534
mov byte [ebp - 0xd], al
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
mov dl, 1
call fcn.00588e90
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
cmp dword [eax + 0x184], 0
je 0x4be655
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
mov eax, dword [eax + 0x184]
call fcn.0059fa40
test al, al
jne 0x4be655
mov byte [ebp - 0xd], 1
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
mov edx, dword [eax + 0x184]
mov eax, dword [ebp - 4]
mov ecx, dword [eax]
call dword [ecx + 0x28]
call fcn.0040459c
jmp 0x4bf539
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x4be694
push 0
push 0
mov eax, dword [ebp - 8]
call fcn.0042025c
cmp dword [ebp - 0x54], 0
jne 0x4be67c
cmp dword [ebp - 0x58], 0
jb 0x4be68c
jmp 0x4be67e
jl 0x4be68c
push dword [ebp - 0x54]
push dword [ebp - 0x58]
mov eax, dword [ebp - 0xc]
call fcn.0042025c
ret
mov eax, dword [ebp - 8]
call fcn.0042023c
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 - 8]
call fcn.004bfe28
mov dword [ebp - 0x30], eax
mov dword [ebp - 0x2c], edx
cmp dword [ebp - 0x2c], 0xffffffff
jne 0x4be6e4
cmp dword [ebp - 0x30], 0xffffffff
jne 0x4be6e4
mov eax, dword [ebp + 0x20]
mov eax, dword [eax + 0x28]
mov byte [eax], 1
jmp 0x4bf539
push dword [ebp - 0x2c]
push dword [ebp - 0x30]
mov eax, dword [ebp - 8]
call fcn.0042025c
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
cmp byte [eax + 0x51d], 0
je 0x4be71b
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
cmp byte [eax + 0x51c], 0
jne 0x4be71b
mov edx, dword [ebp + 0x24]
mov edx, dword [edx]
mov eax, dword [ebp - 8]
call fcn.004c0320
mov eax, dword [0x670adc]
cmp byte [eax], 0
je 0x4be733
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
cmp dword [eax + 0x5f4], 0
jne 0x4be737
xor eax, eax
jmp 0x4be739
mov al, 1
mov byte [ebp - 0x39], al
mov eax, dword [0x670c9c]
cmp byte [eax], 0
je 0x4be754
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
cmp dword [eax + 0x5f4], 0
jne 0x4be758
xor eax, eax
jmp 0x4be75a
mov al, 1
mov byte [ebp - 0x3a], al
cmp byte [ebp - 0x3a], 0
je 0x4be776
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
call fcn.00588eec
call fcn.005ad9a4
test al, al
jne 0x4be77a
xor eax, eax
jmp 0x4be77c
mov al, 1
mov edx, dword [ebp + 0x24]
mov edx, dword [edx]
mov byte [edx + 0x521], al
xor edi, edi
push ebp
push 0x4bf52f
push dword fs:[edi]
mov dword fs:[edi], esp
xor eax, eax
mov dword [ebp - 0x18], eax
mov esi, 0x65bdf4
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.004c062c
mov eax, dword [ebp + 0x20]
mov eax, dword [eax + 0x28]
cmp byte [eax], 0
je 0x4be7f2
mov byte [ebp - 0xd], 1
call fcn.0040459c
jmp 0x4bf539
cmp dword [ebp - 0xc], 0
je 0x4be821
mov eax, dword [ebp - 0xc]
cmp eax, dword [ebp - 8]
je 0x4be821
mov ecx, dword [ebp + 0x20]
mov ecx, dword [ecx + 0x28]
lea eax, [ebp - 0x234]
mov edx, dword [ebp - 0xc]
call fcn.004be2e0
lea eax, [ebp - 0x234]
xor edx, edx
call fcn.004c08f4
mov ecx, dword [ebp + 0x20]
mov ecx, dword [ecx + 0x28]
lea eax, [ebp - 0x234]
mov edx, dword [ebp - 8]
call fcn.004be2e0
mov eax, dword [ebp + 0x20]
mov eax, dword [eax + 0x28]
cmp byte [eax], 0
je 0x4be84e
mov byte [ebp - 0xd], 1
call fcn.0040459c
jmp 0x4bf539
xor eax, eax
push ebp
push 0x4be8b7
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
cmp byte [eax + 0x51c], 0
jne 0x4be89f
lea eax, [ebp - 0x234]
mov ecx, 0xffff
mov edx, 0xfe
call fcn.004cc678
mov ebx, 0xe0
lea eax, [ebp - 0x234]
mov ecx, 0xffff
mov edx, ebx
call fcn.004cc678
inc ebx
cmp ebx, 0xf0
jne 0x4be884
lea eax, [ebp - 0x234]
or edx, 0xffffffff
call fcn.004c08f4
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x4be8e4
mov eax, dword [ebp + 0x20]
mov eax, dword [eax + 0x28]
cmp byte [eax], 0
je 0x4be8fd
mov byte [ebp - 0xd], 1
call fcn.0040459c
jmp 0x4bf539
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.0x4be93e.0
jmp dword [eax*4 + 0x4be945]
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.0x4be93e.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.0x4be93e.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.0x4be93e.0
cmp byte [ebp + 0x18], 0
jne case.0x4be93e.0
mov al, byte [ebp + 0x14]
or al, byte [ebp + 8]
je case.0x4be93e.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.0x4be93e.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.0x4be93e.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 0x4bea46
mov dword [ebp - 0x208], 3
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
mov al, byte [eax + 0xcc]
sub al, 1
jb 0x4bea5d
je 0x4bea67
dec al
je 0x4bea73
jmp 0x4bea7d
xor eax, eax
mov dword [ebp - 0x1ec], eax
jmp 0x4bea7d
mov dword [ebp - 0x1ec], 1
jmp 0x4bea7d
mov dword [ebp - 0x1ec], 2
mov al, byte [ebp - 0x116]
sub al, 2
jb 0x4bea8b
je 0x4beaaf
jmp 0x4beb07
movzx edx, word [ebp - 0x114]
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
call fcn.00588df0
movzx edx, word [ebp - 0x112]
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
call fcn.00588e20
jmp 0x4beb07
movzx eax, word [ebp - 0x114]
mov dword [ebp - 0x2b0], eax
fild dword [ebp - 0x2b0]
fld xword [0x4bf548]
fdivp st(1)
call fcn.00402f84
mov edx, eax
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
call fcn.00588df0
movzx eax, word [ebp - 0x112]
mov dword [ebp - 0x2b0], eax
fild dword [ebp - 0x2b0]
fld xword [0x4bf548]
fdivp st(1)
call fcn.00402f84
mov edx, eax
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
call fcn.00588e20
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
cmp dword [eax + 0x52c], 0
je 0x4beb3f
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
mov eax, dword [eax + 0x52c]
call fcn.00402a88
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
xor edx, edx
mov dword [eax + 0x52c], edx
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
xor edx, edx
mov dword [eax + 0x530], 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.0x4beb95
jmp dword [eax*4 + 0x4beb9c]
mov dword [ebp - 0x200], 1
jmp case.default.0x4beb95
mov dword [ebp - 0x200], 2
jmp case.default.0x4beb95
mov dword [ebp - 0x200], 4
jmp case.default.0x4beb95
mov dword [ebp - 0x200], 8
jmp case.default.0x4beb95
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
cmp dword [eax + 0x14], 0
jle 0x4bec5a
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
cmp dword [eax + 0x18], 0
jle 0x4bec5a
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 0x4bec42
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 0x4bec42
mov dword [ebp - 0x20], ebx
jmp 0x4bec48
dec ebx
cmp ebx, 0xffffffff
jne 0x4bec09
mov ecx, dword [ebp - 0x20]
mov eax, 1
shl eax, cl
mov dword [ebp - 0x200], eax
jmp case.default.0x4beb95
mov dword [ebp - 0x200], 1
cmp byte [ebp + 8], 0
jne 0x4bec7b
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 0x4bec9e
push dword fs:[eax]
mov dword fs:[eax], esp
lea eax, [ebp - 0x234]
call fcn.004c1d90
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x4becc7
mov byte [ebp - 0xd], 1
mov eax, dword [ebp + 0x20]
mov eax, dword [eax + 0x28]
cmp byte [eax], 0
je 0x4bece0
call fcn.0040459c
jmp 0x4bf539
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 0x4bed0c
call fcn.0040459c
jmp 0x4bf539
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
mov ecx, dword [eax + 0x14]
test ecx, ecx
jle 0x4bed5a
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
cmp dword [eax + 0x18], 0
jle 0x4bed5a
mov eax, dword [ebp + 0x24]
cmp ecx, 0x7a120
jg 0x4bed5a
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
cmp dword [eax + 0x18], 0x7a120
jg 0x4bed5a
mov eax, dword [ebp + 0x24]
mov eax, ecx
mov edx, dword [ebp + 0x24]
mov edx, dword [edx]
imul dword [edx + 0x18]
cdq
cmp edx, 0
jne 0x4bed58
cmp eax, 0x47868c00
jbe 0x4bed78
jmp 0x4bed5a
jle 0x4bed78
mov eax, dword [ebp + 0x20]
mov eax, dword [eax + 0x28]
mov byte [eax], 1
push ebp
call fcn.004be490
pop ecx
mov byte [ebp - 0xd], 1
call fcn.0040459c
jmp 0x4bf539
mov eax, dword [ebp - 0x1c4]
shl eax, 2
call fcn.00402a68
mov dword [ebp - 0x18], eax
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
cmp byte [eax + 0x528], 0
je 0x4bee41
mov eax, dword [ebp - 0x208]
cmp eax, 5
ja case.0x4bedaa.0
jmp dword [eax*4 + 0x4bedb1]
push 3
mov ecx, dword [ebp - 0x1c0]
mov edx, dword [ebp - 0x1c4]
mov eax, dword [ebp - 4]
mov ebx, dword [eax]
call dword [ebx + 0x24]
jmp case.0x4bedaa.0
push 5
mov ecx, dword [ebp - 0x1c0]
mov edx, dword [ebp - 0x1c4]
mov eax, dword [ebp - 4]
mov ebx, dword [eax]
call dword [ebx + 0x24]
jmp case.0x4bedaa.0
push 5
mov ecx, dword [ebp - 0x1c0]
mov edx, dword [ebp - 0x1c4]
mov eax, dword [ebp - 4]
mov ebx, dword [eax]
call dword [ebx + 0x24]
jmp case.0x4bedaa.0
push 7
mov ecx, dword [ebp - 0x1c0]
mov edx, dword [ebp - 0x1c4]
mov eax, dword [ebp - 4]
mov ebx, dword [eax]
call dword [ebx + 0x24]
jmp case.0x4bedaa.0
push 5
mov ecx, dword [ebp - 0x1c0]
mov edx, dword [ebp - 0x1c4]
mov eax, dword [ebp - 4]
mov ebx, dword [eax]
call dword [ebx + 0x24]
jmp case.0x4bedaa.0
push 5
mov ecx, dword [ebp - 0x1c0]
mov edx, dword [ebp - 0x1c4]
mov eax, dword [ebp - 4]
mov ebx, dword [eax]
call dword [ebx + 0x24]
cmp dword [ebp - 0x208], 4
jne 0x4bef1a
cmp byte [ebp - 0x45], 0
jne 0x4bef1a
mov eax, dword [0x670d68]
cmp byte [eax], 0
je 0x4bef1a
cmp dword [ebp - 0x4c], 0
jne 0x4bef1a
cmp dword [ebp - 0x50], 0
jne 0x4bef1a
cmp dword [ebp - 0xc], 0
jne 0x4bef1a
mov eax, dword [ebp + 0x20]
mov eax, dword [eax + 0x28]
cmp byte [eax], 0
jne 0x4bef1a
cmp byte [ebp + 0x1c], 0
jne 0x4bef1a
cmp byte [ebp + 0x18], 0
jne 0x4bef1a
cmp byte [ebp + 0x14], 0
je 0x4bef1a
cmp dword [ebp - 0x1c4], 1
jbe 0x4bef1a
cmp dword [ebp - 0x1c0], 1
jbe 0x4bef1a
cmp dword [ebp - 0x200], 1
je 0x4beee0
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
cmp byte [eax + 0x520], 0
je 0x4beef9
push 0
push 0
mov ecx, dword [ebp + 0x24]
mov ecx, dword [ecx]
mov edx, dword [ebp - 8]
mov eax, dword [ebp - 4]
call fcn.004be364
mov byte [ebp - 0x45], al
jmp 0x4bef1a
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 - 8]
mov eax, dword [ebp - 4]
call fcn.004be364
mov byte [ebp - 0x45], al
cmp byte [ebp - 0x45], 0
jne 0x4bf239
mov eax, dword [ebp - 0x1c0]
mov dword [ebp - 0x2b8], eax
xor eax, eax
mov dword [ebp - 0x2b4], eax
fild qword [ebp - 0x2b8]
fdivr dword [0x4bf554]
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 0x4bf1fc
push dword fs:[ecx]
mov dword fs:[ecx], esp
xor ebx, ebx
mov esi, 1
jmp 0x4bf1d4
mov edx, ebx
mov eax, dword [ebp - 4]
mov ecx, dword [eax]
call dword [ecx]
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 0x208]
dec eax
je 0x4bef9c
dec eax
je 0x4bf0fc
dec eax
je 0x4bf013
dec eax
je 0x4bf056
jmp 0x4bf196
mov eax, dword [ebp - 4]
mov edx, dword [eax]
call dword [edx + 0x10]
cmp al, 3
jne 0x4befc2
lea edx, [ebp - 0x14]
lea eax, [ebp - 0x234]
mov ecx, 1
call fcn.004c1f2c
mov esi, eax
jmp 0x4bf196
lea edx, [ebp - 0x18]
lea eax, [ebp - 0x234]
mov ecx, 1
call fcn.004c1f2c
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 0x4bf196
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 0x4beff3
jmp 0x4bf196
cmp byte [ebp + 0x18], 0
je 0x4bf196
lea edx, [ebp - 0x14]
lea eax, [ebp - 0x234]
mov ecx, 1
call fcn.004c1f2c
mov esi, eax
cmp dword [ebp - 0x20c], 2
jne 0x4bf196
mov eax, dword [ebp - 4]
mov edx, dword [eax]
call dword [edx + 0xc]
mov edx, eax
mov eax, dword [ebp - 0x14]
call fcn.00566da8
jmp 0x4bf196
mov eax, dword [ebp - 4]
mov edx, dword [eax]
call dword [edx + 0x10]
cmp al, 5
jne 0x4bf0d3
lea edx, [ebp - 0x18]
lea eax, [ebp - 0x234]
mov ecx, 1
call fcn.004c1f2c
mov esi, eax
mov eax, dword [ebp + 0x20]
mov eax, dword [eax + 0x28]
cmp byte [eax], 0
jne 0x4bf1f2
cmp byte [ebp + 0x10], 0
je 0x4bf0ad
mov eax, dword [ebp - 0x18]
mov edx, dword [ebp - 0x1c4]
shl edx, 2
dec edx
test edx, edx
jl 0x4bf0ad
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 0x4bf0a1
push 1
mov eax, dword [ebp - 0x1c4]
push eax
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
push eax
mov edi, dword [0x671088]
mov edi, dword [edi]
mov ecx, dword [ebp - 0x14]
mov dl, 2
mov eax, dword [ebp - 0x18]
call edi
jmp 0x4bf196
lea edx, [ebp - 0x14]
lea eax, [ebp - 0x234]
mov ecx, 1
call fcn.004c1f2c
mov esi, eax
mov eax, dword [ebp + 0x20]
mov eax, dword [eax + 0x28]
cmp byte [eax], 0
jne 0x4bf1f2
jmp 0x4bf196
cmp byte [ebp - 0x39], 0
je 0x4bf166
lea edx, [ebp - 0x18]
lea eax, [ebp - 0x234]
mov ecx, 1
call fcn.004c1f2c
mov esi, eax
cmp dword [ebp - 0x20c], 2
jne 0x4bf143
push 1
mov eax, dword [ebp - 0x1c4]
push eax
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
push eax
mov edi, dword [0x671088]
mov edi, dword [edi]
mov ecx, dword [ebp - 0x14]
xor edx, edx
mov eax, dword [ebp - 0x18]
call edi
jmp 0x4bf196
push 1
mov eax, dword [ebp - 0x1c4]
push eax
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
push eax
mov edi, dword [0x671088]
mov edi, dword [edi]
mov ecx, dword [ebp - 0x14]
mov dl, 1
mov eax, dword [ebp - 0x18]
call edi
jmp 0x4bf196
lea edx, [ebp - 0x14]
lea eax, [ebp - 0x234]
mov ecx, 1
call fcn.004c1f2c
mov esi, eax
cmp dword [ebp - 0x20c], 2
jne 0x4bf196
mov eax, dword [ebp - 4]
mov edx, dword [eax]
call dword [edx + 0xc]
mov edx, eax
mov eax, dword [ebp - 0x14]
call fcn.00566da8
add ebx, esi
mov eax, dword [ebp + 0x20]
add dword [eax + 0xc], esi
mov eax, dword [ebp + 0x20]
cmp word [eax + 2], 0
je 0x4bf1c9
mov eax, dword [ebp + 0x20]
fild dword [eax + 0xc]
mov eax, dword [ebp + 0x20]
fmul qword [eax + 0x18]
call fcn.00402f84
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 0x4bf1f2
mov eax, dword [ebp - 0x1a8]
cmp eax, dword [ebp - 0x1c0]
jae 0x4bf1f2
mov eax, dword [ebp - 4]
mov edx, dword [eax]
call dword [edx + 8]
cmp ebx, eax
jl 0x4bef6d
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x4bf21e
cmp ebx, dword [ebp - 0x1c0]
jge 0x4bf239
mov eax, dword [ebp + 0x20]
mov eax, dword [eax + 0x28]
mov byte [eax], 1
call fcn.0040459c
jmp 0x4bf539
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x4bf539
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
mov eax, dword [eax + 0xe4]
call fcn.00598198
mov esi, dword [ebp - 0x104]
xor ebx, ebx
test esi, esi
je 0x4bf296
mov al, byte [esi + 4]
cmp al, 0xe0
setne dl
or dl, bl
je 0x4bf288
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.005980dc
cmp byte [esi + 4], 0xe0
jne 0x4bf290
mov bl, 1
mov esi, dword [esi]
test esi, esi
jne 0x4bf262
mov al, byte [ebp + 0xc]
and al, byte [ebp - 0x39]
je 0x4bf2e7
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
call fcn.00588eec
cmp byte [eax + 0x18], 0
je 0x4bf2e7
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
call fcn.00588eec
call fcn.005adb20
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
mov eax, dword [eax + 0xe4]
mov dl, 0xe2
call fcn.005980a8
cmp eax, 0xffffffff
je 0x4bf2e7
mov edx, dword [ebp + 0x24]
mov edx, dword [edx]
mov edx, dword [edx + 0xe4]
xchg edx, eax
call fcn.00598340
jmp 0x4bf2bd
mov al, byte [ebp + 0xc]
and al, byte [ebp - 0x3a]
je 0x4bf325
cmp byte [ebp + 0x1c], 0
jne 0x4bf325
cmp byte [ebp + 0x14], 0
je 0x4bf325
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
mov eax, dword [eax + 0xe4]
mov dl, 0xe2
call fcn.005980a8
cmp eax, 0xffffffff
je 0x4bf325
mov edx, dword [ebp + 0x24]
mov edx, dword [edx]
mov edx, dword [edx + 0xe4]
xchg edx, eax
call fcn.00598340
jmp 0x4bf2fb
mov eax, dword [ebp + 0x20]
mov eax, dword [eax + 0x28]
cmp byte [eax], 0
jne 0x4bf371
cmp byte [ebp + 0x1c], 0
jne 0x4bf371
xor eax, eax
mov dword [ebp - 0x238], eax
xor eax, eax
push ebp
push 0x4bf367
push dword fs:[eax]
mov dword fs:[eax], esp
cmp byte [ebp - 0x45], 0
jne 0x4bf35d
lea eax, [ebp - 0x234]
call fcn.004c0a74
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x4bf371
lea eax, [ebp - 0x234]
call fcn.004c06fc
cmp dword [ebp - 0x18], 0
je 0x4bf38a
mov eax, dword [ebp - 0x18]
call fcn.00402a88
mov eax, dword [ebp - 0x234]
cmp dword [eax + 0x70], 0
je 0x4bf3be
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.004be348
cmp byte [ebp + 0x14], 0
je 0x4bf52e
cmp byte [ebp - 0x5d], 0
jne 0x4bf52e
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
mov esi, dword [eax + 0xe4]
mov dl, 0xed
mov eax, esi
call fcn.005980a8
mov ebx, eax
test ebx, ebx
jl 0x4bf420
mov edx, ebx
mov eax, esi
call fcn.00598090
movzx eax, ax
push eax
mov edx, ebx
mov eax, esi
call fcn.00598064
mov edx, eax
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
mov eax, dword [eax + 0x174]
pop ecx
call fcn.00598c10
mov dl, 0xe1
mov eax, esi
call fcn.005980a8
mov ebx, eax
test ebx, ebx
jl 0x4bf52e
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.00598090
movzx eax, ax
push eax
mov edx, ebx
mov eax, esi
call fcn.00598064
mov ecx, dword [ebp + 0x24]
mov ecx, dword [ecx]
pop edx
call fcn.0059d8d4
test al, al
je 0x4bf52e
cmp dword [ebp - 0x40], 1
jne 0x4bf4e8
cmp dword [ebp - 0x44], 1
jne 0x4bf4e8
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
cmp dword [eax + 0x2c8], 3
jne 0x4bf49c
mov dword [ebp - 0x38], 0x851eb852
mov dword [ebp - 0x34], 0x400451eb
jmp 0x4bf4a8
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.00402f84
mov edx, eax
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
call fcn.00588df0
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
fld qword [eax + 0x2c0]
fmul qword [ebp - 0x38]
call fcn.00402f84
mov edx, eax
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
call fcn.00588e20
jmp 0x4bf502
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
mov edx, dword [ebp - 0x40]
call fcn.00588df0
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
mov edx, dword [ebp - 0x44]
call fcn.00588e20
mov eax, dword [ebp + 0x20]
mov eax, dword [eax + 0x28]
cmp byte [eax], 0
jne 0x4bf52e
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
cmp byte [eax + 0xfc], 0
je 0x4bf52e
mov eax, dword [ebp + 0x24]
mov eax, dword [eax]
mov edx, dword [eax + 0x2b0]
mov eax, dword [ebp - 4]
call fcn.005ae510
ret
mov al, byte [ebp - 0xd]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x20