Function at 0x40ab90
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x48
mov esi, esp
push eax
sub esp, 0x1c
mov eax, esp
and eax, 0xfffffff8
mov esp, eax
push eax
mov edx, esp
push eax
mov edi, esp
push eax
mov dword [esi + 0x30], esp
push eax
mov ebx, esp
push eax
mov dword [esi + 0x28], esp
push eax
mov dword [esi + 0x34], esp
sub esp, 0x100
mov dword [esi + 0x1c], esp
sub esp, 0x200
mov ecx, esp
mov dword [esi + 0x18], ecx
jmp 0x40abd4
mov ecx, dword [0x448474]
mov dl, byte [edx]
mov byte [esi + 0x24], dl
mov byte [eax], 0x87
mov byte [eax + 1], 0xd
mov byte [eax + 2], 0x73
mov byte [eax + 3], 0xb
mov byte [eax + 4], 0x7a
mov byte [eax + 5], 9
mov byte [eax + 6], 0x7e
mov byte [eax + 7], 7
mov byte [eax + 8], 0x88
mov byte [eax + 9], 5
mov byte [eax + 0xa], 0x8e
mov byte [eax + 0xb], 3
mov byte [eax + 0xc], 0x70
mov byte [eax + 0xd], 1
mov byte [eax + 0xe], 0x2c
mov byte [eax + 0xf], 0x1f
mov byte [eax + 0x10], 0x60
mov byte [eax + 0x11], 0x1d
mov byte [eax + 0x12], 0x6e
mov byte [eax + 0x13], 0x1b
mov byte [eax + 0x14], 0x6c
mov byte [eax + 0x15], 0x19
mov byte [eax + 0x16], 0x16
mov byte [eax + 0x17], 0x17
mov byte [eax + 0x18], 0
mov dword [esi + 8], 0
mov edx, dword [esi + 8]
cmp edx, 0x19
jae 0x40aca5
mov dword [esi + 0xc], ebx
mov dword [esi + 0x20], edi
jmp 0x40ac59
mov edx, dword [esi + 8]
mov edi, dword [esi + 8]
movzx ebx, byte [eax + edi]
mov edi, edx
add edi, 2
lea edx, [edx + ebx - 0x425044fe]
and edi, ebx
add edi, edi
mov ebx, edi
xor ebx, edx
not edi
and edx, edi
add edx, edx
sub edx, ebx
mov dword [esi + 0x3c], edx
mov edx, dword [esi + 0x3c]
add dl, 0xf2
mov edi, dword [esi + 8]
mov byte [eax + edi], dl
mov edx, dword [esi + 8]
inc edx
mov dword [esi + 8], edx
mov edx, dword [esi + 8]
cmp edx, 0x19
jb 0x40ac59
mov edi, dword [esi + 0x20]
mov ebx, dword [esi + 0xc]
jmp 0x40aca5
xor edx, edx
sub esp, 0xc
mov dword [esp], eax
mov dword [esp + 4], 0
mov dword [esp + 8], 0x800
call ecx
mov dword [esi + 0x38], eax
jmp 0x40acc4
jmp 0x40acc6
mov eax, dword [esi + 0x38]
lea ecx, [0x44843c]
sub esp, 4
mov dword [esp], eax
call fcn.004375e0
test al, 1
jne 0x40acef
mov byte [esi + 7], 0
mov dword [edi], 1
jmp 0x40acea
jmp 0x40affc
mov eax, dword [0x44843c]
sub esp, 8
mov dword [esp], eax
mov dword [esp + 4], 0xcd5bd590
call fcn.0043a220
add esp, 8
mov dword [0x448444], eax
mov eax, dword [0x44843c]
sub esp, 8
mov dword [esp], eax
mov dword [esp + 4], 0x3098095e
call fcn.0043a220
add esp, 8
mov dword [0x448448], eax
mov eax, dword [0x44843c]
sub esp, 8
mov dword [esp], eax
mov dword [esp + 4], 0x4133be71
call fcn.0043a220
add esp, 8
mov dword [0x44844c], eax
mov eax, dword [0x44843c]
sub esp, 8
mov dword [esp], eax
mov dword [esp + 4], 0x1c8a781f
call fcn.0043a220
add esp, 8
mov dword [0x448450], eax
mov eax, dword [0x44843c]
sub esp, 8
mov dword [esp], eax
mov dword [esp + 4], 0x71c23cd8
call fcn.0043a220
add esp, 8
mov dword [0x448454], eax
mov eax, dword [0x44843c]
sub esp, 8
mov dword [esp], eax
mov dword [esp + 4], 0x1c121576
call fcn.0043a220
add esp, 8
mov dword [0x448458], eax
mov eax, dword [0x44843c]
sub esp, 8
mov dword [esp], eax
mov dword [esp + 4], 0x21bbc64b
call fcn.0043a220
add esp, 8
mov dword [0x44845c], eax
mov eax, dword [0x44843c]
sub esp, 8
mov dword [esp], eax
mov dword [esp + 4], 0x8d2eb73e
call fcn.0043a220
add esp, 8
mov dword [0x448460], eax
mov eax, dword [0x44843c]
sub esp, 8
mov dword [esp], eax
mov dword [esp + 4], 0xde1934d7
call fcn.0043a220
add esp, 8
mov dword [0x448464], eax
mov eax, dword [0x44843c]
sub esp, 8
mov dword [esp], eax
mov dword [esp + 4], 0xa2add3c4
call fcn.0043a220
add esp, 8
mov dword [0x448468], eax
mov eax, dword [0x44843c]
sub esp, 8
mov dword [esp], eax
mov dword [esp + 4], 0x1f4c40ff
call fcn.0043a220
add esp, 8
mov dword [0x44846c], eax
mov eax, dword [0x44843c]
sub esp, 8
mov dword [esp], eax
mov dword [esp + 4], 0xfe8974d2
call fcn.0043a220
add esp, 8
mov dword [0x448470], eax
jmp 0x40ae71
lea eax, [0x43e5f4]
mov ecx, dword [esi + 0x30]
mov dword [ecx], eax
jmp 0x40ae7e
lea eax, [0x43e5f4]
mov dword [ebx], eax
lea eax, [0x43e5f4]
add eax, 0x24
mov ecx, dword [esi + 0x28]
mov dword [ecx], eax
jmp 0x40ae96
mov eax, dword [ebx]
mov ecx, dword [esi + 0x28]
mov ecx, dword [ecx]
cmp eax, ecx
setne al
jmp 0x40aea4
test al, 1
jne 0x40aeb5
jmp 0x40aeaa
mov dword [edi], 2
jmp 0x40afe9
mov dword [esi + 0x20], edi
mov dword [esi + 0xc], ebx
mov eax, dword [ebx]
mov eax, dword [eax]
mov ecx, dword [esi + 0x34]
mov dword [ecx], eax
mov eax, dword [ecx]
sub esp, 8
mov dword [esp], eax
mov edi, dword [esi + 0x1c]
mov dword [esp + 4], edi
call fcn.00434730
add esp, 8
mov ebx, dword [esi + 0x18]
add ebx, 0x200
mov ecx, edi
mov eax, ecx
mov dl, byte [eax]
add ecx, 1
cmp dl, 0
jne 0x40aee6
mov ecx, dword [esi + 0x1c]
sub eax, ecx
mov edi, ecx
add edi, eax
mov dword [esi + 0x2c], 0
add ebx, 0xfffffffe
cmp edi, ecx
mov ecx, dword [esi + 0x18]
mov eax, ecx
jbe 0x40af6d
mov edx, dword [esi + 0x1c]
mov dword [esi + 0x10], ecx
jmp 0x40af16
cmp byte [edx], 0
jne 0x40af20
mov eax, dword [esi + 0x10]
jmp 0x40af6d
sub esp, 0xc
lea eax, [esi + 0x2c]
mov dword [esp + 8], eax
mov dword [esp + 4], edi
mov dword [esp], edx
mov dword [esi + 0x14], edx
call fcn.0040f610
add esp, 0xc
add dword [esi + 0x14], eax
mov cx, word [esi + 0x2c]
mov edx, dword [esi + 0x10]
mov eax, edx
add eax, 2
mov word [edx], cx
mov ecx, eax
sub ecx, ebx
setb cl
mov edx, dword [esi + 0x14]
sub edx, edi
setb dl
and cl, dl
mov edx, dword [esi + 0x14]
test cl, 1
mov ecx, dword [esi + 0x18]
mov dword [esi + 0x10], eax
jne 0x40af16
mov word [eax], 0
sub esp, 4
mov dword [esp], ecx
mov ebx, ecx
call fcn.0040b010
add esp, 4
test al, 1
mov edi, dword [esi + 0x20]
jne 0x40af8b
jmp 0x40afb6
lea eax, [0x448478]
sub esp, 8
mov dword [esp], eax
mov dword [esp + 4], ebx
call fcn.0040bb70
add esp, 8
mov ebx, dword [esi + 0xc]
mov byte [esi + 7], 1
jmp 0x40afac
jmp 0x40afae
mov dword [edi], 1
jmp 0x40afc3
mov ebx, dword [esi + 0xc]
mov dword [edi], 0
jmp 0x40afc1
jmp 0x40afc3
cmp dword [edi], 0
jne 0x40afd0
mov dword [edi], 0
jmp 0x40afd0
cmp dword [edi], 0
jne 0x40afe7
jmp 0x40afd7
mov eax, dword [ebx]
jmp 0x40afdb
add eax, 4
mov dword [ebx], eax
jmp 0x40afe2
jmp 0x40ae96
jmp 0x40afe9
cmp dword [edi], 2
jne 0x40affc
mov byte [esi + 7], 0
mov dword [edi], 1
jmp 0x40affa
jmp 0x40affc
mov al, byte [esi + 7]
and al, 1
movzx eax, al
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret