Function at 0x40a9c0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x40
mov esi, esp
mov eax, dword [0x440e28]
test eax, eax
jne 0x40ab8f
movzx eax, byte [0x438438]
xor al, 9
mov byte [0x438441], al
movzx eax, byte [0x438439]
xor al, 0x5a
mov byte [0x438442], al
movzx eax, byte [0x43843a]
xor al, 0xb8
mov byte [0x438443], al
movzx eax, byte [0x43843b]
xor al, 0xac
mov byte [0x438444], al
movzx eax, byte [0x43843c]
xor al, 0xcf
mov byte [0x438445], al
movzx eax, byte [0x43843d]
xor al, 0x91
mov byte [0x438446], al
movzx eax, byte [0x43843e]
mov ecx, eax
add cl, al
and cl, 0x5e
sub al, cl
add al, 0xaf
mov byte [0x438447], al
movzx eax, byte [0x43843f]
xor al, 0x89
mov byte [0x438448], al
movzx eax, byte [0x438440]
xor al, 0x83
mov byte [0x438449], al
movzx eax, byte [0x438450]
xor al, 0x6f
mov byte [0x438470], al
movzx eax, byte [0x438451]
xor al, 0x56
mov byte [0x438471], al
movzx eax, byte [0x438452]
mov ecx, eax
not cl
or al, 5
or cl, 0xfa
and cl, al
not cl
mov byte [0x438472], cl
movzx eax, byte [0x438453]
xor al, 0x9c
mov byte [0x438473], al
movzx eax, byte [0x438454]
xor al, 0x12
mov byte [0x438474], al
movzx eax, byte [0x438455]
xor al, 0x91
mov byte [0x438475], al
movzx eax, byte [0x438456]
xor al, 0xb7
mov byte [0x438476], al
movzx eax, byte [0x438457]
xor al, 0x69
mov byte [0x438477], al
movzx eax, byte [0x438458]
xor al, 0xde
mov byte [0x438478], al
movzx eax, byte [0x438459]
xor al, 0x4c
mov byte [0x438479], al
movzx eax, byte [0x43845a]
xor al, 0x32
mov byte [0x43847a], al
movzx eax, byte [0x43845b]
xor al, 0x7b
mov byte [0x43847b], al
movzx eax, byte [0x43845c]
xor al, 0x8c
mov byte [0x43847c], al
movzx eax, byte [0x43845d]
xor al, 0xf3
mov byte [0x43847d], al
movzx eax, byte [0x43845e]
xor al, 0x8d
mov byte [0x43847e], al
movzx eax, byte [0x43845f]
xor al, 0xc0
mov byte [0x43847f], al
movzx eax, byte [0x438460]
xor al, 0x45
mov byte [0x438480], al
movzx eax, byte [0x438461]
xor al, 0x85
mov byte [0x438481], al
movzx eax, byte [0x438462]
mov ecx, eax
add cl, al
and cl, 0x72
sub al, cl
add al, 0xb9
mov byte [0x438482], al
movzx eax, byte [0x438463]
xor al, 0xb6
mov byte [0x438483], al
mov dword [0x440e28], 1
push eax
mov edx, esp
push eax
mov dword [esi + 0x10], esp
sub esp, 0xc
mov ebx, esp
push eax
mov dword [esi + 0x24], esp
sub esp, 0x80
mov eax, esp
and eax, 0xfffffff0
mov esp, eax
push eax
sub esp, 0x1c
mov ecx, esp
and ecx, 0xfffffff0
mov esp, ecx
push eax
sub esp, 0x1c
mov edi, esp
and edi, 0xfffffff0
mov dword [esi + 0x14], edi
mov esp, edi
push eax
sub esp, 0x1c
mov edi, esp
and edi, 0xfffffff0
mov dword [esi + 0xc], edi
mov esp, edi
push eax
sub esp, 0x10
mov dword [esi + 0x20], esp
push eax
mov dword [esi + 0x18], esp
sub esp, 0x20
mov edi, esp
and edi, 0xfffffff0
mov dword [esi + 0x1c], edi
mov esp, edi
mov dword [esi + 0x2c], edx
mov edi, dword [ebp + 8]
mov dword [edx], edi
mov edx, dword [esi + 0x10]
mov byte [edx], 0
movzx edx, byte [0x438449]
mov byte [ebx + 8], dl
mov edx, dword [0x438445]
mov dword [ebx + 4], edx
mov edx, dword [0x438441]
mov dword [esi + 0x28], ebx
mov dword [ebx], edx
mov dword [eax], 0x8b1585c3
mov dword [eax + 4], 0x8f1c8918
mov dword [eax + 8], 0xb31e8de5
mov dword [eax + 0xc], 0xb7e3b126
mov dword [eax + 0x10], 0xbb2bb5c2
mov dword [eax + 0x14], 0xbfd3b92a
mov dword [eax + 0x18], 0xa39cbde0
mov dword [eax + 0x1c], 0xa730a1c5
mov dword [eax + 0x20], 0xabc8a536
mov dword [eax + 0x24], 0xafcda9c5
mov dword [eax + 0x28], 0xd338adc9
mov dword [eax + 0x2c], 0xd741d1bd
mov dword [eax + 0x30], 0xdb85d544
mov dword [eax + 0x34], 0xdf8bd942
mov dword [eax + 0x38], 0xc345dd47
mov dword [eax + 0x3c], 0xc793c15b
mov dword [eax + 0x40], 0xcb55c5ac
mov dword [eax + 0x44], 0xcf5bc95c
mov dword [eax + 0x48], 0xf357cd9d
mov dword [eax + 0x4c], 0xf79cf164
mov dword [eax + 0x50], 0xfb66f59d
mov dword [eax + 0x54], 0xff69f99f
mov dword [eax + 0x58], 0xe397fd9a
mov dword [eax + 0x5c], 0xe7d3e186
mov dword [eax + 0x60], 0xebe4e5e8
mov dword [eax + 0x70], 0
mov dword [eax + 0x6c], 0
mov dword [eax + 0x68], 0
mov dword [eax + 0x64], 0
mov dword [esi + 8], 0
mov edx, dword [esi + 8]
cmp edx, 0x73
ja 0x40ad29
nop
nop
nop
nop
nop
nop
mov edx, dword [esi + 8]
mov edi, dword [esi + 8]
movzx edi, byte [eax + edi]
lea ebx, [edx + 0x15]
and ebx, edi
add edx, edi
add ebx, ebx
sub edx, ebx
add dl, 0x82
mov edi, dword [esi + 8]
mov byte [eax + edi], dl
inc dword [esi + 8]
mov edx, dword [esi + 8]
cmp edx, 0x74
jb 0x40ad00
mov dword [ecx], 0xc36bc537
mov dword [ecx + 4], 0xcf77c172
mov word [ecx + 8], 0xcdce
mov dword [ecx + 0xa], 0
mov dword [ecx + 0xe], 0
mov dword [ecx + 0x12], 0
mov dword [ecx + 0x16], 0
mov dword [esi + 8], 0
mov edx, dword [esi + 8]
cmp edx, 0x19
ja 0x40ada3
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edi, dword [esi + 8]
mov edx, dword [esi + 8]
movzx ebx, byte [ecx + edx]
lea edx, [edi + ebx]
add edx, 0x213376a1
add edi, 0x213376a1
and edi, ebx
add edi, edi
sub edx, edi
add dl, 0x99
mov edi, dword [esi + 8]
mov byte [ecx + edi], dl
inc dword [esi + 8]
mov edx, dword [esi + 8]
cmp edx, 0x1a
jb 0x40ad70
push 0
mov ebx, dword [esi + 0x24]
push ebx
push 8
push dword [esi + 0x28]
push eax
push ecx
mov eax, dword [esi + 0x2c]
push dword [eax]
call fcn.0040b110
add esp, 0x1c
test al, al
je 0x40b0ba
mov edi, dword [esi + 0x14]
mov dword [edi], 0
mov word [edi + 0x14], 0
mov dword [edi + 0x10], 0
mov dword [edi + 0xc], 0
mov dword [edi + 8], 0
mov dword [edi + 4], 0
mov word [edi], 0xc2df
mov byte [edi + 2], 0x72
mov dword [esi + 8], 0
mov eax, dword [esi + 8]
cmp eax, 0x15
ja 0x40ae46
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esi + 8]
mov ecx, dword [esi + 8]
movzx ecx, byte [edi + ecx]
mov edx, eax
and edx, 0xffd9b50e
xor eax, 0x7fd9b50e
lea edx, [eax + edx*2]
lea eax, [edx + ecx]
and edx, ecx
add edx, edx
sub eax, edx
add al, 0x9e
mov ecx, dword [esi + 8]
mov byte [edi + ecx], al
inc dword [esi + 8]
mov eax, dword [esi + 8]
cmp eax, 0x16
jb 0x40ae10
mov edi, dword [ebx]
xor edx, edx
nop
nop
nop
nop
nop
nop
movzx ecx, byte [edi + edx]
mov eax, dword [esi + 0x14]
movzx eax, byte [eax + edx]
test ecx, ecx
je 0x40ae64
inc edx
cmp cl, al
je 0x40ae50
movzx eax, al
mov edx, ecx
not edx
and edx, eax
not eax
and eax, ecx
cmp eax, edx
jne 0x40ae80
mov eax, dword [esi + 0x10]
mov byte [eax], 1
jmp 0x40b0b1
mov edx, dword [esi + 0xc]
mov dword [edx], 0xbfa9aebb
mov dword [edx + 4], 0x2fa2a0a5
mov dword [edx + 8], 0
mov dword [edx + 0xc], 0
mov dword [edx + 0x10], 0
mov byte [edx + 0x14], 0
mov dword [esi + 8], 0
mov eax, dword [esi + 8]
cmp eax, 0x14
ja 0x40aede
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esi + 8]
mov ecx, dword [esi + 8]
add al, 0x89
xor al, byte [edx + ecx]
add al, 0x41
mov ecx, dword [esi + 8]
mov byte [edx + ecx], al
inc dword [esi + 8]
mov eax, dword [esi + 8]
cmp eax, 0x15
jb 0x40aec0
mov edi, dword [ebx]
movzx ecx, byte [edx]
mov eax, edi
test cl, cl
je 0x40af1f
mov edx, edi
mov eax, edi
mov ebx, dword [esi + 0xc]
jmp 0x40af0d
inc eax
mov ebx, dword [esi + 0xc]
mov edx, eax
movzx ecx, byte [ebx]
test cl, cl
je 0x40af1f
mov ch, byte [edx]
test ch, ch
je 0x40b0b1
cmp ch, cl
jne 0x40af00
inc edx
inc ebx
jmp 0x40af06
test eax, eax
je 0x40b0b1
mov eax, dword [0x438480]
mov edx, dword [esi + 0x20]
mov dword [edx + 0x10], eax
mov eax, dword [0x43847c]
mov dword [edx + 0xc], eax
mov eax, dword [0x438478]
mov dword [edx + 8], eax
mov eax, dword [0x438474]
mov dword [edx + 4], eax
mov ebx, dword [0x438470]
mov dword [edx], ebx
test bl, bl
je 0x40af80
mov ecx, edi
jmp 0x40af6d
inc ecx
mov edx, dword [esi + 0x20]
mov edi, ecx
movzx ebx, byte [edx]
test bl, bl
je 0x40af82
movzx eax, byte [edi]
test al, al
je 0x40b0ac
cmp al, bl
jne 0x40af60
inc edi
inc edx
jmp 0x40af66
mov ecx, edi
test ecx, ecx
je 0x40b0ac
add ecx, 0x13
mov eax, dword [esi + 0x18]
mov dword [eax], ecx
mov ebx, dword [esi + 0x1c]
mov dword [ebx], 0
mov word [ebx + 0x14], 0
mov dword [ebx + 0x10], 0
mov dword [ebx + 0xc], 0
mov dword [ebx + 8], 0
mov dword [ebx + 4], 0
mov word [ebx], 0xef82
mov byte [ebx + 2], 0xaa
mov dword [esi + 8], 0
mov eax, dword [esi + 8]
cmp eax, 0x15
ja 0x40b00b
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esi + 8]
mov edx, dword [esi + 8]
movzx edx, byte [ebx + edx]
lea edi, [eax + 0x3a]
and edi, edx
add eax, edx
add eax, 0x3a
add edi, edi
sub eax, edi
add al, 0x6a
mov edx, dword [esi + 8]
mov byte [ebx + edx], al
inc dword [esi + 8]
mov eax, dword [esi + 8]
cmp eax, 0x16
jb 0x40afe0
movzx edx, byte [ebx]
test dl, dl
je 0x40b03b
mov edi, ecx
mov eax, ebx
jmp 0x40b02d
inc edi
mov eax, dword [esi + 0x1c]
mov ecx, edi
movzx edx, byte [eax]
test dl, dl
je 0x40b03f
mov dh, byte [ecx]
test dh, dh
je 0x40b0ac
cmp dh, dl
jne 0x40b020
inc ecx
inc eax
jmp 0x40b026
mov edi, ecx
jmp 0x40b043
test edi, edi
je 0x40b0ac
mov byte [0x44123c], 1
mov eax, dword [esi + 0x18]
mov ecx, edi
mov edi, dword [eax]
mov dword [esi + 8], 0
mov edx, 0x44123e
mov dword [esi + 0xc], ecx
cmp ecx, edi
jbe 0x40b0a1
mov ebx, dword [esi + 0xc]
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp byte [edi], 0
je 0x40b0a1
lea eax, [esi + 8]
push eax
push ebx
push edi
mov dword [esi + 0x14], edx
call fcn.00411350
mov edx, dword [esi + 0x14]
add esp, 0xc
movzx ecx, word [esi + 8]
mov word [edx], cx
add edx, 2
cmp edx, 0x44143c
jae 0x40b0a1
add edi, eax
cmp edi, ebx
jb 0x40b070
mov word [edx], 0
mov eax, dword [esi + 0x10]
mov byte [eax], 1
mov eax, dword [esi + 0x24]
mov edi, dword [eax]
push edi
call fcn.0042ebb0
add esp, 4
mov eax, dword [esi + 0x10]
movzx eax, byte [eax]
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret