Function at 0x4099b0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x104
cmp dword [ecx + 0x20], 0
je 0x409d7d
mov esi, ecx
lea eax, [ecx + 0x10]
push eax
call fcn.00406160
add esp, 4
mov edx, dword [esi + 0x10]
mov eax, dword [esi + 0x58]
mov eax, dword [eax + 0x48]
mov dword [esp + 8], 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 + 4], edx
lea eax, [edx + 0x400]
push eax
call fcn.00408330
add esp, 4
mov edi, eax
mov dword [esp + 0x68], 0xd1dd24da
mov byte [esp + 0x6c], 0xb6
mov eax, 0xe800c6a2
nop
nop
nop
movzx ecx, byte [esp + eax + 0x17ff39c6]
mov edx, ecx
and edx, eax
add dl, dl
sub cl, dl
movzx ecx, cl
add ecx, eax
add cl, 0xf0
mov byte [esp + eax + 0x17ff39c6], cl
inc eax
cmp eax, 0xe800c6a7
jne 0x409a30
lea ebx, [esp + 0x68]
mov ecx, esi
push 0x4434d8
push ebx
push edi
call fcn.004092f0
mov dword [esp + 0x68], 0x646970
lea eax, [esp + 2]
mov ecx, esi
push eax
push ebx
push edi
call fcn.004092f0
mov eax, dword [str.c2CoW0__SEOTRAFF_2]
mov dword [esp + 0x68], 0x64696c
mov ecx, esi
push eax
push ebx
push edi
call fcn.004092f0
mov dword [esp + 0x68], 0x504d5742
mov dword [esp + 0x6c], 0xbb524b5a
mov dword [esp + 0x70], 0xa9acabba
mov byte [esp + 0x74], 0x4d
mov eax, 0x36188c79
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax - 0x36188c11]
mov edx, ecx
and edx, eax
add dl, dl
sub cl, dl
movzx ecx, cl
add ecx, eax
add cl, 0x38
mov byte [esp + eax - 0x36188c11], cl
inc eax
cmp eax, 0x36188c86
jne 0x409ac0
mov dword [esp + 0xe], 0x746361
lea eax, [esp + 0xe]
mov ecx, esi
push ebx
push eax
push edi
call fcn.004092f0
mov dword [esp + 0x68], 0xd6b6f73
mov byte [esp + 0x6c], 0xa9
mov eax, 0xc6be813e
mov ecx, 0xc2
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebp, byte [esp + eax + 0x39417f2a]
mov edx, ebp
not edx
or edx, ecx
and ebp, ecx
add edx, eax
or edx, ebp
add edx, 0xca0bf617
mov ebp, edx
and ebp, 1
xor edx, 1
lea edx, [edx + ebp*2]
mov byte [esp + eax + 0x39417f2a], dl
inc eax
dec ecx
cmp eax, 0xc6be8143
jne 0x409b20
mov ecx, esi
push dword [esp + 4]
push dword [esp + 0xc]
push ebx
mov dword [esp + 0x10], edi
push edi
call fcn.004095a0
mov dword [esp + 0xe], 0xe920c48
mov dword [esp + 0x12], 0x2950091
mov dword [esp + 0x16], 0x69b0466
mov dword [esp + 0x1a], 0x3a643893
mov dword [esp + 0x1e], 0x3eb43c4f
mov dword [esp + 0x22], 0x325430af
mov dword [esp + 0x26], 0x36153479
mov dword [esp + 0x2a], 0x2abc28aa
mov dword [esp + 0x2e], 0x2eb92cb7
mov dword [esp + 0x32], 0x22b120b6
mov dword [esp + 0x36], 0x26b72442
mov dword [esp + 0x3a], 0x5a0658b3
mov dword [esp + 0x3e], 0x5ec25c3d
mov dword [esp + 0x42], 0x52cc50cd
mov dword [esp + 0x46], 0x5631540e
mov dword [esp + 0x4a], 0x4add4836
mov dword [esp + 0x4e], 0x4e064c2a
mov dword [esp + 0x52], 0x4223406f
mov dword [esp + 0x56], 0x46d044dc
mov dword [esp + 0x5a], 0x7a1d78d9
mov dword [esp + 0x5e], 0x7eef7c1a
mov dword [esp + 0x62], 0x723c70f6
mov word [esp + 0x66], 0x7473
mov eax, 0x24ab9293
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + eax - 0x24ab9285]
lea ecx, [eax - 0x1255d000]
mov ebp, eax
and ebp, 0xe4d
and ecx, 0x1255c1b2
or ecx, ebp
mov ebp, edx
xor ebp, 0x4d
mov edi, ecx
xor edi, 0x4d
xor edx, 0xb2
and edx, edi
xor ecx, 0xb2
and ecx, ebp
or ecx, edx
add cl, 0x68
mov byte [esp + eax - 0x24ab9285], cl
inc eax
cmp eax, 0x24ab92ed
jne 0x409c30
movzx eax, word [esp + 0xe]
test ax, ax
je 0x409ca1
lea ebx, [esp + 0x68]
lea ecx, [esp + 0x10]
nop
nop
mov word [ebx], ax
add ebx, 2
movzx eax, word [ecx]
add ecx, 2
test ax, ax
jne 0x409c90
mov word [ebx], 0
movzx ecx, byte [esi + 0x60]
test cl, cl
je 0x409cd1
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 0x409cc0
mov dword [ebx], 0xa000d
mov word [ebx + 4], 0
mov eax, dword [esi + 0x80]
mov dword [esp + 0xe], 0xc767c5ab
mov dword [esp + 0x12], 0xcb63c978
mov word [esp + 0x16], 0xcdcc
xor ecx, ecx
nop
nop
nop
nop
movzx edx, byte [esp + ecx + 0xe]
lea edi, [ecx + 0x84127e4]
and edi, edx
add edi, edi
neg edi
lea ebx, [ecx + edi]
add ebx, 0x84127e4
add bl, dl
add bl, 0xe0
mov byte [esp + ecx + 0xe], bl
mov edx, ecx
and edx, 7
xor ecx, 0x1d218b87
lea ecx, [ecx + edx*2]
add ecx, 0xe2de747a
cmp ecx, 0xa
jb 0x409d00
lea ecx, [esp + 0x68]
push 0x493e0
push eax
mov edi, dword [esp + 0xc]
push edi
push 0
push 0
push ecx
lea eax, [esp + 0x26]
push eax
call fcn.0040bf50
add esp, 0x1c
mov ebx, eax
push edi
call fcn.00408340
add esp, 4
mov eax, dword [esi + 0x80]
add dword [esi + 4], eax
mov dword [esi + 0x80], 0
jmp 0x409d7f
mov bl, 1
mov eax, ebx
add esp, 0x104
pop esi
pop edi
pop ebx
pop ebp
ret