Function at 0x407ae5
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x18
cmp dword [str.wxi6], 0xebf30bcb
jne 0x407b06
xchg ebp, eax
and byte [ebp - 0x44c6a5f0], 0xd0
stosb byte es:[edi], al
inc ecx
or dword [esi - 0x75], 0x5d
adc al, 0x8b
xor eax, 0x409494
mov ebx, dword [ebp + 0x14]
mov esi, dword [0x409494]
xor esi, dword [0x409490]
push 0x40947c
call sub.msvcrt.dll_strlen
pop ecx
mov dword [ebp - 0x20], eax
push 4
pop ecx
mov eax, ecx
call fcn.0040613a
mov edi, esp
mov eax, ecx
call fcn.0040613a
mov eax, esp
cmp esi, 0x5798d700
ja 0x407b26
mov dword [ebp - 0x14], eax
test ebx, ebx
je 0x407ba5
mov ecx, 0x40638283
mov eax, dword [0x409498]
mov edx, dword [0x4094a0]
xor edx, dword [0x40949c]
and eax, ecx
sub eax, edx
cmp eax, dword [0x4094a4]
jae 0x407b95
mov esi, dword [0x409550]
xor esi, dword [0x40954c]
mov eax, 0xca5e31ae
xor edx, edx
div esi
add eax, dword [0x409554]
xchg edx, eax
mov ch, 0x9b
mov ebp, 0xb6e3cb21
cmp eax, 0x16776b88
jbe 0x407b69
jmp 0x407b4c
mov dword [edi], ebx
cmp dword [0x4094a8], 0xee62ed73
jbe 0x407bb4
jmp 0x407bda
push dword [ebp + 0x10]
call sub.msvcrt.dll_malloc
pop ecx
mov ebx, eax
mov dword [edi], eax
jmp 0x407be4
mov eax, dword [0x4094b0]
xor eax, dword [0x4094ac]
add eax, 0x71c48c09
mov ecx, dword [0x4094b8]
xor ecx, dword [0x4094b4]
or ecx, eax
cmp ecx, 0x8bd07ab6
jb 0x407be4
ljmp 0x8a22:0xc50d4870
mov ecx, dword [ebp - 0x14]
mov dword [ebp - 0x1c], edi
mov eax, dword [0x4094c0]
xor eax, dword [0x4094bc]
and eax, 0xc23745f0
cmp eax, 0x2626b9d8
jae 0x407c10
ja 0x407c3e
and ebp, dword [esi + esi*2 - 0xb821c64]
add eax, 0x2183e862
add byte [ecx + 0x409f48], ah
mov eax, dword [0x409f48]
mov dword [ebp - 0x10], eax
mov dword [ecx], eax
xor esi, esi
mov ecx, dword [0x4094c8]
xor ecx, dword [0x4094c4]
mov eax, 0xb84e3dfc
xor edx, edx
div ecx
add eax, dword [0x4094cc]
cmp eax, 0x921cddcc
je 0x407dda
cwde
add dword [eax], eax
add byte [ebx + 0x4094d03d], al
add byte [ebp + 0x73], bh
or dh, al
push 0xde33385f
pop esi
fild dword [ecx + 0x4094d43d]
add byte [edi + 0x5f], al
test edi, 0x177870f
add byte [eax], al
cmp dword [0x4094d0], 0x7d
jae 0x407c53
invalid
cmp dword [0x4094d4], 0xc7f75f47
ja 0x407dda
mov eax, dword [0x4094dc]
xor eax, dword [0x4094d8]
imul eax, eax, 0x59afae7d
and eax, 0x4a182052
sub eax, dword [0x4094e0]
cmp eax, 0x42ed7229
mov eax, dword [ebp - 0x10]
jne 0x407c95
mov cs, word [esi]
hlt
cmp eax, dword [ebp + 0x10]
mov edx, esi
jge 0x407e95
imul eax, dword [0x4094e8], 0x801580b1
mov ecx, dword [0x4094f0]
xor ecx, dword [0x4094ec]
or ecx, eax
and ecx, dword [0x4094f4]
cmp ecx, 0x18b4ea5b
mov dword [ebp - 0x18], ebx
jae 0x407d3b
dec ebx
fst st(0)
mov dh, byte [ebx - 0x28384a24]
fisttp qword [eax - 0x7d41f07e]
jl 0x407c6e
inc eax
add byte [eax - 0x77], dl
push ebp
fmul qword [ebx + 0x4081b035]
add bh, bh
salc
pop ecx
mov ebx, eax
mov eax, dword [ebp - 0x10]
cdq
idiv dword [0x409558]
mov ecx, edx
movzx edx, bl
mov eax, dword [0x40955c]
sub eax, ecx
shl ebx, cl
mov ecx, eax
shr edx, cl
mov ecx, esi
mov esi, dword [ebp + 0xc]
mov al, byte [esi]
mov edi, dword [ebp + 8]
mov esi, dword [ebp - 0x10]
xor al, byte [edi + esi]
or edx, ebx
xor al, dl
mov edx, dword [ebp - 0x24]
mov edi, dword [ebp - 0x18]
mov byte [edi + esi], al
mov eax, dword [0x409564]
xor eax, dword [0x409560]
add edx, eax
mov eax, dword [ebp - 0x1c]
mov eax, dword [eax]
mov dword [ebp - 0x18], eax
jmp 0x407d41
mov ecx, dword [sym.imp.msvcrt.dll_tolower]
movsx eax, byte [edx + 0x40947c]
push eax
mov edi, edx
call ecx
pop ecx
mov ebx, eax
mov esi, dword [ebp - 0x10]
mov eax, esi
cdq
idiv dword [0x4094f8]
mov ecx, edx
mov edx, edi
rol bl, cl
mov eax, dword [ebp + 8]
xor bl, byte [eax + esi]
mov eax, dword [ebp + 0xc]
xor bl, byte [eax]
mov eax, dword [ebp - 0x18]
mov byte [eax + esi], bl
inc edx
cmp dword [0x4094fc], 0xdd0fa440
mov ebx, eax
ja 0x407ca0
mov eax, 0x244feab4
sub eax, dword [0x409500]
imul eax, eax, 0xe9969324
cmp eax, dword [0x409504]
jne 0x407dab
invalid
cmp edx, dword [ebp - 0x20]
mov ecx, 0xb570cd4a
jl 0x407dbb
mov edx, dword [0x409f4c]
mov esi, edx
mov eax, 0xe323f6b9
xor edx, edx
div dword [0x409508]
imul eax, eax, 0x6fe62376
cmp eax, dword [0x40950c]
jne 0x407deb
jmp 0x407df9
iretd
mov eax, dword [0x409510]
add eax, ecx
cmp eax, 0x28b076b9
jae 0x407e07
not edi
into
and edi, 0x29
dec ecx
xor eax, 0x69310151
jmp 0x407deb
imul ebp, ebx, 0x9514a1e4
inc eax
add byte [ecx - 0x4abf6e58], bh
mov eax, dword [0x409514]
mov ecx, 0xb54091a8
add eax, ecx
or eax, 0x7d40dd05
mov ecx, dword [0x40951c]
xor ecx, dword [0x409518]
mov edx, dword [ebp - 0x14]
mov edi, dword [edx]
cmp eax, ecx
jb 0x407e63
mov eax, dword [0x409524]
xor eax, dword [0x409520]
mov ecx, 0xf3a1454d
sub ecx, eax
imul eax, ecx, 0x4cf89b91
mov ecx, dword [0x40952c]
xor ecx, dword [0x409528]
add edi, dword [0x409530]
mov dword [ebp - 0x10], edi
mov dword [edx], edi
cmp eax, ecx
jbe 0x407e70
mov edi, dword [ebp - 0x10]
xchg byte [ebx + ebx*8], dh
add al, 0x67
jno 0x407e04
loop 0x407eb3
mov dword [edx], edi
jmp 0x407e2d
mov eax, dword [0x409534]
mov ecx, 0x9e67b25d
xor eax, ecx
cmp eax, dword [0x409538]
jne 0x407c1c
adc byte [ebp + 0x24b8bcfe], 0x4b
invalid
mov eax, 0x2e5be172
sub eax, dword [0x4094e4]
imul eax, eax, 0x677011eb
cmp eax, 0xbb7acb83
jbe 0x407eb9
fcomp dword [ecx]
retf 0x9b5e
cmpsb byte [esi], byte es:[edi]
lea ebp, [ebp - 0x65]
xlatb
lodsb al, byte [esi]
mov eax, 0x4434059f
or eax, dword [0x40953c]
cmp eax, 0xbc29f79d
mov edx, dword [ebp - 0x1c]
jb 0x407ed6
adc al, 0x7d
daa
cmpsb byte [esi], byte es:[edi]
mov al, 0x24
clc
fidivr dword [eax + 0x10f62885]
mov eax, 0x10f62885
and eax, dword [0x409540]
xor eax, dword [0x409544]
xor eax, 0x5ea2ddc8
imul eax, eax, 0x22af277c
mov ecx, dword [0x409548]
cmp eax, ecx
je 0x407ef8
mov eax, dword [edx]
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret