Function at 0x40a4b0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x542810
mov eax, dword fs:[0]
push eax
sub esp, 0xe8
mov eax, dword [0x593dc0]
xor eax, ebp
mov dword [ebp - 0x14], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov eax, dword [ebp + 8]
xor edi, edi
mov dword [ebp - 4], edi
mov ebx, ecx
lea esi, [ebp - 0xf0]
mov dword [ebp - 0xcc], eax
mov dword [ebp - 0xd8], ebx
mov dword [ebp - 0xdc], edi
call fcn.0040a3d0
lea ecx, [ebp - 0xd0]
push ecx
mov dword [ebp - 4], 1
call fcn.0040b170
mov byte [ebp - 4], 2
call fcn.00415eb7
xor ecx, ecx
cmp eax, edi
setne cl
cmp ecx, edi
jne 0x40a536
push 0x80004005
call fcn.00402460
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
lea edi, [eax + 0x10]
mov dword [ebp - 0xc8], edi
mov byte [ebp - 4], 3
mov eax, dword [ebp - 0xec]
mov esi, dword [eax]
mov dword [ebp - 0xd4], eax
cmp esi, eax
je 0x40a629
mov edx, dword [edi - 0xc]
mov dword [ebp - 0xe0], edx
test edx, edx
je 0x40a5c4
lea ebx, [edx + 1]
test ebx, ebx
js 0x40a7cb
mov eax, dword [edi - 8]
mov ecx, 1
sub ecx, dword [edi - 4]
sub eax, ebx
or eax, ecx
jge 0x40a5a3
push ebx
lea ecx, [ebp - 0xc8]
call fcn.004023c0
mov edi, dword [ebp - 0xc8]
mov edx, dword [ebp - 0xe0]
mov ecx, 0x2d
mov word [edi + edx*2], cx
cmp ebx, dword [edi - 8]
jg 0x40a7cb
mov dword [edi - 0xc], ebx
xor edx, edx
mov word [edi + ebx*2], dx
mov ebx, dword [ebp - 0xd8]
mov eax, dword [esi + 0xc]
mov ecx, dword [eax - 0xc]
push ecx
push eax
lea ecx, [ebp - 0xc8]
call fcn.004048e0
cmp byte [esi + 0x11], 0
jne 0x40a617
mov eax, dword [esi + 8]
cmp byte [eax + 0x11], 0
jne 0x40a5fc
mov esi, eax
mov eax, dword [esi]
cmp byte [eax + 0x11], 0
jne 0x40a617
mov esi, eax
mov eax, dword [esi]
cmp byte [eax + 0x11], 0
je 0x40a5f0
jmp 0x40a617
mov eax, dword [esi + 4]
cmp byte [eax + 0x11], 0
jne 0x40a615
cmp esi, dword [eax + 8]
jne 0x40a615
mov esi, eax
mov eax, dword [eax + 4]
cmp byte [eax + 0x11], 0
je 0x40a605
mov esi, eax
mov edi, dword [ebp - 0xc8]
cmp esi, dword [ebp - 0xd4]
jne 0x40a562
mov dword [ebp - 0xc4], 0x6001a
mov dword [ebp - 0xc0], 0x20006
mov dword [ebp - 0xbc], 0x5d0048
mov dword [ebp - 0xb8], 0x11005d
mov dword [ebp - 0xb4], 0x7001d
mov dword [ebp - 0xb0], 0x6001c
mov dword [ebp - 0xac], 0x17
mov dword [ebp - 0xa8], 0x4b004b
mov dword [ebp - 0xa4], 0x11005c
mov dword [ebp - 0xa0], 0x1f001d
mov dword [ebp - 0x9c], 0x35005d
mov dword [ebp - 0x98], 0x1c0017
mov dword [ebp - 0x94], 0x17
mov dword [ebp - 0x90], 0x11001b
mov dword [ebp - 0x8c], 0x6005d
mov dword [ebp - 0x88], 0x130000
mov dword [ebp - 0x84], 0x1001c
mov dword [ebp - 0x80], 0x13001e
mov dword [ebp - 0x7c], 0x170006
mov dword [ebp - 0x78], 0x17002d
mov dword [ebp - 0x74], 0x11001c
mov dword [ebp - 0x70], 0x2005d
mov dword [ebp - 0x6c], 0x2d001e
mov dword [ebp - 0x68], 0x5c0011
mov dword [ebp - 0x64], 0x1a0002
mov dword [ebp - 0x60], 2
xor eax, eax
jmp 0x40a720
xor word [ebp + eax*2 - 0xc4], 0x72
inc eax
cmp eax, 0x33
jb 0x40a720
xor eax, eax
mov dword [ebp - 0x5c], 0x10057
mov dword [ebp - 0x58], 0x11004d
mov dword [ebp - 0x54], 0x4f001a
mov dword [ebp - 0x50], 0x10057
mov dword [ebp - 0x4c], 0x1b0054
mov dword [ebp - 0x48], 0x2d0001
mov dword [ebp - 0x44], 0x130016
mov dword [ebp - 0x40], 0x170006
mov dword [ebp - 0x3c], 0x57004f
mov dword [ebp - 0x38], 0x540001
mov dword [ebp - 0x34], 0x70015
mov dword [ebp - 0x30], 0x57004f
mov dword [ebp - 0x2c], 0x540001
mov dword [ebp - 0x28], 0x1b001a
mov dword [ebp - 0x24], 0x4f0001
mov dword [ebp - 0x20], 0x10057
mov word [ebp - 0x1c], ax
xor word [ebp + eax*2 - 0x5c], 0x72
inc eax
cmp eax, 0x20
jb 0x40a7a5
call fcn.00415eb7
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x40a7d5
push 0x80004005
call fcn.00402460
push 0x80070057
call fcn.00402460
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [ebx], eax
mov ecx, dword [ebp - 0xcc]
mov eax, dword [ecx + 4]
mov edx, dword [ebp - 0xd0]
mov ecx, dword [ecx]
push edi
push eax
push edx
push ecx
lea eax, [ebp - 0xc4]
push eax
lea ecx, [ebp - 0x5c]
push ecx
push ebx
mov dword [ebp - 0xdc], 1
call fcn.00404a60
add edi, 0xfffffff0
add esp, 0x1c
mov byte [ebp - 4], 2
lea edx, [edi + 0xc]
or eax, 0xffffffff
lock xadd dword [edx], eax
dec eax
test eax, eax
jg 0x40a836
mov ecx, dword [edi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push edi
call eax
mov byte [ebp - 4], 1
mov eax, dword [ebp - 0xd0]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40a85c
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov dword [ebp - 4], 4
mov eax, dword [ebp - 0xec]
mov ecx, dword [eax]
push eax
push ecx
lea edi, [ebp - 0xcc]
lea esi, [ebp - 0xf0]
call fcn.00406610
mov ecx, dword [ebp - 0xec]
push ecx
call fcn.00415273
add esp, 4
mov eax, ebx
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.0051d79f
mov esp, ebp
pop ebp
ret 4