Function at 0x4d02d0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x54
mov eax, dword [0x513040]
xor eax, ebp
mov dword [ebp - 4], eax
mov dword [ebp - 0x40], edx
mov eax, ecx
mov ecx, dword [ebp + 0x14]
mov dword [ebp - 0x50], ecx
mov dword [ebp - 0x48], eax
mov ecx, dword [eax]
mov dword [ebp - 0x28], ecx
mov ecx, dword [ebp + 0x10]
mov dword [ebp - 0x44], 0
mov dword [ebp - 0x2c], 0
mov dword [ebp - 0x30], 0
push ebx
push esi
mov esi, dword [eax + 8]
mov eax, dword [ecx + 0x10]
mov dword [ebp - 0x3c], eax
mov eax, edx
mov dword [ebp - 0x4c], esi
mov dword [ebp - 0x34], eax
push edi
test edx, edx
je 0x4d03da
mov ebx, 0xffbf
nop dword [eax]
mov edx, dword [eax + 0x18]
xor esi, esi
cmp dword [eax + 0xc], esi
jle 0x4d03cc
nop
mov ax, bx
and ax, word [edx + 0xa]
mov word [edx + 0xa], ax
mov edi, dword [ecx + 0x2c]
movzx ebx, ax
cmp dword [edx + 0x14], edi
jne 0x4d03b7
mov ecx, dword [ebp + 8]
mov eax, dword [edx + 0x24]
and ecx, dword [edx + 0x20]
and eax, dword [ebp + 0xc]
or ecx, eax
mov ecx, dword [ebp + 0x10]
jne 0x4d03b7
movzx eax, word [edx + 0xc]
test eax, 0xfffff7ff
je 0x4d03b7
test bl, bl
js 0x4d03b7
mov al, byte [ecx + 0x24]
test al, 0x58
je 0x4d03a8
mov ecx, dword [edx]
test byte [ecx + 4], 3
je 0x4d03b4
cmp dword [ecx + 0x24], edi
jne 0x4d03b4
test al, 0x18
je 0x4d03a5
test byte [ecx + 4], 2
mov ecx, dword [ebp + 0x10]
jne 0x4d03b7
inc dword [ebp - 0x30]
or ebx, 0x40
mov word [edx + 0xa], bx
jmp 0x4d03b7
mov ecx, dword [ebp + 0x10]
inc dword [ebp - 0x30]
or ebx, 0x40
mov word [edx + 0xa], bx
jmp 0x4d03b7
mov ecx, dword [ebp + 0x10]
mov eax, dword [ebp - 0x34]
inc esi
add edx, 0x30
mov ebx, 0xffbf
cmp esi, dword [eax + 0xc]
jl 0x4d0340
mov eax, dword [eax + 4]
mov dword [ebp - 0x34], eax
test eax, eax
jne 0x4d0330
mov eax, dword [ebp - 0x4c]
xor edi, edi
mov dword [ebp - 0x38], edi
lea ecx, [edi + 1]
test eax, eax
je 0x4d054c
mov esi, dword [eax]
xor ebx, ebx
mov dword [ebp - 0x24], esi
test esi, esi
jle 0x4d0507
lea edi, [eax + 0x10]
nop
mov esi, dword [edi - 8]
mov word [ebp - 0xc], cx
mov dword [ebp - 0x20], 0
mov dword [ebp - 0x1c], fcn.00474110
mov dword [ebp - 0x18], 0x473f00
test esi, esi
je 0x4d04f1
mov edx, esi
lea ecx, [ebp - 0x20]
call fcn.0046d580
cmp word [ebp - 0xc], 0
jne 0x4d04ec
test byte [edi], 2
jne 0x4d0502
mov al, byte [esi]
cmp al, 0xa8
jne 0x4d0456
mov ecx, dword [ebp + 0x10]
mov eax, dword [esi + 0x1c]
cmp eax, dword [ecx + 0x2c]
jmp 0x4d04ea
cmp al, 0x72
jne 0x4d0502
mov ecx, dword [esi + 0xc]
cmp byte [ecx], 0xa8
jne 0x4d0502
mov edx, dword [ebp + 0x10]
mov eax, dword [ecx + 0x1c]
cmp eax, dword [edx + 0x2c]
jne 0x4d0502
mov ax, word [ecx + 0x20]
mov word [esi + 0x20], ax
movzx eax, word [ecx + 0x20]
test ax, ax
js 0x4d04ec
movsx ecx, ax
mov eax, dword [ebp - 0x3c]
shl ecx, 4
add ecx, dword [eax + 4]
movzx eax, word [ecx + 0xe]
mov edx, eax
test eax, 0x200
je 0x4d04cb
mov eax, dword [ecx]
cmp byte [eax], 0
je 0x4d04b6
nop word [eax + eax]
inc eax
cmp byte [eax], 0
jne 0x4d04b0
test dl, 4
je 0x4d04c6
nop dword [eax + eax]
inc eax
cmp byte [eax], 0
jne 0x4d04c0
add eax, 1
jne 0x4d04d0
mov eax, str.BINARY
mov ecx, dword [esi + 8]
test ecx, ecx
jne 0x4d04dd
neg eax
sbb eax, eax
jmp 0x4d04e8
test eax, eax
je 0x4d0502
mov edx, eax
call fcn.00432ff0
test eax, eax
jne 0x4d0502
mov ecx, 1
mov esi, dword [ebp - 0x24]
inc ebx
add edi, 0x14
cmp ebx, esi
jl 0x4d0400
jmp 0x4d0505
mov esi, dword [ebp - 0x24]
xor edi, edi
cmp ebx, esi
jne 0x4d054c
mov eax, dword [ebp - 0x48]
mov edi, esi
mov dword [ebp - 0x38], edi
movzx eax, word [eax + 0x28]
mov ecx, eax
test al, al
jns 0x4d0539
mov edx, dword [ebp + 0x10]
test dword [edx + 0x28], 0x4000
jne 0x4d0539
mov edx, eax
shr edx, 9
and edx, 1
add edx, 2
mov dword [ebp - 0x2c], edx
jmp 0x4d054c
test cl, 0x40
mov eax, 0
mov ecx, 1
cmovne eax, ecx
mov dword [ebp - 0x2c], eax
mov ebx, dword [ebp - 0x30]
mov ecx, dword [ebp - 0x28]
push 0
lea eax, [ebx + 4]
mov ecx, dword [ecx]
lea esi, [edi + eax*2]
add esi, eax
shl esi, 3
push esi
test ecx, ecx
je 0x4d0572
call fcn.0042f570
mov edi, eax
mov dword [ebp - 0x30], edi
jmp 0x4d057c
call fcn.0042ee10
mov edi, eax
mov dword [ebp - 0x30], eax
add esp, 8
test edi, edi
je 0x4d0824
push esi
push 0
push edi
call sub.VCRUNTIME140.dll_memset
mov ecx, dword [ebp - 0x38]
lea edi, [edi + ebx*4]
add edi, 0x5c
lea eax, [ebx + ebx*2]
mov ebx, dword [ebp - 0x30]
add esp, 0xc
mov dword [ebp - 0x34], edi
lea eax, [edi + eax*4]
mov dword [ebx + 0xc], eax
mov dword [ebp - 0x48], eax
lea eax, [eax + ecx*8]
mov ecx, dword [ebp + 0x10]
mov dword [ebx + 0x10], eax
mov dword [ebx + 4], edi
mov eax, dword [ecx + 0x38]
mov ecx, dword [ecx + 0x3c]
mov dword [ebx + 0x44], ecx
mov ecx, dword [ebp - 0x3c]
mov dword [ebx + 0x40], eax
mov eax, dword [ecx + 0x1c]
shr eax, 7
not eax
test al, 1
jne 0x4d0639
mov esi, dword [ecx + 8]
test esi, esi
je 0x4d05f0
nop dword [eax]
mov eax, dword [esi + 0x38]
and al, 3
cmp al, 2
je 0x4d05f0
mov esi, dword [esi + 0x14]
test esi, esi
jne 0x4d05e0
xor eax, eax
xor edi, edi
cmp ax, word [esi + 0x32]
jae 0x4d0636
mov ecx, 0x3f
nop
mov eax, dword [esi + 4]
movsx edx, word [eax + edi*2]
cmp edx, 0x3f
cmovge edx, ecx
xor eax, eax
xor ecx, ecx
bts eax, edx
cmp edx, 0x20
cmovae ecx, eax
xor eax, ecx
cmp edx, 0x40
cmovae ecx, eax
or dword [ebx + 0x40], eax
or dword [ebx + 0x44], ecx
inc edi
movzx eax, word [esi + 0x32]
mov ecx, 0x3f
cmp edi, eax
jl 0x4d0600
mov edi, dword [ebp - 0x34]
mov eax, dword [ebp - 0x28]
mov edx, dword [ebp - 0x40]
mov dword [ebx + 0x4c], eax
mov eax, dword [ebp - 0x2c]
mov dword [ebx + 0x50], eax
xor eax, eax
mov dword [ebx + 0x48], edx
mov dword [ebx + 0x54], 0
xor ebx, ebx
mov dword [ebp - 0x2c], eax
mov dword [ebp - 0x28], ebx
test edx, edx
je 0x4d079b
mov ecx, dword [edx + 0xc]
mov esi, dword [edx + 0x18]
add ecx, ebx
mov dword [ebp - 0x3c], ecx
cmp ebx, ecx
jge 0x4d078a
mov ecx, eax
mov edx, 1
rol edx, cl
lea ecx, [eax*2 + 1]
add ecx, eax
mov dword [ebp - 0x24], edx
lea ecx, [edi + ecx*4]
mov edi, dword [ebp - 0x3c]
test byte [esi + 0xa], 0x40
je 0x4d0775
mov eax, dword [esi + 0x18]
mov edi, 0x3fff
mov dword [ecx - 4], eax
mov dword [ecx + 4], ebx
mov ax, word [esi + 0xc]
and ax, di
movzx eax, ax
mov edi, eax
cmp eax, 1
jne 0x4d06dc
cmp word [esi + 0xa], 0
jl 0x4d06d4
mov edi, dword [ebp - 0x30]
xor eax, eax
cmp dword [ebp - 0x2c], 0x1f
mov edx, dword [ebp - 0x24]
cmovle eax, edx
or dword [edi + 0x54], eax
mov byte [ecx], 2
jmp 0x4d0761
mov edx, edi
cmp edi, 0x40
jne 0x4d06ea
mov al, byte [esi + 0xf]
mov byte [ecx], al
jmp 0x4d075e
mov ebx, edx
test edx, 0x180
je 0x4d0705
mov eax, pe_nt_image_headers32
cmp dx, ax
setne al
add al, 0x47
mov byte [ecx], al
jmp 0x4d075b
mov byte [ecx], bl
test bl, 0x3c
je 0x4d075b
mov eax, dword [esi]
mov edx, dword [eax + 0x10]
mov al, byte [edx]
cmp al, 0xb0
jne 0x4d071a
mov al, byte [edx + 2]
cmp al, 0xb1
jne 0x4d0723
mov eax, dword [edx + 0x14]
jmp 0x4d072d
cmp al, 0x8b
jne 0x4d075b
mov eax, dword [edx + 0x14]
mov eax, dword [eax + 0x1c]
cmp dword [eax], 1
jle 0x4d075b
mov edx, dword [ebp - 0x2c]
cmp edx, 0x10
jge 0x4d0749
mov edi, dword [ebp - 0x44]
movzx eax, di
bts eax, edx
movzx eax, ax
mov dword [ebp - 0x44], eax
cmp ebx, 0x10
jne 0x4d0753
mov byte [ecx], 8
jmp 0x4d075b
cmp ebx, 4
jne 0x4d075b
mov byte [ecx], 0x20
mov ebx, dword [ebp - 0x28]
mov edx, dword [ebp - 0x24]
mov eax, dword [ebp - 0x2c]
add ecx, 0xc
mov edi, dword [ebp - 0x3c]
inc eax
rol edx, 1
mov dword [ebp - 0x2c], eax
mov dword [ebp - 0x24], edx
jmp 0x4d0778
mov eax, dword [ebp - 0x2c]
inc ebx
add esi, 0x30
mov dword [ebp - 0x28], ebx
cmp ebx, edi
jl 0x4d0692
mov edx, dword [ebp - 0x40]
mov edx, dword [edx + 4]
mov edi, dword [ebp - 0x34]
mov dword [ebp - 0x40], edx
test edx, edx
jne 0x4d0664
mov ecx, dword [ebp - 0x30]
xor ebx, ebx
mov dword [ecx], eax
cmp dword [ebp - 0x38], ebx
jle 0x4d0804
mov esi, dword [ebp - 0x4c]
mov eax, 1
add esi, 0x10
mov edi, dword [esi - 8]
mov word [ebp - 0xc], ax
mov dword [ebp - 0x20], 0
mov dword [ebp - 0x1c], fcn.00474110
mov dword [ebp - 0x18], 0x473f00
test edi, edi
je 0x4d07fb
mov edx, edi
lea ecx, [ebp - 0x20]
call fcn.0046d580
cmp word [ebp - 0xc], 0
jne 0x4d07f6
mov ecx, dword [ebp - 0x48]
movsx eax, word [edi + 0x20]
mov dword [ecx + ebx*8], eax
mov al, byte [esi]
and al, 1
mov byte [ecx + ebx*8 + 4], al
inc ebx
mov eax, 1
add esi, 0x14
sub dword [ebp - 0x38], 1
jne 0x4d07b2
mov eax, dword [ebp - 0x30]
mov ecx, dword [ebp - 0x50]
mov edi, dword [ebp - 0x44]
mov dword [eax + 8], ebx
mov word [ecx], di
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.004f5edb
mov esp, ebp
pop ebp
ret
push 0x4fe3e4
push dword [ebp - 0x28]
call fcn.00432d50
mov ecx, dword [ebp - 4]
add esp, 8
xor ecx, ebp
xor eax, eax
pop edi
pop esi
pop ebx
call fcn.004f5edb
mov esp, ebp
pop ebp
ret