Function at 0x40b3b0
Capabilities:
Encode data using xor

Disassembly:
push ecx
push ecx
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x20]
push ebx
mov ebx, dword [esp + 0x14]
push ebp
lea eax, [ecx + 0x5a8]
add ebx, 0xfffffa6a
mov dword [esp + 8], eax
lea ebp, [edx - 0x136b]
push esi
lea eax, [edx + 0x4b4]
push edi
mov dword [esp + 0x14], eax
lea esi, [edx - 0xb44]
mov edi, ecx
mov dword [esp + 0x28], esi
lea eax, [ecx + 0x51d]
xor edi, 0x2a8c
mov dword [esp + 0x30], eax
add edx, 0xfffff457
mov eax, edi
xor eax, 0x2eec
cmp esi, eax
je 0x40b56d
mov esi, dword [esp + 0x2c]
xor eax, eax
inc eax
xor ecx, ecx
mov dword [0x972dc8], eax
mov dword [esi + 8], eax
mov eax, dword [0x93537c]
mov dword [0x972de0], 0xb
mov dword [eax + 0x20], ecx
mov eax, dword [0x93537c]
mov dword [0x972e04], ecx
mov dword [0x972df0], 9
mov dword [eax + 0x4c], ecx
xor eax, eax
mov dword [0x972e20], ecx
inc eax
mov dword [esi + 0x60], 6
mov dword [esi + 0x68], eax
mov dword [0x972e44], eax
mov eax, dword [0x93537c]
mov dword [eax + 0x80], 7
mov dword [esi + 0xa4], ecx
mov eax, dword [0x93537c]
mov dword [eax + 0xa8], ecx
mov eax, dword [0x93537c]
mov dword [eax + 0xb8], 1
mov dword [0x972e98], 0x22
mov dword [esi + 0xdc], 0x11
mov ecx, dword [0x93537c]
cmp dword [ecx + 0x68], 0x1a0b
je 0x40b4d1
mov eax, dword [esi + 0xb8]
mov ecx, dword [ecx + 0x4c]
add eax, 0x12570c
add eax, ecx
imul eax, dword [esi + 0x18]
mov dword [esi + 0x18], eax
jmp 0x40b4e0
mov eax, dword [ecx + 8]
xor eax, dword [esi + 0x4c]
xor eax, dword [0x972e30]
add dword [ecx + 0x60], eax
xor ebp, 0x2e10
lea eax, [ebx - 0x3b1]
push ebp
push dword [0x93537c]
xor edx, 0xa37
push edx
push eax
mov eax, edi
xor eax, 0x2e56
push eax
lea eax, [edi + 0x270f]
push eax
call fcn.00409c15
mov ecx, eax
add esp, 0x18
imul eax, dword [esi + 0x60], 0x165458
mov dword [esi + 0x60], eax
lea eax, [ecx - 0x8bb]
cmp edi, eax
jge 0x40b661
mov eax, ecx
xor eax, 0x6c6
push eax
lea eax, [ecx - 0x749]
push eax
lea eax, [ebx - 0x51c]
push eax
lea eax, [ebx - 0x171]
push eax
mov eax, dword [esp + 0x38]
add eax, 0xffffff78
push eax
lea eax, [edi + 0x36f2]
push eax
push dword [0x93537c]
call fcn.0040ab7c
add esp, 0x1c
jmp 0x40b661
mov eax, dword [0x972e10]
mov edx, dword [esp + 0x10]
add eax, edx
cmp dword [0x972e3c], eax
jae 0x40b661
mov ecx, dword [esp + 0x2c]
mov eax, dword [ecx + 0x58]
or eax, dword [esp + 0x14]
cmp ebp, eax
jbe 0x40b661
mov eax, esi
or eax, edi
and eax, edx
mov dword [esp + 0x28], eax
lea eax, [esi - 0x2a8c]
mov dword [esp + 0x20], eax
mov esi, dword [0x93537c]
mov ecx, dword [ecx + 0xa4]
mov edx, dword [0x972e44]
mov eax, dword [esp + 0x2c]
add edx, 0x3034
mov edi, dword [esi + 0x28]
add edx, ecx
mov esi, dword [esp + 0x2c]
xor edi, 0x353e
mov ecx, dword [0x972dcc]
mov eax, dword [eax + 0x60]
and ecx, 0x22c0
add edi, dword [esp + 0x30]
or ecx, 0x1432
add eax, dword [esi + 0x5c]
mov esi, dword [0x93537c]
push eax
mov eax, dword [esp + 0x34]
push ecx
push esi
push dword [esp + 0x34]
xor eax, ebx
or eax, 0x2fa9
push eax
push edx
push edi
call fcn.00409408
mov esi, dword [esp + 0x48]
mov dword [esp + 0x4c], eax
mov ecx, dword [esi + 0xcc]
mov edx, dword [esi + 0x28]
sub ecx, eax
mov eax, dword [0x972e20]
sub edx, 0x3034
add eax, 0x1bc1
and eax, 0x270f
push eax
push dword [0x93537c]
push ecx
push dword [esp + 0x48]
push edx
call fcn.00409d94
mov ecx, dword [esi + 0x58]
add ebp, 3
or ecx, eax
add esp, 0x30
cmp ebp, ecx
mov ecx, esi
ja 0x40b5ab
pop edi
pop esi
xor ebx, 0x3469
pop ebp
mov eax, ebx
pop ebx
pop ecx
pop ecx
ret