Function at 0x403922
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 8
push 0
mov eax, dword fs:[0x512566]
push eax
mov dword fs:[0], esp
sub esp, 0x78
push ebx
push esi
push edi
mov dword [ebp - 8], esp
mov dword [ebp - 4], 0xf0
mov edx, dword [ebp + 8]
mov esi, dword [0x4020fc]
lock add byte [eax], al
add byte [ebx + 0x358b0855], cl
cld
and byte [eax], al
xor ebp, dword [ebp - 0x73]
dec ebp
call 0x8a2cb6e6
jge 0x403947
mov dword [ebp - 0x1c], edi
mov dword [ebp - 0x20], edi
mov dword [ebp - 0x24], edi
mov dword [ebp - 0x28], edi
mov dword [ebp - 0x38], edi
mov dword [ebp - 0x48], edi
mov dword [ebp - 0x58], edi
mov dword [ebp - 0x68], edi
mov dword [ebp - 0x78], edi
mov dword [ebp - 0x7c], edi
mov dword [ebp + 0x6574737c], edi
insd dword es:[edi], dx
salc
mov edx, dword [ebp + 0xc]
lea ecx, [ebp - 0x1c]
insd dword es:[edi], dx
salc
mov edx, dword [ebp + 0x10]
lea ecx, [ebp - 0x24]
insd dword es:[edi], dx
salc
mov edx, dword [ebp + 0x14]
lea ecx, [ebp - 0x14]
insd dword es:[edi], dx
salc
cmp dword [0xf530000], edi
jne 0x4039b5
push 0xf530000
push 0x1958
call dword [0xe0]
mov eax, dword [0xf530000]
lea ecx, [ebp + 0x6574737c]
push eax
push ecx
call dword [0x5c]
mov eax, dword [ebp + 0x6574737c]
push 0x80010001
push eax
mov edx, dword [eax]
call dword [edx + 0x4c]
cmp eax, edi
fnclex
jge 0x4039f8
mov ecx, dword [ebp + 0x6574737c]
mov esi, dword [0x3c]
push 0x4c
push 0x890123b0
push ecx
push eax
call esi
jmp 0x4039fe
mov esi, dword [0x3c]
lea edx, [ebp - 0x14]
lea ecx, [ebp - 0x38]
mov dword [ebp - 0x70], edx
lea edx, [ebp - 0x68]
mov dword [ebp - 0x78], 0x8d08
mov dword [ebp - 0x60], 0x8901237c
mov dword [ebp - 0x68], 0x748b7031
call dword [0x18]
mov eax, dword [ebp - 0x14]
mov edi, dword [7]
push eax
push 0x2354
call edi
neg eax
sbb eax, eax
lea ecx, [ebp - 0x78]
inc eax
lea edx, [ebp - 0x38]
neg eax
mov word [ebp - 0x50], ax
push ecx
lea eax, [ebp - 0x58]
push edx
lea ecx, [ebp - 0x48]
push eax
push ecx
mov dword [ebp - 0x58], 0x748b700b
call dword [0xf0]
lea edx, [ebp - 0x48]
push edx
call dword [0x1c]
mov ebx, dword [0x804000a]
mov edx, eax
lea ecx, [ebp - 0x20]
call ebx
lea eax, [ebp - 0x48]
lea ecx, [ebp - 0x38]
push eax
lea edx, [ebp - 0x58]
push ecx
push edx
push 3
call dword [0x20]
mov eax, dword [ebp - 0x24]
add esp, 0x10
push eax
push 0x2354
call edi
test eax, eax
je 0x403ae5
mov edx, dword [ebp - 0x20]
mov ecx, dword [ebp + 0x6574737c]
mov eax, dword [ebp - 0x24]
push edx
mov edi, dword [ecx]
push eax
insb byte es:[edi], dx
adc eax, 0x62762634
mov edx, eax
lea ecx, [ebp - 0x28]
call ebx
mov ecx, dword [ebp + 0x6574737c]
push eax
push ecx
call dword [edi + 0x54]
test eax, eax
fnclex
jge 0x403ada
mov edx, dword [ebp + 0x6574737c]
push 0x54
push 0x890123b0
push edx
push eax
call esi
lea ecx, [ebp - 0x28]
call dword [0x8040050]
jmp 0x403b0c
mov eax, dword [ebp + 0x6574737c]
mov edx, dword [ebp - 0x20]
push edx
push eax
mov ecx, dword [eax]
call dword [ecx + 0x54]
test eax, eax
fnclex
jge 0x403b0c
mov ecx, dword [ebp + 0x6574737c]
push 0x54
push 0x890123b0
push ecx
push eax
call esi
mov eax, dword [ebp + 0x6574737c]
lea ecx, [ebp - 0x7c]
push ecx
push eax
mov edx, dword [eax]
call dword [edx + 0x1c]
test eax, eax
fnclex
jge 0x403b33
mov edx, dword [ebp + 0x6574737c]
push 0x1c
push 0x890123b0
push edx
push eax
call esi
cmp word [ebp - 0x7c], 0
jne 0x403b61
mov eax, dword [ebp + 0x6574737c]
lea edx, [ebp - 0x7c]
push edx
push eax
mov ecx, dword [eax]
call dword [ecx + 0x20]
test eax, eax
fnclex
jge 0x403b61
mov ecx, dword [ebp + 0x6574737c]
push 0x20
push 0x890123b0
push ecx
push eax
call esi
mov eax, dword [ebp + 0x6574737c]
lea ecx, [ebp - 0x7c]
push ecx
push eax
mov edx, dword [eax]
call dword [edx + 0x1c]
test eax, eax
fnclex
jge 0x403b88
mov edx, dword [ebp + 0x6574737c]
push 0x1c
push 0x890123b0
push edx
push eax
call esi
cmp word [ebp - 0x7c], 0xffff
jne 0xc8080328
mov eax, dword [ebp + 0x6574737c]
mov edx, dword [ebp + 0x18]
push edx
push eax
mov ecx, dword [eax]
call dword [ecx + 0x44]
test eax, eax
fnclex
jge 0x403bba
mov ecx, dword [ebp + 0x6574737c]
push 0x44
push 0x890123b0
push ecx
push eax
call esi
mov eax, dword [ebp + 0x6574737c]
mov ecx, dword [ebp - 0x18]
push ecx
push eax
mov edx, dword [eax]
call dword [edx + 0x5c]
test eax, eax
fnclex
jge 0x403be1
mov edx, dword [ebp + 0x6574737c]
push 0x5c
push 0x890123b0
push edx
push eax
call esi
sub esp, 0x10
mov eax, dword [ebp - 0x1c]
mov edx, dword [ebp + 0x6574737c]
mov ebx, esp
mov ecx, 0x748b7031
mov dword [ebp - 0x50], eax
mov dword [ebp - 0x58], ecx
mov edi, dword [edx]
mov dword [ebx], ecx
mov ecx, dword [ebp - 0x54]
push edx
mov dword [ebx + 4], ecx
mov dword [ebx + 8], eax
mov eax, dword [ebp - 0x4c]
mov dword [ebx + 0xc], eax
call dword [edi + 0x30]
test eax, eax
fnclex
jge 0x403c28
mov ecx, dword [ebp + 0x6574737c]
push 0x30
push 0x890123b0
push ecx
push eax
call esi
lea edx, [ebp + 0x6574737c]
push 0xffffffffffffff89
push edx
call dword [0x5c]
push 0x8043a95
jmp 0x403c5b
lea ecx, [ebp + 0x6574737c]
call dword [0x4c]
mov esi, dword [0x8040050]
lea ecx, [ebp - 0x14]
insd dword es:[edi], dx
salc
lea ecx, [ebp - 0x18]
insd dword es:[edi], dx
salc
lea ecx, [ebp - 0x1c]
insd dword es:[edi], dx
salc
lea ecx, [ebp - 0x20]
insd dword es:[edi], dx
salc
lea ecx, [ebp - 0x24]
insd dword es:[edi], dx
salc
ret