Function at 0x4e6be0
Capabilities:
Encrypt data using rc4 ksa
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xffffffc0
sub esp, 0xb4
mov eax, dword [0x61c948]
xor eax, esp
mov dword [esp + 0xb0], eax
push ebx
mov ebx, dword [ebp + 8]
movzx eax, byte [ebx + 2]
push esi
push edi
movzx edi, byte [eax + 0x5a5918]
xor esi, esi
test edi, edi
mov dword [esp + 0x20], edi
jle 0x4e6c56
mov edx, dword [ebx + 0x334]
cmp edx, 1
jbe 0x4e6c3d
mov eax, dword [ebx + 0x338]
mov ecx, 0x20
sub ecx, edx
shl eax, cl
shr eax, 0x1f
add edx, 0xffffffff
mov dword [ebx + 0x334], edx
jmp 0x4e6c48
push 1
push ebx
call fcn.004f1b40
add esp, 8
mov byte [esp + esi + 0xa4], al
add esi, 1
cmp esi, edi
jl 0x4e6c15
xor esi, esi
test edi, edi
jle 0x4e6ca1
lea esp, [esp]
mov edx, dword [ebx + 0x334]
cmp edx, 1
jbe 0x4e6c88
mov eax, dword [ebx + 0x338]
mov ecx, 0x20
sub ecx, edx
shl eax, cl
shr eax, 0x1f
add edx, 0xffffffff
mov dword [ebx + 0x334], edx
jmp 0x4e6c93
push 1
push ebx
call fcn.004f1b40
add esp, 8
mov byte [esp + esi + 0xb4], al
add esi, 1
cmp esi, edi
jl 0x4e6c60
xor ecx, ecx
cmp byte [ebx + 2], cl
sete cl
mov esi, ecx
jmp 0x4e6cb0
mov edx, dword [ebx + 0x334]
cmp edx, 1
jbe 0x4e6cd8
mov eax, dword [ebx + 0x338]
mov ecx, 0x20
sub ecx, edx
shl eax, cl
shr eax, 0x1f
add edx, 0xffffffff
mov dword [ebx + 0x334], edx
jmp 0x4e6ce3
push 1
push ebx
call fcn.004f1b40
add esp, 8
test eax, eax
je 0x4e6d6b
mov edx, dword [ebx + 0x334]
cmp edx, 8
jbe 0x4e6d13
mov eax, dword [ebx + 0x338]
mov ecx, 0x20
sub ecx, edx
shl eax, cl
sar eax, 0x18
add edx, 0xfffffff8
mov dword [ebx + 0x334], edx
jmp 0x4e6d1e
push 8
push ebx
call fcn.004f1bc0
add esp, 8
cmp dword [ebx + 0x30], 0
je 0x4e6d6b
mov edx, eax
and eax, 0x1f
sar edx, 5
or eax, 0x20
add edx, edx
shl eax, 0xd
mov dword [esp + 0x24], eax
fild dword [esp + 0x24]
mov eax, dword [ebx + 0x44]
add edx, edx
add edx, edx
mov ecx, 0x5a5668
sub ecx, edx
test eax, eax
fmul qword [ecx]
mov dword [esp + 0x24], eax
je 0x4e6d65
mov edx, dword [ebx + 0x40]
push edx
sub esp, 8
fstp qword [esp]
call dword [esp + 0x30]
add esp, 0xc
fmul qword [ebx + 0x20]
fstp qword [ebx + 0x38]
mov eax, esi
sub esi, 1
test eax, eax
jne 0x4e6cb0
mov edx, dword [ebx + 0x334]
cmp edx, 1
jbe 0x4e6da0
mov eax, dword [ebx + 0x338]
mov ecx, 0x20
sub ecx, edx
shl eax, cl
shr eax, 0x1f
add edx, 0xffffffff
mov dword [ebx + 0x334], edx
jmp 0x4e6dab
push 1
push ebx
call fcn.004f1b40
add esp, 8
test eax, eax
je 0x4e6fa1
mov edx, dword [ebx + 0x334]
cmp edx, 1
mov byte [ebx + 0x48], 0
jbe 0x4e6ddf
mov eax, dword [ebx + 0x338]
mov ecx, 0x20
sub ecx, edx
shl eax, cl
shr eax, 0x1f
add edx, 0xffffffff
mov dword [ebx + 0x334], edx
jmp 0x4e6dea
push 1
push ebx
call fcn.004f1b40
add esp, 8
test eax, eax
je 0x4e6fa1
xor esi, esi
test edi, edi
jle 0x4e6e41
jmp 0x4e6e00
mov edx, dword [ebx + 0x334]
cmp edx, 1
jbe 0x4e6e28
mov eax, dword [ebx + 0x338]
mov ecx, 0x20
sub ecx, edx
shl eax, cl
shr eax, 0x1f
add edx, 0xffffffff
mov dword [ebx + 0x334], edx
jmp 0x4e6e33
push 1
push ebx
call fcn.004f1b40
add esp, 8
mov ecx, esi
shl al, cl
add esi, 1
or byte [ebx + 0x48], al
cmp esi, edi
jl 0x4e6e00
mov al, byte [ebx + 2]
cmp al, 1
jbe 0x4e6eae
cmp al, 2
jne 0x4e6e82
mov edx, dword [ebx + 0x334]
cmp edx, 1
jbe 0x4e6e74
mov eax, dword [ebx + 0x338]
mov ecx, 0x20
sub ecx, edx
shl eax, cl
shr eax, 0x1f
add edx, 0xffffffff
mov dword [ebx + 0x334], edx
jmp 0x4e6e7f
push 1
push ebx
call fcn.004f1b40
add esp, 8
mov byte [ebx + 0x49], al
mov edx, dword [ebx + 0x334]
cmp edx, 4
jbe 0x4e6ec8
mov eax, dword [ebx + 0x338]
mov ecx, 0x20
sub ecx, edx
shl eax, cl
shr eax, 0x1c
add edx, 0xfffffffc
mov dword [ebx + 0x334], edx
mov dword [esp + 0x18], eax
jmp 0x4e6ed7
mov eax, 1
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0xb0]
xor ecx, esp
call fcn.004721e8
mov esp, ebp
pop ebp
ret
push 4
push ebx
call fcn.004f1b40
add esp, 8
mov dword [esp + 0x18], eax
mov esi, dword [ebx + 0x334]
cmp esi, 4
jbe 0x4e6eff
mov edx, dword [ebx + 0x338]
mov ecx, 0x20
sub ecx, esi
shl edx, cl
shr edx, 0x1c
add esi, 0xfffffffc
mov dword [ebx + 0x334], esi
jmp 0x4e6f10
push 4
push ebx
call fcn.004f1b40
mov edx, eax
mov eax, dword [esp + 0x20]
add esp, 8
mov dword [esp + 0x24], edx
sub edx, eax
lea ecx, [edx + 3]
test ecx, ecx
jl 0x4e6eae
mov byte [ebx + 0x321], cl
mov dl, byte [eax + 0x63da88]
mov byte [ebx + 0x320], dl
mov dl, 0xc
imul dl
add al, 0x25
mov byte [ebx + 0x4a], al
mov al, byte [esp + 0x24]
imul dl
add al, 0x49
xor esi, esi
lea edi, [ecx - 1]
test edi, edi
mov byte [ebx + 0x4b], al
mov dword [ebx + 0x4c], esi
jle 0x4e6fa1
nop
mov edx, dword [ebx + 0x334]
cmp edx, 1
jbe 0x4e6f78
mov eax, dword [ebx + 0x338]
mov ecx, 0x20
sub ecx, edx
shl eax, cl
shr eax, 0x1f
add edx, 0xffffffff
mov dword [ebx + 0x334], edx
jmp 0x4e6f83
push 1
push ebx
call fcn.004f1b40
add esp, 8
test eax, eax
je 0x4e6f9a
mov eax, 1
mov ecx, esi
shl eax, cl
or dword [ebx + 0x4c], eax
add byte [ebx + 0x321], 0xff
add esi, 1
cmp esi, edi
jl 0x4e6f50
cmp byte [ebx + 0x48], 0
je 0x4e71b0
xor ecx, ecx
cmp dword [esp + 0x20], ecx
mov dword [esp + 0x34], ecx
mov dword [esp + 0x28], ecx
jle 0x4e713a
lea edx, [ebx + 0x50]
mov dword [esp + 0x18], edx
mov al, byte [ebx + 0x48]
shr al, cl
test al, 1
je 0x4e711d
mov edx, dword [ebx + 0x334]
cmp edx, 1
jbe 0x4e6ffb
mov eax, dword [ebx + 0x338]
mov ecx, 0x20
sub ecx, edx
shl eax, cl
shr eax, 0x1f
add edx, 0xffffffff
mov dword [ebx + 0x334], edx
jmp 0x4e7006
push 1
push ebx
call fcn.004f1b40
add esp, 8
test eax, eax
je 0x4e711d
mov edx, dword [ebx + 0x334]
cmp edx, 2
mov dword [esp + 0x34], 1
jbe 0x4e703e
mov eax, dword [ebx + 0x338]
mov ecx, 0x20
sub ecx, edx
shl eax, cl
shr eax, 0x1e
add edx, 0xfffffffe
mov dword [ebx + 0x334], edx
jmp 0x4e7049
push 2
push ebx
call fcn.004f1b40
add esp, 8
lea ecx, [eax + eax*2]
xor edi, edi
cmp byte [ebx + 0x321], 0
mov dword [esp + 0x2c], ecx
jbe 0x4e711d
mov edx, dword [esp + 0x18]
mov dword [esp + 0x38], edx
jmp 0x4e7070
mov edx, dword [ebx + 0x334]
cmp edx, 4
jbe 0x4e7098
mov eax, dword [ebx + 0x338]
mov ecx, 0x20
sub ecx, edx
shl eax, cl
shr eax, 0x1c
add edx, 0xfffffffc
mov dword [ebx + 0x334], edx
jmp 0x4e70a3
push 4
push ebx
call fcn.004f1b40
add esp, 8
mov edx, dword [ebx + 0x334]
cmp edx, 4
mov esi, eax
jbe 0x4e70cd
mov eax, dword [ebx + 0x338]
mov ecx, 0x20
sub ecx, edx
shl eax, cl
shr eax, 0x1c
add edx, 0xfffffffc
mov dword [ebx + 0x334], edx
jmp 0x4e70d8
push 4
push ebx
call fcn.004f1b40
add esp, 8
cmp esi, 0xf
jne 0x4e70e2
shl eax, 0xe
jmp 0x4e70e8
or eax, 0x10
shl eax, 0xd
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x2c]
fild dword [esp + 0x24]
add esi, eax
mov eax, dword [esp + 0x38]
fmul qword [esi*8 + 0x5a5650]
add edi, 1
add eax, 8
mov dword [esp + 0x38], eax
fstp qword [eax - 8]
movzx ecx, byte [ebx + 0x321]
cmp edi, ecx
jl 0x4e7070
mov ecx, dword [esp + 0x28]
add dword [esp + 0x18], 0x90
add ecx, 1
cmp ecx, dword [esp + 0x20]
mov dword [esp + 0x28], ecx
jl 0x4e6fc6
cmp byte [ebx + 2], 2
jne 0x4e725b
cmp byte [ebx + 0x49], 0
je 0x4e71b0
cmp dword [esp + 0x34], 0
je 0x4e71b0
xor esi, esi
cmp byte [ebx + 0x321], 0
jbe 0x4e71b0
lea edi, [ebx + 0xe0]
mov edx, dword [ebx + 0x334]
cmp edx, 1
jbe 0x4e718a
mov eax, dword [ebx + 0x338]
mov ecx, 0x20
sub ecx, edx
shl eax, cl
shr eax, 0x1f
add edx, 0xffffffff
mov dword [ebx + 0x334], edx
jmp 0x4e7195
push 1
push ebx
call fcn.004f1b40
add esp, 8
test eax, eax
je 0x4e719f
fld qword [edi]
fchs
fstp qword [edi]
movzx edx, byte [ebx + 0x321]
add esi, 1
add edi, 8
cmp esi, edx
jl 0x4e7162
cmp byte [ebx + 2], 2
jne 0x4e725b
mov edx, dword [ebx + 0x334]
cmp edx, 1
jbe 0x4e71e2
mov eax, dword [ebx + 0x338]
mov ecx, 0x20
sub ecx, edx
shl eax, cl
shr eax, 0x1f
add edx, 0xffffffff
mov dword [ebx + 0x334], edx
jmp 0x4e71ed
push 1
push ebx
call fcn.004f1b40
add esp, 8
test eax, eax
je 0x4e725b
cmp byte [ebx + 0x48], 0
mov byte [ebx + 0x322], 0
je 0x4e7204
movzx edi, byte [ebx + 0x4a]
jmp 0x4e7209
mov edi, 0xfd
xor esi, esi
jmp 0x4e7210
mov edx, dword [ebx + 0x334]
cmp edx, 1
jbe 0x4e7238
mov eax, dword [ebx + 0x338]
mov ecx, 0x20
sub ecx, edx
shl eax, cl
shr eax, 0x1f
add edx, 0xffffffff
mov dword [ebx + 0x334], edx
jmp 0x4e7243
push 1
push ebx
call fcn.004f1b40
add esp, 8
mov ecx, esi
shl al, cl
add esi, 1
or byte [ebx + 0x322], al
mov eax, dword [esi*4 + 0x63da74]
cmp eax, edi
jl 0x4e7210
cmp byte [ebx + 0x48], 0
mov byte [esp + 0x33], 0
mov byte [esp + 0x1f], 0
je 0x4e72a2
mov edx, dword [ebx + 0x334]
cmp edx, 2
jbe 0x4e7293
mov eax, dword [ebx + 0x338]
mov ecx, 0x20
sub ecx, edx
shl eax, cl
shr eax, 0x1e
add edx, 0xfffffffe
mov dword [ebx + 0x334], edx
jmp 0x4e729e
push 2
push ebx
call fcn.004f1b40
add esp, 8
mov byte [esp + 0x33], al
mov edi, dword [esp + 0x20]
xor esi, esi
test edi, edi
jle 0x4e72ed
mov edx, dword [ebx + 0x334]
cmp edx, 2
jbe 0x4e72d4
mov eax, dword [ebx + 0x338]
mov ecx, 0x20
sub ecx, edx
shl eax, cl
shr eax, 0x1e
add edx, 0xfffffffe
mov dword [ebx + 0x334], edx
jmp 0x4e72df
push 2
push ebx
call fcn.004f1b40
add esp, 8
mov byte [esp + esi + 0xac], al
add esi, 1
cmp esi, edi
jl 0x4e72ac
cmp byte [ebx + 3], 0
je 0x4e732a
mov edx, dword [ebx + 0x334]
cmp edx, 1
jbe 0x4e731b
mov eax, dword [ebx + 0x338]
mov ecx, 0x20
sub ecx, edx
shl eax, cl
shr eax, 0x1f
add edx, 0xffffffff
mov dword [ebx + 0x334], edx
jmp 0x4e7326
push 1
push ebx
call fcn.004f1b40
add esp, 8
mov byte [esp + 0x1f], al
xor edx, edx
test edi, edi
mov dword [esp + 0x28], edx
jle 0x4e73ad
cmp byte [esp + edx + 0xac], 0
je 0x4e73a2
mov al, byte [ebx + 0x48]
mov cl, dl
shr al, cl
test al, 1
je 0x4e7355
mov cl, byte [ebx + 0x4a]
mov byte [ebx + edx + 0x323], cl
jmp 0x4e73a2
mov esi, dword [ebx + 0x334]
cmp esi, 6
jbe 0x4e737d
mov eax, dword [ebx + 0x338]
mov ecx, 0x20
sub ecx, esi
shl eax, cl
shr eax, 0x1a
add esi, 0xfffffffa
mov dword [ebx + 0x334], esi
jmp 0x4e738c
push 6
push ebx
call fcn.004f1b40
mov edx, dword [esp + 0x30]
add esp, 8
cmp eax, 0x3c
jg 0x4e6eae
mov cl, 3
imul cl
add al, 0x49
mov byte [ebx + edx + 0x323], al
add edx, 1
cmp edx, edi
mov dword [esp + 0x28], edx
jl 0x4e7334
cmp byte [esp + 0x33], 0
mov byte [esp + 0x17], 0
je 0x4e7434
movzx esi, byte [esp + 0x33]
movzx edx, byte [ebx + 0x4a]
movzx eax, byte [ebx + 0x4b]
sub eax, edx
lea ecx, [esi - 1]
mov edi, 3
shl edi, cl
cdq
mov byte [esp + 0x17], 0x40
idiv edi
mov edi, eax
mov eax, dword [ebx + 0x334]
cmp eax, 4
jbe 0x4e7406
mov edx, dword [ebx + 0x338]
mov ecx, 0x20
sub ecx, eax
shl edx, cl
shr edx, 0x1c
add eax, 0xfffffffc
mov dword [ebx + 0x334], eax
mov ecx, edx
jmp 0x4e7413
push 4
push ebx
call fcn.004f1b40
add esp, 8
mov ecx, eax
movzx eax, byte [ebx + 0x4a]
push edi
lea eax, [eax + ebx + 0x4ab]
add cl, cl
push esi
mov edi, ebx
call fcn.004e61a0
add esp, 8
test eax, eax
jne 0x4e6eae
xor esi, esi
cmp dword [esp + 0x20], esi
jle 0x4e7517
lea ecx, [ebx + 0x6ac]
mov dword [esp + 0x18], ecx
lea ebx, [ebx]
mov al, byte [esp + esi + 0xac]
test al, al
je 0x4e7502
movzx eax, al
mov dl, 1
mov ecx, esi
shl dl, cl
lea ecx, [eax - 1]
mov dword [esp + 0x24], eax
movzx eax, byte [ebx + esi + 0x323]
or byte [esp + 0x17], dl
mov edi, 3
shl edi, cl
lea eax, [eax + edi - 4]
cdq
idiv edi
mov edi, eax
mov eax, dword [ebx + 0x334]
cmp eax, 4
jbe 0x4e74b5
mov edx, dword [ebx + 0x338]
mov ecx, 0x20
sub ecx, eax
shl edx, cl
shr edx, 0x1c
add eax, 0xfffffffc
mov dword [ebx + 0x334], eax
mov ecx, edx
jmp 0x4e74c2
push 4
push ebx
call fcn.004f1b40
add esp, 8
mov ecx, eax
mov edx, dword [esp + 0x24]
mov eax, dword [esp + 0x18]
push edi
push edx
mov edi, ebx
mov byte [eax - 1], cl
call fcn.004e61a0
add esp, 8
test eax, eax
jne 0x4e6eae
mov eax, dword [ebx + 0x334]
cmp eax, 2
jbe 0x4e74f7
add eax, 0xfffffffe
mov dword [ebx + 0x334], eax
jmp 0x4e7502
push 2
push ebx
call fcn.004f1b40
add esp, 8
add dword [esp + 0x18], 0x200
add esi, 1
cmp esi, dword [esp + 0x20]
jl 0x4e7450
cmp byte [esp + 0x1f], 0
je 0x4e757e
mov edx, dword [ebx + 0x334]
or byte [esp + 0x17], 0x20
cmp edx, 4
jbe 0x4e754b
mov eax, dword [ebx + 0x338]
mov ecx, 0x20
sub ecx, edx
shl eax, cl
shr eax, 0x1c
add edx, 0xfffffffc
mov dword [ebx + 0x334], edx
jmp 0x4e7556
push 4
push ebx
call fcn.004f1b40
add esp, 8
movzx edx, byte [esp + 0x1f]
mov ecx, eax
push 2
lea eax, [ebx + 0x10ac]
push edx
mov edi, ebx
mov byte [ebx + 0x10ab], cl
call fcn.004e61a0
add esp, 8
test eax, eax
jne 0x4e6eae
mov edx, dword [ebx + 0x334]
cmp edx, 1
jbe 0x4e75a6
mov eax, dword [ebx + 0x338]
mov ecx, 0x20
sub ecx, edx
shl eax, cl
shr eax, 0x1f
add edx, 0xffffffff
mov dword [ebx + 0x334], edx
jmp 0x4e75b1
push 1
push ebx
call fcn.004f1b40
add esp, 8
test eax, eax
je 0x4e75f4
mov edx, dword [ebx + 0x334]
cmp edx, 0xb
mov byte [esp + 0x17], 0xff
jbe 0x4e75e2
mov eax, dword [ebx + 0x338]
mov ecx, 0x20
sub ecx, edx
shl eax, cl
shr eax, 0x15
add edx, 0xfffffff5
mov dword [ebx + 0x334], edx
jmp 0x4e75ed
push 0xb
push ebx
call fcn.004f1b40
add esp, 8
mov word [ebx + 0x328], ax
mov edx, dword [ebx + 0x334]
cmp edx, 1
jbe 0x4e761c
mov eax, dword [ebx + 0x338]
mov ecx, 0x20
sub ecx, edx
shl eax, cl
shr eax, 0x1f
add edx, 0xffffffff
mov dword [ebx + 0x334], edx
jmp 0x4e7627
push 1
push ebx
call fcn.004f1b40
add esp, 8
test eax, eax
je 0x4e773c
mov edx, dword [ebx + 0x334]
cmp edx, 6
mov byte [esp + 0x17], 0xff
jbe 0x4e765c
mov eax, dword [ebx + 0x338]
mov ecx, 0x20
sub ecx, edx
shl eax, cl
shr eax, 0x1a
add edx, 0xfffffffa
mov dword [ebx + 0x334], edx
jmp 0x4e7667
push 6
push ebx
call fcn.004f1b40
add esp, 8
cmp byte [ebx + 0x48], 0
mov byte [ebx + 0x33c], al
je 0x4e76ac
mov edx, dword [ebx + 0x334]
cmp edx, 7
jbe 0x4e769b
mov eax, dword [ebx + 0x338]
mov ecx, 0x20
sub ecx, edx
shl eax, cl
shr eax, 0x19
add edx, 0xfffffff9
mov dword [ebx + 0x334], edx
jmp 0x4e76a6
push 7
push ebx
call fcn.004f1b40
add esp, 8
mov byte [ebx + 0x33d], al
cmp dword [esp + 0x20], 0
jle 0x4e76fd
mov edi, dword [esp + 0x20]
lea esi, [ebx + 0x371]
lea ecx, [ecx]
mov edx, dword [ebx + 0x334]
cmp edx, 7
jbe 0x4e76e8
mov eax, dword [ebx + 0x338]
mov ecx, 0x20
sub ecx, edx
shl eax, cl
shr eax, 0x19
add edx, 0xfffffff9
mov dword [ebx + 0x334], edx
jmp 0x4e76f3
push 7
push ebx
call fcn.004f1b40
add esp, 8
mov byte [esi], al
add esi, 0x34
sub edi, 1
jne 0x4e76c0
cmp byte [ebx + 3], 0
je 0x4e773c
mov edx, dword [ebx + 0x334]
cmp edx, 7
jbe 0x4e772b
mov eax, dword [ebx + 0x338]
mov ecx, 0x20
sub ecx, edx
shl eax, cl
shr eax, 0x19
add edx, 0xfffffff9
mov dword [ebx + 0x334], edx
jmp 0x4e7736
push 7
push ebx
call fcn.004f1b40
add esp, 8
mov byte [ebx + 0x475], al
cmp byte [ebx + 0x48], 0
je 0x4e7800
mov edx, dword [ebx + 0x334]
cmp edx, 1
jbe 0x4e776e
mov eax, dword [ebx + 0x338]
mov ecx, 0x20
sub ecx, edx
shl eax, cl
shr eax, 0x1f
add edx, 0xffffffff
mov dword [ebx + 0x334], edx
jmp 0x4e7779
push 1
push ebx
call fcn.004f1b40
add esp, 8
test eax, eax
je 0x4e7800
mov edx, dword [ebx + 0x334]
or byte [esp + 0x17], 0x40
cmp edx, 3
jbe 0x4e77ae
mov eax, dword [ebx + 0x338]
mov ecx, 0x20
sub ecx, edx
shl eax, cl
shr eax, 0x1d
add edx, 0xfffffffd
mov dword [ebx + 0x334], edx
jmp 0x4e77b9
push 3
push ebx
call fcn.004f1b40
add esp, 8
mov edx, dword [ebx + 0x334]
mov cl, 9
sub cl, al
cmp edx, 3
mov byte [ebx + 0x4a9], cl
jbe 0x4e77eb
mov eax, dword [ebx + 0x338]
mov ecx, 0x20
sub ecx, edx
shl eax, cl
shr eax, 0x1d
add edx, 0xfffffffd
mov dword [ebx + 0x334], edx
jmp 0x4e77f6
push 3
push ebx
call fcn.004f1b40
add esp, 8
mov dl, 9
sub dl, al
mov byte [ebx + 0x4aa], dl
mov edx, dword [ebx + 0x334]
cmp edx, 1
jbe 0x4e7828
mov eax, dword [ebx + 0x338]
mov ecx, 0x20
sub ecx, edx
shl eax, cl
shr eax, 0x1f
add edx, 0xffffffff
mov dword [ebx + 0x334], edx
jmp 0x4e7833
push 1
push ebx
call fcn.004f1b40
add esp, 8
test eax, eax
je 0x4e793f
cmp byte [ebx + 0x48], 0
mov byte [esp + 0x17], 0xff
je 0x4e787f
mov edx, dword [ebx + 0x334]
cmp edx, 2
jbe 0x4e786e
mov eax, dword [ebx + 0x338]
mov ecx, 0x20
sub ecx, edx
shl eax, cl
shr eax, 0x1e
add edx, 0xfffffffe
mov dword [ebx + 0x334], edx
jmp 0x4e7879
push 2
push ebx
call fcn.004f1b40
add esp, 8
mov byte [ebx + 0x33e], al
cmp dword [esp + 0x20], 0
jle 0x4e78cd
mov edi, dword [esp + 0x20]
lea esi, [ebx + 0x372]
mov edx, dword [ebx + 0x334]
cmp edx, 2
jbe 0x4e78b8
mov eax, dword [ebx + 0x338]
mov ecx, 0x20
sub ecx, edx
shl eax, cl
shr eax, 0x1e
add edx, 0xfffffffe
mov dword [ebx + 0x334], edx
jmp 0x4e78c3
push 2
push ebx
call fcn.004f1b40
add esp, 8
mov byte [esi], al
add esi, 0x34
sub edi, 1
jne 0x4e7890
cmp byte [ebx + 0x48], 0
je 0x4e78f5
cmp byte [ebx + 0x33e], 1
jne 0x4e78f5
lea eax, [ebx + 0x33f]
push eax
mov esi, ebx
call fcn.004e62a0
add esp, 4
test eax, eax
jne 0x4e6eae
mov edi, dword [esp + 0x20]
test edi, edi
mov dword [esp + 0x28], 0
jle 0x4e794e
lea edi, [ebx + 0x373]
jmp 0x4e7910
cmp byte [edi - 1], 1
jne 0x4e7929
push edi
mov esi, ebx
call fcn.004e62a0
add esp, 4
test eax, eax
jne 0x4e6eae
mov eax, dword [esp + 0x28]
add eax, 1
add edi, 0x34
cmp eax, dword [esp + 0x20]
mov dword [esp + 0x28], eax
jl 0x4e7910
jmp 0x4e794a
cmp byte [esp + 0x17], 0
je 0x4e7ad7
mov edi, dword [esp + 0x20]
cmp byte [ebx + 0x33c], 0
jne 0x4e79f6
cmp byte [ebx + 0x48], 0
mov dl, 0xf8
je 0x4e796f
test byte [ebx + 0x33d], dl
jne 0x4e79f6
cmp byte [ebx + 3], 0
je 0x4e797d
test byte [ebx + 0x475], dl
jne 0x4e79f6
xor eax, eax
test edi, edi
jle 0x4e799e
lea ecx, [ebx + 0x371]
lea esp, [esp]
test byte [ecx], dl
jne 0x4e79f6
add eax, 1
add ecx, 0x34
cmp eax, edi
jl 0x4e7990
push 0x100
lea ecx, [ebx + 0x5ab]
push 0
push ecx
call fcn.004727f0
add esp, 0xc
test edi, edi
jle 0x4e79db
lea esi, [ebx + 0x7ab]
mov edi, edi
push 0x100
push 0
push esi
call fcn.004727f0
add esp, 0xc
add esi, 0x200
sub edi, 1
jne 0x4e79c0
push 0x100
lea edx, [ebx + 0x11ab]
push 0
push edx
call fcn.004727f0
add esp, 0xc
jmp 0x4e7ad7
cmp byte [ebx + 0x48], 0
je 0x4e7a3e
test byte [esp + 0x17], 0x40
je 0x4e7a3e
xor ecx, ecx
mov ch, byte [ebx + 0x4aa]
xor edx, edx
mov dh, byte [ebx + 0x4a9]
lea eax, [ebx + 0x4ab]
push eax
movzx eax, byte [ebx + 0x4b]
push ecx
movzx ecx, byte [ebx + 0x4a]
push edx
movzx edx, byte [ebx + 0x320]
push eax
push ecx
push edx
lea eax, [ebx + 0x33d]
push eax
push ebx
call fcn.004f4fd0
add esp, 0x20
xor esi, esi
test edi, edi
jle 0x4e7aa2
movzx ecx, byte [esp + 0x17]
lea edx, [ebx + 0x371]
mov dword [esp + 0x24], ecx
mov dword [esp + 0x18], edx
lea edi, [ebx + 0x6ab]
mov ecx, esi
mov eax, 1
shl eax, cl
mov ecx, dword [esp + 0x24]
test ecx, eax
je 0x4e7a8e
movzx edx, byte [ebx + esi + 0x323]
mov eax, dword [esp + 0x18]
push edi
push 0
push 0
push edx
push 0
push 0
push eax
push ebx
call fcn.004f4fd0
add esp, 0x20
add dword [esp + 0x18], 0x34
add esi, 1
add edi, 0x200
cmp esi, dword [esp + 0x20]
jl 0x4e7a5d
cmp byte [ebx + 3], 0
je 0x4e7ad7
test byte [esp + 0x17], 0x20
je 0x4e7ad7
lea ecx, [ebx + 0x10ab]
push ecx
push 0
push 0
push 7
push 0
push 0
lea edx, [ebx + 0x475]
push edx
push ebx
mov byte [ebx + 0x476], 2
call fcn.004f4fd0
add esp, 0x20
mov edx, dword [ebx + 0x334]
cmp edx, 1
jbe 0x4e7aff
mov eax, dword [ebx + 0x338]
mov ecx, 0x20
sub ecx, edx
shl eax, cl
shr eax, 0x1f
add edx, 0xffffffff
mov dword [ebx + 0x334], edx
jmp 0x4e7b0a
push 1
push ebx
call fcn.004f1b40
add esp, 8
test eax, eax
je 0x4e7b78
mov edx, dword [ebx + 0x334]
cmp edx, 9
jbe 0x4e7b36
mov eax, dword [ebx + 0x338]
mov ecx, 0x20
sub ecx, edx
shl eax, cl
shr eax, 0x17
add edx, 0xfffffff7
mov dword [ebx + 0x334], edx
jmp 0x4e7b41
push 9
push ebx
call fcn.004f1b40
add esp, 8
test eax, eax
mov esi, eax
je 0x4e7b78
jmp 0x4e7b50
mov eax, dword [ebx + 0x334]
sub esi, 1
cmp eax, 8
jbe 0x4e7b69
add eax, 0xfffffff8
mov dword [ebx + 0x334], eax
jmp 0x4e7b74
push 8
push ebx
call fcn.004f1b40
add esp, 8
test esi, esi
jne 0x4e7b50
mov eax, dword [ebx + 0x12ac]
mov dword [esp + 0x2c], eax
mov eax, dword [ebx + 0x18]
test al, 0x10
je 0x4e7b91
add dword [esp + 0x2c], 0x800
fld qword [ebx + 0x10]
movzx ecx, byte [ebx + 2]
sub esp, 0x18
lea edx, [esp + 0x90]
fstp qword [esp + 0x10]
fld qword [ebx + 8]
fstp qword [esp + 8]
fld qword [ebx + 0x38]
fstp qword [esp]
push eax
push ecx
push edx
call fcn.004f37c0
mov dword [esp + 0xd0], eax
or eax, 0xffffffff
add esp, 0x24
cmp dword [esp + 0x20], 0
mov dword [esp + 0x70], eax
mov dword [esp + 0x6c], eax
mov dword [esp + 0x68], eax
mov byte [esp + 0x1f], 0
mov dword [esp + 0x28], 0
jle 0x4e7cf5
mov ecx, dword [esp + 0x2c]
mov dword [esp + 0x38], ecx
lea eax, [ebx + 0x323]
lea ecx, [esp + 0xb4]
lea edx, [ebx + 0x6ab]
sub ecx, eax
mov dword [esp + 0x24], 0
mov dword [esp + 0x18], eax
mov dword [esp + 0x34], edx
mov dword [esp + 0x3c], ecx
lea ecx, [ecx]
mov eax, dword [esp + 0x18]
movzx ecx, byte [eax]
mov edx, dword [esp + 0x3c]
movzx eax, byte [edx + eax]
mov edx, dword [esp + 0x38]
push ecx
mov ecx, dword [esp + 0x2c]
push eax
sub esp, 8
fld qword [esp + ecx*8 + 0x88]
lea edi, [esp + 0x50]
mov esi, ebx
fstp qword [esp]
push edx
mov edx, dword [esp + 0x48]
call fcn.004e63e0
mov al, byte [ebx + 0x48]
mov cl, byte [esp + 0x3c]
shr al, cl
add esp, 0x14
test al, 1
je 0x4e7c9d
cmp byte [esp + 0x1f], 0
jne 0x4e7c97
mov eax, dword [esp + 0x2c]
lea ecx, [esp + 0xb4]
push ecx
mov edx, edi
push edx
mov edx, dword [esp + 0x28]
push eax
lea ecx, [esp + 0x84]
push ecx
push edx
mov byte [esp + 0x33], 1
call fcn.004e67e0
add esp, 0x14
movzx eax, byte [ebx + 0x4b]
jmp 0x4e7ca4
mov eax, dword [esp + 0x18]
movzx eax, byte [eax]
mov ecx, dword [esp + 0x24]
lea edx, [eax + ecx]
mov ecx, dword [esp + 0x2c]
lea ecx, [ecx + edx*8]
fldz
add eax, 1
fstp qword [ecx]
add ecx, 8
cmp eax, 0x100
jl 0x4e7cb2
mov eax, dword [esp + 0x28]
add dword [esp + 0x34], 0x200
add dword [esp + 0x38], 0x800
add dword [esp + 0x18], 1
add dword [esp + 0x24], 0x100
add eax, 1
cmp eax, dword [esp + 0x20]
mov dword [esp + 0x28], eax
jl 0x4e7c20
cmp byte [ebx + 2], 2
jne 0x4e7d7a
mov al, byte [ebx + 0x323]
mov cl, byte [ebx + 0x324]
cmp al, cl
jae 0x4e7d14
movzx edx, al
mov dword [esp + 0x18], edx
jmp 0x4e7d1b
movzx eax, cl
mov dword [esp + 0x18], eax
movzx edx, byte [ebx + 0x322]
mov esi, dword [esp + 0x2c]
mov eax, 0xd
mov edi, 0x63da78
test dl, 1
jne 0x4e7d3e
mov eax, dword [edi]
sar edx, 1
add edi, 4
jmp 0x4e7d72
mov ecx, dword [edi]
sar edx, 1
add edi, 4
cmp ecx, dword [esp + 0x18]
jle 0x4e7d50
mov ecx, dword [esp + 0x18]
nop
fld qword [esi + eax*8]
add eax, 1
cmp eax, ecx
fld qword [esi + eax*8 + 0x7f8]
fld st(0)
fadd st(2)
fstp qword [esi + eax*8 - 8]
fsubp st(1)
fstp qword [esi + eax*8 + 0x7f8]
jl 0x4e7d50
cmp eax, dword [esp + 0x18]
jl 0x4e7d30
jmp 0x4e7d7e
mov esi, dword [esp + 0x2c]
cmp byte [ebx + 3], 0
je 0x4e7dfe
mov eax, dword [esp + 0x2c]
push 7
push 0
sub esp, 8
test byte [ebx + 0x18], 0x10
lea edx, [ebx + 0x10ab]
lea edi, [esp + 0x50]
mov esi, ebx
je 0x4e7de7
fld qword [ebx + 0x38]
add eax, 0xfffff800
fstp qword [esp]
push eax
call fcn.004e63e0
mov edx, dword [esp + 0x40]
xor eax, eax
lea edi, [edx - 0x7c8]
mov ecx, 0x1f2
rep stosd dword es:[edi], eax
fld qword [ebx + 0x28]
fstp qword [esp + 0xc]
add esp, 0xc
lea ecx, [edx + 0x2800]
push ecx
lea eax, [edx - 0x800]
push eax
call fcn.004f2080
add esp, 0x10
jmp 0x4e7dfa
fldz
add eax, 0x2800
fstp qword [esp]
push eax
call fcn.004e63e0
add esp, 0x14
mov esi, dword [esp + 0x2c]
mov ecx, dword [ebx + 0x18]
mov dl, byte [esp + 0xa4]
and ecx, 0xf
movzx edi, byte [ecx + 0x5a5918]
mov ecx, dword [esp + 0x20]
xor eax, eax
cmp edi, ecx
jge 0x4e7efe
mov eax, 1
cmp ecx, eax
jle 0x4e7e44
lea esp, [esp]
cmp byte [esp + eax + 0xa4], dl
jne 0x4e7efe
add eax, 1
cmp eax, ecx
jl 0x4e7e30
fld qword [ebx + 0x10]
mov eax, dword [ebx + 0x18]
movzx edx, byte [ebx + 2]
sub esp, 0x18
fstp qword [esp + 0x10]
fld qword [ebx + 8]
fstp qword [esp + 8]
fldz
fstp qword [esp]
push eax
push edx
push esi
call fcn.004f4990
add esp, 0x24
cmp dword [ebx + 0x12b0], 0
jne 0x4e7ead
fld qword [ebx + 0x10]
mov eax, dword [ebx + 0x18]
movzx ecx, byte [ebx + 2]
sub esp, 0x18
lea edx, [esi + 0x3000]
mov dword [ebx + 0x12b0], 1
fstp qword [esp + 0x10]
fld qword [ebx + 8]
fstp qword [esp + 8]
fldz
fstp qword [esp]
push eax
push ecx
push edx
call fcn.004f4990
add esp, 0x24
cmp byte [esp + 0xa4], 0
je 0x4e8016
test edi, edi
jle 0x4e8044
fld qword [ebx + 0x28]
sub esp, 8
lea eax, [esi + 0x3000]
fstp qword [esp]
push eax
push esi
call fcn.004f2c00
add esp, 0x10
add esi, 0x800
sub edi, 1
jne 0x4e7ec3
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0xb0]
xor ecx, esp
call fcn.004721e8
mov esp, ebp
pop ebp
ret
cmp eax, ecx
jge 0x4e7e44
cmp dword [ebx + 0x12b0], 0
je 0x4e7f31
mov eax, dword [ebx + 0x18]
movzx edx, byte [ebx + 2]
push eax
push edx
lea eax, [esi + 0x3000]
push eax
mov dword [ebx + 0x12b0], 0
call fcn.004f4e20
add esp, 0xc
xor edi, edi
cmp dword [esp + 0x20], edi
mov dword [esp + 0x28], edi
jle 0x4e7fd6
mov dword [esp + 0x18], esi
fldz
mov edx, 1
mov ecx, edi
fld st(0)
shl edx, cl
test dword [esp + 0xac], edx
jne 0x4e7f60
fstp st(0)
fld qword [ebx + 0x28]
fxch st(1)
fcomp qword [esp + edi*8 + 0x78]
fnstsw ax
test ah, 0x44
jnp 0x4e7fa5
mov eax, dword [esp + 0x18]
sub esp, 8
cmp byte [esp + edi + 0xac], 0
fstp qword [esp]
je 0x4e7f93
lea ecx, [eax + 0x3000]
push ecx
push eax
call fcn.004f2c00
add esp, 0x10
jmp 0x4e7fbd
lea edx, [eax + 0x3000]
push edx
push eax
call fcn.004f2080
add esp, 0x10
jmp 0x4e7fbd
mov esi, dword [esp + 0x18]
lea edi, [esi + 8]
fstp qword [esi]
mov ecx, 0x1fe
rep movsd dword es:[edi], dword [esi]
mov edi, dword [esp + 0x28]
mov esi, dword [esp + 0x2c]
add dword [esp + 0x18], 0x800
add edi, 1
cmp edi, dword [esp + 0x20]
mov dword [esp + 0x28], edi
jl 0x4e7f45
fld qword [ebx + 0x10]
mov eax, dword [ebx + 0x18]
movzx ecx, byte [ebx + 2]
sub esp, 0x18
fstp qword [esp + 0x10]
fld qword [ebx + 8]
fstp qword [esp + 8]
fld qword [ebx + 0x28]
fstp qword [esp]
push eax
push ecx
push esi
call fcn.004f4990
add esp, 0x24
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0xb0]
xor ecx, esp
call fcn.004721e8
mov esp, ebp
pop ebp
ret
test edi, edi
jle 0x4e8044
lea ebx, [ebx]
fld qword [ebx + 0x28]
sub esp, 8
lea ecx, [esi + 0x3000]
fstp qword [esp]
push ecx
push esi
call fcn.004f2080
add esp, 0x10
add esi, 0x800
sub edi, 1
jne 0x4e8020
mov ecx, dword [esp + 0xbc]
pop edi
pop esi
pop ebx
xor ecx, esp
xor eax, eax
call fcn.004721e8
mov esp, ebp
pop ebp
ret