Function at 0x407960
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x124
mov al, byte [0x650bdc]
push ebx
push ebp
mov ebp, edx
mov ebx, ecx
push esi
test al, al
push edi
mov dword [esp + 0x18], ebp
mov dword [esp + 0x20], ebx
jne 0x407eed
push 0x75
call fcn.004c6320
add esp, 4
lea esi, [esp + 0x24]
mov edi, 4
call fcn.004c6330
mov dword [esi], eax
add esi, 4
dec edi
jne 0x407996
push 0
call fcn.004c5e90
add esp, 4
push eax
call fcn.004c6320
add esp, 4
lea eax, [esp + 0x24]
mov edx, 1
xor ecx, ecx
push eax
call fcn.00464bf0
mov edi, ebx
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov edi, ecx
cmp edi, 0x100
jb 0x4079e2
mov edi, 0xff
test edi, edi
lea esi, [esp + 0x34]
je 0x407a0d
lea ecx, [esp + 0x34]
lea ebp, [edi]
sub ebx, ecx
movsx eax, byte [esi + ebx]
push eax
call fcn.004c6190
add esp, 4
mov byte [esi], al
inc esi
dec ebp
jne 0x4079f2
mov ebx, dword [esp + 0x20]
mov ebp, dword [esp + 0x18]
xor edx, edx
mov byte [esi], 0
mov dword [esp + 0x10], edx
xor esi, esi
test edi, edi
mov dword [esp + 0x14], edx
jle 0x407a67
lea eax, [esp + esi + 0x34]
push 8
lea ecx, [esp + 0x1c]
push eax
push ecx
call fcn.004c6090
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x28]
xor eax, edx
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x20]
xor ecx, eax
add esp, 0xc
mov dword [esp + 0x1c], ecx
lea ecx, [esp + 0x10]
push ecx
lea edx, [esp + 0x1c]
xor ecx, ecx
call fcn.00464bd0
add esi, 8
cmp esi, edi
jl 0x407a20
call fcn.00464bb0
cmp word [0x63c51c], 3
jne 0x407a83
call fcn.00449440
test eax, eax
je 0x407d7c
mov ecx, 8
mov edi, 0x4e55b0
lea esi, [esp + 0x10]
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
jne 0x407ab2
mov eax, dword [ebp]
xor eax, 0x200
mov dword [ebp], eax
mov eax, 1
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x124
ret
mov ecx, 8
mov edi, 0x4e5548
lea esi, [esp + 0x10]
xor eax, eax
repe cmpsb byte [esi], byte es:[edi]
jne 0x407adf
mov eax, dword [ebp]
xor eax, 0x10
mov dword [ebp], eax
mov eax, 1
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x124
ret
mov ecx, 8
mov edi, 0x4e5550
lea esi, [esp + 0x10]
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
jne 0x407b0e
mov eax, dword [ebp]
xor eax, 0x40000
mov dword [ebp], eax
mov eax, 1
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x124
ret
mov ecx, 8
mov edi, 0x4e5558
lea esi, [esp + 0x10]
xor eax, eax
repe cmpsb byte [esi], byte es:[edi]
jne 0x407b3d
mov eax, dword [ebp]
xor eax, 0x80000
mov dword [ebp], eax
mov eax, 1
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x124
ret
mov ecx, 8
mov edi, 0x4e5560
lea esi, [esp + 0x10]
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
jne 0x407b6a
mov eax, dword [ebp]
xor eax, 8
mov dword [ebp], eax
mov eax, 1
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x124
ret
mov ecx, 8
mov edi, 0x4e5580
lea esi, [esp + 0x10]
xor eax, eax
repe cmpsb byte [esi], byte es:[edi]
jne 0x407b99
mov eax, dword [ebp]
xor eax, 0x1000
mov dword [ebp], eax
mov eax, 1
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x124
ret
mov ecx, 8
mov edi, 0x4e5588
lea esi, [esp + 0x10]
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
jne 0x407bc8
mov eax, dword [ebp]
xor eax, 0x2000
mov dword [ebp], eax
mov eax, 1
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x124
ret
mov ecx, 8
mov edi, 0x4e5598
lea esi, [esp + 0x10]
xor eax, eax
repe cmpsb byte [esi], byte es:[edi]
jne 0x407bf7
mov eax, dword [ebp]
xor eax, 0x20000
mov dword [ebp], eax
mov eax, 1
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x124
ret
mov ecx, 8
mov edi, 0x4e55a0
lea esi, [esp + 0x10]
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
jne 0x407c26
mov eax, dword [ebp]
xor eax, 0x800
mov dword [ebp], eax
mov eax, 1
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x124
ret
mov ecx, 8
mov edi, 0x4e5568
lea esi, [esp + 0x10]
xor eax, eax
repe cmpsb byte [esi], byte es:[edi]
jne 0x407c53
mov eax, dword [ebp]
xor eax, 1
mov dword [ebp], eax
mov eax, 1
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x124
ret
mov ecx, 8
mov edi, 0x4e5570
lea esi, [esp + 0x10]
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
jne 0x407c80
mov eax, dword [ebp]
xor eax, 2
mov dword [ebp], eax
mov eax, 1
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x124
ret
mov ecx, 8
mov edi, 0x4e5540
lea esi, [esp + 0x10]
xor eax, eax
repe cmpsb byte [esi], byte es:[edi]
jne 0x407cad
mov eax, dword [ebp]
xor eax, 4
mov dword [ebp], eax
mov eax, 1
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x124
ret
mov ecx, 8
mov edi, 0x4e5590
lea esi, [esp + 0x10]
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
jne 0x407cdc
mov eax, dword [ebp]
xor eax, 0x4000
mov dword [ebp], eax
mov eax, 1
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x124
ret
mov al, byte [0x650bdc]
test al, al
jne 0x407d7c
mov ecx, 8
mov edi, 0x4e5530
lea esi, [esp + 0x10]
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
jne 0x407d18
mov eax, dword [ebp]
xor eax, 0x80
mov dword [ebp], eax
mov eax, 1
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x124
ret
test al, al
jne 0x407d7c
mov ecx, 8
mov edi, 0x4e5538
lea esi, [esp + 0x10]
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
jne 0x407d49
mov eax, dword [ebp]
xor eax, 0x40
mov dword [ebp], eax
mov eax, 1
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x124
ret
test al, al
jne 0x407d7c
mov ecx, 8
mov edi, str.gw.x
lea esi, [esp + 0x10]
xor eax, eax
repe cmpsb byte [esi], byte es:[edi]
jne 0x407d7c
mov eax, dword [ebp]
xor eax, 0x100
mov dword [ebp], eax
mov eax, 1
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x124
ret
cmp word [0x63c51c], 3
jne 0x407d93
call fcn.00449440
test eax, eax
je 0x407e13
mov ecx, 8
mov edi, 0x4e55b8
lea esi, [esp + 0x10]
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
jne 0x407dc2
mov eax, dword [ebp]
xor eax, 0x20000000
mov dword [ebp], eax
mov eax, 1
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x124
ret
mov ecx, 8
mov edi, 0x4e55a8
lea esi, [esp + 0x10]
xor eax, eax
repe cmpsb byte [esi], byte es:[edi]
jne 0x407e13
cmp word [0x63c51c], 3
jne 0x407edd
call fcn.00462e10
test eax, eax
je 0x407edd
mov al, byte [0x4fef4a]
test al, al
jne 0x407edd
call fcn.0046de70
mov eax, 1
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x124
ret
mov al, byte [0x650bdc]
test al, al
jne 0x407eed
mov eax, dword [0x51bd80]
test ah, 2
je 0x407eed
mov esi, 0x4e55c0
mov ecx, dword [esi]
push ecx
call sub.storm.dll_Ordinal_506
mov edx, dword [esi]
push eax
push edx
push ebx
call sub.storm.dll_Ordinal_509
test eax, eax
je 0x407e54
add esi, 0x10
cmp esi, 0x4e5620
jb 0x407e33
cmp esi, 0x4e5620
jae 0x407eed
mov ecx, dword [esi + 0xc]
mov edx, dword [esi + 8]
mov edi, dword [esi + 4]
lea eax, [esp + 0x18]
push eax
mov eax, dword [esi]
push ecx
push edx
push eax
call sub.storm.dll_Ordinal_506
mov ecx, eax
mov edx, edi
add ecx, ebx
call fcn.004c04c0
test eax, eax
je 0x407edd
mov ecx, dword [esp + 0x18]
cmp ecx, 0x3f
je 0x407edd
mov edx, dword [esi + 0xc]
push edx
mov edx, dword [esi + 4]
call fcn.00457d10
cmp word [0x63c51c], 3
jne 0x407eca
mov ecx, 4
call fcn.00446b20
mov dword [0x640740], 0
mov eax, 1
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x124
ret
mov word [0x63c51c], 4
mov dword [0x640740], 0
mov eax, 1
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x124
ret
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x124
ret