Function at 0x4e1d90
Capabilities:
Encode data using xor
Encrypt data using aes
Reference aes constants

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x746b88
mov eax, dword fs:[0]
push eax
sub esp, 0x40
mov eax, dword [0x899944]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov eax, dword [ebp + 0x10]
mov esi, dword [ebp + 0xc]
mov dword [ebp - 0x38], eax
mov eax, dword [ebp + 0x14]
mov ebx, ecx
push str.initCrypt_aes2
push eax
lea ecx, [ebp - 0x4c]
mov dword [ebp - 0x34], ebx
mov dword [ebp - 0x40], esi
call fcn.00474ef0
mov eax, dword [esi + 4]
mov dword [ebp - 4], 0
cmp eax, 3
je 0x4e1e00
cmp eax, 6
je 0x4e1e00
cmp eax, 2
je 0x4e1e00
cmp eax, 5
je 0x4e1e00
cmp eax, 4
jne 0x4e1e04
mov al, 1
jmp 0x4e1e07
mov al, byte [ebp + 8]
mov byte [ebx + 0x88], al
mov eax, dword [esi + 0xc]
cmp eax, 0xc1
jl 0x4e1e20
mov dword [esi + 0xc], 0x100
jmp 0x4e1e34
xor ecx, ecx
cmp eax, 0x81
setl cl
dec ecx
and ecx, 0x40
sub ecx, 0xffffff80
mov dword [esi + 0xc], ecx
mov edi, dword [esi + 0xc]
xor eax, eax
add esi, 0x10
mov ecx, esi
mov dword [ebp - 0x3c], edi
mov dword [ebp - 0x30], eax
mov dword [ebp - 0x2c], eax
mov dword [ebp - 0x28], eax
mov dword [ebp - 0x24], eax
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x14], eax
call fcn.0040fbb0
test eax, eax
je 0x4e1eab
mov ecx, esi
call fcn.004033b0
test eax, eax
je 0x4e1eab
mov ecx, esi
call fcn.004033b0
mov ecx, esi
cmp eax, 0x20
jbe 0x4e1e91
call fcn.0040fbb0
mov ecx, 8
mov esi, eax
lea edi, [ebp - 0x30]
rep movsd dword es:[edi], dword [esi]
mov edi, dword [ebp - 0x3c]
jmp 0x4e1eab
call fcn.004033b0
push eax
mov ecx, esi
call fcn.0040fbb0
push eax
lea edx, [ebp - 0x30]
push edx
call fcn.0070d6a0
add esp, 0xc
mov eax, edi
sub eax, 0x80
je 0x4e1eec
sub eax, 0x40
je 0x4e1ee0
sub eax, 0x40
je 0x4e1ed4
lea ecx, [ebp - 0x4c]
mov dword [ebp - 4], 0xffffffff
call fcn.00474f80
xor al, al
jmp 0x4e26aa
mov dword [ebx + 0x28c], 0xe
jmp 0x4e1ef6
mov dword [ebx + 0x28c], 0xc
jmp 0x4e1ef6
mov dword [ebx + 0x28c], 0xa
mov edx, edi
sar edx, 5
xor ecx, ecx
lea eax, [ebx + 0x8c]
test edx, edx
jle 0x4e1f42
mov esi, eax
lea edi, [ebp - 0x2f]
sub esi, edi
mov edi, edi
movzx edi, byte [ebp + ecx*4 - 0x30]
movzx ebx, byte [ebp + ecx*4 - 0x2f]
shl edi, 8
or edi, ebx
movzx ebx, byte [ebp + ecx*4 - 0x2e]
shl edi, 8
or edi, ebx
movzx ebx, byte [ebp + ecx*4 - 0x2d]
shl edi, 8
or edi, ebx
lea ebx, [esi + ecx*4]
inc ecx
mov dword [ebp + ebx - 0x2f], edi
cmp ecx, edx
jl 0x4e1f10
mov ebx, dword [ebp - 0x34]
mov ecx, dword [ebx + 0x28c]
cmp ecx, 0xa
jne 0x4e213d
mov edi, 0x7b999c
mov esi, dword [eax + 0xc]
mov ecx, esi
shr ecx, 0x10
movzx edx, cl
mov ecx, dword [edx*4 + str.cwko0]
shl ecx, 8
mov edx, esi
shr edx, 8
movzx edx, dl
xor ecx, dword [edx*4 + str.cwko0]
movzx edx, byte [eax + 0xc]
shl ecx, 8
xor ecx, dword [edx*4 + str.cwko0]
mov edx, esi
shl ecx, 8
shr edx, 0x18
xor ecx, dword [edx*4 + str.cwko0]
mov edx, dword [eax + 4]
xor ecx, dword [edi - 4]
xor ecx, dword [eax]
xor edx, ecx
mov dword [eax + 0x10], ecx
mov ecx, dword [eax + 8]
xor ecx, edx
xor esi, ecx
mov dword [eax + 0x18], ecx
mov dword [eax + 0x14], edx
mov dword [eax + 0x1c], esi
mov ecx, esi
shr ecx, 0x10
movzx edx, cl
mov ecx, dword [edx*4 + str.cwko0]
shl ecx, 8
mov edx, esi
shr edx, 8
movzx edx, dl
xor ecx, dword [edx*4 + str.cwko0]
movzx edx, byte [eax + 0x1c]
shl ecx, 8
xor ecx, dword [edx*4 + str.cwko0]
mov edx, dword [eax + 0x14]
shl ecx, 8
shr esi, 0x18
xor ecx, dword [esi*4 + str.cwko0]
mov esi, dword [eax + 0x1c]
xor ecx, dword [edi]
xor ecx, dword [eax + 0x10]
xor edx, ecx
mov dword [eax + 0x20], ecx
mov ecx, dword [eax + 0x18]
xor ecx, edx
xor esi, ecx
mov dword [eax + 0x28], ecx
mov dword [eax + 0x24], edx
mov ecx, esi
shr ecx, 0x10
movzx edx, cl
mov dword [eax + 0x2c], esi
mov ecx, dword [edx*4 + str.cwko0]
shl ecx, 8
mov edx, esi
shr edx, 8
movzx edx, dl
xor ecx, dword [edx*4 + str.cwko0]
movzx edx, byte [eax + 0x2c]
shl ecx, 8
xor ecx, dword [edx*4 + str.cwko0]
mov edx, dword [eax + 0x24]
shl ecx, 8
shr esi, 0x18
xor ecx, dword [esi*4 + str.cwko0]
mov esi, dword [eax + 0x2c]
xor ecx, dword [edi + 4]
xor ecx, dword [eax + 0x20]
xor edx, ecx
mov dword [eax + 0x30], ecx
mov ecx, dword [eax + 0x28]
xor ecx, edx
mov dword [eax + 0x34], edx
mov dword [eax + 0x38], ecx
xor esi, ecx
mov dword [eax + 0x3c], esi
mov ecx, esi
shr ecx, 0x10
movzx edx, cl
mov ecx, dword [edx*4 + str.cwko0]
shl ecx, 8
mov edx, esi
shr edx, 8
movzx edx, dl
xor ecx, dword [edx*4 + str.cwko0]
movzx edx, byte [eax + 0x3c]
shl ecx, 8
xor ecx, dword [edx*4 + str.cwko0]
mov edx, dword [eax + 0x34]
shl ecx, 8
shr esi, 0x18
xor ecx, dword [esi*4 + str.cwko0]
mov esi, dword [eax + 0x3c]
xor ecx, dword [edi + 8]
add edi, 0x14
xor ecx, dword [eax + 0x30]
add eax, 0x50
xor edx, ecx
mov dword [eax - 0x10], ecx
mov ecx, dword [eax - 0x18]
xor ecx, edx
xor esi, ecx
mov dword [eax - 8], ecx
mov dword [eax - 0xc], edx
mov dword [eax - 4], esi
mov ecx, esi
shr ecx, 0x10
movzx edx, cl
mov ecx, dword [edx*4 + str.cwko0]
shl ecx, 8
mov edx, esi
shr edx, 8
movzx edx, dl
xor ecx, dword [edx*4 + str.cwko0]
movzx edx, byte [eax - 4]
shl ecx, 8
xor ecx, dword [edx*4 + str.cwko0]
mov edx, dword [eax - 0xc]
shl ecx, 8
shr esi, 0x18
xor ecx, dword [esi*4 + str.cwko0]
xor ecx, dword [edi - 8]
xor ecx, dword [eax - 0x10]
xor edx, ecx
mov dword [eax], ecx
mov ecx, dword [eax - 8]
xor ecx, edx
mov dword [eax + 4], edx
mov edx, dword [eax - 4]
xor edx, ecx
mov dword [eax + 8], ecx
mov dword [eax + 0xc], edx
cmp edi, vtable._ckCryptContext.0
jl 0x4e1f56
jmp 0x4e23f4
cmp ecx, 0xc
jne 0x4e2318
mov edi, 0x7b999c
jmp 0x4e2150
mov edx, dword [eax + 0x14]
mov ecx, edx
shr ecx, 0x10
movzx ecx, cl
mov ecx, dword [ecx*4 + str.cwko0]
shl ecx, 8
mov ebx, edx
shr ebx, 8
movzx esi, bl
xor ecx, dword [esi*4 + str.cwko0]
movzx esi, dl
shl ecx, 8
xor ecx, dword [esi*4 + str.cwko0]
mov ebx, dword [eax + 0xc]
shl ecx, 8
mov esi, edx
shr esi, 0x18
xor ecx, dword [esi*4 + str.cwko0]
mov esi, dword [eax + 4]
xor ecx, dword [edi - 4]
xor ecx, dword [eax]
xor esi, ecx
mov dword [eax + 0x18], ecx
mov ecx, dword [eax + 8]
xor ecx, esi
xor ebx, ecx
mov dword [eax + 0x1c], esi
mov esi, dword [eax + 0x10]
mov dword [eax + 0x20], ecx
xor esi, ebx
mov dword [eax + 0x28], esi
xor esi, edx
mov dword [eax + 0x2c], esi
mov edx, esi
shr edx, 0x10
movzx ecx, dl
mov dword [eax + 0x24], ebx
mov ecx, dword [ecx*4 + str.cwko0]
shl ecx, 8
mov edx, esi
shr edx, 8
movzx edx, dl
xor ecx, dword [edx*4 + str.cwko0]
movzx edx, byte [eax + 0x2c]
shl ecx, 8
xor ecx, dword [edx*4 + str.cwko0]
mov edx, dword [eax + 0x1c]
shl ecx, 8
shr esi, 0x18
xor ecx, dword [esi*4 + str.cwko0]
mov esi, dword [eax + 0x2c]
xor ecx, dword [eax + 0x18]
xor ecx, dword [edi]
xor edx, ecx
mov dword [eax + 0x30], ecx
mov ecx, dword [eax + 0x20]
xor ecx, edx
mov dword [eax + 0x34], edx
mov dword [eax + 0x38], ecx
mov edx, ebx
xor edx, ecx
mov ecx, dword [eax + 0x28]
xor ecx, edx
xor esi, ecx
mov dword [eax + 0x40], ecx
mov dword [eax + 0x3c], edx
mov ecx, esi
shr ecx, 0x10
movzx edx, cl
mov dword [eax + 0x44], esi
mov ecx, dword [edx*4 + str.cwko0]
mov edx, esi
shr edx, 8
shl ecx, 8
movzx edx, dl
xor ecx, dword [edx*4 + str.cwko0]
movzx edx, byte [eax + 0x44]
shl ecx, 8
xor ecx, dword [edx*4 + str.cwko0]
shl ecx, 8
shr esi, 0x18
xor ecx, dword [esi*4 + str.cwko0]
mov edx, dword [eax + 0x34]
xor ecx, dword [edi + 4]
mov esi, dword [eax + 0x44]
xor ecx, dword [eax + 0x30]
add edi, 0x10
xor edx, ecx
mov dword [eax + 0x48], ecx
mov ecx, dword [eax + 0x38]
xor ecx, edx
mov dword [eax + 0x4c], edx
mov edx, dword [eax + 0x3c]
xor edx, ecx
mov dword [eax + 0x50], ecx
mov ecx, dword [eax + 0x40]
xor ecx, edx
xor esi, ecx
mov dword [eax + 0x58], ecx
mov dword [eax + 0x54], edx
mov dword [eax + 0x5c], esi
mov ecx, esi
shr ecx, 0x10
movzx edx, cl
mov ecx, dword [edx*4 + str.cwko0]
shl ecx, 8
mov edx, esi
shr edx, 8
movzx edx, dl
xor ecx, dword [edx*4 + str.cwko0]
movzx edx, byte [eax + 0x5c]
shl ecx, 8
xor ecx, dword [edx*4 + str.cwko0]
mov edx, dword [eax + 0x4c]
shl ecx, 8
shr esi, 0x18
xor ecx, dword [esi*4 + str.cwko0]
add eax, 0x60
xor ecx, dword [edi - 8]
xor ecx, dword [eax - 0x18]
xor edx, ecx
mov dword [eax], ecx
mov ecx, dword [eax - 0x10]
xor ecx, edx
mov dword [eax + 4], edx
mov edx, dword [eax - 0xc]
xor edx, ecx
mov dword [eax + 8], ecx
mov ecx, dword [eax - 8]
xor ecx, edx
mov dword [eax + 0xc], edx
mov edx, dword [eax - 4]
xor edx, ecx
mov dword [eax + 0x10], ecx
mov dword [eax + 0x14], edx
cmp edi, 0x7b99bc
jl 0x4e2150
jmp 0x4e23f1
cmp ecx, 0xe
jne 0x4e23f4
mov ebx, 0x7b9998
mov esi, dword [eax + 0x1c]
mov ecx, esi
shr ecx, 0x10
movzx edx, cl
mov ecx, dword [edx*4 + str.cwko0]
shl ecx, 8
mov edi, dword [eax + 0xc]
mov edx, esi
shr edx, 8
movzx edx, dl
xor ecx, dword [edx*4 + str.cwko0]
movzx edx, byte [eax + 0x1c]
shl ecx, 8
xor ecx, dword [edx*4 + str.cwko0]
mov edx, esi
shl ecx, 8
shr edx, 0x18
xor ecx, dword [edx*4 + str.cwko0]
mov edx, dword [eax + 4]
xor ecx, dword [eax]
add ebx, 4
xor ecx, dword [ebx - 4]
add eax, 0x20
xor edx, ecx
mov dword [eax], ecx
mov ecx, dword [eax - 0x18]
xor ecx, edx
xor edi, ecx
mov dword [eax + 4], edx
mov dword [eax + 8], ecx
mov dword [eax + 0xc], edi
mov ecx, edi
shr ecx, 0x18
mov ecx, dword [ecx*4 + str.cwko0]
shl ecx, 8
mov edx, edi
shr edx, 0x10
movzx edx, dl
xor ecx, dword [edx*4 + str.cwko0]
mov edx, edi
shr edx, 8
shl ecx, 8
movzx edx, dl
xor ecx, dword [edx*4 + str.cwko0]
movzx edx, byte [eax + 0xc]
shl ecx, 8
xor ecx, dword [edx*4 + str.cwko0]
mov edx, dword [eax - 0xc]
xor ecx, dword [eax - 0x10]
xor edx, ecx
mov dword [eax + 0x10], ecx
mov ecx, dword [eax - 8]
xor ecx, edx
xor esi, ecx
mov dword [eax + 0x14], edx
mov dword [eax + 0x18], ecx
mov dword [eax + 0x1c], esi
cmp ebx, 0x7b99b4
jl 0x4e2326
mov ebx, dword [ebp - 0x34]
cmp byte [0x8a1748], 0
jne 0x4e250f
xor ecx, ecx
jmp 0x4e2410
mov edx, dword [ecx + str.cwko0]
add edx, edx
mov esi, dword [edx + edx + 0x7b8998]
add edx, edx
mov dword [ecx + 0x8a0b48], esi
mov esi, dword [edx + 0x7b8d98]
mov dword [ecx + 0x8a0f48], esi
mov esi, dword [edx + 0x7b9198]
mov edx, dword [edx + 0x7b9598]
mov dword [ecx + 0x8a0748], edx
mov edx, dword [ecx + 0x7b719c]
add edx, edx
add edx, edx
mov dword [ecx + 0x8a1348], esi
mov esi, dword [edx + 0x7b8998]
mov dword [ecx + 0x8a0b4c], esi
mov esi, dword [edx + 0x7b8d98]
mov dword [ecx + 0x8a0f4c], esi
mov esi, dword [edx + 0x7b9198]
mov edx, dword [edx + 0x7b9598]
mov dword [ecx + 0x8a074c], edx
mov edx, dword [ecx + 0x7b71a0]
add edx, edx
add edx, edx
mov dword [ecx + 0x8a134c], esi
mov esi, dword [edx + 0x7b8998]
mov dword [ecx + 0x8a0b50], esi
mov esi, dword [edx + 0x7b8d98]
mov dword [ecx + 0x8a0f50], esi
mov esi, dword [edx + 0x7b9198]
mov edx, dword [edx + 0x7b9598]
mov dword [ecx + 0x8a0750], edx
mov edx, dword [ecx + 0x7b71a4]
add edx, edx
add edx, edx
mov dword [ecx + 0x8a1350], esi
mov esi, dword [edx + 0x7b8998]
mov dword [ecx + 0x8a0b54], esi
mov esi, dword [edx + 0x7b8d98]
mov dword [ecx + 0x8a0f54], esi
mov esi, dword [edx + 0x7b9198]
mov edx, dword [edx + 0x7b9598]
mov dword [ecx + 0x8a1354], esi
mov dword [ecx + 0x8a0754], edx
add ecx, 0x10
cmp ecx, 0x400
jl 0x4e2410
mov byte [0x8a1748], 1
mov edx, dword [eax]
mov dword [ebx + 0x18c], edx
mov edx, dword [eax + 4]
lea ecx, [ebx + 0x18c]
mov dword [ecx + 4], edx
mov edx, dword [eax + 8]
mov dword [ecx + 8], edx
mov edx, dword [eax + 0xc]
mov dword [ecx + 0xc], edx
mov edi, 1
add ecx, 0x10
add eax, 0x10
cmp dword [ebx + 0x28c], edi
jle 0x4e2647
mov esi, dword [eax - 0x20]
mov ebx, esi
shr ebx, 0x10
movzx ebx, bl
mov edx, esi
shr edx, 0x18
mov edx, dword [edx*4 + 0x8a0b48]
xor edx, dword [ebx*4 + 0x8a0f48]
mov ebx, esi
shr ebx, 8
movzx esi, bl
xor edx, dword [esi*4 + 0x8a1348]
movzx esi, byte [eax - 0x20]
xor edx, dword [esi*4 + 0x8a0748]
inc edi
mov dword [ecx], edx
mov esi, dword [eax - 0x1c]
mov ebx, esi
shr ebx, 0x10
movzx ebx, bl
mov edx, esi
shr edx, 0x18
mov edx, dword [edx*4 + 0x8a0b48]
xor edx, dword [ebx*4 + 0x8a0f48]
mov ebx, esi
shr ebx, 8
movzx esi, bl
xor edx, dword [esi*4 + 0x8a1348]
movzx esi, byte [eax - 0x1c]
xor edx, dword [esi*4 + 0x8a0748]
add ecx, 0x10
mov dword [ecx - 0xc], edx
mov esi, dword [eax - 0x18]
mov ebx, esi
shr ebx, 0x10
movzx ebx, bl
mov edx, esi
shr edx, 0x18
mov edx, dword [edx*4 + 0x8a0b48]
xor edx, dword [ebx*4 + 0x8a0f48]
mov ebx, esi
shr ebx, 8
movzx esi, bl
xor edx, dword [esi*4 + 0x8a1348]
movzx esi, byte [eax - 0x18]
xor edx, dword [esi*4 + 0x8a0748]
add eax, 0xfffffff0
mov dword [ecx - 8], edx
mov esi, dword [eax - 4]
mov ebx, esi
shr ebx, 0x10
mov edx, esi
shr edx, 0x18
mov edx, dword [edx*4 + 0x8a0b48]
movzx ebx, bl
xor edx, dword [ebx*4 + 0x8a0f48]
mov ebx, esi
shr ebx, 8
movzx esi, bl
xor edx, dword [esi*4 + 0x8a1348]
movzx esi, byte [eax - 4]
xor edx, dword [esi*4 + 0x8a0748]
mov ebx, dword [ebp - 0x34]
mov dword [ecx - 4], edx
cmp edi, dword [ebx + 0x28c]
jl 0x4e2546
mov edx, dword [eax - 0x20]
mov edi, dword [ebp - 0x38]
mov dword [ecx], edx
mov edx, dword [eax - 0x1c]
mov dword [ecx + 4], edx
mov edx, dword [eax - 0x18]
mov dword [ecx + 8], edx
mov eax, dword [eax - 0x14]
mov dword [ecx + 0xc], eax
test edi, edi
je 0x4e2699
mov esi, dword [ebp - 0x40]
mov eax, dword [esi + 4]
cmp eax, 3
je 0x4e2675
cmp eax, 4
jne 0x4e2699
mov ecx, dword [ebx + 0x80]
push ecx
lea ecx, [esi + 0x30]
call fcn.004033b0
push eax
lea ecx, [esi + 0x30]
call fcn.0040fbb0
push eax
lea ecx, [edi + 0x484]
call fcn.00559cb0
lea ecx, [ebp - 0x4c]
mov dword [ebp - 4], 0xffffffff
call fcn.00474f80
mov al, 1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.0070bb4c
mov esp, ebp
pop ebp
ret 0x10