Function at 0x409820
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 0x409c33
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 + 0xc], 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 + 0x10], edx
lea eax, [edx + 0x400]
push eax
call fcn.00407fb0
add esp, 4
mov ebp, eax
mov dword [esp + 0x70], 0xc9c5bcc2
mov byte [esp + 0x74], 0x2e
mov eax, 0x8622acfa
nop
nop
nop
movzx ecx, byte [esp + eax + 0x79dd5376]
mov edx, ecx
and edx, eax
add dl, dl
sub cl, dl
movzx ecx, cl
add ecx, eax
add cl, 0x30
mov byte [esp + eax + 0x79dd5376], cl
inc eax
cmp eax, 0x8622acff
jne 0x4098a0
lea ebx, [esp + 0x70]
mov ecx, esi
push 0x446fb8
push ebx
push ebp
call fcn.00409190
mov dword [esp + 0x70], 0xb4574b41
mov eax, 0x5cb19779
mov ecx, 0x86
nop
nop
nop
nop
nop
movzx edi, byte [esp + eax - 0x5cb19709]
mov edx, ecx
xor edx, eax
and edx, edi
xor edx, eax
mov edi, edx
and edi, 0x37
xor edx, 0x1a734437
lea edi, [edx + edi*2]
and edx, 1
xor edi, 1
lea edx, [edi + edx*2]
mov byte [esp + eax - 0x5cb19709], dl
inc eax
dec ecx
cmp eax, 0x5cb1977d
jne 0x4098f0
lea eax, [esp + 2]
mov ecx, esi
push eax
push ebx
mov dword [esp + 0x10], ebp
push ebp
call fcn.00409190
mov eax, dword [str.1dToeG__]
mov dword [esp + 4], eax
mov dword [esp + 0x70], 0x34d7cbcd
mov ecx, 0xf9
mov edx, 6
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebp, byte [esp + ecx - 0x89]
lea eax, [ebp*2]
not eax
add eax, ebp
mov edi, ecx
or edi, ebp
not ebp
and ebp, eax
mov eax, ebp
xor eax, edx
add eax, ebp
and ebp, ecx
sub eax, ebp
and eax, edi
add al, 0x38
mov byte [esp + ecx - 0x89], al
inc ecx
dec edx
cmp ecx, 0xfd
jne 0x409960
mov ecx, esi
push dword [esp + 4]
push ebx
mov ebp, dword [esp + 0x10]
push ebp
call fcn.00409190
mov dword [esp + 0x70], 0x7d767245
mov dword [esp + 0x74], 0x4e797665
mov dword [esp + 0x78], 0x64677e4d
mov byte [esp + 0x7c], 0xc2
xor eax, eax
nop
nop
nop
nop
nop
nop
mov ecx, eax
add cl, 0xe6
xor cl, byte [esp + eax + 0x70]
add cl, 0xd0
mov byte [esp + eax + 0x70], cl
inc eax
cmp eax, 0xd
jne 0x4099d0
mov dword [esp + 0x16], 0x5baebab9
mov eax, 0xffa8b898
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + eax + 0x57477e]
mov edi, eax
and edi, 0xfaa8081a
or edi, 0x112a7e1
mov ecx, eax
and ecx, 0x500b081
xor ecx, edi
xor ecx, edx
mov edx, ecx
xor edx, 0x112a7e1
or ecx, 0x3f
add ecx, edx
or edx, 0x3f
add ecx, edx
add cl, 2
mov byte [esp + eax + 0x57477e], cl
inc eax
cmp eax, 0xffa8b89c
jne 0x409a00
lea eax, [esp + 0x16]
mov dword [esp + 4], esi
mov ecx, esi
push ebx
push eax
push ebp
call fcn.00409190
mov dword [esp + 0x70], 0x5947435f
mov byte [esp + 0x74], 0x3d
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + eax + 0x70]
lea edi, [eax + 0xb1]
and edi, edx
mov esi, edi
and esi, 2
mov ebp, edi
or ebp, 0xfffffffd
inc ebp
mov ecx, edi
and ecx, 0xffffffbd
imul ecx, ebp
or edi, 2
imul edi, esi
lea esi, [eax + edx]
add ecx, edx
sub ecx, edi
add ecx, eax
add ecx, 0x3e6f3ce6
and esi, 1
or ecx, 1
sub ecx, esi
lea ecx, [ecx + esi*2]
add cl, 0x42
mov byte [esp + eax + 0x70], cl
inc eax
cmp eax, 5
jne 0x409a70
mov ecx, dword [esp + 4]
push dword [esp + 0x10]
push dword [esp + 0x10]
push ebx
push dword [esp + 0x14]
call fcn.00409410
mov dword [esp + 0x16], 0xc070ce8e
mov dword [esp + 0x1a], 0xc477c27f
mov dword [esp + 0x1e], 0xd879c660
mov dword [esp + 0x22], 0xdca6da6d
mov dword [esp + 0x26], 0xd056de89
mov dword [esp + 0x2a], 0xd476d261
mov dword [esp + 0x2e], 0x28b7d69f
mov dword [esp + 0x32], 0x2c9e2a94
mov dword [esp + 0x36], 0x209b2e91
mov dword [esp + 0x3a], 0x24932298
mov dword [esp + 0x3e], 0x38952684
mov dword [esp + 0x42], 0x3c443a8d
mov dword [esp + 0x46], 0x30803e9b
mov dword [esp + 0x4a], 0x348e3283
mov dword [esp + 0x4e], 0x8933648
mov dword [esp + 0x52], 0xcbf0aa8
mov dword [esp + 0x56], 0x440eac
mov dword [esp + 0x5a], 0x4a10261
mov dword [esp + 0x5e], 0x18b206ba
mov dword [esp + 0x62], 0x1cbf1aa7
mov dword [esp + 0x66], 0x10ad1ebc
mov dword [esp + 0x6a], 0x145e1298
mov word [esp + 0x6e], 0x1615
xor eax, eax
nop
nop
nop
nop
movzx ecx, byte [esp + eax + 0x16]
mov edx, eax
and edx, 0x1b
xor edx, 0xe25ccc1b
mov esi, eax
and esi, 0x64
sub esi, edx
xor esi, ecx
lea edi, [esi + 0x12e660d7]
mov ecx, edi
and ecx, 1
mov ebp, 0xed199f28
sub ebp, esi
mov edx, ebp
not edx
and ebp, 0x49
and edi, 0xb6
or edi, ebp
and edx, 1
or edx, edi
xor edx, 0x48
add edx, ecx
mov byte [esp + eax + 0x16], dl
inc eax
cmp eax, 0x5a
jne 0x409b90
movzx eax, word [esp + 0x16]
test ax, ax
je 0x409c01
lea ebx, [esp + 0x70]
lea ecx, [esp + 0x18]
mov word [ebx], ax
add ebx, 2
movzx eax, word [ecx]
add ecx, 2
test ax, ax
jne 0x409bf0
mov word [ebx], 0
mov esi, dword [esp + 4]
movzx ecx, byte [esi + 0x60]
test cl, cl
je 0x409c3a
lea eax, [esi + 0x61]
mov edi, dword [esp + 8]
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 0x409c20
jmp 0x409c3e
mov bl, 1
jmp 0x409cc1
mov edi, dword [esp + 8]
mov dword [ebx], 0xa000d
mov word [ebx + 4], 0
mov eax, dword [esi + 0x80]
mov dword [esp + 0x16], 0x2c4a2a16
mov dword [esp + 0x1a], 0x20562e5d
mov word [esp + 0x1e], 0x2221
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
mov edx, ecx
add dl, 0x21
xor dl, byte [esp + ecx + 0x16]
add dl, 0xf8
mov byte [esp + ecx + 0x16], dl
inc ecx
cmp ecx, 0xa
jne 0x409c70
lea ecx, [esp + 0x70]
push 0x493e0
push eax
push edi
push 0
push 0
push ecx
lea eax, [esp + 0x2e]
push eax
call fcn.0040c2b0
add esp, 0x1c
mov ebx, eax
push edi
call fcn.00407fc0
add esp, 4
mov eax, dword [esi + 0x80]
add dword [esi + 4], eax
mov dword [esi + 0x80], 0
mov eax, ebx
add esp, 0x10c
pop esi
pop edi
pop ebx
pop ebp
ret