Function at 0x4091e0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x54
mov esi, dword [esp + 0x6c]
mov dword [esp + 0x20], ecx
mov eax, dword [ecx + 0x80]
mov dword [esp + 0x1c], eax
mov word [esp], 0x4b4d
mov byte [esp + 2], 0x42
mov dword [esp + 3], 0
mov byte [esp + 7], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, eax
add cl, 0x90
xor cl, byte [esp + eax]
add cl, 0x30
mov byte [esp + eax], cl
inc eax
cmp eax, 8
jne 0x409220
mov dword [esp + 0x10], 0x161c1006
mov word [esp + 0x14], 0x231a
mov dword [esp + 0x16], 0
mov word [esp + 0x1a], 0
mov ebx, 0x706e9f9
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx eax, byte [esp + ebx - 0x706e9e9]
mov edi, ebx
and edi, eax
mov ecx, edi
mov ebp, edi
mov edx, edi
xor eax, ebx
lea eax, [eax + edi*2]
and edi, 2
or ecx, 0xfd
inc ecx
and ebp, 0xfffffffd
imul ebp, ecx
or edx, 2
imul edx, edi
sub ebp, edx
add eax, ebp
add al, 0x23
mov byte [esp + ebx - 0x706e9e9], al
inc ebx
cmp ebx, 0x706ea05
jne 0x409260
mov dword [esp + 0x24], 0x103bfdf3
mov dword [esp + 0x28], 0xb1d6f16
mov dword [esp + 0x2c], 0x222c870
mov dword [esp + 0x30], 0x780b0b75
mov dword [esp + 0x34], 0xd7b0f
mov dword [esp + 0x38], 0x73d23906
mov dword [esp + 0x3c], 0xbe797d7d
mov dword [esp + 0x40], 0x66066874
mov dword [esp + 0x44], 0x6270a741
mov dword [esp + 0x48], 0xbf457c77
mov byte [esp + 0x4c], 0x9c
mov dword [esp + 0x4d], 0
mov dword [esp + 0x50], 0
mov ebx, 0x3ecf0529
nop
nop
nop
movzx eax, byte [esp + ebx - 0x3ecf0505]
xor eax, ebx
mov ecx, eax
and ecx, 1
xor eax, 1
lea eax, [eax + ecx*2]
add al, 0x32
mov byte [esp + ebx - 0x3ecf0505], al
inc ebx
cmp ebx, 0x3ecf0559
jne 0x409310
mov ebp, dword [esp + 0x68]
add ebp, dword [esp + 0x1c]
mov word [esp + 8], 0x3435
mov byte [esp + 0xa], 0xe
mov dword [esp + 0xb], 0
xor edi, edi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
lea eax, [edi + edi]
mov edx, eax
and edx, 4
mov ecx, edi
xor ecx, 0x82
add ecx, edx
xor cl, byte [esp + edi + 8]
add cl, 0x76
mov byte [esp + edi + 8], cl
and eax, 2
xor edi, 1
add edi, eax
cmp edi, 7
jb 0x409360
movzx ebx, byte [esp + 8]
mov edi, ebp
test bl, bl
je 0x4093ab
lea eax, [esp + 9]
mov edi, ebp
nop
nop
nop
nop
nop
mov byte [edi], bl
inc edi
movzx ebx, byte [eax]
inc eax
test bl, bl
jne 0x4093a0
mov byte [edi], 0
mov edx, dword [esp + 0x20]
movzx ecx, byte [edx + 0x60]
test cl, cl
je 0x4093cb
lea eax, [edx + 0x61]
nop
nop
nop
mov byte [edi], cl
inc edi
movzx ecx, byte [eax]
inc eax
test cl, cl
jne 0x4093c0
mov byte [edi], 0
movzx ecx, byte [esp + 0x24]
test cl, cl
je 0x4093eb
lea eax, [esp + 0x25]
nop
nop
nop
nop
nop
mov byte [edi], cl
inc edi
movzx ecx, byte [eax]
inc eax
test cl, cl
jne 0x4093e0
mov byte [edi], 0
movzx ebx, byte [esi]
test bl, bl
je 0x40940b
inc esi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edi], bl
inc edi
movzx ebx, byte [esi]
inc esi
test bl, bl
jne 0x409400
mov byte [edi], 0
movzx ecx, byte [esp + 0x10]
test cl, cl
je 0x40942b
lea eax, [esp + 0x11]
nop
nop
nop
nop
nop
mov byte [edi], cl
inc edi
movzx ecx, byte [eax]
inc eax
test cl, cl
jne 0x409420
mov byte [edi], 0
mov eax, dword [esp + 0x70]
movzx ebx, byte [eax]
test bl, bl
je 0x40944b
inc eax
nop
nop
nop
nop
nop
nop
mov byte [edi], bl
inc edi
movzx ebx, byte [eax]
inc eax
test bl, bl
jne 0x409440
mov byte [edi], 0
movzx ecx, byte [esp]
test cl, cl
je 0x40946b
lea eax, [esp + 1]
nop
nop
nop
nop
nop
nop
mov byte [edi], cl
inc edi
movzx ecx, byte [eax]
inc eax
test cl, cl
jne 0x409460
mov byte [edi], 0
sub edi, ebp
add dword [edx + 0x80], edi
add esp, 0x54
pop esi
pop edi
pop ebx
pop ebp
ret 0xc