Function at 0x403751
Capabilities:
Encode data using xor

Disassembly:
jmp 0x452d90
mov eax, dword fs:[0x2c]
sub esp, 0x90
mov ecx, dword [0xa17fec]
mov ecx, dword [eax + ecx*4]
mov eax, dword [0xa176cc]
cmp eax, dword [ecx + 0x110]
jg 0x453351
mov eax, dword [esp + 0x9c]
push ebp
mov ebp, dword [esp + 0x9c]
sub eax, ebp
mov dword [esp + 0x14], eax
push edi
mov edi, dword [0xa176c4]
cmp eax, 0x40
ja 0x452dfd
push edi
mov edi, dword [0xa176c0]
push edi
push eax
push ebp
call fcn.00405ba0
mov ecx, dword [esp + 0xac]
add esp, 0x10
pop edi
mov dword [ecx], eax
mov eax, ecx
pop ebp
add esp, 0x90
ret
push ebx
push esi
and eax, 0xffffffc0
mov dword [esp + 0x74], edi
add eax, ebp
xor edi, 0xb492b66f
push 0x9ddfea08
mov dword [esp + 0x18], eax
xorps xmm0, xmm0
mov eax, dword [0xa176c0]
mov ebx, eax
push 0xeb382d69
push edi
xor ebx, 0xbe98f273
movlpd qword [esp + 0x74], xmm0
push ebx
mov dword [esp + 0x80], eax
call fcn.0040646a
xor ecx, ecx
mov esi, edx
push 0x9ddfea08
shr esi, 0xf
xor ecx, edx
push 0xeb382d69
xor esi, eax
xor ecx, 0xb492b66f
push ecx
xor esi, 0xbe98f273
push esi
call fcn.0040646a
push 0x9ddfea08
mov esi, edx
xor ecx, ecx
push 0xeb382d69
xor ecx, edx
shr esi, 0xf
xor esi, eax
push ecx
push esi
call fcn.0040646a
mov esi, dword [0xa176c4]
mov ecx, edi
push 0xb492b66f
shld edi, ebx, 0xf
mov dword [esp + 0x7c], eax
xor eax, eax
push 0xbe98f273
shr ecx, 0x11
or eax, edi
mov edi, dword [0xa176c0]
shl ebx, 0xf
push esi
or ecx, ebx
mov dword [esp + 0x88], edx
push edi
mov dword [esp + 0x90], ecx
mov dword [esp + 0x94], eax
call fcn.0040646a
mov ebx, esi
mov dword [esp + 0x88], eax
shr ebx, 0xf
xor ebx, edi
mov dword [esp + 0x8c], edx
xor edi, edi
mov dword [esp + 0x90], ebx
xor edi, esi
mov ecx, ebx
xor ecx, eax
mov dword [esp + 0x94], edi
push 0x9ddfea08
mov eax, edi
push 0xeb382d69
xor eax, edx
push eax
push ecx
call fcn.0040646a
mov esi, edx
xor ecx, ecx
shr esi, 0xf
xor esi, ebx
xor ecx, edi
push 0x9ddfea08
push 0xeb382d69
xor ecx, edx
xor esi, eax
push ecx
push esi
call fcn.0040646a
push 0x9ddfea08
mov esi, edx
xor ecx, ecx
push 0xeb382d69
xor ecx, edx
shr esi, 0xf
xor esi, eax
push ecx
push esi
call fcn.0040646a
push ebp
lea ecx, [esp + 0x6c]
mov dword [esp + 0x9c], eax
mov dword [esp + 0xa0], edx
call fcn.00410eb0
movups xmm0, xmmword [esp + 0x68]
add ebp, 0x40
mov dword [esp + 0x10], ebp
movups xmmword [esp + 0x24], xmm0
movups xmm0, xmmword [esp + 0x78]
movups xmmword [esp + 0x34], xmm0
mov eax, dword [esp + 0x38]
movups xmm0, xmmword [esp + 0x88]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x34]
movups xmmword [esp + 0x44], xmm0
mov dword [esp + 0x18], eax
movq xmm0, qword [esp + 0x98]
movq qword [esp + 0x54], xmm0
cmp ebp, dword [esp + 0x14]
je 0x453178
mov ebx, dword [esp + 0x28]
mov edi, dword [esp + 0x24]
nop dword [eax]
mov esi, dword [esp + 0x3c]
add esi, dword [ebp + 8]
mov edx, dword [ebp + 0xc]
adc edx, dword [esp + 0x40]
add esi, edi
mov edi, dword [esp + 0x10]
adc edx, ebx
add esi, dword [esp + 0x2c]
mov ebx, dword [esp + 0x44]
adc edx, dword [esp + 0x30]
add ebx, dword [edi + 0x30]
mov ecx, edx
mov edi, dword [edi + 0x34]
adc edi, dword [esp + 0x48]
add ebx, dword [esp + 0x2c]
push 0xb492b66f
adc edi, dword [esp + 0x34]
xor eax, eax
shld edx, esi, 0x1b
push 0xbe98f273
shr ecx, 5
or eax, edx
shl esi, 0x1b
or ecx, esi
push eax
push ecx
call fcn.0040646a
xor eax, dword [esp + 0x54]
mov ecx, edi
xor edx, dword [esp + 0x58]
mov dword [esp + 0x5c], eax
mov dword [esp + 0x24], eax
xor eax, eax
push 0xb492b66f
shld edi, ebx, 0x16
push 0xbe98f273
shr ecx, 0xa
or eax, edi
shl ebx, 0x16
or ecx, ebx
mov dword [esp + 0x68], edx
push eax
push ecx
mov dword [esp + 0x38], edx
call fcn.0040646a
mov ecx, dword [esp + 0x10]
mov ebx, dword [esp + 0x1c]
push 0xb492b66f
push 0xbe98f273
add eax, dword [ecx + 0x28]
adc edx, dword [ecx + 0x2c]
add eax, dword [esp + 0x44]
mov dword [esp + 0x34], eax
adc edx, dword [esp + 0x48]
mov dword [esp + 0x38], edx
mov edx, dword [esp + 0x20]
add edx, dword [esp + 0x54]
adc ebx, dword [esp + 0x58]
xor eax, eax
mov ecx, ebx
shld ebx, edx, 0x1f
shr ecx, 1
shl edx, 0x1f
or eax, ebx
or ecx, edx
push eax
push ecx
call fcn.0040646a
push 0xb492b66f
push 0xbe98f273
push dword [esp + 0x50]
mov dword [esp + 0x40], eax
push dword [esp + 0x50]
mov dword [esp + 0x48], edx
call fcn.0040646a
mov ecx, dword [esp + 0x5c]
add ecx, dword [esp + 0x4c]
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x60]
adc eax, dword [esp + 0x50]
mov dword [esp + 0x40], edx
mov ebp, dword [esp + 0x10]
mov dword [esp + 0x48], eax
lea eax, [esp + 0x44]
push eax
lea eax, [esp + 0x40]
mov dword [esp + 0x48], ecx
push eax
push ebp
call fcn.00401bae
mov ecx, dword [esp + 0x40]
add ecx, dword [esp + 0x60]
mov eax, dword [esp + 0x44]
adc eax, dword [esp + 0x64]
mov dword [esp + 0x58], ecx
mov ecx, dword [esp + 0x38]
add ecx, dword [ebp + 0x10]
mov dword [esp + 0x5c], eax
mov eax, dword [ebp + 0x14]
adc eax, dword [esp + 0x3c]
mov dword [esp + 0x64], eax
lea eax, [esp + 0x60]
push eax
lea eax, [esp + 0x5c]
mov dword [esp + 0x64], ecx
push eax
lea eax, [ebp + 0x20]
push eax
call fcn.00401bae
mov eax, dword [esp + 0x3c]
add ebp, 0x40
mov ecx, dword [esp + 0x40]
add esp, 0x18
mov edi, dword [esp + 0x34]
mov ebx, dword [esp + 0x38]
mov dword [esp + 0x18], eax
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x34], eax
mov dword [esp + 0x38], ecx
mov dword [esp + 0x24], edi
mov dword [esp + 0x28], ebx
mov dword [esp + 0x10], ebp
cmp ebp, dword [esp + 0x14]
jne 0x452fc0
mov dword [esp + 0x10], edi
mov dword [esp + 0x14], ebx
jmp 0x453188
mov eax, dword [esp + 0x28]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x24]
mov dword [esp + 0x10], eax
test byte [esp + 0x20], 0x3f
je 0x4531c3
mov eax, dword [esp + 0xac]
lea ecx, [esp + 0x24]
add eax, 0xffffffc0
push eax
call fcn.00410eb0
mov eax, dword [esp + 0x38]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x34]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x28]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x24]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x58]
xor eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x54]
xor ecx, dword [esp + 0x44]
push 0x9ddfea08
push 0xeb382d69
push eax
push ecx
call fcn.0040646a
xor ecx, ecx
mov esi, edx
xor ecx, dword [esp + 0x58]
push 0x9ddfea08
shr esi, 0xf
xor ecx, edx
xor esi, dword [esp + 0x58]
push 0xeb382d69
xor esi, eax
push ecx
push esi
call fcn.0040646a
mov ecx, dword [esp + 0x50]
mov ebp, eax
xor ecx, dword [esp + 0x40]
mov esi, dword [esp + 0x4c]
xor esi, dword [esp + 0x3c]
push 0x9ddfea08
push 0xeb382d69
push ecx
push esi
mov dword [esp + 0x70], edx
call fcn.0040646a
xor ecx, ecx
mov esi, edx
xor ecx, dword [esp + 0x50]
push 0x9ddfea08
shr esi, 0xf
xor ecx, edx
xor esi, dword [esp + 0x50]
push 0xeb382d69
xor esi, eax
push ecx
push esi
call fcn.0040646a
mov esi, dword [esp + 0x60]
xor ecx, ecx
xor ecx, dword [esp + 0x60]
push 0x9ddfea08
push 0xeb382d69
shr esi, 0xf
push ecx
xor esi, ebp
mov dword [esp + 0x70], eax
push esi
mov dword [esp + 0x6c], edx
call fcn.0040646a
mov ebp, eax
mov ebx, edx
mov eax, 0xb492b66f
mul dword [esp + 0x20]
push 0xb492b66f
mov ecx, eax
mov eax, 0xbe98f273
mul dword [esp + 0x24]
push 0xbe98f273
add ecx, edx
mov edx, dword [esp + 0x38]
add ebp, eax
adc ebx, ecx
add ebp, dword [esp + 0x18]
adc ebx, dword [esp + 0x1c]
xor ecx, ecx
xor ecx, dword [esp + 0x38]
shr edx, 0xf
xor edx, dword [esp + 0x34]
push ecx
push edx
mov dword [esp + 0x30], ebx
call fcn.0040646a
mov ebx, eax
mov edi, edx
mov esi, dword [esp + 0x5c]
xor ecx, ecx
xor ecx, dword [esp + 0x5c]
push 0x9ddfea08
push 0xeb382d69
shr esi, 0xf
xor esi, dword [esp + 0x6c]
push ecx
push esi
call fcn.0040646a
add ebx, eax
push 0x9ddfea08
adc edi, edx
add ebx, dword [esp + 0x1c]
push 0xeb382d69
adc edi, dword [esp + 0x24]
xor ebx, ebp
xor edi, dword [esp + 0x28]
push edi
push ebx
call fcn.0040646a
xor ecx, ecx
mov esi, edx
push 0x9ddfea08
shr esi, 0xf
xor ecx, edx
xor ecx, dword [esp + 0x24]
xor esi, eax
push 0xeb382d69
push ecx
xor esi, ebp
push esi
call fcn.0040646a
shr edx, 0xf
xor edx, eax
mov eax, dword [esp + 0xa4]
pop esi
imul ecx, edx, 0xeb382d69
pop ebx
pop edi
pop ebp
mov dword [eax], ecx
add esp, 0x90
ret
push 0xa176cc
call fcn.004131a1
add esp, 4
cmp dword [0xa176cc], 0xffffffff
jne 0x452db6
mov ecx, dword [0xa17e38]
mov eax, ecx
mov edx, dword [0xa17e3c]
or eax, edx
je 0x45338b
mov dword [0xa176c0], ecx
mov dword [0xa176c4], edx
jmp 0x4533a1
mov dword [0xa176c0], 0xed558ccd
mov dword [0xa176c4], 0xff51afd7
jmp 0x4533a1
push 0xa176cc
call fcn.0041348a
add esp, 4
jmp 0x452db6