Function at 0x409d20
Capabilities:
Encode data using xor
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0xf0
cmp dword [ecx + 0x20], 0
je 0x409d71
mov esi, ecx
movzx eax, byte [ecx]
mov byte [esp + 0xb], 0
test eax, eax
je 0x409d78
cmp al, 0x64
jb 0x409d87
lea ecx, [eax + eax*4]
lea ecx, [eax + ecx*8]
movzx edx, cx
shr edx, 0xc
imul ecx, edx, 0x64
sub al, cl
movzx eax, al
movzx eax, word [eax + eax + 0x43b528]
mov word [esp + 9], ax
mov ecx, 1
mov eax, edx
jmp 0x409d90
mov bl, 1
jmp 0x40a3bf
lea eax, [esp + 0xa]
mov dword [esp + 0xc], eax
mov byte [esp + 0xa], 0x30
jmp 0x409dbc
mov ecx, 3
cmp al, 9
ja 0x409da7
movzx eax, byte [eax + str.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ]
lea edx, [esp + ecx]
add edx, 7
mov dword [esp + 0xc], edx
mov byte [esp + ecx + 7], al
jmp 0x409dbc
movzx eax, word [eax + eax + 0x43b528]
lea ecx, [esp + 9]
mov dword [esp + 0xc], ecx
mov word [esp + 9], ax
lea eax, [esi + 0x10]
push eax
call fcn.00406c10
add esp, 4
mov edi, dword [esi + 0x10]
mov eax, dword [esi + 0x58]
mov eax, dword [eax + 0x48]
mov dword [esp + 0xc0], eax
lea ebx, [esp + 0xcb]
push ebx
call fcn.00432010
add esp, 4
mov dword [esp + 0xc4], edi
lea eax, [edi + 0x800]
push eax
call fcn.00408c60
add esp, 4
mov edi, eax
mov dword [esp + 0x28], 0xb7b3a6b0
mov byte [esp + 0x2c], 0xe4
mov dword [esp + 0x2d], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 8
ja 0x409e66
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 0x28]
lea edx, [eax + 0x1bf5325c]
add eax, 0x5c
and eax, ecx
or edx, ecx
sub edx, eax
mov dword [esp + 0x10], edx
mov eax, dword [esp + 0x10]
add al, 0x7c
mov ecx, dword [esp]
mov byte [esp + ecx + 0x28], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 9
jb 0x409e30
lea eax, [esp + 0x28]
mov ecx, esi
push ebx
mov ebx, eax
push eax
push edi
call fcn.00409620
mov dword [esp + 0x28], 0xfb9c6256
mov dword [esp + 0x2c], 0
mov dword [esp + 0x30], 0
mov dword [esp + 0x34], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 0xf
ja 0x409eeb
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 0x28]
lea edx, [eax + ecx]
add edx, 0x6812dadf
add eax, 0x6812dadf
and eax, ecx
add eax, eax
sub edx, eax
mov dword [esp + 0x10], edx
mov eax, dword [esp + 0x10]
add al, 0xe7
mov ecx, dword [esp]
mov byte [esp + ecx + 0x28], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 0x10
jb 0x409eb0
mov ecx, esi
push dword [esp + 0xc]
push ebx
mov dword [esp + 0x14], edi
push edi
call fcn.00409620
mov eax, dword [str.MhMcwl__Barni]
mov dword [esp + 0xbc], eax
mov dword [esp + 0x28], 0xebb0aaaa
mov dword [esp + 0x2c], 0
mov word [esp + 0x30], 0
mov dword [esp], 0
mov ecx, dword [esp]
cmp ecx, 9
ja 0x409f83
nop
nop
mov edx, dword [esp]
mov ecx, dword [esp]
movzx ebx, byte [esp + ecx + 0x28]
lea edi, [edx + 0x7d]
mov eax, 0x92394e82
sub eax, edx
lea ecx, [edx + ebx]
add ecx, 0x6dc6b17d
and edi, ebx
or eax, ebx
add eax, edx
add eax, edi
add eax, 0x6dc6b17e
mov edx, eax
xor edx, ecx
not eax
and eax, ecx
add eax, eax
sub eax, edx
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x10]
add al, 0x95
mov ecx, dword [esp]
mov byte [esp + ecx + 0x28], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 0xa
jb 0x409f30
mov ecx, esi
push dword [esp + 0xbc]
lea ebx, [esp + 0x2c]
push ebx
mov edi, dword [esp + 0x14]
push edi
call fcn.00409620
mov dword [esp + 0x28], 0xf7f8f0e3
mov dword [esp + 0x2c], 0xe8fbfccb
mov dword [esp + 0x30], 0xfef9c4eb
mov byte [esp + 0x34], 0x60
mov dword [esp + 0x35], 0
mov dword [esp + 0x39], 0
mov word [esp + 0x3d], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 0x16
ja 0x40a025
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 0x28]
lea edx, [eax + ecx]
add edx, 0x91553752
add eax, 0x91553752
and eax, ecx
add eax, eax
mov ecx, eax
xor ecx, edx
not eax
and eax, edx
add eax, eax
sub eax, ecx
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x10]
add al, 0xc2
mov ecx, dword [esp]
mov byte [esp + ecx + 0x28], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 0x17
jb 0x409fe0
mov dword [esp + 0x10], 0x53ecfcf5
mov dword [esp + 0x14], 0
mov dword [esp + 0x18], 0
mov dword [esp + 0x1b], 0
mov dword [esp + 4], 0
mov eax, dword [esp + 4]
cmp eax, 0xe
ja 0x40a0a0
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 4]
mov ecx, dword [esp + 4]
movzx edx, byte [esp + ecx + 0x10]
mov ecx, 0x89713e0c
sub ecx, eax
add eax, 0xf3
and eax, edx
or ecx, edx
not ecx
add ecx, edx
sub ecx, eax
mov dword [esp], ecx
mov eax, dword [esp]
add al, 0x5b
mov ecx, dword [esp + 4]
mov byte [esp + ecx + 0x10], al
inc dword [esp + 4]
mov eax, dword [esp + 4]
cmp eax, 0xf
jb 0x40a060
lea eax, [esp + 0x10]
mov ecx, esi
push ebx
push eax
push edi
call fcn.00409620
mov dword [esp + 0x28], 0x80a0c
mov byte [esp + 0x2c], 0xaa
mov dword [esp + 0x31], 0
mov dword [esp + 0x2d], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 0xc
ja 0x40a12a
nop
nop
nop
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 0x28]
mov edx, eax
and edx, 0xea382bc5
xor eax, 0x6a382bc5
lea eax, [eax + edx*2]
lea edx, [eax + ecx]
and eax, ecx
add eax, eax
mov ecx, edx
not ecx
and ecx, eax
not eax
and eax, edx
sub eax, ecx
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x10]
add al, 0x9d
mov ecx, dword [esp]
mov byte [esp + ecx + 0x28], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 0xd
jb 0x40a0e0
mov ecx, esi
push dword [esp + 0xc4]
push dword [esp + 0xc4]
push ebx
push edi
call fcn.004098e0
mov eax, dword [esi + 0x60]
mov dword [esp + 0x28], 0xc36dc183
mov dword [esp + 0x2c], 0xc772c56a
mov dword [esp + 0x30], 0xcb64c96d
mov dword [esp + 0x34], 0xcfa3cd78
mov dword [esp + 0x38], 0xd36bd184
mov dword [esp + 0x3c], 0xd773d564
mov dword [esp + 0x40], 0xdbbad9a2
mov dword [esp + 0x44], 0xdf6bdd71
mov dword [esp + 0x48], 0x2396218c
mov dword [esp + 0x4c], 0x2796258d
mov dword [esp + 0x50], 0x2b982989
mov dword [esp + 0x54], 0x2f412d98
mov dword [esp + 0x58], 0x339d3196
mov dword [esp + 0x5c], 0x379b3586
mov dword [esp + 0x60], 0x3b9e3955
mov dword [esp + 0x64], 0x3f8a3d9d
mov dword [esp + 0x68], 0x37901a1
mov dword [esp + 0x6c], 0x7a40564
mov dword [esp + 0x70], 0xbbf09a7
mov dword [esp + 0x74], 0xfaa0da2
mov dword [esp + 0x78], 0x13a011b1
mov dword [esp + 0x7c], 0x176b15ad
mov dword [esp + 0x80], 0x1bbf19ba
mov dword [esp + 0x84], 0x1f6b1d64
mov dword [esp + 0x88], 0x63c761c4
mov dword [esp + 0x8c], 0x67cf6511
mov dword [esp + 0x90], 0x6bce69d8
mov dword [esp + 0x94], 0x6fcd6dc3
mov dword [esp + 0x98], 0x73d771d9
mov dword [esp + 0x9c], 0x77c475c6
mov dword [esp + 0xa0], 0x7b0b79dd
mov dword [esp + 0xa4], 0x7f747d71
mov word [esp + 0xa8], 0x4140
mov word [esp + 0xb6], 0
mov dword [esp + 0xb2], 0
mov dword [esp + 0xae], 0
mov dword [esp + 0xaa], 0
mov dword [esp], 0
mov ecx, dword [esp]
cmp ecx, 0x8f
ja 0x40a2f9
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp]
mov edx, dword [esp]
movzx edx, byte [esp + edx + 0x28]
lea edi, [ecx - 0x269174a0]
and edi, edx
add ecx, edx
add ecx, 0xd96e8b60
add edi, edi
sub ecx, edi
mov dword [esp + 0x10], ecx
mov ecx, dword [esp + 0x10]
mov edx, ecx
xor edx, 0x5f
and ecx, 0x5f
lea ecx, [edx + ecx*2]
inc cl
mov edx, dword [esp]
mov byte [esp + edx + 0x28], cl
inc dword [esp]
mov ecx, dword [esp]
cmp ecx, 0x90
jb 0x40a2b0
mov dword [esp + 0x10], 0x83e38ddf
mov dword [esp + 0x14], 0x871f8110
mov word [esp + 0x18], 0x8584
mov dword [esp + 0x1e], 0
mov dword [esp + 0x1a], 0
mov dword [esp + 4], 0
mov ecx, dword [esp + 4]
cmp ecx, 0x11
ja 0x40a386
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp + 4]
mov edx, dword [esp + 4]
movzx edx, byte [esp + edx + 0x10]
add ecx, 0xb72e4c96
mov ebx, ecx
and ebx, edx
mov edi, ecx
xor edi, edx
not edx
or ecx, edx
add edx, edi
add ecx, ebx
sub edx, ecx
lea ecx, [edx + ebx*2]
mov dword [esp], ecx
mov ecx, dword [esp]
add cl, 0xe6
mov edx, dword [esp + 4]
mov byte [esp + edx + 0x10], cl
inc dword [esp + 4]
mov ecx, dword [esp + 4]
cmp ecx, 0x12
jb 0x40a340
push 0x493e0
push eax
mov edi, dword [esp + 0x14]
push edi
push 0
push 0
lea eax, [esp + 0x3c]
push eax
lea eax, [esp + 0x28]
push eax
call fcn.0040d8b0
add esp, 0x1c
mov ebx, eax
push edi
call fcn.00408c70
add esp, 4
mov eax, dword [esi + 0x60]
add dword [esi + 4], eax
mov dword [esi + 0x60], 0
mov eax, ebx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret