Function at 0x40f4c0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x3f0
mov esi, esp
push eax
push eax
mov eax, esp
and eax, 0xfffffff8
mov dword [esi + 0x78], eax
mov esp, eax
push eax
sub esp, 0x54
mov eax, esp
and eax, 0xfffffff8
mov dword [esi + 0x9c], eax
mov esp, eax
push eax
mov dword [esi + 0xf4], esp
sub esp, 0x10
mov eax, esp
and eax, 0xfffffff8
mov dword [esi + 0xf8], eax
mov esp, eax
push eax
mov dword [esi + 0xf0], esp
sub esp, 0x10
mov eax, esp
and eax, 0xfffffff8
mov dword [esi + 0x108], eax
mov esp, eax
push eax
mov dword [esi + 0xc8], esp
push eax
mov dword [esi + 0xc4], esp
push eax
mov dword [esi + 0x8c], esp
push eax
mov dword [esi + 0x94], esp
push eax
mov dword [esi + 0xfc], esp
sub esp, 0x10
mov eax, esp
and eax, 0xfffffff8
mov dword [esi + 0x7c], eax
mov esp, eax
push eax
mov dword [esi + 0x98], esp
push eax
mov dword [esi + 0xb0], esp
push eax
mov dword [esi + 0x104], esp
sub esp, 0x10
mov eax, esp
and eax, 0xfffffff8
mov dword [esi + 0x80], eax
mov esp, eax
push eax
mov dword [esi + 0x100], esp
sub esp, 0x10
mov eax, esp
and eax, 0xfffffff8
mov dword [esi + 0xb4], eax
mov esp, eax
push eax
sub esp, 0xc
mov eax, esp
and eax, 0xfffffff8
mov dword [esi + 0xa0], eax
mov esp, eax
push eax
sub esp, 0x64
mov eax, esp
and eax, 0xfffffff8
mov dword [esi + 0xc0], eax
mov esp, eax
push eax
sub esp, 0x64
mov eax, esp
and eax, 0xfffffff8
mov dword [esi + 0xec], eax
mov esp, eax
push eax
sub esp, 0x64
mov eax, esp
and eax, 0xfffffff8
mov dword [esi + 0xe8], eax
mov esp, eax
push eax
sub esp, 0x64
mov eax, esp
and eax, 0xfffffff8
mov dword [esi + 0xe4], eax
mov esp, eax
push eax
sub esp, 0x64
mov eax, esp
and eax, 0xfffffff8
mov dword [esi + 0xe0], eax
mov esp, eax
push eax
sub esp, 0x64
mov eax, esp
and eax, 0xfffffff8
mov dword [esi + 0xdc], eax
mov esp, eax
push eax
sub esp, 0x64
mov eax, esp
and eax, 0xfffffff8
mov dword [esi + 0xd8], eax
mov esp, eax
push eax
sub esp, 0xc
mov eax, esp
and eax, 0xfffffff8
mov dword [esi + 0x12c], eax
mov esp, eax
push eax
sub esp, 0x64
mov eax, esp
and eax, 0xfffffff8
mov dword [esi + 0xcc], eax
mov esp, eax
push eax
sub esp, 0x14
mov eax, esp
and eax, 0xfffffff8
mov dword [esi + 0xac], eax
mov esp, eax
push eax
push eax
mov eax, esp
and eax, 0xfffffff8
mov dword [esi + 0xd0], eax
mov esp, eax
push eax
sub esp, 0x7fc
mov dword [esi + 0xa4], esp
sub esp, 0x88
mov eax, esp
and eax, 0xfffffff8
mov dword [esi + 0xd4], eax
mov esp, eax
push eax
sub esp, 0x40
mov dword [esi + 0x124], esp
sub esp, 0x10
mov dword [esi + 0x128], esp
mov ecx, dword [str.ecf1236909c49a73c6a1502a1f7614b9]
mov dword [esi + 0x28], 0x63bf8b46
mov dword [esi + 0x2c], 0
mov dword [esi + 0x368], 0
mov eax, dword [esi + 0x368]
cmp eax, 7
ja 0x40f704
nop
nop
mov eax, dword [esi + 0x368]
mov edx, dword [esi + 0x368]
movzx edi, byte [esi + edx + 0x28]
lea edx, [eax + 0x821c130]
lea ebx, [eax + 0x30]
or edx, ebx
and ebx, edi
and edx, edi
add edx, ebx
add eax, edi
add eax, 0x821c130
sub eax, edx
mov dword [esi + 0x150], eax
mov eax, dword [esi + 0x150]
add al, 0xb0
mov edx, dword [esi + 0x368]
mov byte [esi + edx + 0x28], al
inc dword [esi + 0x368]
mov eax, dword [esi + 0x368]
cmp eax, 8
jb 0x40f6b0
mov edx, dword [str.MhMcwl__PUSHKIN]
mov dword [esi + 0x150], 0x5e967a79
mov dword [esi + 0x154], 0x8e758886
mov dword [esi + 0x158], 0x86758c9e
mov dword [esi + 0x15c], 0x6e9d9e91
mov dword [esi + 0x160], 0x85549497
mov dword [esi + 0x164], 0x4b439799
mov dword [esi + 0x168], 0x975c5156
mov dword [esi + 0x16c], 0x3f7ba1a5
mov dword [esi + 0x170], 0
mov dword [esi + 8], 0
mov eax, dword [esi + 8]
cmp eax, 0x23
ja 0x40f7c5
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esi + 8]
mov edi, dword [esi + 8]
movzx edi, byte [esi + edi + 0x150]
lea ebx, [eax + edi]
add ebx, 0xed768804
add eax, 0xed768804
and eax, edi
add eax, eax
sub ebx, eax
mov dword [esi + 0x368], ebx
mov eax, dword [esi + 0x368]
add al, 0xe4
mov edi, dword [esi + 8]
mov byte [esi + edi + 0x150], al
inc dword [esi + 8]
mov eax, dword [esi + 8]
cmp eax, 0x24
jb 0x40f780
movzx ebx, byte [esi + 0x150]
lea eax, [esi + 0x368]
test bl, bl
je 0x40f7eb
lea edi, [esi + 0x151]
nop
nop
nop
nop
mov byte [eax], bl
inc eax
movzx ebx, byte [edi]
inc edi
test bl, bl
jne 0x40f7e0
mov byte [eax], 0
movzx ebx, byte [edx]
test bl, bl
je 0x40f80b
inc edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [eax], bl
inc eax
movzx ebx, byte [edx]
inc edx
test bl, bl
jne 0x40f800
mov byte [eax], 0
movzx edx, byte [esi + 0x28]
test dl, dl
je 0x40f82b
lea edi, [esi + 0x29]
nop
nop
nop
nop
nop
nop
nop
mov byte [eax], dl
inc eax
movzx edx, byte [edi]
inc edi
test dl, dl
jne 0x40f820
mov byte [eax], 0
movzx edx, byte [ecx]
test dl, dl
je 0x40f84b
inc ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [eax], dl
inc eax
movzx edx, byte [ecx]
inc ecx
test dl, dl
jne 0x40f840
mov byte [eax], 0
lea ecx, [esi + 0x368]
sub eax, ecx
mov dword [esi + 0x150], 0x33cd31f3
mov dword [esi + 0x154], 0x37c235ca
mov dword [esi + 0x158], 0xcb34c92d
mov dword [esi + 0x15c], 0xcff3cd38
mov dword [esi + 0x160], 0xc34bc114
mov dword [esi + 0x164], 0xc723c534
mov dword [esi + 0x168], 0xdbfad912
mov dword [esi + 0x16c], 0xdf2edd3d
mov dword [esi + 0x170], 0xd32ed120
mov dword [esi + 0x174], 0xd735d52d
mov dword [esi + 0x178], 0xeb1ee909
mov dword [esi + 0x17c], 0xef11ed15
mov dword [esi + 0x180], 0xe3dde11e
mov dword [esi + 0x184], 0xe7dbe56c
mov dword [esi + 0x188], 0xfb0df90f
mov dword [esi + 0x18c], 0xffc3fd0b
mov dword [esi + 0x190], 0xf30df116
mov dword [esi + 0x194], 0xf70bf506
mov dword [esi + 0x198], 0x8b7f89b5
mov dword [esi + 0x19c], 0x8f728d7e
mov dword [esi + 0x1a0], 0x837c8165
mov dword [esi + 0x1a4], 0x87798567
mov dword [esi + 0x1a8], 0x9b7f997c
mov dword [esi + 0x1ac], 0x9f839d78
mov dword [esi + 0x1b0], 0x9392918a
mov dword [esi + 0x1bb], 0
mov dword [esi + 0x1b8], 0
mov dword [esi + 0x1b4], 0
mov dword [esi + 8], 0
mov edx, dword [esi + 8]
cmp edx, 0x6e
ja 0x40f9bf
nop
nop
nop
mov edx, dword [esi + 8]
mov edi, dword [esi + 8]
movzx edi, byte [esi + edi + 0x150]
mov ebx, edx
and ebx, 0xcdc772f8
xor edx, 0x4dc772f8
lea edx, [edx + ebx*2]
xor edx, edi
mov dword [esi + 0x28], edx
mov edx, dword [esi + 0x28]
add dl, 0x38
mov edi, dword [esi + 8]
mov byte [esi + edi + 0x150], dl
inc dword [esi + 8]
mov edx, dword [esi + 8]
cmp edx, 0x6f
jb 0x40f980
lea ebx, [esi + 0x32]
mov edx, dword [0x43f9a8]
mov edi, 0xd2c9059c
xor edi, dword [0x43f9ac]
add edx, edi
inc edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [ebx + 8], 0
mov dword [ebx + 4], 0
mov dword [ebx], 0
jmp edx