Function at 0x409660
Capabilities:
Contain obfuscated stackstrings
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x10c
cmp dword [ecx + 0x20], 0
je 0x409b13
mov esi, ecx
lea eax, [ecx + 0x10]
push eax
call fcn.00405e30
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 + 0xc], edx
lea eax, [edx + 0x400]
push eax
call fcn.00407fa0
add esp, 4
mov dword [esp + 0x70], 0x6fd97cd7
mov word [esp + 0x74], 0xf441
xor edi, edi
nop
nop
nop
nop
nop
nop
mov edx, edi
xor edx, 0xabf7
lea ecx, [edi + edi]
lea edx, [edx + edi*2]
xor dx, word [esp + edi*2 + 0x70]
add edx, 0xffffa048
mov word [esp + edi*2 + 0x70], dx
and ecx, 2
xor edi, 1
add edi, ecx
cmp edi, 3
jb 0x4096e0
lea edx, [esp + 0x70]
mov dword [esp + 4], esi
mov ecx, esi
push 0x443f30
push edx
mov dword [esp + 0x18], eax
push eax
call fcn.00409030
mov dword [esp + 0x70], 0x55833eb6
xor eax, eax
mov cl, 1
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, word [esp + eax*2 + 0x70]
lea edi, [eax + 0x2bd7c1a3]
mov esi, edi
xor esi, 0x3fa2f10d
and edi, 0x5500a2
add edi, edi
sub edi, esi
mov ebp, edi
and ebp, edx
mov ebx, ebp
and ebx, 0xdfdd
mov esi, ebp
or esi, 0xfffd
inc esi
imul esi, ebx
mov ebx, ebp
and ebx, 2
or ebp, 2
imul ebp, ebx
sub esi, ebp
add edi, edx
lea edx, [esi + edi]
add edx, 0x7b50
mov word [esp + eax*2 + 0x70], dx
mov eax, 1
xor ebp, ebp
test cl, 1
mov ecx, 0
jne 0x409740
lea eax, [esp + 2]
mov esi, dword [esp + 4]
mov ecx, esi
push eax
lea edi, [esp + 0x74]
push edi
mov ebx, dword [esp + 0x18]
push ebx
call fcn.00409030
mov eax, dword [str.Dvh8ui__333]
mov dword [esp + 0x70], 0x64696c
mov ecx, esi
push eax
push edi
push ebx
call fcn.00409030
mov dword [esp + 0x70], 0x17081806
mov dword [esp + 0x74], 0x62d0018
mov dword [esp + 0x78], 0x182d143a
mov word [esp + 0x7c], 0x728b
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, word [esp + eax*2 + 0x70]
mov esi, ebp
and esi, 0xa
mov edx, eax
xor edx, 0xdf5df05d
add edx, esi
mov esi, ecx
xor esi, 0x8b1c907f
mov edi, edx
xor edi, 0x957f
xor edx, 0x54c36a80
and edx, esi
xor ecx, 0x54c36a80
and ecx, edi
or ecx, edx
mov edx, ecx
not edx
add ecx, 0x7d17
and edx, 1
or ecx, 1
xor ecx, edx
lea ecx, [ecx + edx*2]
mov word [esp + eax*2 + 0x70], cx
inc eax
add ebp, 2
cmp eax, 7
jne 0x409800
mov dword [esp + 0x16], 0xfc2f615b
xor eax, eax
mov cl, 1
xor ebp, ebp
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx esi, word [esp + eax*2 + 0x16]
mov edx, 0x1c15
sub edx, eax
mov edi, eax
or edi, 0x8926e3ea
xor edx, edi
and edx, esi
xor edx, edi
add edx, 0xb6c8e0af
mov esi, edx
xor esi, 0xfffe
or edx, 1
and esi, edx
add esi, edx
mov word [esp + eax*2 + 0x16], si
mov eax, 1
test cl, 1
mov ecx, 0
jne 0x409870
lea edx, [esp + 0x16]
mov edi, dword [esp + 4]
mov ecx, edi
lea eax, [esp + 0x70]
push eax
push edx
push ebx
call fcn.00409030
mov dword [esp + 0x70], 0xbd77b97c
mov word [esp + 0x74], 0x109c
xor eax, eax
nop
nop
nop
nop
nop
nop
mov ecx, ebp
and ecx, 0xfffffffc
add ecx, eax
movzx edx, word [esp + ebp + 0x70]
xor edx, ecx
lea ecx, [edx + edx]
and ecx, 0x935e
xor ecx, 0x114
xor edx, 0xef65
add ecx, edx
inc ecx
mov word [esp + ebp + 0x70], cx
inc eax
add ebp, 2
cmp ebp, 6
jne 0x4098e0
mov ecx, edi
push dword [esp + 0xc]
push dword [esp + 0xc]
lea ebp, [esp + 0x78]
push ebp
push ebx
call fcn.00409270
mov dword [esp + 0x16], 0x3e063e2b
mov dword [esp + 0x1a], 0x3e1f3e04
mov dword [esp + 0x1e], 0x3e033e09
mov dword [esp + 0x22], 0x3ec23e1a
mov dword [esp + 0x26], 0x3e083e24
mov dword [esp + 0x2a], 0x3e163e02
mov dword [esp + 0x2e], 0x3ed53ece
mov dword [esp + 0x32], 0x3e023e1b
mov dword [esp + 0x36], 0x3e0d3e14
mov dword [esp + 0x3a], 0x3e0b3e13
mov dword [esp + 0x3e], 0x3e0f3e1d
mov dword [esp + 0x42], 0x3ed03e0a
mov dword [esp + 0x46], 0x3e6e3e66
mov dword [esp + 0x4a], 0x3e6e3e70
mov dword [esp + 0x4e], 0x3e613ea9
mov dword [esp + 0x52], 0x3e733e67
mov dword [esp + 0x56], 0x3eb23e69
mov dword [esp + 0x5a], 0x3e693eaa
mov dword [esp + 0x5e], 0x3e783e63
mov dword [esp + 0x62], 0x3e6b3e60
mov dword [esp + 0x66], 0x3e633e71
mov dword [esp + 0x6a], 0x3eae3e6b
mov word [esp + 0x6e], 0x3e94
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, word [esp + eax*2 + 0x16]
lea edx, [eax + 0x23a8]
lea esi, [ecx + ecx]
not esi
add esi, ecx
and esi, edx
mov edx, 0xdc57
sub edx, eax
and edx, ecx
or edx, esi
add edx, 0xffffe2c0
mov word [esp + eax*2 + 0x16], dx
lea ecx, [eax + eax]
and ecx, 2
xor eax, 1
add eax, ecx
cmp eax, 0x2d
jb 0x4099f0
movzx eax, word [esp + 0x16]
test ax, ax
je 0x409a52
lea ebp, [esp + 0x70]
lea ecx, [esp + 0x18]
nop
nop
nop
nop
mov word [ebp], ax
add ebp, 2
movzx eax, word [ecx]
add ecx, 2
test ax, ax
jne 0x409a40
mov word [ebp], 0
movzx ecx, byte [edi + 0x60]
test cl, cl
je 0x409a82
lea eax, [edi + 0x61]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movsx ecx, cl
mov word [ebp], cx
add ebp, 2
movzx ecx, byte [eax]
inc eax
test cl, cl
jne 0x409a70
mov dword [ebp], 0xa000d
mov word [ebp + 4], 0
mov eax, dword [edi + 0x80]
mov dword [esp + 0x16], 0x1102114d
mov dword [esp + 0x1a], 0x110c1ef4
mov word [esp + 0x1e], 0x1166
xor ecx, ecx
nop
nop
movzx edx, word [esp + ecx*2 + 0x16]
lea esi, [ecx + 0x714b26f2]
and esi, edx
add esi, esi
sub edx, esi
add edx, ecx
add edx, 0xffffef62
mov word [esp + ecx*2 + 0x16], dx
inc ecx
cmp ecx, 5
jne 0x409ab0
lea ecx, [esp + 0x70]
push 0x493e0
push eax
push ebx
push 0
push 0
push ecx
lea eax, [esp + 0x2e]
push eax
call fcn.0040c340
add esp, 0x1c
mov ecx, ebx
mov ebx, eax
push ecx
call fcn.00407fb0
add esp, 4
mov eax, dword [edi + 0x80]
add dword [edi + 4], eax
mov dword [edi + 0x80], 0
jmp 0x409b15
mov bl, 1
mov eax, ebx
add esp, 0x10c
pop esi
pop edi
pop ebx
pop ebp
ret