Function at 0x4e8d40
Capabilities:
Encode data using xor

Disassembly:
push ebp
lea ebp, [esp - 0x14f8]
mov eax, 0x14f8
call fcn.0051dcc0
push 0xffffffffffffffff
push 0x53f3d8
mov eax, dword fs:[0]
push eax
sub esp, 0x34
mov eax, dword [0x572844]
xor eax, ebp
mov dword [ebp + 0x14f4], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov eax, dword [ebp + 0x150c]
mov ebx, dword [ebp + 0x1504]
mov edi, dword [ebp + 0x1500]
push 0x200
mov dword [ebp - 0x3c], eax
xor eax, eax
push eax
mov word [ebp + 0x13c4], ax
lea eax, [ebp + 0x11c4]
push eax
push str.PasswordData
push ebx
mov dword [ebp - 0x34], edi
mov dword [ebp - 0x40], ebx
call fcn.004c2fc0
test eax, eax
jne 0x4e8ea3
push 0x100
push eax
lea eax, [ebp + 0x10c0]
push eax
call fcn.005201d0
add esp, 0xc
lea eax, [ebp + 0x10c0]
push 0x100
push 0
push eax
push str.PasswordWide
push ebx
call fcn.004c2fc0
mov edx, eax
test edx, edx
jne 0x4e8e5f
push 0x100
push eax
mov byte [ebp + 0x10c0], al
lea eax, [ebp + 0x10c0]
push eax
push str.Password
push ebx
call fcn.004c2fc0
xor edx, edx
test eax, eax
jle 0x4e8e31
lea esp, [esp]
lea ecx, [edx + 0x49]
xor byte [ebp + edx + 0x10c0], cl
je 0x4e8e31
inc edx
cmp edx, eax
jl 0x4e8e20
push 0x80
lea eax, [ebp + 0x13c4]
push eax
lea eax, [ebp + 0x10c0]
push eax
call fcn.004b3d10
push 0x100
lea eax, [ebp + 0x10c0]
push eax
call fcn.004ad810
jmp 0x4e9115
xor ecx, ecx
test edx, edx
jle 0x4e8e75
mov al, cl
add al, 0x49
xor byte [ebp + ecx + 0x10c0], al
inc ecx
cmp ecx, edx
jl 0x4e8e65
push 0x80
lea eax, [ebp + 0x13c4]
push eax
lea eax, [ebp + 0x10c0]
push eax
call fcn.004b3e20
push 0x100
lea eax, [ebp + 0x10c0]
push eax
call fcn.004ad810
jmp 0x4e9115
lea ecx, [ebp - 0x30]
call fcn.00499a40
mov dword [ebp - 4], 0
lea eax, [ebp + 0x11c4]
push 0x200
push eax
lea ecx, [ebp - 0x30]
call fcn.00499f90
lea ecx, [ebp - 0x30]
call fcn.00499ad0
cmp al, 1
jne 0x4e90ec
lea ecx, [ebp - 0x30]
call fcn.00499b30
shr eax, 0x18
lea ecx, [ebp - 0x30]
mov dword [ebp - 0x38], eax
lea eax, [ebp + 0x14c4]
push 0x10
push eax
call fcn.00499c80
push 0x10
lea eax, [ebp + 0x14d4]
push eax
lea ecx, [ebp - 0x30]
call fcn.00499c80
push 8
lea eax, [ebp + 0x14ec]
push eax
lea ecx, [ebp - 0x30]
call fcn.00499c80
lea ecx, [ebp]
call fcn.00476960
mov byte [ebp - 4], 1
xor bl, bl
lea ecx, [ebp + 0x10c0]
call fcn.004ad2f0
mov byte [ebp - 4], 2
cmp byte [0x5d8698], 0
je 0x4e8f56
mov ecx, 0x40
lea edi, [ebp + 0x10c0]
mov esi, 0x5d8598
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
mov edi, dword [ebp - 0x34]
jmp 0x4e8f66
push 0x545908
lea ecx, [ebp + 0x10c0]
call fcn.004ad7b0
lea eax, [ebp + 0x14e4]
push eax
push 0
push dword [ebp - 0x38]
lea eax, [ebp + 0x14d4]
push eax
lea eax, [ebp + 0x14c4]
push eax
lea eax, [ebp + 0x10c0]
push eax
push 5
push 0
lea ecx, [ebp]
call fcn.004771a0
lea ecx, [ebp + 0x14ec]
mov eax, dword [ecx]
lea edx, [ebp + 0x14e4]
cmp eax, dword [edx]
jne 0x4e8fb1
mov eax, dword [ecx + 4]
cmp eax, dword [edx + 4]
jne 0x4e8fb1
xor al, al
jmp 0x4e8fb3
mov al, 1
test al, al
je 0x4e9022
test bl, bl
je 0x4e8fdd
push 0x66
call fcn.004a9c90
push 0x606
mov esi, eax
call fcn.004a9c90
push 0
push esi
push eax
push dword [0x57a0d4]
call fcn.004edd90
push dword [ebp - 0x3c]
push 0
push 0x5d8598
push edi
call fcn.00459570
test al, al
je 0x4e9007
mov byte [ebp - 4], 1
lea ecx, [ebp + 0x10c0]
call fcn.004ad310
mov bl, 1
jmp 0x4e8f25
mov byte [0x594fd6], 1
mov byte [ebp - 4], 1
lea ecx, [ebp + 0x10c0]
call fcn.004ad310
jmp 0x4e90d2
mov byte [ebp - 4], 1
lea ecx, [ebp + 0x10c0]
call fcn.004ad310
mov edx, dword [ebp - 0x18]
lea ecx, [ebp]
sub edx, dword [ebp - 0x14]
mov eax, dword [ebp - 0x30]
add eax, dword [ebp - 0x14]
push edx
push eax
call fcn.00476f70
lea ecx, [ebp - 0x30]
call fcn.00499af0
movzx esi, ax
lea ecx, [ebp - 0x30]
lea eax, [ebp + 0x13c4]
cmp esi, 0x80
jae 0x4e907f
push esi
push eax
call fcn.00499dd0
cmp esi, 0x7f
jae 0x4e908a
add esi, esi
cmp esi, 0x100
jae 0x4e91ac
jmp 0x4e908f
push 0x80
push eax
call fcn.00499dd0
mov esi, 0xfe
push dword [ebp - 0x14]
xor eax, eax
push dword [ebp - 0x30]
mov word [ebp + esi + 0x13c4], ax
push 0xffffffffffffffff
call fcn.004761b0
mov esi, eax
lea ecx, [ebp - 0x30]
not esi
call fcn.00499b30
cmp esi, eax
je 0x4e90d2
xor eax, eax
push 0x5d0
mov word [ebp + 0x13c4], ax
call fcn.004a9c90
push eax
call fcn.004f27d0
add esp, 4
push dword [ebp - 0x18]
push dword [ebp - 0x30]
call fcn.004ad810
mov byte [ebp - 4], 0
lea ecx, [ebp]
call fcn.00476a90
mov ebx, dword [ebp - 0x40]
mov dword [ebp - 4], 0xffffffff
mov eax, dword [ebp - 0x30]
test eax, eax
je 0x4e9115
cmp byte [ebp - 0x20], 0
je 0x4e910c
push dword [ebp - 0x28]
push eax
call fcn.004ad810
mov eax, dword [ebp - 0x30]
push eax
call fcn.00525b95
add esp, 4
cmp byte [ebp + 0x1508], 0
je 0x4e9139
cmp byte [0x58ebe8], 0
jne 0x4e9176
cmp byte [0x58ebea], 0
jne 0x4e9176
cmp byte [0x595fef], 0
jne 0x4e9176
lea eax, [ebp + 0x13c4]
mov ecx, 0x58eae8
push eax
call fcn.004ad7b0
push 0
push str.EncryptHeaders
push ebx
call fcn.004c2f20
push 0
test eax, eax
push str.ZipLegacyEncrypt
push ebx
setne byte [0x58ebea]
call fcn.004c2f20
test eax, eax
setne byte [0x595fef]
push 0x100
lea eax, [ebp + 0x13c4]
push eax
call fcn.004ad810
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp + 0x14f4]
xor ecx, ebp
call fcn.0051dca8
lea esp, [ebp + 0x14f8]
pop ebp
ret 0x10
call fcn.0051dbcd
int3